Commit 5bd469df authored by Mohamed Heikal's avatar Mohamed Heikal Committed by Commit Bot

[Android] Moves Splashscreen showing to WebappActivity#preInflationStartup

Since now layout inflation is delayed for WebappActivity, the
splashscreen should be shown in preInflationStartup instead of
postInflationStartup.

This should fix flickering that may occur on some android devices.

Bug: 855888
Change-Id: Ica4ef8431b67a15ded1c769a50501323dc545bf3
Reviewed-on: https://chromium-review.googlesource.com/1119260
Commit-Queue: Mohamed Heikal <mheikal@chromium.org>
Reviewed-by: default avatarPeter Kotwicz <pkotwicz@chromium.org>
Reviewed-by: default avatarYaron Friedman <yfriedman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#572453}
parent 4e34ccd5
...@@ -293,11 +293,7 @@ public class WebappActivity extends SingleTabActivity { ...@@ -293,11 +293,7 @@ public class WebappActivity extends SingleTabActivity {
} }
private void onLayoutInflated(ViewGroup mainView) { private void onLayoutInflated(ViewGroup mainView) {
View placeHolderView = new View(this); mSplashController.setViewHierarchyBelowSplashscreen(mainView);
setContentView(placeHolderView);
ViewGroup contentParent = (ViewGroup) placeHolderView.getParent();
WarmupManager.transferViewHeirarchy(mainView, contentParent);
contentParent.removeView(placeHolderView);
onInitialLayoutInflationComplete(); onInitialLayoutInflationComplete();
} }
...@@ -385,6 +381,7 @@ public class WebappActivity extends SingleTabActivity { ...@@ -385,6 +381,7 @@ public class WebappActivity extends SingleTabActivity {
setTitle(mWebappInfo.shortName()); setTitle(mWebappInfo.shortName());
super.preInflationStartup(); super.preInflationStartup();
initializeWebappData();
} }
@Override @Override
...@@ -613,7 +610,6 @@ public class WebappActivity extends SingleTabActivity { ...@@ -613,7 +610,6 @@ public class WebappActivity extends SingleTabActivity {
@Override @Override
public void postInflationStartup() { public void postInflationStartup() {
initializeWebappData();
if (getBrowserSession() != null) mTrustedWebContentProvider.verifyRelationship(); if (getBrowserSession() != null) mTrustedWebContentProvider.verifyRelationship();
super.postInflationStartup(); super.postInflationStartup();
......
...@@ -21,6 +21,7 @@ import org.chromium.base.ObserverList; ...@@ -21,6 +21,7 @@ import org.chromium.base.ObserverList;
import org.chromium.base.TraceEvent; import org.chromium.base.TraceEvent;
import org.chromium.base.VisibleForTesting; import org.chromium.base.VisibleForTesting;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.WarmupManager;
import org.chromium.chrome.browser.compositor.CompositorViewHolder; import org.chromium.chrome.browser.compositor.CompositorViewHolder;
import org.chromium.chrome.browser.metrics.WebApkUma; import org.chromium.chrome.browser.metrics.WebApkUma;
import org.chromium.chrome.browser.metrics.WebappUma; import org.chromium.chrome.browser.metrics.WebappUma;
...@@ -110,6 +111,15 @@ class WebappSplashScreenController extends EmptyTabObserver { ...@@ -110,6 +111,15 @@ class WebappSplashScreenController extends EmptyTabObserver {
}); });
} }
/**
* Transfers a {@param viewHierarchy} to the splashscreen's parent view while keeping the
* splashscreen on top.
*/
public void setViewHierarchyBelowSplashscreen(ViewGroup viewHierarchy) {
WarmupManager.transferViewHeirarchy(viewHierarchy, mParentView);
mParentView.bringChildToFront(mSplashScreen);
}
/** Should be called once native has loaded. */ /** Should be called once native has loaded. */
public void onFinishedNativeInit(Tab tab, CompositorViewHolder compositorViewHolder) { public void onFinishedNativeInit(Tab tab, CompositorViewHolder compositorViewHolder) {
mNativeLoaded = true; mNativeLoaded = true;
......
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