OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/page_load_tracker.h" | 5 #include "chrome/browser/page_load_metrics/page_load_tracker.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 463 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
474 } | 474 } |
475 | 475 |
476 INVOKE_AND_PRUNE_OBSERVERS(observers_, OnShown); | 476 INVOKE_AND_PRUNE_OBSERVERS(observers_, OnShown); |
477 } | 477 } |
478 | 478 |
479 void PageLoadTracker::WillProcessNavigationResponse( | 479 void PageLoadTracker::WillProcessNavigationResponse( |
480 content::NavigationHandle* navigation_handle) { | 480 content::NavigationHandle* navigation_handle) { |
481 // PlzNavigate: NavigationHandle::GetGlobalRequestID() sometimes returns an | 481 // PlzNavigate: NavigationHandle::GetGlobalRequestID() sometimes returns an |
482 // uninitialized GlobalRequestID. Bail early in this case. See | 482 // uninitialized GlobalRequestID. Bail early in this case. See |
483 // crbug.com/680841 for details. | 483 // crbug.com/680841 for details. |
484 if (content::IsBrowserSideNavigationEnabled() && | 484 // TODO(jkarlin): NavigationSimulator is the first unittest framework to hit |
485 navigation_handle->GetGlobalRequestID() == content::GlobalRequestID()) | 485 // this function, and it doesn't provide a GlobalRequestID. Add an ID. See |
| 486 // crbug.com/711352 for details. |
| 487 if (navigation_handle->GetGlobalRequestID() == content::GlobalRequestID()) |
486 return; | 488 return; |
487 | 489 |
488 DCHECK(!navigation_request_id_.has_value()); | 490 DCHECK(!navigation_request_id_.has_value()); |
489 navigation_request_id_ = navigation_handle->GetGlobalRequestID(); | 491 navigation_request_id_ = navigation_handle->GetGlobalRequestID(); |
490 DCHECK(navigation_request_id_.value() != content::GlobalRequestID()); | 492 DCHECK(navigation_request_id_.value() != content::GlobalRequestID()); |
491 } | 493 } |
492 | 494 |
493 void PageLoadTracker::Commit(content::NavigationHandle* navigation_handle) { | 495 void PageLoadTracker::Commit(content::NavigationHandle* navigation_handle) { |
494 did_commit_ = true; | 496 did_commit_ = true; |
495 url_ = navigation_handle->GetURL(); | 497 url_ = navigation_handle->GetURL(); |
496 // Some transitions (like CLIENT_REDIRECT) are only known at commit time. | 498 // Some transitions (like CLIENT_REDIRECT) are only known at commit time. |
497 page_transition_ = navigation_handle->GetPageTransition(); | 499 page_transition_ = navigation_handle->GetPageTransition(); |
498 user_initiated_info_.user_gesture = navigation_handle->HasUserGesture(); | 500 user_initiated_info_.user_gesture = navigation_handle->HasUserGesture(); |
499 | 501 |
500 INVOKE_AND_PRUNE_OBSERVERS( | 502 INVOKE_AND_PRUNE_OBSERVERS( |
501 observers_, ShouldObserveMimeType, | 503 observers_, ShouldObserveMimeType, |
502 navigation_handle->GetWebContents()->GetContentsMimeType()); | 504 navigation_handle->GetWebContents()->GetContentsMimeType()); |
503 | 505 |
504 INVOKE_AND_PRUNE_OBSERVERS(observers_, OnCommit, navigation_handle); | 506 INVOKE_AND_PRUNE_OBSERVERS(observers_, OnCommit, navigation_handle); |
505 LogAbortChainHistograms(navigation_handle); | 507 LogAbortChainHistograms(navigation_handle); |
506 } | 508 } |
507 | 509 |
| 510 void PageLoadTracker::DidFinishSubFrameNavigation( |
| 511 content::NavigationHandle* navigation_handle) { |
| 512 INVOKE_AND_PRUNE_OBSERVERS(observers_, OnDidFinishSubFrameNavigation, |
| 513 navigation_handle); |
| 514 } |
| 515 |
508 void PageLoadTracker::FailedProvisionalLoad( | 516 void PageLoadTracker::FailedProvisionalLoad( |
509 content::NavigationHandle* navigation_handle, | 517 content::NavigationHandle* navigation_handle, |
510 base::TimeTicks failed_load_time) { | 518 base::TimeTicks failed_load_time) { |
511 DCHECK(!failed_provisional_load_info_); | 519 DCHECK(!failed_provisional_load_info_); |
512 failed_provisional_load_info_.reset(new FailedProvisionalLoadInfo( | 520 failed_provisional_load_info_.reset(new FailedProvisionalLoadInfo( |
513 failed_load_time - navigation_handle->NavigationStart(), | 521 failed_load_time - navigation_handle->NavigationStart(), |
514 navigation_handle->GetNetErrorCode())); | 522 navigation_handle->GetNetErrorCode())); |
515 } | 523 } |
516 | 524 |
517 void PageLoadTracker::Redirect(content::NavigationHandle* navigation_handle) { | 525 void PageLoadTracker::Redirect(content::NavigationHandle* navigation_handle) { |
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
804 observer->MediaStartedPlaying(video_type, is_in_main_frame); | 812 observer->MediaStartedPlaying(video_type, is_in_main_frame); |
805 } | 813 } |
806 | 814 |
807 void PageLoadTracker::OnNavigationDelayComplete(base::TimeDelta scheduled_delay, | 815 void PageLoadTracker::OnNavigationDelayComplete(base::TimeDelta scheduled_delay, |
808 base::TimeDelta actual_delay) { | 816 base::TimeDelta actual_delay) { |
809 for (const auto& observer : observers_) | 817 for (const auto& observer : observers_) |
810 observer->OnNavigationDelayComplete(scheduled_delay, actual_delay); | 818 observer->OnNavigationDelayComplete(scheduled_delay, actual_delay); |
811 } | 819 } |
812 | 820 |
813 } // namespace page_load_metrics | 821 } // namespace page_load_metrics |
OLD | NEW |