Commit Graph

240 Commits

Author SHA1 Message Date
Kartikaya Gupta
6db7f3623b Bug 898877 - Prevent pages from getting stuck without the dynamic toolbar. r=Cwiiis
The problematic scenario is when the page is exactly the height of the screen
(with dynamic toolbar not visible). In this case, the scrollable() function in
Axis.java returns false on the vertical axis, and so the JavaPanZoomController
never does any scrolling. This in turns means that the scrollBy code in
LayerMarginsAnimator never gets to run, so you can never drag the toolbar back
into being visible. The patch ensures that scrollable() returns true when some
or all of the margins are not visible, ensuring that in these scenarios the
user can still scroll the toolbar back onto the screen. This patch also adds
some comments/asserts to verify the new code is threadsafe.
2013-08-16 08:42:23 -04:00
Botond Ballo
f86aff9b42 Bug 859929 - Make AsyncPanZoomController work with progressive tile painting on Fennec. r=kats 2013-07-22 22:33:05 -04:00
Chris Lord
fc99017549 Bug 892246 - Allow subdocument scrolling to reveal margins. r=kats
This adds a notification callback to PanZoomTarget that the PanZoomController
can call to notify GeckoLayerClient that a subdocument is being scrolled. This
allows GeckoLayerClient to call LayerMarginsAnimator and alter the margins
accordingly, stopping a page from trapping the toolbar on/off the screen with
a screen-covering subframe.
2013-07-15 17:03:24 +01:00
Kartikaya Gupta
11cf7cc0c5 Bug 882120 - Apply rounding to the layer-pixel rect in Java to fix robopan regression. r=kentuckyfriedtakahe 2013-06-18 09:27:45 -04:00
Kartikaya Gupta
9c30acff1e Bug 785929 - Kill FrameMetrics.mContentRect. r=kentuckyfriedtakahe 2013-06-11 09:46:51 -04:00
Kartikaya Gupta
f2b05dd3c0 Bug 797615 - Guard against isBrowserContentDocumentDisplayed returning true prematurely. r=Cwiiis
Prior to this change, isBrowserContentDocumentDisplayed returned false
from the time that the isFirstPaint flag was set in layout to the time
that layout handed off the rendered document to the compositor. However
the way the function is used meant that it needs to return false until
the compositor actually composites the "first-paint" rendering,
otherwise other events can sneak in and run before the compositor. This
patch moves the tracking for the flag into GeckoLayerClient so that it
can be queried and modified synchronously from both the Gecko thread in
browser.js and the compositor thread in setFirstPaintViewport.
2013-05-30 09:55:23 -04:00
Kartikaya Gupta
96a183e3a5 Bug 797615 - Cosmetic cleanup for the getDisplayPort JNI wrapper. r=Cwiiis 2013-05-30 09:55:08 -04:00
Chris Lord
ce4146ac32 Bug 868998 - Expose the dynamic toolbar after a certain distance. r=kats
Instead of only exposing the toolbar when scrolling from the top quarter of the
screen, always expose the toolbar, but only after a certain distance.
2013-05-30 12:53:24 +01:00
Kartikaya Gupta
7a1a96c90b Bug 867685 - Ensure setIsRTL updates the viewport metrics atomically. r=Cwiiis 2013-05-01 15:33:49 -04:00
Kartikaya Gupta
f9063c8ce1 Bug 867685 - Use getLock() instead of this when modifying the viewport metrics for clarity. r=Cwiiis 2013-05-01 15:33:48 -04:00
Chris Lord
dab188844d Bug 865298 - Add an 'active area' for margin exposing. r=kats
This stops margins from being exposed unless the drag was started in an area
of the viewport that's near said margin. The margins will always be exposed
when reaching the edge of the page.
2013-04-29 15:18:23 +01:00
Kartikaya Gupta
459e2ed61a Bug 839641 - Implement the PostDelayedTask callback for APZC in AndroidBridge. r=Cwiiis, blassey 2013-04-26 13:26:46 -04:00
Kartikaya Gupta
67005d3ebd Bug 839641 - Implement the RequestContentRepaint callback for APZC in AndroidBridge. r=Cwiiis 2013-04-26 13:26:46 -04:00
Kartikaya Gupta
f466b9eb6e Bug 839641 - Add a syncFrameMetrics code path to push viewport changes from APZC to Java. r=Cwiiis, BenWa 2013-04-26 13:26:39 -04:00
Kartikaya Gupta
a62d7f3d88 Bug 839641 - Add a stub NativePanZoomController class to start Java bindings to APZC. r=Cwiiis 2013-04-26 13:24:28 -04:00
Chris Lord
ed41276fbb Bug 858969 - Refactor dynamic toolbar so page is offset and not overlapped. r=kats,nrc
Refactor the dynamic toolbar code so that the ownership of various properties
is clearer, and the page is offset by the toolbar instead of being overlapped.
This fixes problems with the scroll origin of the page not corresponding to
the visible origin on the screen.
2013-04-25 18:47:08 +01:00
Ryan VanderMeulen
e376b2bb54 Backed out changeset 684a5ca2efb7 (bug 858969) for Android M3 failures.
CLOSED TREE
2013-04-25 10:56:54 -04:00
Chris Lord
ac2dc65ab2 Bug 858969 - Refactor dynamic toolbar so page is offset and not overlapped. r=kats,nrc
Refactor the dynamic toolbar code so that the ownership of various properties
is clearer, and the page is offset by the toolbar instead of being overlapped.
This fixes problems with the scroll origin of the page not corresponding to
the visible origin on the screen.
2013-04-24 17:06:23 +01:00
Chris Lord
45724a8c46 Bug 856497 - Fix dynamic viewport sizing for margin changes. r=kats
The viewport wasn't being recalculated when the viewport margins changed, and
was also subject to some rounding errors. Round off the values before
comparing them (as they're screen pixels), and make sure to update the viewport
when the margins change. Margins were also not correctly being altered when
in overscroll, which could cause bottom-aligned fixed position content to be
incorrectly offset.
2013-04-08 16:35:00 +01:00
Chris Lord
b1839977be Bug 822810 - Enable low precision rendering in more scenarios. r=kats
This patch matches previous behaviour, but adds the following scenarios:
- When rendering is aborted due to the viewport falling out of the displayport,
  enable low precision rendering.
- When the viewport falls out of the displayport during low precision rendering,
  low precision rendering will be enabled on the next frame.
2013-04-04 18:51:14 +01:00
Kartikaya Gupta
d45fcd8164 Bug 856039 - Default to keeping the fixed layer margins in setViewportMetrics. r=Cwiiis 2013-04-01 10:17:38 -04:00
Kartikaya Gupta
2ff465f1b7 Bug 856039 - Guard against viewport size changes getting clobbered by animations. r=Cwiiis 2013-04-01 10:17:03 -04:00
Chris Lord
61a1337f3d Bug 854289 - Fix offsetting of viewport with dynamic toolbar. r=kats
Make sure to offset the viewport *after* setting the Gecko viewport on
setFirstPaintViewport callbacks, so that we don't store an incorrect viewport
origin and end up offsetting events incorrectly.

Similarly, on page size updates, the Java-side viewport metrics are used to
update the Gecko metrics, so make sure they're clamped so that they aren't
incorrect during overscroll.
2013-04-01 10:33:19 +01:00
Kartikaya Gupta
04f4951f49 Bug 853831 - Fix fixed margins on the opposite side of overscroll. r=kats
If overscroll eats into a fixed margin, we need to apply the opposite
offset to the opposite side of the axis this occurred on. This has the effect
of fixed-position elements aligned to the bottom of the screen remaining
visible when at the top of the page.
2013-03-25 14:13:59 -04:00
Chris Lord
d2817e423f Bug 852158 - Fix content scrolling to the top with the dynamic toolbar enabled. r=kats
Make sure that the toolbar doesn't obscure content when it scrolls to the top
of the page.
2013-03-19 09:53:12 +00:00
Chris Lord
dff509f6b4 Bug 850889 - Fix jank when animating dynamic toolbar. r=kats
Only update the Gecko-side fixed layer margins when the view is fully visible
or hidden to avoid jank.
2013-03-18 15:43:03 +00:00
Chris Lord
b906b6859f Bug 850889 - Fix animation conflict with overscroll and dynamic toolbar. r=kats
This fixes the conflicting animations when the dynamic toolbar is hiding/showing
and overscroll is snapping back simultaneously. This is by not clamping the
entire viewport on margin-setting, and by making sure that only calling
setFixedLayerMargins changes the fixed layer margins.
2013-03-18 15:43:02 +00:00
Kartikaya Gupta
20a994a858 Bug 802130 - Move mMainHandler into ThreadUtils. r=mfinkle 2013-03-15 11:52:53 +01:00
Brian Nicholson
278a2f521d Bug 850487 - More code cleanup (@Overrides and unused imports). r=kats 2013-03-13 13:20:57 -07:00
Chris Lord
890c9f6dfd Bug 716403 - Hide dynamic toolbar hiding behind a pref. r=kats
Disable dynamic toolbar hiding on Android by default, with pref
browser.chrome.dynamictoolbar available to enable it.
2013-03-07 10:17:34 +00:00
Chris Lord
dec2bc3877 Bug 716403 - Use setContentDocumentFixedPositionMargins in Android's browser.js. r=kats
This uses the aforementioned method on nsIDOMWindowUtils to make sure layout's
idea of the fixed position margins matches those used in the compositor.
2013-03-07 10:17:33 +00:00
Chris Lord
2f91bdcb3e Bug 716403 - Make the top of the page accessible with the toolbar visible. r=kats
This makes it possible to scroll to the top of the page with the toolbar visible
in Firefox for Android. It also causes JavaScript scrolling to position 0 to
expose the toolbar.
2013-03-07 10:17:33 +00:00
Chris Lord
6184953e9e Bug 716403 - Offset fixed layers so the toolbar doesn't obscure them. r=nrc,kats
Offset fixed layers in the compositor so that the toolbar in Firefox for Android
doesn't obscure them. This does not affect layout, so input on the elements in
said layers will appear broken.
2013-03-07 10:17:33 +00:00
Ryan VanderMeulen
076a4bfaee Backed out 9 changesets (bug 716403) for Android 4.0 robocop bustage on a CLOSED TREE. 2013-03-06 16:11:05 -05:00
Chris Lord
f0e23c1e2b Bug 716403 - Hide dynamic toolbar hiding behind a pref. r=kats
Disable dynamic toolbar hiding on Android by default, with pref
browser.chrome.dynamictoolbar available to enable it.
2013-03-06 16:56:00 +00:00
Chris Lord
d13ff36b10 Bug 716403 - Use setContentDocumentFixedPositionMargins in Android's browser.js. r=kats
This uses the aforementioned method on nsIDOMWindowUtils to make sure layout's
idea of the fixed position margins matches those used in the compositor.
2013-03-06 16:56:00 +00:00
Chris Lord
41380608cf Bug 716403 - Make the top of the page accessible with the toolbar visible. r=kats
This makes it possible to scroll to the top of the page with the toolbar visible
in Firefox for Android. It also causes JavaScript scrolling to position 0 to
expose the toolbar.
2013-03-06 16:55:59 +00:00
Chris Lord
5647557b0c Bug 716403 - Offset fixed layers so the toolbar doesn't obscure them. r=nrc,kats
Offset fixed layers in the compositor so that the toolbar in Firefox for Android
doesn't obscure them. This does not affect layout, so input on the elements in
said layers will appear broken.
2013-03-06 16:55:59 +00:00
Ryan VanderMeulen
a9311d990d Backed out 8 changesets (bug 716403) for frequent Android mochitest-8 failures on a CLOSED TREE. 2013-03-01 16:09:59 -05:00
Chris Lord
2e6b970888 Bug 716403 - Hide dynamic toolbar hiding behind a pref. r=kats
Disable dynamic toolbar hiding on Android by default, with pref
browser.chrome.dynamictoolbar available to enable it.
2013-03-01 15:46:35 +00:00
Chris Lord
cd83725582 Bug 716403 - Use setContentDocumentFixedPositionMargins in Android's browser.js. r=kats
This uses the aforementioned method on nsIDOMWindowUtils to make sure layout's
idea of the fixed position margins matches those used in the compositor.
2013-03-01 15:46:34 +00:00
Chris Lord
444cf7a338 Bug 716403 - Make the top of the page accessible with the toolbar visible. r=kats
This makes it possible to scroll to the top of the page with the toolbar visible
in Firefox for Android. It also causes JavaScript scrolling to position 0 to
expose the toolbar.
2013-03-01 15:46:34 +00:00
Chris Lord
9292e6cf3c Bug 716403 - Offset fixed layers so the toolbar doesn't obscure them. r=nrc,kats
Offset fixed layers in the compositor so that the toolbar in Firefox for Android
doesn't obscure them. This does not affect layout, so input on the elements in
said layers will appear broken.
2013-03-01 15:46:33 +00:00
Kartikaya Gupta
ef9f26fb84 Bug 844275 - Drive the layer manager creation from the GLController rather than GetLayerManager. r=Cwiiis 2013-02-28 13:28:23 -05:00
Kartikaya Gupta
db14d0f886 Bug 844275 - Move mCompositorCreated and associated methods from GeckoLayerClient to GLController. r=Cwiiis 2013-02-28 13:28:23 -05:00
Kartikaya Gupta
1f29e73ea6 Bug 844275 - Ensure that the GeckoLayerClient always starts off with an accurate viewport size. r=Cwiiis 2013-02-28 13:28:23 -05:00
Brian Nicholson
1c31a98bcf Bug 845612 - Add @Override annotations for implemented interfaces. r=kats 2013-02-26 21:48:00 -08:00
Kartikaya Gupta
5010bd9809 Bug 777468 - Move ownership of TouchEventHandler from LayerView to JavaPanZoomController. r=Cwiiis
This patch has a bunch of semi-independent changes that unfortunately
couldn't be split apart without introducing hacks to make stuff build
on the intermediate patches. The main changes are:
- Moving TouchEventHandler from LayerView to JavaPanZoomController
- Registering the touch interceptor on the LayerView rather than the
  TouchEventHandler
- Moving the Tab:HasTouchListener handler from GeckoApp to JPZC

The net effect of all of this is that the TouchEventHandler is hidden
behind the PanZoomController interface and not accessible to GeckoApp
or GeckoAppShell.

Additionally, some of the JPZC methods were renamed from onXXX to
handleXXX to maintain the convention that onXXX methods are "interface"
methods (i.e. exposed to arbitrary other code) whereas handleXXX
methods are private/package and should only be called in very specific
ways.
2013-02-08 09:13:09 -05:00
Kartikaya Gupta
c0bf330235 Bug 777468 - Rename PanZoomController to JavaPanZoomController and extract a new PanZoomController interface. r=Cwiiis 2013-02-08 09:12:59 -05:00
Kartikaya Gupta
6386270447 Bug 777468 - Move mobile/android/base/ui/* to mobile/android/base/gfx/. r=Cwiiis 2013-02-08 09:11:43 -05:00