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

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

Issue 2622283002: [WebView 56] Post onPageFinished for committed Url if nav to error page. (Closed)
Patch Set: Created 3 years, 11 months 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 | « android_webview/java/src/org/chromium/android_webview/AwContents.java ('k') | no next file » | 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 3c08c30ebb24c6462d3018b38025d3842739078f..11633f717d943dc15e32494aa6480b3d8ef7733b 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java
@@ -29,6 +29,12 @@ public class AwWebContentsObserver extends WebContentsObserver {
// Temporarily stores the URL passed the last time to didFinishLoad callback.
private String mLastDidFinishLoadUrl;
+ // Temporarily stores the last committed url.
+ private String mLastCommittedUrl;
+ // Temporarily stores the last url that was committed when we started a navigation to an error
+ // page.
+ private String mLastCommittedUrlWhenNavigatingToErrorPage;
+
public AwWebContentsObserver(
WebContents webContents, AwContents awContents, AwContentsClient awContentsClient) {
super(webContents);
@@ -48,6 +54,24 @@ public class AwWebContentsObserver extends WebContentsObserver {
}
@Override
+ public void didStartProvisionalLoadForFrame(long frameId, long parentFrameId,
+ boolean isMainFrame, String validatedUrl, boolean isErrorPage, boolean isIframeSrcdoc) {
+ if (isMainFrame && isErrorPage) {
+ // We are navigating to an error page - we should call onPageFinished for the last
+ // committed Url.
+ mLastCommittedUrlWhenNavigatingToErrorPage = mLastCommittedUrl;
+ }
+ }
+
+ @Override
+ public void didCommitProvisionalLoadForFrame(
+ long frameId, boolean isMainFrame, String url, int transitionType) {
+ if (isMainFrame) {
+ mLastCommittedUrl = url;
+ }
+ }
+
+ @Override
public void didFinishLoad(long frameId, String validatedUrl, boolean isMainFrame) {
if (isMainFrame && getClientIfNeedToFireCallback(validatedUrl) != null) {
mLastDidFinishLoadUrl = validatedUrl;
@@ -58,9 +82,13 @@ public class AwWebContentsObserver extends WebContentsObserver {
public void didStopLoading(String validatedUrl) {
if (validatedUrl.length() == 0) validatedUrl = "about:blank";
AwContentsClient client = getClientIfNeedToFireCallback(validatedUrl);
- if (client != null && validatedUrl.equals(mLastDidFinishLoadUrl)) {
+ if (client != null
+ && (validatedUrl.equals(mLastDidFinishLoadUrl)
+ || validatedUrl.equals(mLastCommittedUrlWhenNavigatingToErrorPage))) {
client.getCallbackHelper().postOnPageFinished(validatedUrl);
mLastDidFinishLoadUrl = null;
+ mLastCommittedUrlWhenNavigatingToErrorPage = null;
+ mLastCommittedUrl = null;
}
}
« no previous file with comments | « android_webview/java/src/org/chromium/android_webview/AwContents.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698