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
--- 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();
}