Bug 1335895 - part 31: Update FloatingToolbarTextSelection, FormAssistPopup, OverscrollEdgeEffect, and GeckoInputConnection to use LayerView.getCurrentToolbarHeight() r=jchen,kats draft
authorRandall Barker <rbarker@mozilla.com>
Mon, 27 Mar 2017 09:59:31 -0700
changeset 558773 dd581a4c376237e583d0eb14a70c3198284c519a
parent 558772 00de19e903a4865ec6116890cf0fb30284c3e36e
child 558774 fa6a016c1105788c4db7b42f43165742c9306984
push id52941
push userbmo:rbarker@mozilla.com
push dateFri, 07 Apr 2017 23:43:33 +0000
reviewersjchen, kats
bugs1335895
milestone55.0a1
Bug 1335895 - part 31: Update FloatingToolbarTextSelection, FormAssistPopup, OverscrollEdgeEffect, and GeckoInputConnection to use LayerView.getCurrentToolbarHeight() r=jchen,kats
mobile/android/base/java/org/mozilla/gecko/FormAssistPopup.java
mobile/android/base/java/org/mozilla/gecko/text/FloatingToolbarTextSelection.java
mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoInputConnection.java
mobile/android/geckoview/src/main/java/org/mozilla/gecko/gfx/OverscrollEdgeEffect.java
--- a/mobile/android/base/java/org/mozilla/gecko/FormAssistPopup.java
+++ b/mobile/android/base/java/org/mozilla/gecko/FormAssistPopup.java
@@ -272,17 +272,17 @@ public class FormAssistPopup extends Rel
             sValidationMessageHeight = (int) (res.getDimension(R.dimen.validation_message_height));
         }
 
         float zoom = aMetrics.zoomFactor;
 
         // These values correspond to the input box for which we want to
         // display the FormAssistPopup.
         int left = (int) (mX * zoom - aMetrics.viewportRectLeft);
-        int top = (int) (mY * zoom - aMetrics.viewportRectTop + GeckoAppShell.getLayerView().getSurfaceTranslation());
+        int top = (int) (mY * zoom - aMetrics.viewportRectTop + GeckoAppShell.getLayerView().getCurrentToolbarHeight());
         int width = (int) (mW * zoom);
         int height = (int) (mH * zoom);
 
         int popupWidth = LayoutParams.MATCH_PARENT;
         int popupLeft = left < 0 ? 0 : left;
 
         FloatSize viewport = aMetrics.getSize();
 
--- a/mobile/android/base/java/org/mozilla/gecko/text/FloatingToolbarTextSelection.java
+++ b/mobile/android/base/java/org/mozilla/gecko/text/FloatingToolbarTextSelection.java
@@ -166,19 +166,20 @@ public class FloatingToolbarTextSelectio
     }
 
     private void updateRect(final GeckoBundle message) {
         final double x = message.getDouble("x");
         final double y = (int) message.getDouble("y");
         final double width = (int) message.getDouble("width");
         final double height = (int) message.getDouble("height");
 
+        final float toolbarOffset = layerView.getCurrentToolbarHeight();
         final float zoomFactor = layerView.getZoomFactor();
         layerView.getLocationInWindow(locationInWindow);
 
         contentRect = new Rect(
                 (int) (x * zoomFactor + locationInWindow[0]),
-                (int) (y * zoomFactor + locationInWindow[1]),
+                (int) (y * zoomFactor + locationInWindow[1] + toolbarOffset),
                 (int) ((x + width) * zoomFactor + locationInWindow[0]),
                 (int) ((y + height) * zoomFactor + locationInWindow[1] +
                        (height > 0 ? handlesOffset : 0)));
     }
 }
--- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoInputConnection.java
+++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoInputConnection.java
@@ -359,17 +359,17 @@ class GeckoInputConnection
         if (v == null) {
             return;
         }
 
         int[] viewCoords = new int[2];
         v.getLocationOnScreen(viewCoords);
 
         DynamicToolbarAnimator animator = GeckoAppShell.getLayerView().getDynamicToolbarAnimator();
-        float toolbarHeight = animator.getMaxTranslation() - animator.getToolbarTranslation();
+        float toolbarHeight = (float)animator.getCurrentToolbarHeight();
 
         Matrix matrix = GeckoAppShell.getLayerView().getMatrixForLayerRectToViewRect();
         if (matrix == null) {
             if (DEBUG) {
                 Log.d(LOGTAG, "Cannot get Matrix to convert from Gecko coords to layer view coords");
             }
             return;
         }
--- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/gfx/OverscrollEdgeEffect.java
+++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/gfx/OverscrollEdgeEffect.java
@@ -119,21 +119,22 @@ public class OverscrollEdgeEffect implem
 
     @Override
     public void draw(final Canvas canvas, final ImmutableViewportMetrics metrics) {
         if (metrics == null) {
             return;
         }
 
         PointF visibleEnd = mView.getDynamicToolbarAnimator().getVisibleEndOfLayerView();
+        float toolbarEnd = (float)mView.getDynamicToolbarAnimator().getCurrentToolbarHeight();
 
         // If we're pulling an edge, or fading it out, draw!
         boolean invalidate = false;
         if (!mEdges[TOP].isFinished()) {
-            invalidate |= draw(mEdges[TOP], canvas, 0, 0, 0);
+            invalidate |= draw(mEdges[TOP], canvas, 0, toolbarEnd, 0);
         }
 
         if (!mEdges[BOTTOM].isFinished()) {
             invalidate |= draw(mEdges[BOTTOM], canvas, visibleEnd.x, visibleEnd.y, 180);
         }
 
         if (!mEdges[LEFT].isFinished()) {
             invalidate |= draw(mEdges[LEFT], canvas, 0, visibleEnd.y, 270);