| 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 4f142196134dec46b971edc1b5ebaaa9435115eb..ab22880d6fc122943e4e2eceedaa2b4b75500c1c 100644
|
| --- a/android_webview/java/src/org/chromium/android_webview/AwContents.java
|
| +++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java
|
| @@ -51,6 +51,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;
|
| @@ -202,6 +203,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;
|
| @@ -545,6 +547,8 @@ public class AwContents {
|
| return contentViewCore;
|
| }
|
|
|
| + private WebContentsObserverAndroid mWebContentsObserver;
|
| +
|
| /**
|
| * Common initialization routine for adopting a native AwContents instance into this
|
| * java instance.
|
| @@ -575,6 +579,13 @@ public class AwContents {
|
| new AwGestureStateListener(), mContentViewClient, mZoomControls);
|
| nativeSetJavaPeers(mNativeAwContents, this, mWebContentsDelegate, mContentsClientBridge,
|
| mIoThreadClient, mInterceptNavigationDelegate);
|
| + mWebContentsObserver = new WebContentsObserverAndroid(mContentViewCore) {
|
| + @Override
|
| + public void didFirstVisuallyNonEmptyPaint() {
|
| + mDoDraw = true;
|
| + mContainerView.invalidate();
|
| + }
|
| + };
|
| mContentsClient.installWebContentsObserver(mContentViewCore);
|
| mSettings.setWebContents(nativeWebContents);
|
| nativeSetDipScale(mNativeAwContents, (float) mDIPScale);
|
| @@ -769,6 +780,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())) {
|
| @@ -871,6 +885,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
|
|
|