Bug 1358805 - part 2: Allow DynamicToolbarAnimator to query if the UiCompositorController is open in the case it missed the open message r=kats draft
authorRandall Barker <rbarker@mozilla.com>
Tue, 25 Apr 2017 12:49:20 -0700
changeset 568265 056c9605bb04d998f47fd615f4fcfeabbd415e3b
parent 568202 e8bb73fcf44ec6ef12f4085d770f5d738695b083
child 568266 cf57c458690aa807a00cb44d7c89921470402c06
push id55808
push userbmo:rbarker@mozilla.com
push dateTue, 25 Apr 2017 22:12:34 +0000
reviewerskats
bugs1358805
milestone55.0a1
Bug 1358805 - part 2: Allow DynamicToolbarAnimator to query if the UiCompositorController is open in the case it missed the open message r=kats MozReview-Commit-ID: 8wdMpQh44Zc
gfx/layers/ipc/UiCompositorControllerChild.cpp
mobile/android/geckoview/src/main/java/org/mozilla/gecko/gfx/DynamicToolbarAnimator.java
--- a/gfx/layers/ipc/UiCompositorControllerChild.cpp
+++ b/gfx/layers/ipc/UiCompositorControllerChild.cpp
@@ -125,16 +125,21 @@ UiCompositorControllerChild::SetPinned(c
 
 bool
 UiCompositorControllerChild::ToolbarAnimatorMessageFromUI(const int32_t& aMessage)
 {
   if (!mIsOpen) {
     return false;
   }
 
+  if (aMessage == IS_COMPOSITOR_CONTROLLER_OPEN) {
+    RecvToolbarAnimatorMessageFromCompositor(COMPOSITOR_CONTROLLER_OPEN);
+    return true;
+  }
+
   return SendToolbarAnimatorMessageFromUI(aMessage);
 }
 
 bool
 UiCompositorControllerChild::SetDefaultClearColor(const uint32_t& aColor)
 {
   if (!mIsOpen) {
     mDefaultClearColor = Some(aColor);
--- 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
@@ -152,16 +152,21 @@ public class DynamicToolbarAnimator {
     }
 
     private void dumpStateToCompositor() {
         if ((mCompositor != null) && mCompositorControllerOpen) {
             mCompositor.setMaxToolbarHeight(mMaxToolbarHeight);
             for (PinReason reason : pinFlags) {
               mCompositor.setPinned(true, reason.mValue);
             }
+        } 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);
         }
     }
 
     /* package-private */ void notifyCompositorCreated(LayerView.Compositor aCompositor) {
         ThreadUtils.assertOnUiThread();
         mCompositor = aCompositor;
         dumpStateToCompositor();
     }