If a scroll event comes in that changes the scroll coordinates
from those that were last set by user scrolling in Java, then
update the Java viewport with the new coordinates. Note that
this may occur in the middle of a draw, when Gecko already has
the transaction lock acquired on the tile buffer. Therefore we
need to delay the update until after the draw is complete.
The new Java compositor only handles scrolling the top-level scroll-frame. Use
browser.js to detect when a sub-frame is being scrolled and send an 'override'
event to Java to tell it to pass us scroll events instead of calling the
scroll function on the LayerController.
Send an event to scroll to the focused input field when the
soft keyboard comes up. Ensure that this happens *after* the
viewport change event is sent to Gecko, so that Gecko actually
knows that browser viewport is smaller and doesn't just no-op
the scroll request.
Calculate the viewport size based on the user-visible content area
and the zoom factor, rather than relying on the screen size, since
the screen size doesn't take into account things like the URL bar
and android chrome that may be visible.
Force a viewport update to Java when there is an in-page
navigation, as this will change the scroll coordinates.
This includes splitting the existing sendViewportUpdate
function into two - one that does the update and the other
that just does the send.
Missing pieces of the document resulted in pageWidth getting
assigned to NaN, which was serialized as null by JSON. This
resulted in an exception over in Java-land when deserialization
was attempted, and killed the viewport update entirely.
Force updates to the Java-side viewport from
browser.js when loading a new page and switching
tabs. Ensure the scroll position and zoom are also
reset when needed.
This patch reinstates pinch-zooming and adds CSS re-scaling so that after
zooming, the page is rendered at the scaled resolution and you get clear text.
--HG--
rename : mobile/android/base/gfx/IntSize.java => mobile/android/base/gfx/FloatSize.java
This patch refactors the code to make some of the value names and ownership
clearer, and to add the idea of a 'viewport' within a 'displayport'. The
displayport is the area of the page which is visible to the underlying buffer
and the viewport is the area of the page which is visible through the
application window.
--HG--
rename : mobile/android/base/ui/ViewportController.java => mobile/android/base/gfx/ViewportMetrics.java