| OLD | NEW |
| 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 <memory> | 7 #include <memory> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 void OnTimingUpdate(const PageLoadTiming& timing, | 52 void OnTimingUpdate(const PageLoadTiming& timing, |
| 53 const PageLoadExtraInfo& extra_info) override { | 53 const PageLoadExtraInfo& extra_info) override { |
| 54 updated_timings_->push_back(timing); | 54 updated_timings_->push_back(timing); |
| 55 } | 55 } |
| 56 | 56 |
| 57 void OnComplete(const PageLoadTiming& timing, | 57 void OnComplete(const PageLoadTiming& timing, |
| 58 const PageLoadExtraInfo& extra_info) override { | 58 const PageLoadExtraInfo& extra_info) override { |
| 59 complete_timings_->push_back(timing); | 59 complete_timings_->push_back(timing); |
| 60 } | 60 } |
| 61 | 61 |
| 62 ObservePolicy FlushMetricsOnAppEnterBackground( |
| 63 const PageLoadTiming& timing, |
| 64 const PageLoadExtraInfo& extra_info) override { |
| 65 return STOP_OBSERVING; |
| 66 } |
| 67 |
| 62 private: | 68 private: |
| 63 std::vector<PageLoadTiming>* const updated_timings_; | 69 std::vector<PageLoadTiming>* const updated_timings_; |
| 64 std::vector<PageLoadTiming>* const complete_timings_; | 70 std::vector<PageLoadTiming>* const complete_timings_; |
| 65 std::vector<GURL>* const observed_committed_urls_; | 71 std::vector<GURL>* const observed_committed_urls_; |
| 66 }; | 72 }; |
| 67 | 73 |
| 68 class TestPageLoadMetricsEmbedderInterface | 74 class TestPageLoadMetricsEmbedderInterface |
| 69 : public PageLoadMetricsEmbedderInterface { | 75 : public PageLoadMetricsEmbedderInterface { |
| 70 public: | 76 public: |
| 71 TestPageLoadMetricsEmbedderInterface() | 77 TestPageLoadMetricsEmbedderInterface() |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 177 | 183 |
| 178 private: | 184 private: |
| 179 int num_errors_; | 185 int num_errors_; |
| 180 | 186 |
| 181 DISALLOW_COPY_AND_ASSIGN(MetricsWebContentsObserverTest); | 187 DISALLOW_COPY_AND_ASSIGN(MetricsWebContentsObserverTest); |
| 182 }; | 188 }; |
| 183 | 189 |
| 184 TEST_F(MetricsWebContentsObserverTest, SuccessfulMainFrameNavigation) { | 190 TEST_F(MetricsWebContentsObserverTest, SuccessfulMainFrameNavigation) { |
| 185 PageLoadTiming timing; | 191 PageLoadTiming timing; |
| 186 timing.navigation_start = base::Time::FromDoubleT(1); | 192 timing.navigation_start = base::Time::FromDoubleT(1); |
| 187 timing.response_start = base::TimeDelta::FromMilliseconds(2); | |
| 188 | 193 |
| 189 content::WebContentsTester* web_contents_tester = | 194 content::WebContentsTester* web_contents_tester = |
| 190 content::WebContentsTester::For(web_contents()); | 195 content::WebContentsTester::For(web_contents()); |
| 191 | 196 |
| 192 ASSERT_TRUE(observed_committed_urls_from_on_start().empty()); | 197 ASSERT_TRUE(observed_committed_urls_from_on_start().empty()); |
| 193 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl)); | 198 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl)); |
| 194 ASSERT_EQ(1u, observed_committed_urls_from_on_start().size()); | 199 ASSERT_EQ(1u, observed_committed_urls_from_on_start().size()); |
| 195 ASSERT_TRUE(observed_committed_urls_from_on_start().at(0).is_empty()); | 200 ASSERT_TRUE(observed_committed_urls_from_on_start().at(0).is_empty()); |
| 196 | 201 |
| 197 ASSERT_EQ(0, CountUpdatedTimingReported()); | 202 ASSERT_EQ(0, CountUpdatedTimingReported()); |
| (...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 491 | 496 |
| 492 observer_->FlushMetricsOnAppEnterBackground(); | 497 observer_->FlushMetricsOnAppEnterBackground(); |
| 493 | 498 |
| 494 histogram_tester_.ExpectTotalCount( | 499 histogram_tester_.ExpectTotalCount( |
| 495 internal::kPageLoadCompletedAfterAppBackground, 1); | 500 internal::kPageLoadCompletedAfterAppBackground, 1); |
| 496 histogram_tester_.ExpectBucketCount( | 501 histogram_tester_.ExpectBucketCount( |
| 497 internal::kPageLoadCompletedAfterAppBackground, false, 1); | 502 internal::kPageLoadCompletedAfterAppBackground, false, 1); |
| 498 histogram_tester_.ExpectBucketCount( | 503 histogram_tester_.ExpectBucketCount( |
| 499 internal::kPageLoadCompletedAfterAppBackground, true, 0); | 504 internal::kPageLoadCompletedAfterAppBackground, true, 0); |
| 500 | 505 |
| 506 // Navigate again, which forces completion callbacks on the previous |
| 507 // navigation to be invoked. |
| 508 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2)); |
| 509 |
| 510 // Verify that, even though the page load completed, no complete timings were |
| 511 // reported, because the TestPageLoadMetricsObserver's |
| 512 // FlushMetricsOnAppEnterBackground implementation returned STOP_OBSERVING, |
| 513 // thus preventing OnComplete from being invoked. |
| 514 ASSERT_EQ(0, CountCompleteTimingReported()); |
| 515 |
| 501 DeleteContents(); | 516 DeleteContents(); |
| 502 | 517 |
| 503 histogram_tester_.ExpectTotalCount( | 518 histogram_tester_.ExpectTotalCount( |
| 504 internal::kPageLoadCompletedAfterAppBackground, 2); | 519 internal::kPageLoadCompletedAfterAppBackground, 2); |
| 505 histogram_tester_.ExpectBucketCount( | 520 histogram_tester_.ExpectBucketCount( |
| 506 internal::kPageLoadCompletedAfterAppBackground, false, 1); | 521 internal::kPageLoadCompletedAfterAppBackground, false, 1); |
| 507 histogram_tester_.ExpectBucketCount( | 522 histogram_tester_.ExpectBucketCount( |
| 508 internal::kPageLoadCompletedAfterAppBackground, true, 1); | 523 internal::kPageLoadCompletedAfterAppBackground, true, 1); |
| 509 } | 524 } |
| 510 | 525 |
| 511 } // namespace page_load_metrics | 526 } // namespace page_load_metrics |
| OLD | NEW |