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 c95137c7ec63a5d061f50cf0c56f4f90399adf86..6e5e528cf7be29c6f4b762dcbb528920e11c04f7 100644 |
--- a/android_webview/java/src/org/chromium/android_webview/AwContents.java |
+++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java |
@@ -49,7 +49,6 @@ import org.chromium.content.browser.ContentViewClient; |
import org.chromium.content.browser.ContentViewCore; |
import org.chromium.content.browser.ContentViewStatics; |
import org.chromium.content.browser.SmartClipProvider; |
-import org.chromium.content.browser.WebContentsObserver; |
import org.chromium.content.common.CleanupReference; |
import org.chromium.content_public.browser.GestureStateListener; |
import org.chromium.content_public.browser.JavaScriptCallback; |
@@ -204,7 +203,7 @@ public class AwContents implements SmartClipProvider, |
private NavigationController mNavigationController; |
private final AwContentsClient mContentsClient; |
private final AwContentViewClient mContentViewClient; |
- private WebContentsObserver mWebContentsObserver; |
+ private AwWebContentsObserver mWebContentsObserver; |
private final AwContentsClientBridge mContentsClientBridge; |
private final AwWebContentsDelegateAdapter mWebContentsDelegate; |
private final AwContentsIoThreadClient mIoThreadClient; |
@@ -227,6 +226,8 @@ public class AwContents implements SmartClipProvider, |
private boolean mHasRequestedVisitedHistoryFromClient; |
// TODO(boliu): This should be in a global context, not per webview. |
private final double mDIPScale; |
+ // Whether the WebView has attempted to do any load (including uncommitted loads). |
+ private boolean mDidAttemptLoad = false; |
// The base background color, i.e. not accounting for any CSS body from the current page. |
private int mBaseBackgroundColor = Color.WHITE; |
@@ -908,6 +909,9 @@ public class AwContents implements SmartClipProvider, |
if (wasWindowFocused) onWindowFocusChanged(wasWindowFocused); |
if (wasFocused) onFocusChanged(true, 0, null); |
+ // Popups are always assumed as having made a load attempt. |
+ mDidAttemptLoad = true; |
+ |
// Restore injected JavaScript interfaces. |
for (Map.Entry<String, Pair<Object, Class>> entry : javascriptInterfaces.entrySet()) { |
@SuppressWarnings("unchecked") |
@@ -1239,6 +1243,19 @@ public class AwContents implements SmartClipProvider, |
return url; |
} |
+ /** |
+ * Gets the last committed URL. It represents the current page that is |
+ * displayed in WebContents. It represents the current security context. |
+ * |
+ * @return The URL of the current page or null if it's empty. |
+ */ |
+ public String getLastCommittedUrl() { |
+ if (isDestroyed()) return null; |
+ String url = mWebContents.getLastCommittedUrl(); |
+ if (url == null || url.trim().isEmpty()) return null; |
+ return url; |
+ } |
+ |
public void requestFocus() { |
mAwViewMethods.requestFocus(); |
} |
@@ -1838,6 +1855,11 @@ public class AwContents implements SmartClipProvider, |
return ports; |
} |
+ public boolean hasAccessedInitialDocument() { |
+ if (isDestroyed()) return false; |
+ return mWebContents.hasAccessedInitialDocument(); |
+ } |
+ |
//-------------------------------------------------------------------------------------------- |
// View and ViewGroup method implementations |
//-------------------------------------------------------------------------------------------- |
@@ -2072,6 +2094,12 @@ public class AwContents implements SmartClipProvider, |
nativeInsertVisualStateCallback(mNativeAwContents, requestId, callback); |
} |
+ public boolean getDidAttemptLoad() { |
+ if (mDidAttemptLoad) return mDidAttemptLoad; |
+ mDidAttemptLoad = mWebContentsObserver.hasStartedAnyProvisionalLoad(); |
+ return mDidAttemptLoad; |
+ } |
+ |
//-------------------------------------------------------------------------------------------- |
// Methods called from native via JNI |
//-------------------------------------------------------------------------------------------- |