Index: android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java |
diff --git a/android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java b/android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java |
index f985369e29e2eb195163db7f9069bd24197fa6fc..f600470c5bf1e7e959072320d79bec518f21a947 100644 |
--- a/android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java |
+++ b/android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java |
@@ -6,9 +6,11 @@ package org.chromium.android_webview; |
import org.chromium.android_webview.AwContents.VisualStateCallback; |
import org.chromium.base.ThreadUtils; |
+import org.chromium.content_public.browser.NavigationEntry; |
import org.chromium.content_public.browser.WebContents; |
import org.chromium.content_public.browser.WebContentsObserver; |
import org.chromium.net.NetError; |
+import org.chromium.ui.base.PageTransition; |
import java.lang.ref.WeakReference; |
@@ -22,7 +24,7 @@ public class AwWebContentsObserver extends WebContentsObserver { |
// and should be found and cleaned up. |
private final WeakReference<AwContents> mAwContents; |
private final AwContentsClient mAwContentsClient; |
- private boolean mHasStartedAnyProvisionalLoad = false; |
+ private boolean mStartedNonApiProvisionalLoadInMainFrame = false; |
public AwWebContentsObserver( |
WebContents webContents, AwContents awContents, AwContentsClient awContentsClient) { |
@@ -31,8 +33,8 @@ public class AwWebContentsObserver extends WebContentsObserver { |
mAwContentsClient = awContentsClient; |
} |
- boolean hasStartedAnyProvisionalLoad() { |
- return mHasStartedAnyProvisionalLoad; |
+ boolean hasStartedNonApiProvisionalLoadInMainFrame() { |
+ return mStartedNonApiProvisionalLoadInMainFrame; |
} |
@Override |
@@ -99,6 +101,14 @@ public class AwWebContentsObserver extends WebContentsObserver { |
String validatedUrl, |
boolean isErrorPage, |
boolean isIframeSrcdoc) { |
- mHasStartedAnyProvisionalLoad = true; |
+ if (!isMainFrame) return; |
+ AwContents awContents = mAwContents.get(); |
+ if (awContents != null) { |
+ NavigationEntry pendingEntry = awContents.getNavigationController().getPendingEntry(); |
+ if (pendingEntry != null |
+ && (pendingEntry.getTransition() & PageTransition.FROM_API) == 0) { |
+ mStartedNonApiProvisionalLoadInMainFrame = true; |
+ } |
+ } |
} |
} |