Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(258)

Unified Diff: android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java

Issue 1432083004: [Android WebView] Fire onPageFinished from WebContentsObserver::didStopLoading (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Restore required AwWebContentsObserverTest changes Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | android_webview/javatests/src/org/chromium/android_webview/test/AwWebContentsObserverTest.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 53715c67b5f8c6d520ee8ec445e1054c31c8abbc..1a04af4f66b346b17f83b07fa5634894e7fb9b47 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java
@@ -26,6 +26,9 @@ public class AwWebContentsObserver extends WebContentsObserver {
// Whether this webcontents has ever committed any navigation.
private boolean mCommittedNavigation;
+ // Temporarily stores the URL passed the last time to didFinishLoad callback.
+ private String mLastDidFinishLoadUrl;
+
public AwWebContentsObserver(
WebContents webContents, AwContents awContents, AwContentsClient awContentsClient) {
super(webContents);
@@ -33,15 +36,31 @@ public class AwWebContentsObserver extends WebContentsObserver {
mAwContentsClient = new WeakReference<>(awContentsClient);
}
+ private AwContentsClient getClientIfNeedToFireCallback(String validatedUrl) {
+ AwContentsClient client = mAwContentsClient.get();
+ if (client != null) {
+ String unreachableWebDataUrl = AwContentsStatics.getUnreachableWebDataUrl();
+ if (unreachableWebDataUrl == null || !unreachableWebDataUrl.equals(validatedUrl)) {
+ return client;
+ }
+ }
+ return null;
+ }
+
@Override
public void didFinishLoad(long frameId, String validatedUrl, boolean isMainFrame) {
- AwContentsClient client = mAwContentsClient.get();
- if (client == null) return;
- String unreachableWebDataUrl = AwContentsStatics.getUnreachableWebDataUrl();
- boolean isErrorUrl =
- unreachableWebDataUrl != null && unreachableWebDataUrl.equals(validatedUrl);
- if (isMainFrame && !isErrorUrl) {
+ if (isMainFrame && getClientIfNeedToFireCallback(validatedUrl) != null) {
+ mLastDidFinishLoadUrl = validatedUrl;
+ }
+ }
+
+ @Override
+ public void didStopLoading(String validatedUrl) {
+ if (validatedUrl.length() == 0) validatedUrl = "about:blank";
+ AwContentsClient client = getClientIfNeedToFireCallback(validatedUrl);
+ if (client != null && validatedUrl.equals(mLastDidFinishLoadUrl)) {
client.getCallbackHelper().postOnPageFinished(validatedUrl);
+ mLastDidFinishLoadUrl = null;
}
}
« no previous file with comments | « no previous file | android_webview/javatests/src/org/chromium/android_webview/test/AwWebContentsObserverTest.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698