Bug 1359659 - Ensure the complete pinned state is sent from the UI thread to the compositor r=jchen draft
authorRandall Barker <rbarker@mozilla.com>
Tue, 25 Apr 2017 19:26:08 -0700
changeset 568412 365c8e232cdaa802ca2d4d5388ed1ee6991693d7
parent 568411 1fa5147b77382c2a2854f4a253de9147aa9ccb4b
child 625915 8f3774c0e7ea63956f92d95e3eb04e138867915c
push id55860
push userbmo:rbarker@mozilla.com
push dateWed, 26 Apr 2017 04:46:27 +0000
reviewersjchen
bugs1359659
milestone55.0a1
Bug 1359659 - Ensure the complete pinned state is sent from the UI thread to the compositor r=jchen MozReview-Commit-ID: GXRtfDZ8R17
mobile/android/geckoview/src/main/java/org/mozilla/gecko/gfx/DynamicToolbarAnimator.java
--- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/gfx/DynamicToolbarAnimator.java
+++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/gfx/DynamicToolbarAnimator.java
@@ -25,33 +25,33 @@ public class DynamicToolbarAnimator {
         DISABLED(0),
         RELAYOUT(1),
         ACTION_MODE(2),
         FULL_SCREEN(3),
         CARET_DRAG(4),
         PAGE_LOADING(5),
         CUSTOM_TAB(6);
 
-        public final int mValue;
-        PinReason(final int value) {
-            mValue = value;
+        public final int value;
+        PinReason(final int aValue) {
+            value = aValue;
         }
     }
 
     public interface MetricsListener {
         public void onMetricsChanged(ImmutableViewportMetrics viewport);
     }
 
     public interface ToolbarChromeProxy {
         public Bitmap getBitmapOfToolbarChrome();
         public boolean isToolbarChromeVisible();
         public void toggleToolbarChrome(boolean aShow);
     }
 
-    private final Set<PinReason> pinFlags = Collections.synchronizedSet(EnumSet.noneOf(PinReason.class));
+    private final Set<PinReason> mPinFlags = Collections.synchronizedSet(EnumSet.noneOf(PinReason.class));
 
     private final GeckoLayerClient mTarget;
     private LayerView.Compositor mCompositor;
     private final List<MetricsListener> mListeners;
     private ToolbarChromeProxy mToolbarChromeProxy;
     private int mMaxToolbarHeight;
     private boolean mCompositorControllerOpen;
 
@@ -98,32 +98,32 @@ public class DynamicToolbarAnimator {
         }
         return 0;
     }
 
     /**
      * If true, scroll changes will not affect translation.
      */
     public boolean isPinned() {
-        return !pinFlags.isEmpty();
+        return !mPinFlags.isEmpty();
     }
 
     public boolean isPinnedBy(PinReason reason) {
-        return pinFlags.contains(reason);
+        return mPinFlags.contains(reason);
     }
 
     public void setPinned(boolean pinned, PinReason reason) {
-        if ((mCompositor != null) && (pinned != pinFlags.contains(reason))) {
-             mCompositor.setPinned(pinned, reason.mValue);
+        if ((mCompositor != null) && (pinned != mPinFlags.contains(reason))) {
+             mCompositor.setPinned(pinned, reason.value);
         }
 
         if (pinned) {
-            pinFlags.add(reason);
+            mPinFlags.add(reason);
         } else {
-            pinFlags.remove(reason);
+            mPinFlags.remove(reason);
         }
     }
 
     public void showToolbar(boolean immediately) {
         if (mCompositor != null) {
             mCompositor.sendToolbarAnimatorMessage(immediately ?
                 LayerView.REQUEST_SHOW_TOOLBAR_IMMEDIATELY : LayerView.REQUEST_SHOW_TOOLBAR_ANIMATED);
         }
@@ -155,18 +155,18 @@ public class DynamicToolbarAnimator {
     private void dumpStateToCompositor() {
         if ((mCompositor != null) && mCompositorControllerOpen) {
             mCompositor.setMaxToolbarHeight(mMaxToolbarHeight);
             if ((mToolbarChromeProxy != null) && mToolbarChromeProxy.isToolbarChromeVisible()) {
                 mCompositor.sendToolbarAnimatorMessage(LayerView.REQUEST_SHOW_TOOLBAR_IMMEDIATELY);
             } else {
                 mCompositor.sendToolbarAnimatorMessage(LayerView.REQUEST_HIDE_TOOLBAR_IMMEDIATELY);
             }
-            for (PinReason reason : pinFlags) {
-              mCompositor.setPinned(true, reason.mValue);
+            for (PinReason reason : PinReason.values()) {
+              mCompositor.setPinned(mPinFlags.contains(reason), reason.value);
             }
         } else if ((mCompositor != null) && !mCompositorControllerOpen) {
             // Ask the UiCompositorControllerChild if it is open since the open message can
             // sometimes be sent to a different instance of the LayerView such as when
             // Fennec is being used in custom tabs.
             mCompositor.sendToolbarAnimatorMessage(LayerView.IS_COMPOSITOR_CONTROLLER_OPEN);
         }
     }