| 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 "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
| 6 #include "base/test/histogram_tester.h" | 6 #include "base/test/histogram_tester.h" |
| 7 #include "chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_
observer.h" | 7 #include "chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_
observer.h" |
| 8 #include "chrome/browser/page_load_metrics/observers/google_captcha_observer.h" | 8 #include "chrome/browser/page_load_metrics/observers/google_captcha_observer.h" |
| 9 #include "chrome/test/base/chrome_render_view_host_test_harness.h" | 9 #include "chrome/test/base/chrome_render_view_host_test_harness.h" |
| 10 #include "components/page_load_metrics/browser/metrics_web_contents_observer.h" | 10 #include "components/page_load_metrics/browser/metrics_web_contents_observer.h" |
| 11 #include "components/page_load_metrics/common/page_load_metrics_messages.h" | 11 #include "components/page_load_metrics/common/page_load_metrics_messages.h" |
| 12 #include "content/public/test/web_contents_tester.h" | 12 #include "content/public/test/web_contents_tester.h" |
| 13 #include "url/gurl.h" | 13 #include "url/gurl.h" |
| 14 | 14 |
| 15 namespace { | 15 namespace { |
| 16 | 16 |
| 17 const char kHistogramNameFromGWSFirstTextPaint[] = | 17 const char kHistogramNameFromGWSFirstTextPaint[] = |
| 18 "PageLoad.Clients.FromGWS.Timing2.NavigationToFirstTextPaint"; | 18 "PageLoad.Clients.FromGWS.Timing2.NavigationToFirstTextPaint"; |
| 19 | 19 |
| 20 } // namespace | 20 } // namespace |
| 21 | 21 |
| 22 class TestPageLoadMetricsEmbedderInterface | |
| 23 : public page_load_metrics::PageLoadMetricsEmbedderInterface { | |
| 24 public: | |
| 25 TestPageLoadMetricsEmbedderInterface() {} | |
| 26 rappor::RapporService* GetRapporService() override { return nullptr; } | |
| 27 bool IsPrerendering(content::WebContents* web_contents) override { | |
| 28 return false; | |
| 29 } | |
| 30 }; | |
| 31 | |
| 32 class TestFromGWSPageLoadMetricsObserver | 22 class TestFromGWSPageLoadMetricsObserver |
| 33 : public FromGWSPageLoadMetricsObserver { | 23 : public FromGWSPageLoadMetricsObserver { |
| 34 public: | 24 public: |
| 35 explicit TestFromGWSPageLoadMetricsObserver( | 25 explicit TestFromGWSPageLoadMetricsObserver( |
| 36 page_load_metrics::PageLoadMetricsObservable* metrics) | 26 page_load_metrics::PageLoadMetricsObservable* metrics, |
| 37 : FromGWSPageLoadMetricsObserver(metrics) {} | 27 const content::Referrer& referrer) |
| 28 : FromGWSPageLoadMetricsObserver(metrics), referrer_(referrer) {} |
| 38 void OnCommit(content::NavigationHandle* navigation_handle) override { | 29 void OnCommit(content::NavigationHandle* navigation_handle) override { |
| 39 const GURL& url = navigation_handle->GetURL(); | 30 const GURL& url = navigation_handle->GetURL(); |
| 40 SetCommittedURLAndReferrer( | 31 SetCommittedURLAndReferrer( |
| 41 url, content::Referrer::SanitizeForRequest(url, referrer_)); | 32 url, content::Referrer::SanitizeForRequest(url, referrer_)); |
| 42 } | 33 } |
| 43 | 34 |
| 35 private: |
| 36 const content::Referrer referrer_; |
| 37 |
| 38 DISALLOW_COPY_AND_ASSIGN(TestFromGWSPageLoadMetricsObserver); |
| 39 }; |
| 40 |
| 41 class TestPageLoadMetricsEmbedderInterface |
| 42 : public page_load_metrics::PageLoadMetricsEmbedderInterface { |
| 43 public: |
| 44 TestPageLoadMetricsEmbedderInterface() |
| 45 : referrer_(content::Referrer(GURL("https://www.google.com"), |
| 46 blink::WebReferrerPolicyDefault)) {} |
| 47 rappor::RapporService* GetRapporService() override { return nullptr; } |
| 48 bool IsPrerendering(content::WebContents* web_contents) override { |
| 49 return false; |
| 50 } |
| 51 void RegisterObservers( |
| 52 page_load_metrics::PageLoadMetricsObservable* metrics) override { |
| 53 new TestFromGWSPageLoadMetricsObserver(metrics, referrer_); |
| 54 } |
| 44 void set_referrer(const content::Referrer& referrer) { referrer_ = referrer; } | 55 void set_referrer(const content::Referrer& referrer) { referrer_ = referrer; } |
| 45 | 56 |
| 46 private: | 57 private: |
| 47 content::Referrer referrer_; | 58 content::Referrer referrer_; |
| 59 |
| 60 DISALLOW_COPY_AND_ASSIGN(TestPageLoadMetricsEmbedderInterface); |
| 48 }; | 61 }; |
| 49 | 62 |
| 50 class PageLoadMetricsObserverTest : public ChromeRenderViewHostTestHarness { | 63 class PageLoadMetricsObserverTest : public ChromeRenderViewHostTestHarness { |
| 51 public: | 64 public: |
| 52 PageLoadMetricsObserverTest() : ChromeRenderViewHostTestHarness() {} | 65 PageLoadMetricsObserverTest() : ChromeRenderViewHostTestHarness() {} |
| 53 | 66 |
| 54 void SetUp() override { | 67 void SetUp() override { |
| 55 ChromeRenderViewHostTestHarness::SetUp(); | 68 ChromeRenderViewHostTestHarness::SetUp(); |
| 56 SetContents(CreateTestWebContents()); | 69 SetContents(CreateTestWebContents()); |
| 57 NavigateAndCommit(GURL("http://www.google.com")); | 70 NavigateAndCommit(GURL("http://www.google.com")); |
| 71 embedder_interface_ = new TestPageLoadMetricsEmbedderInterface(); |
| 58 observer_ = | 72 observer_ = |
| 59 make_scoped_ptr(new page_load_metrics::MetricsWebContentsObserver( | 73 make_scoped_ptr(new page_load_metrics::MetricsWebContentsObserver( |
| 60 web_contents(), | 74 web_contents(), make_scoped_ptr(embedder_interface_))); |
| 61 make_scoped_ptr(new TestPageLoadMetricsEmbedderInterface()))); | |
| 62 observer_->WasShown(); | 75 observer_->WasShown(); |
| 63 | |
| 64 // Add PageLoadMetricsObservers here. | |
| 65 gws_observer_ = new TestFromGWSPageLoadMetricsObserver(observer_.get()); | |
| 66 observer_->AddObserver(gws_observer_); | |
| 67 } | 76 } |
| 68 | 77 |
| 69 base::HistogramTester histogram_tester_; | 78 base::HistogramTester histogram_tester_; |
| 79 TestPageLoadMetricsEmbedderInterface* embedder_interface_; |
| 70 scoped_ptr<page_load_metrics::MetricsWebContentsObserver> observer_; | 80 scoped_ptr<page_load_metrics::MetricsWebContentsObserver> observer_; |
| 71 | 81 |
| 72 // PageLoadMetricsObservers: | |
| 73 TestFromGWSPageLoadMetricsObserver* gws_observer_; | |
| 74 | |
| 75 DISALLOW_COPY_AND_ASSIGN(PageLoadMetricsObserverTest); | 82 DISALLOW_COPY_AND_ASSIGN(PageLoadMetricsObserverTest); |
| 76 }; | 83 }; |
| 77 | 84 |
| 78 TEST_F(PageLoadMetricsObserverTest, NoMetrics) { | 85 TEST_F(PageLoadMetricsObserverTest, NoMetrics) { |
| 79 histogram_tester_.ExpectTotalCount(kHistogramNameFromGWSFirstTextPaint, 0); | 86 histogram_tester_.ExpectTotalCount(kHistogramNameFromGWSFirstTextPaint, 0); |
| 80 } | 87 } |
| 81 | 88 |
| 82 TEST_F(PageLoadMetricsObserverTest, NoReferral) { | 89 TEST_F(PageLoadMetricsObserverTest, NoReferral) { |
| 83 page_load_metrics::PageLoadTiming timing; | 90 page_load_metrics::PageLoadTiming timing; |
| 84 timing.navigation_start = base::Time::FromDoubleT(1); | 91 timing.navigation_start = base::Time::FromDoubleT(1); |
| 85 timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); | 92 timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); |
| 86 NavigateAndCommit(GURL("http://www.example.com")); | 93 NavigateAndCommit(GURL("http://www.example.com")); |
| 87 | 94 |
| 88 observer_->OnMessageReceived( | 95 observer_->OnMessageReceived( |
| 89 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), | 96 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), |
| 90 web_contents()->GetMainFrame()); | 97 web_contents()->GetMainFrame()); |
| 91 | 98 |
| 92 // Navigate again to force logging. | 99 // Navigate again to force logging. |
| 93 NavigateAndCommit(GURL("http://www.google.com")); | 100 NavigateAndCommit(GURL("http://www.google.com")); |
| 94 histogram_tester_.ExpectTotalCount(kHistogramNameFromGWSFirstTextPaint, 0); | 101 histogram_tester_.ExpectTotalCount(kHistogramNameFromGWSFirstTextPaint, 0); |
| 95 } | 102 } |
| 96 | 103 |
| 97 TEST_F(PageLoadMetricsObserverTest, ReferralsFromGWSHTTPToHTTPS) { | 104 TEST_F(PageLoadMetricsObserverTest, ReferralsFromGWSHTTPToHTTPS) { |
| 98 page_load_metrics::PageLoadTiming timing; | 105 page_load_metrics::PageLoadTiming timing; |
| 99 timing.navigation_start = base::Time::FromDoubleT(1); | 106 timing.navigation_start = base::Time::FromDoubleT(1); |
| 100 timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); | 107 timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); |
| 101 // HTTPS google.com referral to HTTP example.com. | 108 // HTTPS google.com referral to HTTP example.com. |
| 102 gws_observer_->set_referrer(content::Referrer( | 109 embedder_interface_->set_referrer(content::Referrer( |
| 103 GURL("https://www.google.com"), blink::WebReferrerPolicyOrigin)); | 110 GURL("https://www.google.com"), blink::WebReferrerPolicyOrigin)); |
| 104 NavigateAndCommit(GURL("http://www.example.com")); | 111 NavigateAndCommit(GURL("http://www.example.com")); |
| 105 | 112 |
| 106 observer_->OnMessageReceived( | 113 observer_->OnMessageReceived( |
| 107 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), | 114 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), |
| 108 web_contents()->GetMainFrame()); | 115 web_contents()->GetMainFrame()); |
| 109 | 116 |
| 110 // Navigate again to force logging. | 117 // Navigate again to force logging. |
| 111 NavigateAndCommit(GURL("https://www.example2.com")); | 118 NavigateAndCommit(GURL("https://www.example2.com")); |
| 112 histogram_tester_.ExpectTotalCount(kHistogramNameFromGWSFirstTextPaint, 1); | 119 histogram_tester_.ExpectTotalCount(kHistogramNameFromGWSFirstTextPaint, 1); |
| 113 histogram_tester_.ExpectBucketCount(kHistogramNameFromGWSFirstTextPaint, | 120 histogram_tester_.ExpectBucketCount(kHistogramNameFromGWSFirstTextPaint, |
| 114 timing.first_text_paint.InMilliseconds(), | 121 timing.first_text_paint.InMilliseconds(), |
| 115 1); | 122 1); |
| 116 } | 123 } |
| 117 | 124 |
| 118 TEST_F(PageLoadMetricsObserverTest, ReferralFromGWS) { | 125 TEST_F(PageLoadMetricsObserverTest, ReferralFromGWS) { |
| 119 page_load_metrics::PageLoadTiming timing; | 126 page_load_metrics::PageLoadTiming timing; |
| 120 timing.navigation_start = base::Time::FromDoubleT(1); | 127 timing.navigation_start = base::Time::FromDoubleT(1); |
| 121 timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); | 128 timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); |
| 122 | 129 |
| 123 gws_observer_->set_referrer(content::Referrer( | 130 embedder_interface_->set_referrer(content::Referrer( |
| 124 GURL("https://www.google.com/url"), blink::WebReferrerPolicyDefault)); | 131 GURL("https://www.google.com/url"), blink::WebReferrerPolicyDefault)); |
| 125 NavigateAndCommit(GURL("https://www.example.com")); | 132 NavigateAndCommit(GURL("https://www.example.com")); |
| 126 | 133 |
| 127 observer_->OnMessageReceived( | 134 observer_->OnMessageReceived( |
| 128 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), | 135 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), |
| 129 web_contents()->GetMainFrame()); | 136 web_contents()->GetMainFrame()); |
| 130 | 137 |
| 131 // Navigate again to force logging. | 138 // Navigate again to force logging. |
| 132 NavigateAndCommit(GURL("https://www.example2.com")); | 139 NavigateAndCommit(GURL("https://www.example2.com")); |
| 133 histogram_tester_.ExpectTotalCount(kHistogramNameFromGWSFirstTextPaint, 1); | 140 histogram_tester_.ExpectTotalCount(kHistogramNameFromGWSFirstTextPaint, 1); |
| 134 histogram_tester_.ExpectBucketCount(kHistogramNameFromGWSFirstTextPaint, | 141 histogram_tester_.ExpectBucketCount(kHistogramNameFromGWSFirstTextPaint, |
| 135 timing.first_text_paint.InMilliseconds(), | 142 timing.first_text_paint.InMilliseconds(), |
| 136 1); | 143 1); |
| 137 } | 144 } |
| 138 | 145 |
| 139 TEST_F(PageLoadMetricsObserverTest, ReferralFromGWSBackgroundLater) { | 146 TEST_F(PageLoadMetricsObserverTest, ReferralFromGWSBackgroundLater) { |
| 140 page_load_metrics::PageLoadTiming timing; | 147 page_load_metrics::PageLoadTiming timing; |
| 141 timing.navigation_start = base::Time::FromDoubleT(1); | 148 timing.navigation_start = base::Time::FromDoubleT(1); |
| 142 timing.first_text_paint = base::TimeDelta::FromMicroseconds(1); | 149 timing.first_text_paint = base::TimeDelta::FromMicroseconds(1); |
| 143 | 150 |
| 144 gws_observer_->set_referrer(content::Referrer( | 151 embedder_interface_->set_referrer(content::Referrer( |
| 145 GURL("https://www.google.com/url"), blink::WebReferrerPolicyDefault)); | 152 GURL("https://www.google.com/url"), blink::WebReferrerPolicyDefault)); |
| 146 NavigateAndCommit(GURL("https://www.example.com")); | 153 NavigateAndCommit(GURL("https://www.example.com")); |
| 147 | 154 |
| 148 observer_->OnMessageReceived( | 155 observer_->OnMessageReceived( |
| 149 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), | 156 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), |
| 150 web_contents()->GetMainFrame()); | 157 web_contents()->GetMainFrame()); |
| 151 | 158 |
| 152 observer_->WasHidden(); | 159 observer_->WasHidden(); |
| 153 | 160 |
| 154 // Navigate again to force logging. | 161 // Navigate again to force logging. |
| 155 NavigateAndCommit(GURL("https://www.example2.com")); | 162 NavigateAndCommit(GURL("https://www.example2.com")); |
| 156 histogram_tester_.ExpectTotalCount(kHistogramNameFromGWSFirstTextPaint, 1); | 163 histogram_tester_.ExpectTotalCount(kHistogramNameFromGWSFirstTextPaint, 1); |
| 157 histogram_tester_.ExpectBucketCount(kHistogramNameFromGWSFirstTextPaint, | 164 histogram_tester_.ExpectBucketCount(kHistogramNameFromGWSFirstTextPaint, |
| 158 timing.first_text_paint.InMilliseconds(), | 165 timing.first_text_paint.InMilliseconds(), |
| 159 1); | 166 1); |
| 160 } | 167 } |
| 161 | 168 |
| 162 TEST_F(PageLoadMetricsObserverTest, ReferralsFromCaseInsensitive) { | 169 TEST_F(PageLoadMetricsObserverTest, ReferralsFromCaseInsensitive) { |
| 163 page_load_metrics::PageLoadTiming timing; | 170 page_load_metrics::PageLoadTiming timing; |
| 164 timing.navigation_start = base::Time::FromDoubleT(1); | 171 timing.navigation_start = base::Time::FromDoubleT(1); |
| 165 timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); | 172 timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); |
| 166 // HTTPS google.com referral to HTTP example.com. | 173 // HTTPS google.com referral to HTTP example.com. |
| 167 gws_observer_->set_referrer(content::Referrer( | 174 embedder_interface_->set_referrer(content::Referrer( |
| 168 GURL("https://wWw.GoOGlE.cOm/webhp"), blink::WebReferrerPolicyOrigin)); | 175 GURL("https://wWw.GoOGlE.cOm/webhp"), blink::WebReferrerPolicyOrigin)); |
| 169 NavigateAndCommit(GURL("https://www.example.com")); | 176 NavigateAndCommit(GURL("https://www.example.com")); |
| 170 | 177 |
| 171 observer_->OnMessageReceived( | 178 observer_->OnMessageReceived( |
| 172 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), | 179 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), |
| 173 web_contents()->GetMainFrame()); | 180 web_contents()->GetMainFrame()); |
| 174 | 181 |
| 175 // Navigate again to force logging. | 182 // Navigate again to force logging. |
| 176 NavigateAndCommit(GURL("https://www.example2.com")); | 183 NavigateAndCommit(GURL("https://www.example2.com")); |
| 177 histogram_tester_.ExpectTotalCount(kHistogramNameFromGWSFirstTextPaint, 1); | 184 histogram_tester_.ExpectTotalCount(kHistogramNameFromGWSFirstTextPaint, 1); |
| 178 histogram_tester_.ExpectBucketCount(kHistogramNameFromGWSFirstTextPaint, | 185 histogram_tester_.ExpectBucketCount(kHistogramNameFromGWSFirstTextPaint, |
| 179 timing.first_text_paint.InMilliseconds(), | 186 timing.first_text_paint.InMilliseconds(), |
| 180 1); | 187 1); |
| 181 } | 188 } |
| 182 | 189 |
| 183 TEST_F(PageLoadMetricsObserverTest, ReferralsFromGWSOrigin) { | 190 TEST_F(PageLoadMetricsObserverTest, ReferralsFromGWSOrigin) { |
| 184 page_load_metrics::PageLoadTiming timing; | 191 page_load_metrics::PageLoadTiming timing; |
| 185 timing.navigation_start = base::Time::FromDoubleT(1); | 192 timing.navigation_start = base::Time::FromDoubleT(1); |
| 186 timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); | 193 timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); |
| 187 // HTTPS google.com referral to HTTP example.com. | 194 // HTTPS google.com referral to HTTP example.com. |
| 188 gws_observer_->set_referrer(content::Referrer( | 195 embedder_interface_->set_referrer(content::Referrer( |
| 189 GURL("https://www.google.com"), blink::WebReferrerPolicyOrigin)); | 196 GURL("https://www.google.com"), blink::WebReferrerPolicyOrigin)); |
| 190 NavigateAndCommit(GURL("https://www.example.com")); | 197 NavigateAndCommit(GURL("https://www.example.com")); |
| 191 | 198 |
| 192 observer_->OnMessageReceived( | 199 observer_->OnMessageReceived( |
| 193 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), | 200 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), |
| 194 web_contents()->GetMainFrame()); | 201 web_contents()->GetMainFrame()); |
| 195 | 202 |
| 196 page_load_metrics::PageLoadTiming timing2; | 203 page_load_metrics::PageLoadTiming timing2; |
| 197 timing2.navigation_start = base::Time::FromDoubleT(10); | 204 timing2.navigation_start = base::Time::FromDoubleT(10); |
| 198 timing2.first_text_paint = base::TimeDelta::FromMilliseconds(100); | 205 timing2.first_text_paint = base::TimeDelta::FromMilliseconds(100); |
| 199 // HTTPS google.com referral to HTTP example.com. | 206 // HTTPS google.com referral to HTTP example.com. |
| 200 gws_observer_->set_referrer(content::Referrer( | 207 embedder_interface_->set_referrer(content::Referrer( |
| 201 GURL("https://www.google.co.in"), blink::WebReferrerPolicyOrigin)); | 208 GURL("https://www.google.co.in"), blink::WebReferrerPolicyOrigin)); |
| 202 NavigateAndCommit(GURL("https://www.example2.com")); | 209 NavigateAndCommit(GURL("https://www.example2.com")); |
| 203 | 210 |
| 204 observer_->OnMessageReceived( | 211 observer_->OnMessageReceived( |
| 205 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing2), | 212 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing2), |
| 206 web_contents()->GetMainFrame()); | 213 web_contents()->GetMainFrame()); |
| 207 // Navigate again to force logging. | 214 // Navigate again to force logging. |
| 208 NavigateAndCommit(GURL("https://www.example3.com")); | 215 NavigateAndCommit(GURL("https://www.example3.com")); |
| 209 histogram_tester_.ExpectTotalCount(kHistogramNameFromGWSFirstTextPaint, 2); | 216 histogram_tester_.ExpectTotalCount(kHistogramNameFromGWSFirstTextPaint, 2); |
| 210 histogram_tester_.ExpectBucketCount(kHistogramNameFromGWSFirstTextPaint, | 217 histogram_tester_.ExpectBucketCount(kHistogramNameFromGWSFirstTextPaint, |
| 211 timing.first_text_paint.InMilliseconds(), | 218 timing.first_text_paint.InMilliseconds(), |
| 212 1); | 219 1); |
| 213 histogram_tester_.ExpectBucketCount(kHistogramNameFromGWSFirstTextPaint, | 220 histogram_tester_.ExpectBucketCount(kHistogramNameFromGWSFirstTextPaint, |
| 214 timing2.first_text_paint.InMilliseconds(), | 221 timing2.first_text_paint.InMilliseconds(), |
| 215 1); | 222 1); |
| 216 } | 223 } |
| 217 | 224 |
| 218 TEST_F(PageLoadMetricsObserverTest, ReferralNotFromGWS) { | 225 TEST_F(PageLoadMetricsObserverTest, ReferralNotFromGWS) { |
| 219 page_load_metrics::PageLoadTiming timing; | 226 page_load_metrics::PageLoadTiming timing; |
| 220 timing.navigation_start = base::Time::FromDoubleT(1); | 227 timing.navigation_start = base::Time::FromDoubleT(1); |
| 221 timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); | 228 timing.first_text_paint = base::TimeDelta::FromMilliseconds(1); |
| 229 embedder_interface_->set_referrer(content::Referrer( |
| 230 GURL("https://www.anothersite.com"), blink::WebReferrerPolicyDefault)); |
| 222 NavigateAndCommit(GURL("https://www.example.com")); | 231 NavigateAndCommit(GURL("https://www.example.com")); |
| 223 gws_observer_->set_referrer(content::Referrer( | |
| 224 GURL("https://www.anothersite.com"), blink::WebReferrerPolicyDefault)); | |
| 225 | 232 |
| 226 observer_->OnMessageReceived( | 233 observer_->OnMessageReceived( |
| 227 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), | 234 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), |
| 228 web_contents()->GetMainFrame()); | 235 web_contents()->GetMainFrame()); |
| 229 | 236 |
| 230 // Navigate again to force logging. | 237 // Navigate again to force logging. |
| 231 NavigateAndCommit(GURL("https://www.google.com")); | 238 NavigateAndCommit(GURL("https://www.google.com")); |
| 232 histogram_tester_.ExpectTotalCount(kHistogramNameFromGWSFirstTextPaint, 0); | 239 histogram_tester_.ExpectTotalCount(kHistogramNameFromGWSFirstTextPaint, 0); |
| 233 } | 240 } |
| 234 | 241 |
| 235 TEST_F(PageLoadMetricsObserverTest, IsGoogleCaptcha) { | 242 TEST_F(PageLoadMetricsObserverTest, IsGoogleCaptcha) { |
| 236 struct { | 243 struct { |
| 237 std::string url; | 244 std::string url; |
| 238 bool expected; | 245 bool expected; |
| 239 } test_cases[] = { | 246 } test_cases[] = { |
| 240 {"", false}, | 247 {"", false}, |
| 241 {"http://www.google.com/", false}, | 248 {"http://www.google.com/", false}, |
| 242 {"http://www.cnn.com/", false}, | 249 {"http://www.cnn.com/", false}, |
| 243 {"http://ipv4.google.com/", false}, | 250 {"http://ipv4.google.com/", false}, |
| 244 {"https://ipv4.google.com/sorry/IndexRedirect?continue=http://a", true}, | 251 {"https://ipv4.google.com/sorry/IndexRedirect?continue=http://a", true}, |
| 245 {"https://ipv6.google.com/sorry/IndexRedirect?continue=http://a", true}, | 252 {"https://ipv6.google.com/sorry/IndexRedirect?continue=http://a", true}, |
| 246 {"https://ipv7.google.com/sorry/IndexRedirect?continue=http://a", false}, | 253 {"https://ipv7.google.com/sorry/IndexRedirect?continue=http://a", false}, |
| 247 }; | 254 }; |
| 248 for (const auto& test : test_cases) { | 255 for (const auto& test : test_cases) { |
| 249 EXPECT_EQ(test.expected, | 256 EXPECT_EQ(test.expected, |
| 250 google_captcha_observer::IsGoogleCaptcha(GURL(test.url))) | 257 google_captcha_observer::IsGoogleCaptcha(GURL(test.url))) |
| 251 << "for URL: " << test.url; | 258 << "for URL: " << test.url; |
| 252 } | 259 } |
| 253 } | 260 } |
| OLD | NEW |