summaryrefslogtreecommitdiff
path: root/android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java
diff options
context:
space:
mode:
Diffstat (limited to 'android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java')
-rw-r--r--android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java25
1 files changed, 20 insertions, 5 deletions
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 cd45eadac2..bf012805bc 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java
@@ -5,23 +5,30 @@
package org.chromium.android_webview;
import org.chromium.content.browser.WebContentsObserver;
+import org.chromium.content_public.browser.NavigationEntry;
import org.chromium.content_public.browser.WebContents;
import org.chromium.net.NetError;
+import org.chromium.ui.base.PageTransition;
+
+import java.lang.ref.WeakReference;
/**
* Routes notifications from WebContents to AwContentsClient and other listeners.
*/
public class AwWebContentsObserver extends WebContentsObserver {
+ private final WeakReference<AwContents> mAwContents;
private final AwContentsClient mAwContentsClient;
- private boolean mHasStartedAnyProvisionalLoad = false;
+ private boolean mStartedNonApiProvisionalLoadInMainFrame = false;
- public AwWebContentsObserver(WebContents webContents, AwContentsClient awContentsClient) {
+ public AwWebContentsObserver(
+ WebContents webContents, AwContents awContents, AwContentsClient awContentsClient) {
super(webContents);
+ mAwContents = new WeakReference<AwContents>(awContents);
mAwContentsClient = awContentsClient;
}
- boolean hasStartedAnyProvisionalLoad() {
- return mHasStartedAnyProvisionalLoad;
+ boolean hasStartedNonApiProvisionalLoadInMainFrame() {
+ return mStartedNonApiProvisionalLoadInMainFrame;
}
@Override
@@ -81,6 +88,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;
+ }
+ }
}
}