| Index: android_webview/java/src/org/chromium/android_webview/AwContents.java
|
| diff --git a/android_webview/java/src/org/chromium/android_webview/AwContents.java b/android_webview/java/src/org/chromium/android_webview/AwContents.java
|
| index f166d99d6d895eb3aeecda8da6cdf05eeed601cf..d1574e73f9b0f0b3bf5f9e3a09aae6ee18cb0df8 100644
|
| --- a/android_webview/java/src/org/chromium/android_webview/AwContents.java
|
| +++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java
|
| @@ -49,6 +49,7 @@ import org.chromium.content.browser.ContentViewStatics;
|
| import org.chromium.content.browser.LoadUrlParams;
|
| import org.chromium.content.browser.NavigationHistory;
|
| import org.chromium.content.browser.PageTransitionTypes;
|
| +import org.chromium.content.browser.WebContentsObserverAndroid;
|
| import org.chromium.content.common.CleanupReference;
|
| import org.chromium.content_public.Referrer;
|
| import org.chromium.content_public.browser.GestureStateListener;
|
| @@ -201,6 +202,7 @@ public class AwContents {
|
| // Bound method for suppling Picture instances to the AwContentsClient. Will be null if the
|
| // picture listener API has not yet been enabled, or if it is using invalidation-only mode.
|
| private Callable<Picture> mPictureListenerContentProvider;
|
| + private boolean mDoDraw;
|
|
|
| private boolean mContainerViewFocused;
|
| private boolean mWindowFocused;
|
| @@ -549,6 +551,8 @@ public class AwContents {
|
| return contentViewCore;
|
| }
|
|
|
| + private WebContentsObserverAndroid mWebContentsObserver;
|
| +
|
| /**
|
| * Common initialization routine for adopting a native AwContents instance into this
|
| * java instance.
|
| @@ -579,6 +583,13 @@ public class AwContents {
|
| new AwGestureStateListener(), mContentViewClient, mZoomControls);
|
| nativeSetJavaPeers(mNativeAwContents, this, mWebContentsDelegate, mContentsClientBridge,
|
| mIoThreadClient, mInterceptNavigationDelegate);
|
| + mWebContentsObserver = new WebContentsObserverAndroid(mContentViewCore) {
|
| + @Override
|
| + public void didFirstVisuallyNonEmptyPaint(int pageId) {
|
| + mDoDraw = true;
|
| + mContainerView.invalidate();
|
| + }
|
| + };
|
| mContentsClient.installWebContentsObserver(mContentViewCore);
|
| mSettings.setWebContents(nativeWebContents);
|
| nativeSetDipScale(mNativeAwContents, (float) mDIPScale);
|
| @@ -779,6 +790,9 @@ public class AwContents {
|
| canvas.drawColor(getEffectiveBackgroundColor());
|
| }
|
|
|
| + if (!mDoDraw)
|
| + canvas.drawColor(0x88aaaaaa, android.graphics.PorterDuff.Mode.XOR);
|
| +
|
| if (mOverScrollGlow != null && mOverScrollGlow.drawEdgeGlows(canvas,
|
| mScrollOffsetManager.computeMaximumHorizontalScrollOffset(),
|
| mScrollOffsetManager.computeMaximumVerticalScrollOffset())) {
|
| @@ -881,6 +895,8 @@ public class AwContents {
|
| * @param params Parameters for this load.
|
| */
|
| public void loadUrl(LoadUrlParams params) {
|
| + mDoDraw = false;
|
| +
|
| if (params.getLoadUrlType() == LoadUrlParams.LOAD_TYPE_DATA &&
|
| !params.isBaseUrlDataScheme()) {
|
| // This allows data URLs with a non-data base URL access to file:///android_asset/ and
|
|
|