Chromium Code Reviews| 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 9a444fef9b00c0c7c53fbc506336eb7e4d43cc5c..5fa5bed5a3b5a2ee0af10e8b4cd9892438076ae1 100644 |
| --- a/android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java |
| +++ b/android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java |
| @@ -9,6 +9,7 @@ import org.chromium.base.ThreadUtils; |
| 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; |
| @@ -65,8 +66,8 @@ public class AwWebContentsObserver extends WebContentsObserver { |
| } |
| @Override |
| - public void didFailLoad(boolean isProvisionalLoad, boolean isMainFrame, int errorCode, |
| - String description, String failingUrl, boolean wasIgnoredByHandler) { |
| + public void didFailLoad( |
| + boolean isMainFrame, int errorCode, String description, String failingUrl) { |
| AwContentsClient client = mAwContentsClient.get(); |
| if (client == null) return; |
| String unreachableWebDataUrl = AwContentsStatics.getUnreachableWebDataUrl(); |
| @@ -87,11 +88,25 @@ public class AwWebContentsObserver extends WebContentsObserver { |
| } |
| @Override |
| - public void didNavigateMainFrame(final String url, String baseUrl, |
| - boolean isNavigationToDifferentPage, boolean isFragmentNavigation, int statusCode) { |
| + public void didFinishNavigation(final String url, boolean isInMainFrame, boolean isErrorPage, |
| + boolean hasCommitted, boolean isSamePage, boolean isFragmentNavigation, |
| + Integer pageTransition, int errorCode, int httpStatusCode) { |
| + if (errorCode != 0) { |
| + didFailLoad(isInMainFrame, errorCode, "", url); |
|
Ted C
2017/01/31 18:57:47
do you need to return here?
shaktisahu
2017/02/03 06:56:16
Done.
|
| + } |
| + |
| + if (hasCommitted) mCommittedNavigation = true; |
| + |
| + AwContentsClient client = mAwContentsClient.get(); |
| + if (hasCommitted && client != null) { |
| + boolean isReload = pageTransition != null |
| + && ((pageTransition & PageTransition.CORE_MASK) == PageTransition.RELOAD); |
| + client.getCallbackHelper().postDoUpdateVisitedHistory(url, isReload); |
| + } |
| + |
| // Only invoke the onPageCommitVisible callback when navigating to a different page, |
| // but not when navigating to a different fragment within the same page. |
| - if (isNavigationToDifferentPage) { |
| + if (hasCommitted && isInMainFrame && !isSamePage) { |
| ThreadUtils.postOnUiThread(new Runnable() { |
| @Override |
| public void run() { |
| @@ -111,23 +126,11 @@ public class AwWebContentsObserver extends WebContentsObserver { |
| }); |
| } |
| - // This is here to emulate the Classic WebView firing onPageFinished for main frame |
| - // navigations where only the hash fragment changes. |
| - if (isFragmentNavigation) { |
| - AwContentsClient client = mAwContentsClient.get(); |
| - if (client == null) return; |
| + if (client != null && isInMainFrame && isFragmentNavigation) { |
| client.getCallbackHelper().postOnPageFinished(url); |
| } |
| } |
| - @Override |
| - public void didNavigateAnyFrame(String url, String baseUrl, boolean isReload) { |
| - mCommittedNavigation = true; |
| - final AwContentsClient client = mAwContentsClient.get(); |
| - if (client == null) return; |
| - client.getCallbackHelper().postDoUpdateVisitedHistory(url, isReload); |
| - } |
| - |
| public boolean didEverCommitNavigation() { |
| return mCommittedNavigation; |
| } |