| 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 "chrome/browser/page_load_metrics/metrics_web_contents_observer.h" | 5 #include "chrome/browser/page_load_metrics/metrics_web_contents_observer.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <ostream> | 8 #include <ostream> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 184 } | 184 } |
| 185 | 185 |
| 186 void RecordAppBackgroundPageLoadCompleted(bool completed_after_background) { | 186 void RecordAppBackgroundPageLoadCompleted(bool completed_after_background) { |
| 187 UMA_HISTOGRAM_BOOLEAN(internal::kPageLoadCompletedAfterAppBackground, | 187 UMA_HISTOGRAM_BOOLEAN(internal::kPageLoadCompletedAfterAppBackground, |
| 188 completed_after_background); | 188 completed_after_background); |
| 189 } | 189 } |
| 190 | 190 |
| 191 // TODO(csharrison): Add a case for client side redirects, which is what JS | 191 // TODO(csharrison): Add a case for client side redirects, which is what JS |
| 192 // initiated window.location / window.history navigations get set to. | 192 // initiated window.location / window.history navigations get set to. |
| 193 UserAbortType AbortTypeForPageTransition(ui::PageTransition transition) { | 193 UserAbortType AbortTypeForPageTransition(ui::PageTransition transition) { |
| 194 if (transition & ui::PAGE_TRANSITION_CLIENT_REDIRECT) { |
| 195 return ABORT_CLIENT_REDIRECT; |
| 196 } |
| 194 if (ui::PageTransitionCoreTypeIs(transition, ui::PAGE_TRANSITION_RELOAD)) | 197 if (ui::PageTransitionCoreTypeIs(transition, ui::PAGE_TRANSITION_RELOAD)) |
| 195 return ABORT_RELOAD; | 198 return ABORT_RELOAD; |
| 196 if (transition & ui::PAGE_TRANSITION_FORWARD_BACK) | 199 if (transition & ui::PAGE_TRANSITION_FORWARD_BACK) |
| 197 return ABORT_FORWARD_BACK; | 200 return ABORT_FORWARD_BACK; |
| 198 if (ui::PageTransitionIsNewNavigation(transition)) | 201 if (ui::PageTransitionIsNewNavigation(transition)) |
| 199 return ABORT_NEW_NAVIGATION; | 202 return ABORT_NEW_NAVIGATION; |
| 200 NOTREACHED() | 203 NOTREACHED() |
| 201 << "AbortTypeForPageTransition received unexpected ui::PageTransition: " | 204 << "AbortTypeForPageTransition received unexpected ui::PageTransition: " |
| 202 << transition; | 205 << transition; |
| 203 return ABORT_OTHER; | 206 return ABORT_OTHER; |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 327 final_navigation->GetPageTransition(); | 330 final_navigation->GetPageTransition(); |
| 328 switch (AbortTypeForPageTransition(committed_transition)) { | 331 switch (AbortTypeForPageTransition(committed_transition)) { |
| 329 case ABORT_RELOAD: | 332 case ABORT_RELOAD: |
| 330 UMA_HISTOGRAM_COUNTS(internal::kAbortChainSizeReload, | 333 UMA_HISTOGRAM_COUNTS(internal::kAbortChainSizeReload, |
| 331 aborted_chain_size_); | 334 aborted_chain_size_); |
| 332 return; | 335 return; |
| 333 case ABORT_FORWARD_BACK: | 336 case ABORT_FORWARD_BACK: |
| 334 UMA_HISTOGRAM_COUNTS(internal::kAbortChainSizeForwardBack, | 337 UMA_HISTOGRAM_COUNTS(internal::kAbortChainSizeForwardBack, |
| 335 aborted_chain_size_); | 338 aborted_chain_size_); |
| 336 return; | 339 return; |
| 340 // TODO(csharrison): Refactor this code so it is based on the WillStart* |
| 341 // code path instead of the committed load code path. Then, for every abort |
| 342 // chain, log a histogram of the counts of each of these metrics. For now, |
| 343 // merge client redirects with new navigations, which was (basically) the |
| 344 // previous behavior. |
| 345 case ABORT_CLIENT_REDIRECT: |
| 337 case ABORT_NEW_NAVIGATION: | 346 case ABORT_NEW_NAVIGATION: |
| 338 UMA_HISTOGRAM_COUNTS(internal::kAbortChainSizeNewNavigation, | 347 UMA_HISTOGRAM_COUNTS(internal::kAbortChainSizeNewNavigation, |
| 339 aborted_chain_size_); | 348 aborted_chain_size_); |
| 340 return; | 349 return; |
| 341 default: | 350 default: |
| 342 NOTREACHED() | 351 NOTREACHED() |
| 343 << "LogAbortChainHistograms received unexpected ui::PageTransition: " | 352 << "LogAbortChainHistograms received unexpected ui::PageTransition: " |
| 344 << committed_transition; | 353 << committed_transition; |
| 345 return; | 354 return; |
| 346 } | 355 } |
| (...skipping 640 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 987 if (navigation_handle->IsSamePage() || navigation_handle->IsErrorPage()) | 996 if (navigation_handle->IsSamePage() || navigation_handle->IsErrorPage()) |
| 988 return false; | 997 return false; |
| 989 const std::string& mime_type = web_contents()->GetContentsMimeType(); | 998 const std::string& mime_type = web_contents()->GetContentsMimeType(); |
| 990 if (mime_type != "text/html" && mime_type != "application/xhtml+xml") | 999 if (mime_type != "text/html" && mime_type != "application/xhtml+xml") |
| 991 return false; | 1000 return false; |
| 992 } | 1001 } |
| 993 return true; | 1002 return true; |
| 994 } | 1003 } |
| 995 | 1004 |
| 996 } // namespace page_load_metrics | 1005 } // namespace page_load_metrics |
| OLD | NEW |