Index: chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsObserver.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsObserver.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsObserver.java |
index bf4d756e1fa0d9738c2b3f0016c1bb4985a87122..cb2d19cc50368e03d62047f2bc1fc9e8cd1704de 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsObserver.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabWebContentsObserver.java |
@@ -156,17 +156,20 @@ public class TabWebContentsObserver 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) { |
mTab.updateThemeColorIfNeeded(true); |
RewindableIterator<TabObserver> observers = mTab.getTabObservers(); |
while (observers.hasNext()) { |
- observers.next().onDidFailLoad(mTab, isProvisionalLoad, isMainFrame, errorCode, |
- description, failingUrl); |
+ observers.next().onDidFailLoad(mTab, isMainFrame, errorCode, description, failingUrl); |
} |
if (isMainFrame) mTab.didFailPageLoad(errorCode); |
+ recordErrorInPolicyAuditor(failingUrl, description, errorCode); |
+ } |
+ |
+ private void recordErrorInPolicyAuditor(String failingUrl, String description, int errorCode) { |
PolicyAuditor auditor = |
((ChromeApplication) mTab.getApplicationContext()).getPolicyAuditor(); |
auditor.notifyAuditEvent(mTab.getApplicationContext(), AuditEvent.OPEN_URL_FAILURE, |
@@ -183,17 +186,40 @@ public class TabWebContentsObserver extends WebContentsObserver { |
} |
@Override |
- public void didStartProvisionalLoadForFrame(long frameId, long parentFrameId, |
- boolean isMainFrame, String validatedUrl, boolean isErrorPage) { |
- if (isMainFrame) mTab.didStartPageLoad(validatedUrl, isErrorPage); |
+ public void didStartNavigation( |
+ String url, boolean isInMainFrame, boolean isSamePage, boolean isErrorPage) { |
+ if (isInMainFrame && !isSamePage) { |
+ mTab.didStartPageLoad(url, isErrorPage); |
+ } |
- mTab.handleDidStartProvisionalLoadForFrame(isMainFrame, validatedUrl); |
+ RewindableIterator<TabObserver> observers = mTab.getTabObservers(); |
+ while (observers.hasNext()) { |
+ observers.next().onDidStartNavigation( |
+ mTab, url, isInMainFrame, isSamePage, isErrorPage); |
+ } |
} |
@Override |
- public void didCommitProvisionalLoadForFrame(long frameId, boolean isMainFrame, String url, |
- int transitionType) { |
- if (isMainFrame && UmaUtils.isRunningApplicationStart()) { |
+ public void didFinishNavigation(String url, boolean isInMainFrame, boolean isErrorPage, |
+ boolean hasCommitted, boolean isSamePage, boolean isFragmentNavigation, |
+ Integer pageTransition, int errorCode, String errorDescription, int httpStatusCode) { |
+ RewindableIterator<TabObserver> observers = mTab.getTabObservers(); |
+ while (observers.hasNext()) { |
+ observers.next().onDidFinishNavigation(mTab, url, isInMainFrame, isErrorPage, |
+ hasCommitted, isSamePage, isFragmentNavigation, pageTransition, errorCode, |
+ httpStatusCode); |
+ } |
+ |
+ if (errorCode != 0) { |
+ mTab.updateThemeColorIfNeeded(true); |
+ if (isInMainFrame) mTab.didFailPageLoad(errorCode); |
+ |
+ recordErrorInPolicyAuditor(url, errorDescription, errorCode); |
+ return; |
+ } |
+ |
+ if (!hasCommitted) return; |
+ if (isInMainFrame && UmaUtils.isRunningApplicationStart()) { |
// Current median is 550ms, and long tail is very long. ZoomedIn gives good view of the |
// median and ZoomedOut gives a good overview. |
RecordHistogram.recordCustomTimesHistogram( |
@@ -209,15 +235,11 @@ public class TabWebContentsObserver extends WebContentsObserver { |
UmaUtils.setRunningApplicationStart(false); |
} |
- if (isMainFrame) { |
+ if (isInMainFrame) { |
mTab.setIsTabStateDirty(true); |
mTab.updateTitle(); |
- } |
- |
- RewindableIterator<TabObserver> observers = mTab.getTabObservers(); |
- while (observers.hasNext()) { |
- observers.next().onDidCommitProvisionalLoadForFrame( |
- mTab, frameId, isMainFrame, url, transitionType); |
+ mTab.handleDidFinishNavigation(url, pageTransition); |
+ mTab.setIsShowingErrorPage(isErrorPage); |
} |
observers.rewind(); |
@@ -225,45 +247,13 @@ public class TabWebContentsObserver extends WebContentsObserver { |
observers.next().onUrlUpdated(mTab); |
} |
- if (!isMainFrame) return; |
- mTab.handleDidCommitProvisonalLoadForFrame(url, transitionType); |
- } |
- |
- @Override |
- public void didNavigateMainFrame(String url, String baseUrl, |
- boolean isNavigationToDifferentPage, boolean isFragmentNavigation, int statusCode) { |
FullscreenManager fullscreenManager = mTab.getFullscreenManager(); |
- if (isNavigationToDifferentPage && fullscreenManager != null) { |
+ if (isInMainFrame && !isSamePage && fullscreenManager != null) { |
fullscreenManager.setPersistentFullscreenMode(false); |
} |
- RewindableIterator<TabObserver> observers = mTab.getTabObservers(); |
- while (observers.hasNext()) { |
- observers.next().onDidNavigateMainFrame( |
- mTab, url, baseUrl, isNavigationToDifferentPage, |
- isFragmentNavigation, statusCode); |
- } |
- |
- mTab.stopSwipeRefreshHandler(); |
- } |
- |
- @Override |
- public void didStartNavigation(String url, boolean isInMainFrame, boolean isErrorPage) { |
- RewindableIterator<TabObserver> observers = mTab.getTabObservers(); |
- while (observers.hasNext()) { |
- observers.next().onDidStartNavigation(mTab, url, isInMainFrame, isErrorPage); |
- } |
- } |
- |
- @Override |
- public void didFinishNavigation(String url, boolean isInMainFrame, boolean isErrorPage, |
- boolean hasCommitted, boolean isSamePage, Integer pageTransition, int errorCode) { |
- if (isInMainFrame && hasCommitted) mTab.setIsShowingErrorPage(isErrorPage); |
- |
- RewindableIterator<TabObserver> observers = mTab.getTabObservers(); |
- while (observers.hasNext()) { |
- observers.next().onDidFinishNavigation(mTab, url, isInMainFrame, isErrorPage, |
- hasCommitted, isSamePage, pageTransition, errorCode); |
+ if (isInMainFrame) { |
+ mTab.stopSwipeRefreshHandler(); |
} |
} |
@@ -320,14 +310,6 @@ public class TabWebContentsObserver extends WebContentsObserver { |
} |
@Override |
- public void didStartNavigationToPendingEntry(String url) { |
- RewindableIterator<TabObserver> observers = mTab.getTabObservers(); |
- while (observers.hasNext()) { |
- observers.next().onDidStartNavigationToPendingEntry(mTab, url); |
- } |
- } |
- |
- @Override |
public void destroy() { |
MediaCaptureNotificationService.updateMediaNotificationForTab( |
mTab.getApplicationContext(), mTab.getId(), 0, mTab.getUrl()); |