Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/page_load_metrics/browser/metrics_web_contents_observer.h" | 5 #include "components/page_load_metrics/browser/metrics_web_contents_observer.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/metrics/histogram.h" | 8 #include "base/metrics/histogram.h" |
| 9 #include "components/page_load_metrics/common/page_load_metrics_messages.h" | 9 #include "components/page_load_metrics/common/page_load_metrics_messages.h" |
| 10 #include "components/page_load_metrics/common/page_load_timing.h" | 10 #include "components/page_load_metrics/common/page_load_timing.h" |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 64 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 64 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 65 bool handled = true; | 65 bool handled = true; |
| 66 IPC_BEGIN_MESSAGE_MAP_WITH_PARAM(MetricsWebContentsObserver, message, | 66 IPC_BEGIN_MESSAGE_MAP_WITH_PARAM(MetricsWebContentsObserver, message, |
| 67 render_frame_host) | 67 render_frame_host) |
| 68 IPC_MESSAGE_HANDLER(PageLoadMetricsMsg_TimingUpdated, OnTimingUpdated) | 68 IPC_MESSAGE_HANDLER(PageLoadMetricsMsg_TimingUpdated, OnTimingUpdated) |
| 69 IPC_MESSAGE_UNHANDLED(handled = false) | 69 IPC_MESSAGE_UNHANDLED(handled = false) |
| 70 IPC_END_MESSAGE_MAP() | 70 IPC_END_MESSAGE_MAP() |
| 71 return handled; | 71 return handled; |
| 72 } | 72 } |
| 73 | 73 |
| 74 void MetricsWebContentsObserver::DidCommitNavigation( | 74 void MetricsWebContentsObserver::DidFinishNavigation( |
| 75 content::NavigationHandle* navigation_handle) { | 75 content::NavigationHandle* navigation_handle) { |
| 76 if (!navigation_handle->HasCommitted()) | |
|
Charlie Harrison
2015/09/22 19:39:45
Will this ever be called while the previous naviga
clamy
2015/09/22 23:04:45
Yes it can be called when a previous navigation is
| |
| 77 return; | |
| 76 if (navigation_handle->IsInMainFrame() && !navigation_handle->IsSamePage()) | 78 if (navigation_handle->IsInMainFrame() && !navigation_handle->IsSamePage()) |
| 77 RecordTimingHistograms(); | 79 RecordTimingHistograms(); |
| 78 if (IsRelevantNavigation(navigation_handle)) | 80 if (IsRelevantNavigation(navigation_handle)) |
| 79 current_timing_.reset(new PageLoadTiming()); | 81 current_timing_.reset(new PageLoadTiming()); |
| 80 } | 82 } |
| 81 | 83 |
| 82 // This will occur when the process for the main RenderFrameHost exits. | 84 // This will occur when the process for the main RenderFrameHost exits. |
| 83 // This will happen with a normal exit or a crash. | 85 // This will happen with a normal exit or a crash. |
| 84 void MetricsWebContentsObserver::RenderProcessGone( | 86 void MetricsWebContentsObserver::RenderProcessGone( |
| 85 base::TerminationStatus status) { | 87 base::TerminationStatus status) { |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 141 } | 143 } |
| 142 | 144 |
| 143 bool MetricsWebContentsObserver::IsRelevantNavigation( | 145 bool MetricsWebContentsObserver::IsRelevantNavigation( |
| 144 content::NavigationHandle* navigation_handle) { | 146 content::NavigationHandle* navigation_handle) { |
| 145 // The url we see from the renderer side is not always the same as what | 147 // The url we see from the renderer side is not always the same as what |
| 146 // we see from the browser side (e.g. chrome://newtab). We want to be | 148 // we see from the browser side (e.g. chrome://newtab). We want to be |
| 147 // sure here that we aren't logging UMA for internal pages. | 149 // sure here that we aren't logging UMA for internal pages. |
| 148 const GURL& browser_url = web_contents()->GetLastCommittedURL(); | 150 const GURL& browser_url = web_contents()->GetLastCommittedURL(); |
| 149 return navigation_handle->IsInMainFrame() && | 151 return navigation_handle->IsInMainFrame() && |
| 150 !navigation_handle->IsSamePage() && | 152 !navigation_handle->IsSamePage() && |
| 151 navigation_handle->HasCommittedDocument() && | 153 !navigation_handle->IsErrorPage() && |
| 152 navigation_handle->GetURL().SchemeIsHTTPOrHTTPS() && | 154 navigation_handle->GetURL().SchemeIsHTTPOrHTTPS() && |
| 153 browser_url.SchemeIsHTTPOrHTTPS(); | 155 browser_url.SchemeIsHTTPOrHTTPS(); |
| 154 } | 156 } |
| 155 | 157 |
| 156 } // namespace page_load_metrics | 158 } // namespace page_load_metrics |
| OLD | NEW |