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 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
63 } | 63 } |
64 | 64 |
65 } // namespace | 65 } // namespace |
66 | 66 |
67 MetricsWebContentsObserver::MetricsWebContentsObserver( | 67 MetricsWebContentsObserver::MetricsWebContentsObserver( |
68 content::WebContents* web_contents, | 68 content::WebContents* web_contents, |
69 std::unique_ptr<PageLoadMetricsEmbedderInterface> embedder_interface) | 69 std::unique_ptr<PageLoadMetricsEmbedderInterface> embedder_interface) |
70 : content::WebContentsObserver(web_contents), | 70 : content::WebContentsObserver(web_contents), |
71 in_foreground_(false), | 71 in_foreground_(false), |
72 embedder_interface_(std::move(embedder_interface)), | 72 embedder_interface_(std::move(embedder_interface)), |
73 has_navigated_(false) { | 73 has_navigated_(false), |
74 page_load_metrics_binding_(web_contents, this) { | |
74 RegisterInputEventObserver(web_contents->GetRenderViewHost()); | 75 RegisterInputEventObserver(web_contents->GetRenderViewHost()); |
75 } | 76 } |
76 | 77 |
77 // static | 78 // static |
78 MetricsWebContentsObserver* MetricsWebContentsObserver::CreateForWebContents( | 79 MetricsWebContentsObserver* MetricsWebContentsObserver::CreateForWebContents( |
79 content::WebContents* web_contents, | 80 content::WebContents* web_contents, |
80 std::unique_ptr<PageLoadMetricsEmbedderInterface> embedder_interface) { | 81 std::unique_ptr<PageLoadMetricsEmbedderInterface> embedder_interface) { |
81 DCHECK(web_contents); | 82 DCHECK(web_contents); |
82 | 83 |
83 MetricsWebContentsObserver* metrics = FromWebContents(web_contents); | 84 MetricsWebContentsObserver* metrics = FromWebContents(web_contents); |
(...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
603 committed_load_->UpdateChildFrameMetadata(metadata); | 604 committed_load_->UpdateChildFrameMetadata(metadata); |
604 return; | 605 return; |
605 } | 606 } |
606 | 607 |
607 committed_load_->UpdateTiming(timing, metadata); | 608 committed_load_->UpdateTiming(timing, metadata); |
608 | 609 |
609 for (auto& observer : testing_observers_) | 610 for (auto& observer : testing_observers_) |
610 observer.OnTimingUpdated(timing, metadata); | 611 observer.OnTimingUpdated(timing, metadata); |
611 } | 612 } |
612 | 613 |
614 void MetricsWebContentsObserver::UpdateTiming( | |
615 const PageLoadTiming& timing, | |
616 const PageLoadMetadata& metadata) { | |
617 content::RenderFrameHost* render_frame_host = | |
Bryan McQuade
2017/05/07 19:48:13
can we DCHECK that the mojofication feature is ena
lpy
2017/05/08 18:38:33
Done.
| |
618 page_load_metrics_binding_.GetCurrentTargetFrame(); | |
619 OnTimingUpdated(render_frame_host, timing, metadata); | |
620 } | |
621 | |
613 bool MetricsWebContentsObserver::ShouldTrackNavigation( | 622 bool MetricsWebContentsObserver::ShouldTrackNavigation( |
614 content::NavigationHandle* navigation_handle) const { | 623 content::NavigationHandle* navigation_handle) const { |
615 DCHECK(navigation_handle->IsInMainFrame()); | 624 DCHECK(navigation_handle->IsInMainFrame()); |
616 DCHECK(!navigation_handle->HasCommitted() || | 625 DCHECK(!navigation_handle->HasCommitted() || |
617 !navigation_handle->IsSameDocument()); | 626 !navigation_handle->IsSameDocument()); |
618 | 627 |
619 return BrowserPageTrackDecider(embedder_interface_.get(), web_contents(), | 628 return BrowserPageTrackDecider(embedder_interface_.get(), web_contents(), |
620 navigation_handle).ShouldTrack(); | 629 navigation_handle).ShouldTrack(); |
621 } | 630 } |
622 | 631 |
(...skipping 19 matching lines...) Expand all Loading... | |
642 observer_->RemoveTestingObserver(this); | 651 observer_->RemoveTestingObserver(this); |
643 observer_ = nullptr; | 652 observer_ = nullptr; |
644 } | 653 } |
645 } | 654 } |
646 | 655 |
647 void MetricsWebContentsObserver::TestingObserver::OnGoingAway() { | 656 void MetricsWebContentsObserver::TestingObserver::OnGoingAway() { |
648 observer_ = nullptr; | 657 observer_ = nullptr; |
649 } | 658 } |
650 | 659 |
651 } // namespace page_load_metrics | 660 } // namespace page_load_metrics |
OLD | NEW |