When launching a TWA we can see the toolbar showing for a fraction of a second. The toolbar shouldn't be shown at all in TWA.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/760c5a94e830a8d1b9750aa8e300887a13a12ee7 commit 760c5a94e830a8d1b9750aa8e300887a13a12ee7 Author: Pavel Shmakov <pshmakov@google.com> Date: Fri Oct 12 17:09:51 2018 🤝 Add persistent hiding mechanism to BrowserStateBrowserControlsVisibilityDelegate and use it in TWAs to avoid toolbar flickering. When TWA is opened, the toolbar shows for a fraction of a second before disappearing. It happens because before finishNativeInitialization() is called we either don't have a tab, or have one from a warmup that is not yet attached anywhere. Thus the Tab#canShowBrowserControls() mechanism, which would use TrustedWebActivityUi#mInTwaVisibilityDelegate as part of ComposedBrowserControlsVisibilityDelegate doesn't allow to reliably hide the toolbar in TWAs. The alternative mechanism is ChromeFullscreenManager#setHideBrowserControlsAndroidView. Using it as-is would be dangerous, though, because several clients would now manipulate the same boolean. It needs a token mechanism like the one implemented in BrowserStateBrowserControlsVisibilityDelegate. I move the setHideBrowserControlsAndroidView into BrowserStateBrowserControlsVisibilityDelegate and introduce tokens for persistent hiding. Persistent hiding has a priority over persistent showing. Then I use persistent hiding in TWA instead of an additional BrowserControlsVisibilityDelegate. Bug: 891214 Change-Id: I0a1c2ee50f4dba5f07fb1d8f0fd1b8a9dd1cc6cf Reviewed-on: https://chromium-review.googlesource.com/c/1256965 Reviewed-by: Matthew Jones <mdjones@chromium.org> Reviewed-by: Peter Conn <peconn@chromium.org> Reviewed-by: Ted Choc <tedchoc@chromium.org> Commit-Queue: Pavel Shmakov <pshmakov@chromium.org> Cr-Commit-Position: refs/heads/master@{#599259} [modify] https://crrev.com/760c5a94e830a8d1b9750aa8e300887a13a12ee7/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java [modify] https://crrev.com/760c5a94e830a8d1b9750aa8e300887a13a12ee7/chrome/android/java/src/org/chromium/chrome/browser/browserservices/TrustedWebActivityUi.java [modify] https://crrev.com/760c5a94e830a8d1b9750aa8e300887a13a12ee7/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/Layout.java [modify] https://crrev.com/760c5a94e830a8d1b9750aa8e300887a13a12ee7/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManager.java [modify] https://crrev.com/760c5a94e830a8d1b9750aa8e300887a13a12ee7/chrome/android/java/src/org/chromium/chrome/browser/contextual_suggestions/ContextualSuggestionsMediator.java [modify] https://crrev.com/760c5a94e830a8d1b9750aa8e300887a13a12ee7/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java [modify] https://crrev.com/760c5a94e830a8d1b9750aa8e300887a13a12ee7/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/BrowserStateBrowserControlsVisibilityDelegate.java [modify] https://crrev.com/760c5a94e830a8d1b9750aa8e300887a13a12ee7/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/ChromeFullscreenManager.java [modify] https://crrev.com/760c5a94e830a8d1b9750aa8e300887a13a12ee7/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/FullscreenManager.java [add] https://crrev.com/760c5a94e830a8d1b9750aa8e300887a13a12ee7/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/TokenHolder.java [modify] https://crrev.com/760c5a94e830a8d1b9750aa8e300887a13a12ee7/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationBuilderBase.java [modify] https://crrev.com/760c5a94e830a8d1b9750aa8e300887a13a12ee7/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java [modify] https://crrev.com/760c5a94e830a8d1b9750aa8e300887a13a12ee7/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarPhone.java [modify] https://crrev.com/760c5a94e830a8d1b9750aa8e300887a13a12ee7/chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheet.java [modify] https://crrev.com/760c5a94e830a8d1b9750aa8e300887a13a12ee7/chrome/android/java_sources.gni [modify] https://crrev.com/760c5a94e830a8d1b9750aa8e300887a13a12ee7/chrome/android/junit/src/org/chromium/chrome/browser/fullscreen/BrowserStateBrowserControlsVisibilityDelegateTest.java [add] https://crrev.com/760c5a94e830a8d1b9750aa8e300887a13a12ee7/chrome/android/junit/src/org/chromium/chrome/browser/fullscreen/TokenHolderTest.java
Issue 875240 has been merged into this issue.
Comment 1 by pshmakov@chromium.org
, Oct 2