| 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 514 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 598 committed_load_->UpdateChildFrameMetadata(metadata); | 599 committed_load_->UpdateChildFrameMetadata(metadata); |
| 599 return; | 600 return; |
| 600 } | 601 } |
| 601 | 602 |
| 602 committed_load_->UpdateTiming(timing, metadata); | 603 committed_load_->UpdateTiming(timing, metadata); |
| 603 | 604 |
| 604 for (auto& observer : testing_observers_) | 605 for (auto& observer : testing_observers_) |
| 605 observer.OnTimingUpdated(timing, metadata); | 606 observer.OnTimingUpdated(timing, metadata); |
| 606 } | 607 } |
| 607 | 608 |
| 609 void MetricsWebContentsObserver::UpdateTiming( |
| 610 const PageLoadTiming& timing, |
| 611 const PageLoadMetadata& metadata) { |
| 612 content::RenderFrameHost* render_frame_host = |
| 613 page_load_metrics_binding_.GetCurrentTargetFrame(); |
| 614 OnTimingUpdated(render_frame_host, timing, metadata); |
| 615 } |
| 616 |
| 608 bool MetricsWebContentsObserver::ShouldTrackNavigation( | 617 bool MetricsWebContentsObserver::ShouldTrackNavigation( |
| 609 content::NavigationHandle* navigation_handle) const { | 618 content::NavigationHandle* navigation_handle) const { |
| 610 DCHECK(navigation_handle->IsInMainFrame()); | 619 DCHECK(navigation_handle->IsInMainFrame()); |
| 611 DCHECK(!navigation_handle->HasCommitted() || | 620 DCHECK(!navigation_handle->HasCommitted() || |
| 612 !navigation_handle->IsSameDocument()); | 621 !navigation_handle->IsSameDocument()); |
| 613 | 622 |
| 614 return BrowserPageTrackDecider(embedder_interface_.get(), web_contents(), | 623 return BrowserPageTrackDecider(embedder_interface_.get(), web_contents(), |
| 615 navigation_handle).ShouldTrack(); | 624 navigation_handle).ShouldTrack(); |
| 616 } | 625 } |
| 617 | 626 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 637 observer_->RemoveTestingObserver(this); | 646 observer_->RemoveTestingObserver(this); |
| 638 observer_ = nullptr; | 647 observer_ = nullptr; |
| 639 } | 648 } |
| 640 } | 649 } |
| 641 | 650 |
| 642 void MetricsWebContentsObserver::TestingObserver::OnGoingAway() { | 651 void MetricsWebContentsObserver::TestingObserver::OnGoingAway() { |
| 643 observer_ = nullptr; | 652 observer_ = nullptr; |
| 644 } | 653 } |
| 645 | 654 |
| 646 } // namespace page_load_metrics | 655 } // namespace page_load_metrics |
| OLD | NEW |