Commit 150c2a56 authored by Xi Han's avatar Xi Han Committed by Commit Bot

[Instant Start] Avoid extra omnibox when changing themes.

The bug happens when the instant start startup code path is called in a
warm start, i.e., ChromeTabbedActivity is recreated when the dark/light
theme is changed. We add a check of warm start to prevent this from
happening.

Bug: 1117226
Change-Id: I65b48afd03137c33b5ed1a726aac23f9dffd7e6f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2454254Reviewed-by: default avatarYaron Friedman <yfriedman@chromium.org>
Reviewed-by: default avatarWei-Yin Chen (陳威尹) <wychen@chromium.org>
Commit-Queue: Xi Han <hanxi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#815353}
parent ea769b76
...@@ -839,7 +839,7 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent ...@@ -839,7 +839,7 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
// showing a glimpse of the tab selector during start up. // showing a glimpse of the tab selector during start up.
if (!mPendingInitialTabCreation if (!mPendingInitialTabCreation
&& !(TabUiFeatureUtilities.supportInstantStart(isTablet()) && !(TabUiFeatureUtilities.supportInstantStart(isTablet())
&& shouldShowTabSwitcherOnStart())) { && shouldShowTabSwitcherOnStart() && !hadWarmStart())) {
setInitialOverviewState(); setInitialOverviewState();
} }
...@@ -1149,7 +1149,7 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent ...@@ -1149,7 +1149,7 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
// mPendingInitialTabCreation was true then do so now. // mPendingInitialTabCreation was true then do so now.
if (hasStartWithNativeBeenCalled() if (hasStartWithNativeBeenCalled()
&& !(TabUiFeatureUtilities.supportInstantStart(isTablet()) && !(TabUiFeatureUtilities.supportInstantStart(isTablet())
&& shouldShowTabSwitcherOnStart())) { && shouldShowTabSwitcherOnStart() && !hadWarmStart())) {
setInitialOverviewState(); setInitialOverviewState();
} }
} }
...@@ -1530,8 +1530,9 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent ...@@ -1530,8 +1530,9 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
// When the feature flag {@link ChromeFeatureList.INSTANT_START} turns on phones (not // When the feature flag {@link ChromeFeatureList.INSTANT_START} turns on phones (not
// tablet), a view-only start page created on Java will be shown before native is // tablet), a view-only start page created on Java will be shown before native is
// initialized. // initialized. The {@link prepareToShowStartPagePreNative()} is only called in a cold
if (TabUiFeatureUtilities.supportInstantStart(isTablet())) { // start.
if (TabUiFeatureUtilities.supportInstantStart(isTablet()) && !hadWarmStart()) {
prepareToShowStartPagePreNative(); prepareToShowStartPagePreNative();
} }
} }
...@@ -1541,7 +1542,7 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent ...@@ -1541,7 +1542,7 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
* an LayoutManagerChrome object, add overview mode observer and so on. * an LayoutManagerChrome object, add overview mode observer and so on.
*/ */
private void prepareToShowStartPagePreNative() { private void prepareToShowStartPagePreNative() {
assert TabUiFeatureUtilities.supportInstantStart(isTablet()); assert TabUiFeatureUtilities.supportInstantStart(isTablet() && !hadWarmStart());
try (TraceEvent e = try (TraceEvent e =
TraceEvent.scoped("ChromeTabbedActivity.prepareToShowStartPagePreNative")) { TraceEvent.scoped("ChromeTabbedActivity.prepareToShowStartPagePreNative")) {
setupCompositorContentPreNativeForPhone(); setupCompositorContentPreNativeForPhone();
......
...@@ -159,7 +159,8 @@ public abstract class AsyncInitializationActivity extends ChromeBaseAppCompatAct ...@@ -159,7 +159,8 @@ public abstract class AsyncInitializationActivity extends ChromeBaseAppCompatAct
@Override @Override
public final void setContentViewAndLoadLibrary(Runnable onInflationCompleteCallback) { public final void setContentViewAndLoadLibrary(Runnable onInflationCompleteCallback) {
boolean enableInstantStart = TabUiFeatureUtilities.supportInstantStart(isTablet()); boolean enableInstantStart =
TabUiFeatureUtilities.supportInstantStart(isTablet()) && !mHadWarmStart;
mOnInflationCompleteCallback = onInflationCompleteCallback; mOnInflationCompleteCallback = onInflationCompleteCallback;
if (enableInstantStart) { if (enableInstantStart) {
triggerLayoutInflation(); triggerLayoutInflation();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment