Chromium Code Reviews| 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/files/scoped_temp_dir.h" | 5 #include "base/files/scoped_temp_dir.h" |
| 6 #include "base/macros.h" | 6 #include "base/macros.h" |
| 7 #include "base/test/histogram_tester.h" | 7 #include "base/test/histogram_tester.h" |
| 8 #include "base/threading/thread_restrictions.h" | 8 #include "base/threading/thread_restrictions.h" |
| 9 #include "base/test/scoped_feature_list.h" | |
| 9 #include "base/time/time.h" | 10 #include "base/time/time.h" |
| 10 #include "chrome/browser/page_load_metrics/metrics_web_contents_observer.h" | 11 #include "chrome/browser/page_load_metrics/metrics_web_contents_observer.h" |
| 11 #include "chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_ob server.h" | 12 #include "chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_ob server.h" |
| 12 #include "chrome/browser/page_load_metrics/observers/core_page_load_metrics_obse rver.h" | 13 #include "chrome/browser/page_load_metrics/observers/core_page_load_metrics_obse rver.h" |
| 13 #include "chrome/browser/page_load_metrics/observers/document_write_page_load_me trics_observer.h" | 14 #include "chrome/browser/page_load_metrics/observers/document_write_page_load_me trics_observer.h" |
| 14 #include "chrome/browser/page_load_metrics/observers/no_state_prefetch_page_load _metrics_observer.h" | 15 #include "chrome/browser/page_load_metrics/observers/no_state_prefetch_page_load _metrics_observer.h" |
| 15 #include "chrome/browser/page_load_metrics/page_load_tracker.h" | 16 #include "chrome/browser/page_load_metrics/page_load_tracker.h" |
| 16 #include "chrome/browser/prerender/prerender_histograms.h" | 17 #include "chrome/browser/prerender/prerender_histograms.h" |
| 17 #include "chrome/browser/prerender/prerender_origin.h" | 18 #include "chrome/browser/prerender/prerender_origin.h" |
| 18 #include "chrome/browser/profiles/profile.h" | 19 #include "chrome/browser/profiles/profile.h" |
| 19 #include "chrome/browser/ui/browser.h" | 20 #include "chrome/browser/ui/browser.h" |
| 20 #include "chrome/browser/ui/browser_navigator_params.h" | 21 #include "chrome/browser/ui/browser_navigator_params.h" |
| 21 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 22 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 22 #include "chrome/common/page_load_metrics/page_load_metrics_messages.h" | 23 #include "chrome/common/chrome_features.h" |
| 23 #include "chrome/common/pref_names.h" | 24 #include "chrome/common/pref_names.h" |
| 24 #include "chrome/common/url_constants.h" | 25 #include "chrome/common/url_constants.h" |
| 25 #include "chrome/test/base/in_process_browser_test.h" | 26 #include "chrome/test/base/in_process_browser_test.h" |
| 26 #include "chrome/test/base/ui_test_utils.h" | 27 #include "chrome/test/base/ui_test_utils.h" |
| 27 #include "components/prefs/pref_service.h" | 28 #include "components/prefs/pref_service.h" |
| 28 #include "content/public/browser/browser_thread.h" | 29 #include "content/public/browser/browser_thread.h" |
| 29 #include "content/public/browser/render_process_host.h" | 30 #include "content/public/browser/render_process_host.h" |
| 30 #include "content/public/browser/render_view_host.h" | 31 #include "content/public/browser/render_view_host.h" |
| 31 #include "content/public/test/browser_test_utils.h" | 32 #include "content/public/test/browser_test_utils.h" |
| 32 #include "content/public/test/download_test_observer.h" | 33 #include "content/public/test/download_test_observer.h" |
| 33 #include "net/http/failing_http_transaction_factory.h" | 34 #include "net/http/failing_http_transaction_factory.h" |
| 34 #include "net/http/http_cache.h" | 35 #include "net/http/http_cache.h" |
| 35 #include "net/test/embedded_test_server/embedded_test_server.h" | 36 #include "net/test/embedded_test_server/embedded_test_server.h" |
| 36 #include "net/test/url_request/url_request_failed_job.h" | 37 #include "net/test/url_request/url_request_failed_job.h" |
| 37 #include "net/url_request/url_request_context.h" | 38 #include "net/url_request/url_request_context.h" |
| 38 #include "net/url_request/url_request_context_getter.h" | 39 #include "net/url_request/url_request_context_getter.h" |
| 39 | 40 |
| 40 namespace { | 41 namespace { |
| 41 | 42 |
| 43 void FailAllNetworkTransactions(net::URLRequestContextGetter* getter) { | |
| 44 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); | |
| 45 net::HttpCache* cache( | |
| 46 getter->GetURLRequestContext()->http_transaction_factory()->GetCache()); | |
| 47 DCHECK(cache); | |
| 48 std::unique_ptr<net::FailingHttpTransactionFactory> factory( | |
| 49 new net::FailingHttpTransactionFactory(cache->GetSession(), | |
| 50 net::ERR_FAILED)); | |
| 51 // Throw away old version; since this is a browser test, there is no | |
| 52 // need to restore the old state. | |
| 53 cache->SetHttpNetworkTransactionFactoryForTesting(std::move(factory)); | |
| 54 } | |
| 55 | |
| 42 // Waits until specified timing and metadata expectations are satisfied. | 56 // Waits until specified timing and metadata expectations are satisfied. |
| 43 class PageLoadMetricsWaiter | 57 class PageLoadMetricsWaiter |
| 44 : public page_load_metrics::MetricsWebContentsObserver::TestingObserver { | 58 : public page_load_metrics::MetricsWebContentsObserver::TestingObserver { |
| 45 public: | 59 public: |
| 46 // A bitvector to express which timing fields to match on. | 60 // A bitvector to express which timing fields to match on. |
| 47 enum ExpectedTimingFields { | 61 enum ExpectedTimingFields { |
| 48 FIRST_PAINT = 1 << 0, | 62 FIRST_PAINT = 1 << 0, |
| 49 FIRST_CONTENTFUL_PAINT = 1 << 1, | 63 FIRST_CONTENTFUL_PAINT = 1 << 1, |
| 50 STYLE_UPDATE_BEFORE_FCP = 1 << 2 | 64 STYLE_UPDATE_BEFORE_FCP = 1 << 2 |
| 51 }; | 65 }; |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 108 } | 122 } |
| 109 | 123 |
| 110 std::unique_ptr<base::RunLoop> run_loop_; | 124 std::unique_ptr<base::RunLoop> run_loop_; |
| 111 int matching_fields_ = 0; // A bitvector composed from ExpectedTimingFields. | 125 int matching_fields_ = 0; // A bitvector composed from ExpectedTimingFields. |
| 112 bool expectations_satisfied_ = false; | 126 bool expectations_satisfied_ = false; |
| 113 int match_document_write_block_reload_ = 0; | 127 int match_document_write_block_reload_ = 0; |
| 114 }; | 128 }; |
| 115 | 129 |
| 116 } // namespace | 130 } // namespace |
| 117 | 131 |
| 118 class PageLoadMetricsBrowserTest : public InProcessBrowserTest { | 132 class PageLoadMetricsMojoficationBrowserTest : public InProcessBrowserTest { |
| 119 public: | 133 public: |
| 120 PageLoadMetricsBrowserTest() {} | 134 PageLoadMetricsMojoficationBrowserTest() {} |
| 121 ~PageLoadMetricsBrowserTest() override {} | 135 ~PageLoadMetricsMojoficationBrowserTest() override {} |
| 122 | 136 |
| 123 protected: | 137 protected: |
| 138 void SetUpCommandLine(base::CommandLine* command_line) override { | |
| 139 // We need to set the feature state before the render process is created, | |
| 140 // in order for it to inherit the feature state from the browser process. | |
| 141 // SetUp() runs too early, and SetUpOnMainThread() runs too late. | |
| 142 scoped_feature_list_.InitAndEnableFeature( | |
| 143 features::kPageLoadMetricsMojofication); | |
| 144 } | |
| 145 | |
| 124 void NavigateToUntrackedUrl() { | 146 void NavigateToUntrackedUrl() { |
| 125 ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL)); | 147 ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL)); |
| 126 } | 148 } |
| 127 | 149 |
| 128 bool NoPageLoadMetricsRecorded() { | 150 bool NoPageLoadMetricsRecorded() { |
| 129 // Determine whether any 'public' page load metrics are recorded. We exclude | 151 // Determine whether any 'public' page load metrics are recorded. We exclude |
| 130 // 'internal' metrics as these may be recorded for debugging purposes. | 152 // 'internal' metrics as these may be recorded for debugging purposes. |
| 131 size_t total_pageload_histograms = | 153 size_t total_pageload_histograms = |
| 132 histogram_tester_.GetTotalCountsForPrefix("PageLoad.").size(); | 154 histogram_tester_.GetTotalCountsForPrefix("PageLoad.").size(); |
| 133 size_t total_internal_histograms = | 155 size_t total_internal_histograms = |
| 134 histogram_tester_.GetTotalCountsForPrefix("PageLoad.Internal.").size(); | 156 histogram_tester_.GetTotalCountsForPrefix("PageLoad.Internal.").size(); |
| 135 DCHECK_GE(total_pageload_histograms, total_internal_histograms); | 157 DCHECK_GE(total_pageload_histograms, total_internal_histograms); |
| 136 return total_pageload_histograms - total_internal_histograms == 0; | 158 return total_pageload_histograms - total_internal_histograms == 0; |
| 137 } | 159 } |
| 138 | 160 |
| 139 std::unique_ptr<PageLoadMetricsWaiter> CreatePageLoadMetricsWaiter() { | 161 std::unique_ptr<PageLoadMetricsWaiter> CreatePageLoadMetricsWaiter() { |
| 140 content::WebContents* web_contents = | 162 content::WebContents* web_contents = |
| 141 browser()->tab_strip_model()->GetActiveWebContents(); | 163 browser()->tab_strip_model()->GetActiveWebContents(); |
| 142 return base::MakeUnique<PageLoadMetricsWaiter>(web_contents); | 164 return base::MakeUnique<PageLoadMetricsWaiter>(web_contents); |
| 143 } | 165 } |
| 144 | 166 |
| 167 base::test::ScopedFeatureList scoped_feature_list_; | |
| 145 base::HistogramTester histogram_tester_; | 168 base::HistogramTester histogram_tester_; |
| 146 | 169 |
| 147 private: | 170 private: |
| 148 DISALLOW_COPY_AND_ASSIGN(PageLoadMetricsBrowserTest); | 171 DISALLOW_COPY_AND_ASSIGN(PageLoadMetricsMojoficationBrowserTest); |
| 149 }; | 172 }; |
| 150 | 173 |
| 151 void FailAllNetworkTransactions(net::URLRequestContextGetter* getter) { | 174 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, NoNavigation) { |
| 152 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); | 175 ASSERT_TRUE( |
|
Bryan McQuade
2017/05/03 19:03:05
i think you can get rid of these assertions in eac
lpy
2017/05/05 17:49:30
Done.
| |
| 153 net::HttpCache* cache( | 176 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); |
| 154 getter->GetURLRequestContext()->http_transaction_factory()->GetCache()); | |
| 155 DCHECK(cache); | |
| 156 std::unique_ptr<net::FailingHttpTransactionFactory> factory( | |
| 157 new net::FailingHttpTransactionFactory(cache->GetSession(), | |
| 158 net::ERR_FAILED)); | |
| 159 // Throw away old version; since this is a browser test, there is no | |
| 160 // need to restore the old state. | |
| 161 cache->SetHttpNetworkTransactionFactoryForTesting(std::move(factory)); | |
| 162 } | |
| 163 | |
| 164 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoNavigation) { | |
| 165 ASSERT_TRUE(embedded_test_server()->Start()); | 177 ASSERT_TRUE(embedded_test_server()->Start()); |
| 166 EXPECT_TRUE(NoPageLoadMetricsRecorded()); | 178 EXPECT_TRUE(NoPageLoadMetricsRecorded()); |
| 167 } | 179 } |
| 168 | 180 |
| 169 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NewPage) { | 181 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, NewPage) { |
| 182 ASSERT_TRUE( | |
| 183 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 170 ASSERT_TRUE(embedded_test_server()->Start()); | 184 ASSERT_TRUE(embedded_test_server()->Start()); |
| 171 | 185 |
| 172 ui_test_utils::NavigateToURL(browser(), | 186 ui_test_utils::NavigateToURL(browser(), |
| 173 embedded_test_server()->GetURL("/title1.html")); | 187 embedded_test_server()->GetURL("/title1.html")); |
| 174 NavigateToUntrackedUrl(); | 188 NavigateToUntrackedUrl(); |
| 175 | 189 |
| 176 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); | 190 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); |
| 177 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); | 191 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); |
| 178 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); | 192 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); |
| 179 histogram_tester_.ExpectTotalCount(internal::kHistogramParseDuration, 1); | 193 histogram_tester_.ExpectTotalCount(internal::kHistogramParseDuration, 1); |
| 180 histogram_tester_.ExpectTotalCount( | 194 histogram_tester_.ExpectTotalCount( |
| 181 internal::kHistogramParseBlockedOnScriptLoad, 1); | 195 internal::kHistogramParseBlockedOnScriptLoad, 1); |
| 182 histogram_tester_.ExpectTotalCount( | 196 histogram_tester_.ExpectTotalCount( |
| 183 internal::kHistogramParseBlockedOnScriptExecution, 1); | 197 internal::kHistogramParseBlockedOnScriptExecution, 1); |
| 184 histogram_tester_.ExpectTotalCount(internal::kHistogramTotalBytes, 1); | 198 histogram_tester_.ExpectTotalCount(internal::kHistogramTotalBytes, 1); |
| 185 histogram_tester_.ExpectTotalCount( | 199 histogram_tester_.ExpectTotalCount( |
| 186 internal::kHistogramPageTimingForegroundDuration, 1); | 200 internal::kHistogramPageTimingForegroundDuration, 1); |
| 187 | 201 |
| 188 // Verify that NoPageLoadMetricsRecorded returns false when PageLoad metrics | 202 // Verify that NoPageLoadMetricsRecorded returns false when PageLoad metrics |
| 189 // have been recorded. | 203 // have been recorded. |
| 190 EXPECT_FALSE(NoPageLoadMetricsRecorded()); | 204 EXPECT_FALSE(NoPageLoadMetricsRecorded()); |
| 191 } | 205 } |
| 192 | 206 |
| 193 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, SameDocumentNavigation) { | 207 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, |
| 208 SameDocumentNavigation) { | |
| 209 ASSERT_TRUE( | |
| 210 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 194 ASSERT_TRUE(embedded_test_server()->Start()); | 211 ASSERT_TRUE(embedded_test_server()->Start()); |
| 195 | 212 |
| 196 ui_test_utils::NavigateToURL(browser(), | 213 ui_test_utils::NavigateToURL(browser(), |
| 197 embedded_test_server()->GetURL("/title1.html")); | 214 embedded_test_server()->GetURL("/title1.html")); |
| 198 ui_test_utils::NavigateToURL( | 215 ui_test_utils::NavigateToURL( |
| 199 browser(), embedded_test_server()->GetURL("/title1.html#hash")); | 216 browser(), embedded_test_server()->GetURL("/title1.html#hash")); |
| 200 NavigateToUntrackedUrl(); | 217 NavigateToUntrackedUrl(); |
| 201 | 218 |
| 202 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); | 219 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); |
| 203 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); | 220 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); |
| 204 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); | 221 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); |
| 205 } | 222 } |
| 206 | 223 |
| 207 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, SameUrlNavigation) { | 224 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, |
| 225 SameUrlNavigation) { | |
| 226 ASSERT_TRUE( | |
| 227 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 208 ASSERT_TRUE(embedded_test_server()->Start()); | 228 ASSERT_TRUE(embedded_test_server()->Start()); |
| 209 | 229 |
| 210 ui_test_utils::NavigateToURL(browser(), | 230 ui_test_utils::NavigateToURL(browser(), |
| 211 embedded_test_server()->GetURL("/title1.html")); | 231 embedded_test_server()->GetURL("/title1.html")); |
| 212 ui_test_utils::NavigateToURL(browser(), | 232 ui_test_utils::NavigateToURL(browser(), |
| 213 embedded_test_server()->GetURL("/title1.html")); | 233 embedded_test_server()->GetURL("/title1.html")); |
| 214 NavigateToUntrackedUrl(); | 234 NavigateToUntrackedUrl(); |
| 215 | 235 |
| 216 // We expect one histogram sample for each navigation to title1.html. | 236 // We expect one histogram sample for each navigation to title1.html. |
| 217 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 2); | 237 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 2); |
| 218 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 2); | 238 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 2); |
| 219 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 2); | 239 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 2); |
| 220 } | 240 } |
| 221 | 241 |
| 222 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NonHtmlMainResource) { | 242 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, |
| 243 NonHtmlMainResource) { | |
| 244 ASSERT_TRUE( | |
| 245 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 223 ASSERT_TRUE(embedded_test_server()->Start()); | 246 ASSERT_TRUE(embedded_test_server()->Start()); |
| 224 | 247 |
| 225 ui_test_utils::NavigateToURL(browser(), | 248 ui_test_utils::NavigateToURL(browser(), |
| 226 embedded_test_server()->GetURL("/circle.svg")); | 249 embedded_test_server()->GetURL("/circle.svg")); |
| 227 NavigateToUntrackedUrl(); | 250 NavigateToUntrackedUrl(); |
| 228 EXPECT_TRUE(NoPageLoadMetricsRecorded()); | 251 EXPECT_TRUE(NoPageLoadMetricsRecorded()); |
| 229 } | 252 } |
| 230 | 253 |
| 231 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NonHttpOrHttpsUrl) { | 254 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, |
| 255 NonHttpOrHttpsUrl) { | |
| 256 ASSERT_TRUE( | |
| 257 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 232 ASSERT_TRUE(embedded_test_server()->Start()); | 258 ASSERT_TRUE(embedded_test_server()->Start()); |
| 233 | 259 |
| 234 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIVersionURL)); | 260 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIVersionURL)); |
| 235 NavigateToUntrackedUrl(); | 261 NavigateToUntrackedUrl(); |
| 236 EXPECT_TRUE(NoPageLoadMetricsRecorded()); | 262 EXPECT_TRUE(NoPageLoadMetricsRecorded()); |
| 237 } | 263 } |
| 238 | 264 |
| 239 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, HttpErrorPage) { | 265 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, HttpErrorPage) { |
| 266 ASSERT_TRUE( | |
| 267 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 240 ASSERT_TRUE(embedded_test_server()->Start()); | 268 ASSERT_TRUE(embedded_test_server()->Start()); |
| 241 | 269 |
| 242 ui_test_utils::NavigateToURL( | 270 ui_test_utils::NavigateToURL( |
| 243 browser(), embedded_test_server()->GetURL("/page_load_metrics/404.html")); | 271 browser(), embedded_test_server()->GetURL("/page_load_metrics/404.html")); |
| 244 NavigateToUntrackedUrl(); | 272 NavigateToUntrackedUrl(); |
| 245 EXPECT_TRUE(NoPageLoadMetricsRecorded()); | 273 EXPECT_TRUE(NoPageLoadMetricsRecorded()); |
| 246 } | 274 } |
| 247 | 275 |
| 248 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, ChromeErrorPage) { | 276 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, |
| 277 ChromeErrorPage) { | |
| 278 ASSERT_TRUE( | |
| 279 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 249 ASSERT_TRUE(embedded_test_server()->Start()); | 280 ASSERT_TRUE(embedded_test_server()->Start()); |
| 250 | 281 |
| 251 // Configure the network stack to fail all attempted loads with a network | 282 // Configure the network stack to fail all attempted loads with a network |
| 252 // error, which will cause Chrome to display an error page. | 283 // error, which will cause Chrome to display an error page. |
| 253 scoped_refptr<net::URLRequestContextGetter> url_request_context_getter = | 284 scoped_refptr<net::URLRequestContextGetter> url_request_context_getter = |
| 254 browser()->profile()->GetRequestContext(); | 285 browser()->profile()->GetRequestContext(); |
| 255 content::BrowserThread::PostTask( | 286 content::BrowserThread::PostTask( |
| 256 content::BrowserThread::IO, FROM_HERE, | 287 content::BrowserThread::IO, FROM_HERE, |
| 257 base::BindOnce(&FailAllNetworkTransactions, | 288 base::BindOnce(&FailAllNetworkTransactions, |
| 258 base::RetainedRef(url_request_context_getter))); | 289 base::RetainedRef(url_request_context_getter))); |
| 259 | 290 |
| 260 ui_test_utils::NavigateToURL(browser(), | 291 ui_test_utils::NavigateToURL(browser(), |
| 261 embedded_test_server()->GetURL("/title1.html")); | 292 embedded_test_server()->GetURL("/title1.html")); |
| 262 NavigateToUntrackedUrl(); | 293 NavigateToUntrackedUrl(); |
| 263 EXPECT_TRUE(NoPageLoadMetricsRecorded()); | 294 EXPECT_TRUE(NoPageLoadMetricsRecorded()); |
| 264 } | 295 } |
| 265 | 296 |
| 266 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, Ignore204Pages) { | 297 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, Ignore204Pages) { |
| 298 ASSERT_TRUE( | |
| 299 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 267 ASSERT_TRUE(embedded_test_server()->Start()); | 300 ASSERT_TRUE(embedded_test_server()->Start()); |
| 268 | 301 |
| 269 ui_test_utils::NavigateToURL(browser(), | 302 ui_test_utils::NavigateToURL(browser(), |
| 270 embedded_test_server()->GetURL("/page204.html")); | 303 embedded_test_server()->GetURL("/page204.html")); |
| 271 NavigateToUntrackedUrl(); | 304 NavigateToUntrackedUrl(); |
| 272 EXPECT_TRUE(NoPageLoadMetricsRecorded()); | 305 EXPECT_TRUE(NoPageLoadMetricsRecorded()); |
| 273 } | 306 } |
| 274 | 307 |
| 275 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, IgnoreDownloads) { | 308 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, |
| 309 IgnoreDownloads) { | |
| 310 ASSERT_TRUE( | |
| 311 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 276 ASSERT_TRUE(embedded_test_server()->Start()); | 312 ASSERT_TRUE(embedded_test_server()->Start()); |
| 277 | 313 |
| 278 base::ThreadRestrictions::ScopedAllowIO allow_io; | 314 base::ThreadRestrictions::ScopedAllowIO allow_io; |
| 279 base::ScopedTempDir downloads_directory; | 315 base::ScopedTempDir downloads_directory; |
| 280 ASSERT_TRUE(downloads_directory.CreateUniqueTempDir()); | 316 ASSERT_TRUE(downloads_directory.CreateUniqueTempDir()); |
| 281 browser()->profile()->GetPrefs()->SetFilePath( | 317 browser()->profile()->GetPrefs()->SetFilePath( |
| 282 prefs::kDownloadDefaultDirectory, downloads_directory.GetPath()); | 318 prefs::kDownloadDefaultDirectory, downloads_directory.GetPath()); |
| 283 content::DownloadTestObserverTerminal downloads_observer( | 319 content::DownloadTestObserverTerminal downloads_observer( |
| 284 content::BrowserContext::GetDownloadManager(browser()->profile()), | 320 content::BrowserContext::GetDownloadManager(browser()->profile()), |
| 285 1, // == wait_count (only waiting for "download-test3.gif"). | 321 1, // == wait_count (only waiting for "download-test3.gif"). |
| 286 content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL); | 322 content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL); |
| 287 | 323 |
| 288 ui_test_utils::NavigateToURL( | 324 ui_test_utils::NavigateToURL( |
| 289 browser(), embedded_test_server()->GetURL("/download-test3.gif")); | 325 browser(), embedded_test_server()->GetURL("/download-test3.gif")); |
| 290 downloads_observer.WaitForFinished(); | 326 downloads_observer.WaitForFinished(); |
| 291 | 327 |
| 292 NavigateToUntrackedUrl(); | 328 NavigateToUntrackedUrl(); |
| 293 EXPECT_TRUE(NoPageLoadMetricsRecorded()); | 329 EXPECT_TRUE(NoPageLoadMetricsRecorded()); |
| 294 } | 330 } |
| 295 | 331 |
| 296 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, PreloadDocumentWrite) { | 332 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, |
| 333 PreloadDocumentWrite) { | |
| 334 ASSERT_TRUE( | |
| 335 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 297 ASSERT_TRUE(embedded_test_server()->Start()); | 336 ASSERT_TRUE(embedded_test_server()->Start()); |
| 298 | 337 |
| 299 std::unique_ptr<PageLoadMetricsWaiter> fcp_waiter = | 338 std::unique_ptr<PageLoadMetricsWaiter> fcp_waiter = |
| 300 CreatePageLoadMetricsWaiter(); | 339 CreatePageLoadMetricsWaiter(); |
| 301 fcp_waiter->AddExpectation(PageLoadMetricsWaiter::FIRST_CONTENTFUL_PAINT); | 340 fcp_waiter->AddExpectation(PageLoadMetricsWaiter::FIRST_CONTENTFUL_PAINT); |
| 302 | 341 |
| 303 ui_test_utils::NavigateToURL( | 342 ui_test_utils::NavigateToURL( |
| 304 browser(), embedded_test_server()->GetURL( | 343 browser(), embedded_test_server()->GetURL( |
| 305 "/page_load_metrics/document_write_external_script.html")); | 344 "/page_load_metrics/document_write_external_script.html")); |
| 306 fcp_waiter->Wait(); | 345 fcp_waiter->Wait(); |
| 307 | 346 |
| 308 histogram_tester_.ExpectTotalCount( | 347 histogram_tester_.ExpectTotalCount( |
| 309 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 1); | 348 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 1); |
| 310 } | 349 } |
| 311 | 350 |
| 312 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoPreloadDocumentWrite) { | 351 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, |
| 352 NoPreloadDocumentWrite) { | |
| 353 ASSERT_TRUE( | |
| 354 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 313 ASSERT_TRUE(embedded_test_server()->Start()); | 355 ASSERT_TRUE(embedded_test_server()->Start()); |
| 314 | 356 |
| 315 ui_test_utils::NavigateToURL( | 357 ui_test_utils::NavigateToURL( |
| 316 browser(), embedded_test_server()->GetURL( | 358 browser(), embedded_test_server()->GetURL( |
| 317 "/page_load_metrics/document_write_no_script.html")); | 359 "/page_load_metrics/document_write_no_script.html")); |
| 318 NavigateToUntrackedUrl(); | 360 NavigateToUntrackedUrl(); |
| 319 | 361 |
| 320 histogram_tester_.ExpectTotalCount( | 362 histogram_tester_.ExpectTotalCount( |
| 321 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 0); | 363 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 0); |
| 322 } | 364 } |
| 323 | 365 |
| 324 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoDocumentWrite) { | 366 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, |
| 367 NoDocumentWrite) { | |
| 368 ASSERT_TRUE( | |
| 369 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 325 ASSERT_TRUE(embedded_test_server()->Start()); | 370 ASSERT_TRUE(embedded_test_server()->Start()); |
| 326 | 371 |
| 327 std::unique_ptr<PageLoadMetricsWaiter> fcp_waiter = | 372 std::unique_ptr<PageLoadMetricsWaiter> fcp_waiter = |
| 328 CreatePageLoadMetricsWaiter(); | 373 CreatePageLoadMetricsWaiter(); |
| 329 fcp_waiter->AddExpectation(PageLoadMetricsWaiter::FIRST_CONTENTFUL_PAINT); | 374 fcp_waiter->AddExpectation(PageLoadMetricsWaiter::FIRST_CONTENTFUL_PAINT); |
| 330 | 375 |
| 331 ui_test_utils::NavigateToURL(browser(), | 376 ui_test_utils::NavigateToURL(browser(), |
| 332 embedded_test_server()->GetURL("/title1.html")); | 377 embedded_test_server()->GetURL("/title1.html")); |
| 333 fcp_waiter->Wait(); | 378 fcp_waiter->Wait(); |
| 334 | 379 |
| 335 histogram_tester_.ExpectTotalCount( | 380 histogram_tester_.ExpectTotalCount( |
| 336 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 0); | 381 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 0); |
| 337 histogram_tester_.ExpectTotalCount( | 382 histogram_tester_.ExpectTotalCount( |
| 338 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); | 383 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); |
| 339 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 0); | 384 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 0); |
| 340 } | 385 } |
| 341 | 386 |
| 342 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, DocumentWriteBlock) { | 387 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, |
| 388 DocumentWriteBlock) { | |
| 389 ASSERT_TRUE( | |
| 390 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 343 ASSERT_TRUE(embedded_test_server()->Start()); | 391 ASSERT_TRUE(embedded_test_server()->Start()); |
| 344 | 392 |
| 345 std::unique_ptr<PageLoadMetricsWaiter> fcp_waiter = | 393 std::unique_ptr<PageLoadMetricsWaiter> fcp_waiter = |
| 346 CreatePageLoadMetricsWaiter(); | 394 CreatePageLoadMetricsWaiter(); |
| 347 fcp_waiter->AddExpectation(PageLoadMetricsWaiter::FIRST_CONTENTFUL_PAINT); | 395 fcp_waiter->AddExpectation(PageLoadMetricsWaiter::FIRST_CONTENTFUL_PAINT); |
| 348 | 396 |
| 349 ui_test_utils::NavigateToURL( | 397 ui_test_utils::NavigateToURL( |
| 350 browser(), embedded_test_server()->GetURL( | 398 browser(), embedded_test_server()->GetURL( |
| 351 "/page_load_metrics/document_write_script_block.html")); | 399 "/page_load_metrics/document_write_script_block.html")); |
| 352 fcp_waiter->Wait(); | 400 fcp_waiter->Wait(); |
| 353 | 401 |
| 354 histogram_tester_.ExpectTotalCount( | 402 histogram_tester_.ExpectTotalCount( |
| 355 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); | 403 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); |
| 356 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 1); | 404 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 1); |
| 357 } | 405 } |
| 358 | 406 |
| 359 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, DocumentWriteReload) { | 407 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, |
| 408 DocumentWriteReload) { | |
| 409 ASSERT_TRUE( | |
| 410 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 360 ASSERT_TRUE(embedded_test_server()->Start()); | 411 ASSERT_TRUE(embedded_test_server()->Start()); |
| 361 | 412 |
| 362 std::unique_ptr<PageLoadMetricsWaiter> fcp_waiter = | 413 std::unique_ptr<PageLoadMetricsWaiter> fcp_waiter = |
| 363 CreatePageLoadMetricsWaiter(); | 414 CreatePageLoadMetricsWaiter(); |
| 364 fcp_waiter->AddExpectation(PageLoadMetricsWaiter::FIRST_CONTENTFUL_PAINT); | 415 fcp_waiter->AddExpectation(PageLoadMetricsWaiter::FIRST_CONTENTFUL_PAINT); |
| 365 std::unique_ptr<PageLoadMetricsWaiter> reload_waiter = | 416 std::unique_ptr<PageLoadMetricsWaiter> reload_waiter = |
| 366 CreatePageLoadMetricsWaiter(); | 417 CreatePageLoadMetricsWaiter(); |
| 367 reload_waiter->ExpectDocumentWriteBlockReload(2); | 418 reload_waiter->ExpectDocumentWriteBlockReload(2); |
| 368 | 419 |
| 369 ui_test_utils::NavigateToURL( | 420 ui_test_utils::NavigateToURL( |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 386 reload_waiter->Wait(); | 437 reload_waiter->Wait(); |
| 387 | 438 |
| 388 histogram_tester_.ExpectTotalCount( | 439 histogram_tester_.ExpectTotalCount( |
| 389 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); | 440 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); |
| 390 | 441 |
| 391 histogram_tester_.ExpectTotalCount( | 442 histogram_tester_.ExpectTotalCount( |
| 392 internal::kHistogramDocWriteBlockReloadCount, 2); | 443 internal::kHistogramDocWriteBlockReloadCount, 2); |
| 393 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 1); | 444 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 1); |
| 394 } | 445 } |
| 395 | 446 |
| 396 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, DocumentWriteAsync) { | 447 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, |
| 448 DocumentWriteAsync) { | |
| 449 ASSERT_TRUE( | |
| 450 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 397 ASSERT_TRUE(embedded_test_server()->Start()); | 451 ASSERT_TRUE(embedded_test_server()->Start()); |
| 398 | 452 |
| 399 ui_test_utils::NavigateToURL( | 453 ui_test_utils::NavigateToURL( |
| 400 browser(), embedded_test_server()->GetURL( | 454 browser(), embedded_test_server()->GetURL( |
| 401 "/page_load_metrics/document_write_script_async.html")); | 455 "/page_load_metrics/document_write_script_async.html")); |
| 402 NavigateToUntrackedUrl(); | 456 NavigateToUntrackedUrl(); |
| 403 | 457 |
| 404 histogram_tester_.ExpectTotalCount( | 458 histogram_tester_.ExpectTotalCount( |
| 405 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); | 459 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); |
| 406 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 0); | 460 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 0); |
| 407 } | 461 } |
| 408 | 462 |
| 409 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, DocumentWriteSameDomain) { | 463 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, |
| 464 DocumentWriteSameDomain) { | |
| 465 ASSERT_TRUE( | |
| 466 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 410 ASSERT_TRUE(embedded_test_server()->Start()); | 467 ASSERT_TRUE(embedded_test_server()->Start()); |
| 411 | 468 |
| 412 ui_test_utils::NavigateToURL( | 469 ui_test_utils::NavigateToURL( |
| 413 browser(), embedded_test_server()->GetURL( | 470 browser(), embedded_test_server()->GetURL( |
| 414 "/page_load_metrics/document_write_external_script.html")); | 471 "/page_load_metrics/document_write_external_script.html")); |
| 415 NavigateToUntrackedUrl(); | 472 NavigateToUntrackedUrl(); |
| 416 | 473 |
| 417 histogram_tester_.ExpectTotalCount( | 474 histogram_tester_.ExpectTotalCount( |
| 418 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); | 475 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); |
| 419 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 0); | 476 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 0); |
| 420 } | 477 } |
| 421 | 478 |
| 422 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoDocumentWriteScript) { | 479 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, |
| 480 NoDocumentWriteScript) { | |
| 481 ASSERT_TRUE( | |
| 482 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 423 ASSERT_TRUE(embedded_test_server()->Start()); | 483 ASSERT_TRUE(embedded_test_server()->Start()); |
| 424 | 484 |
| 425 ui_test_utils::NavigateToURL( | 485 ui_test_utils::NavigateToURL( |
| 426 browser(), embedded_test_server()->GetURL( | 486 browser(), embedded_test_server()->GetURL( |
| 427 "/page_load_metrics/document_write_no_script.html")); | 487 "/page_load_metrics/document_write_no_script.html")); |
| 428 NavigateToUntrackedUrl(); | 488 NavigateToUntrackedUrl(); |
| 429 | 489 |
| 430 histogram_tester_.ExpectTotalCount( | 490 histogram_tester_.ExpectTotalCount( |
| 431 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); | 491 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); |
| 432 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 0); | 492 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 0); |
| 433 } | 493 } |
| 434 | 494 |
| 435 // TODO(crbug.com/712935): Flaky on Linux dbg. | 495 // TODO(crbug.com/712935): Flaky on Linux dbg. |
| 436 #if defined(OS_LINUX) && !defined(NDEBUG) | 496 #if defined(OS_LINUX) && !defined(NDEBUG) |
| 437 #define MAYBE_BadXhtml DISABLED_BadXhtml | 497 #define MAYBE_BadXhtml DISABLED_BadXhtml |
| 438 #else | 498 #else |
| 439 #define MAYBE_BadXhtml BadXhtml | 499 #define MAYBE_BadXhtml BadXhtml |
| 440 #endif | 500 #endif |
| 441 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, MAYBE_BadXhtml) { | 501 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, MAYBE_BadXhtml) { |
| 502 ASSERT_TRUE( | |
| 503 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 442 ASSERT_TRUE(embedded_test_server()->Start()); | 504 ASSERT_TRUE(embedded_test_server()->Start()); |
| 443 | 505 |
| 444 std::unique_ptr<PageLoadMetricsWaiter> timing_waiter = | 506 std::unique_ptr<PageLoadMetricsWaiter> timing_waiter = |
| 445 CreatePageLoadMetricsWaiter(); | 507 CreatePageLoadMetricsWaiter(); |
| 446 timing_waiter->AddExpectation(PageLoadMetricsWaiter::FIRST_PAINT); | 508 timing_waiter->AddExpectation(PageLoadMetricsWaiter::FIRST_PAINT); |
| 447 | 509 |
| 448 // When an XHTML page contains invalid XML, it causes a paint of the error | 510 // When an XHTML page contains invalid XML, it causes a paint of the error |
| 449 // message without a layout. Page load metrics currently treats this as an | 511 // message without a layout. Page load metrics currently treats this as an |
| 450 // error. Eventually, we'll fix this by special casing the handling of | 512 // error. Eventually, we'll fix this by special casing the handling of |
| 451 // documents with non-well-formed XML on the blink side. See crbug.com/627607 | 513 // documents with non-well-formed XML on the blink side. See crbug.com/627607 |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 467 histogram_tester_.ExpectTotalCount( | 529 histogram_tester_.ExpectTotalCount( |
| 468 page_load_metrics::internal::kPageLoadTimingStatus, 1); | 530 page_load_metrics::internal::kPageLoadTimingStatus, 1); |
| 469 histogram_tester_.ExpectBucketCount( | 531 histogram_tester_.ExpectBucketCount( |
| 470 page_load_metrics::internal::kPageLoadTimingStatus, | 532 page_load_metrics::internal::kPageLoadTimingStatus, |
| 471 page_load_metrics::internal::INVALID_ORDER_FIRST_LAYOUT_FIRST_PAINT, 1); | 533 page_load_metrics::internal::INVALID_ORDER_FIRST_LAYOUT_FIRST_PAINT, 1); |
| 472 } | 534 } |
| 473 | 535 |
| 474 // Test code that aborts provisional navigations. | 536 // Test code that aborts provisional navigations. |
| 475 // TODO(csharrison): Move these to unit tests once the navigation API in content | 537 // TODO(csharrison): Move these to unit tests once the navigation API in content |
| 476 // properly calls NavigationHandle/NavigationThrottle methods. | 538 // properly calls NavigationHandle/NavigationThrottle methods. |
| 477 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, AbortNewNavigation) { | 539 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, |
| 540 AbortNewNavigation) { | |
| 541 ASSERT_TRUE( | |
| 542 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 478 ASSERT_TRUE(embedded_test_server()->Start()); | 543 ASSERT_TRUE(embedded_test_server()->Start()); |
| 479 | 544 |
| 480 GURL url(embedded_test_server()->GetURL("/title1.html")); | 545 GURL url(embedded_test_server()->GetURL("/title1.html")); |
| 481 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); | 546 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); |
| 482 content::TestNavigationManager manager( | 547 content::TestNavigationManager manager( |
| 483 browser()->tab_strip_model()->GetActiveWebContents(), url); | 548 browser()->tab_strip_model()->GetActiveWebContents(), url); |
| 484 | 549 |
| 485 chrome::Navigate(¶ms); | 550 chrome::Navigate(¶ms); |
| 486 EXPECT_TRUE(manager.WaitForRequestStart()); | 551 EXPECT_TRUE(manager.WaitForRequestStart()); |
| 487 | 552 |
| 488 GURL url2(embedded_test_server()->GetURL("/title2.html")); | 553 GURL url2(embedded_test_server()->GetURL("/title2.html")); |
| 489 chrome::NavigateParams params2(browser(), url2, | 554 chrome::NavigateParams params2(browser(), url2, |
| 490 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR); | 555 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR); |
| 491 content::TestNavigationManager manager2( | 556 content::TestNavigationManager manager2( |
| 492 browser()->tab_strip_model()->GetActiveWebContents(), url2); | 557 browser()->tab_strip_model()->GetActiveWebContents(), url2); |
| 493 chrome::Navigate(¶ms2); | 558 chrome::Navigate(¶ms2); |
| 494 | 559 |
| 495 manager2.WaitForNavigationFinished(); | 560 manager2.WaitForNavigationFinished(); |
| 496 histogram_tester_.ExpectTotalCount( | 561 histogram_tester_.ExpectTotalCount( |
| 497 internal::kHistogramAbortNewNavigationBeforeCommit, 1); | 562 internal::kHistogramAbortNewNavigationBeforeCommit, 1); |
| 498 } | 563 } |
| 499 | 564 |
| 500 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, AbortReload) { | 565 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, AbortReload) { |
| 566 ASSERT_TRUE( | |
| 567 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 501 ASSERT_TRUE(embedded_test_server()->Start()); | 568 ASSERT_TRUE(embedded_test_server()->Start()); |
| 502 | 569 |
| 503 GURL url(embedded_test_server()->GetURL("/title1.html")); | 570 GURL url(embedded_test_server()->GetURL("/title1.html")); |
| 504 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); | 571 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); |
| 505 content::TestNavigationManager manager( | 572 content::TestNavigationManager manager( |
| 506 browser()->tab_strip_model()->GetActiveWebContents(), url); | 573 browser()->tab_strip_model()->GetActiveWebContents(), url); |
| 507 | 574 |
| 508 chrome::Navigate(¶ms); | 575 chrome::Navigate(¶ms); |
| 509 EXPECT_TRUE(manager.WaitForRequestStart()); | 576 EXPECT_TRUE(manager.WaitForRequestStart()); |
| 510 | 577 |
| 511 chrome::NavigateParams params2(browser(), url, ui::PAGE_TRANSITION_RELOAD); | 578 chrome::NavigateParams params2(browser(), url, ui::PAGE_TRANSITION_RELOAD); |
| 512 content::TestNavigationManager manager2( | 579 content::TestNavigationManager manager2( |
| 513 browser()->tab_strip_model()->GetActiveWebContents(), url); | 580 browser()->tab_strip_model()->GetActiveWebContents(), url); |
| 514 chrome::Navigate(¶ms2); | 581 chrome::Navigate(¶ms2); |
| 515 | 582 |
| 516 manager2.WaitForNavigationFinished(); | 583 manager2.WaitForNavigationFinished(); |
| 517 histogram_tester_.ExpectTotalCount( | 584 histogram_tester_.ExpectTotalCount( |
| 518 internal::kHistogramAbortReloadBeforeCommit, 1); | 585 internal::kHistogramAbortReloadBeforeCommit, 1); |
| 519 } | 586 } |
| 520 | 587 |
| 521 // TODO(crbug.com/675061): Flaky on Win7 dbg. | 588 // TODO(crbug.com/675061): Flaky on Win7 dbg. |
| 522 #if defined(OS_WIN) | 589 #if defined(OS_WIN) |
| 523 #define MAYBE_AbortClose DISABLED_AbortClose | 590 #define MAYBE_AbortClose DISABLED_AbortClose |
| 524 #else | 591 #else |
| 525 #define MAYBE_AbortClose AbortClose | 592 #define MAYBE_AbortClose AbortClose |
| 526 #endif | 593 #endif |
| 527 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, MAYBE_AbortClose) { | 594 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, |
| 595 MAYBE_AbortClose) { | |
| 596 ASSERT_TRUE( | |
| 597 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 528 ASSERT_TRUE(embedded_test_server()->Start()); | 598 ASSERT_TRUE(embedded_test_server()->Start()); |
| 529 | 599 |
| 530 GURL url(embedded_test_server()->GetURL("/title1.html")); | 600 GURL url(embedded_test_server()->GetURL("/title1.html")); |
| 531 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); | 601 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); |
| 532 content::TestNavigationManager manager( | 602 content::TestNavigationManager manager( |
| 533 browser()->tab_strip_model()->GetActiveWebContents(), url); | 603 browser()->tab_strip_model()->GetActiveWebContents(), url); |
| 534 | 604 |
| 535 chrome::Navigate(¶ms); | 605 chrome::Navigate(¶ms); |
| 536 EXPECT_TRUE(manager.WaitForRequestStart()); | 606 EXPECT_TRUE(manager.WaitForRequestStart()); |
| 537 | 607 |
| 538 browser()->tab_strip_model()->GetActiveWebContents()->Close(); | 608 browser()->tab_strip_model()->GetActiveWebContents()->Close(); |
| 539 | 609 |
| 540 manager.WaitForNavigationFinished(); | 610 manager.WaitForNavigationFinished(); |
| 541 | 611 |
| 542 histogram_tester_.ExpectTotalCount(internal::kHistogramAbortCloseBeforeCommit, | 612 histogram_tester_.ExpectTotalCount(internal::kHistogramAbortCloseBeforeCommit, |
| 543 1); | 613 1); |
| 544 } | 614 } |
| 545 | 615 |
| 546 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, AbortMultiple) { | 616 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, AbortMultiple) { |
| 617 ASSERT_TRUE( | |
| 618 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 547 ASSERT_TRUE(embedded_test_server()->Start()); | 619 ASSERT_TRUE(embedded_test_server()->Start()); |
| 548 | 620 |
| 549 GURL url(embedded_test_server()->GetURL("/title1.html")); | 621 GURL url(embedded_test_server()->GetURL("/title1.html")); |
| 550 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); | 622 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); |
| 551 content::TestNavigationManager manager( | 623 content::TestNavigationManager manager( |
| 552 browser()->tab_strip_model()->GetActiveWebContents(), url); | 624 browser()->tab_strip_model()->GetActiveWebContents(), url); |
| 553 | 625 |
| 554 chrome::Navigate(¶ms); | 626 chrome::Navigate(¶ms); |
| 555 EXPECT_TRUE(manager.WaitForRequestStart()); | 627 EXPECT_TRUE(manager.WaitForRequestStart()); |
| 556 | 628 |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 571 | 643 |
| 572 EXPECT_TRUE(manager3.WaitForRequestStart()); | 644 EXPECT_TRUE(manager3.WaitForRequestStart()); |
| 573 manager2.WaitForNavigationFinished(); | 645 manager2.WaitForNavigationFinished(); |
| 574 | 646 |
| 575 manager3.WaitForNavigationFinished(); | 647 manager3.WaitForNavigationFinished(); |
| 576 | 648 |
| 577 histogram_tester_.ExpectTotalCount( | 649 histogram_tester_.ExpectTotalCount( |
| 578 internal::kHistogramAbortNewNavigationBeforeCommit, 2); | 650 internal::kHistogramAbortNewNavigationBeforeCommit, 2); |
| 579 } | 651 } |
| 580 | 652 |
| 581 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, | 653 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, |
| 582 NoAbortMetricsOnClientRedirect) { | 654 NoAbortMetricsOnClientRedirect) { |
| 655 ASSERT_TRUE( | |
| 656 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 583 ASSERT_TRUE(embedded_test_server()->Start()); | 657 ASSERT_TRUE(embedded_test_server()->Start()); |
| 584 | 658 |
| 585 GURL first_url(embedded_test_server()->GetURL("/title1.html")); | 659 GURL first_url(embedded_test_server()->GetURL("/title1.html")); |
| 586 ui_test_utils::NavigateToURL(browser(), first_url); | 660 ui_test_utils::NavigateToURL(browser(), first_url); |
| 587 | 661 |
| 588 GURL second_url(embedded_test_server()->GetURL("/title2.html")); | 662 GURL second_url(embedded_test_server()->GetURL("/title2.html")); |
| 589 chrome::NavigateParams params(browser(), second_url, | 663 chrome::NavigateParams params(browser(), second_url, |
| 590 ui::PAGE_TRANSITION_LINK); | 664 ui::PAGE_TRANSITION_LINK); |
| 591 content::TestNavigationManager manager( | 665 content::TestNavigationManager manager( |
| 592 browser()->tab_strip_model()->GetActiveWebContents(), second_url); | 666 browser()->tab_strip_model()->GetActiveWebContents(), second_url); |
| 593 chrome::Navigate(¶ms); | 667 chrome::Navigate(¶ms); |
| 594 EXPECT_TRUE(manager.WaitForRequestStart()); | 668 EXPECT_TRUE(manager.WaitForRequestStart()); |
| 595 | 669 |
| 596 { | 670 { |
| 597 content::TestNavigationManager reload_manager( | 671 content::TestNavigationManager reload_manager( |
| 598 browser()->tab_strip_model()->GetActiveWebContents(), first_url); | 672 browser()->tab_strip_model()->GetActiveWebContents(), first_url); |
| 599 EXPECT_TRUE(content::ExecuteScript( | 673 EXPECT_TRUE(content::ExecuteScript( |
| 600 browser()->tab_strip_model()->GetActiveWebContents(), | 674 browser()->tab_strip_model()->GetActiveWebContents(), |
| 601 "window.location.reload();")); | 675 "window.location.reload();")); |
| 602 } | 676 } |
| 603 | 677 |
| 604 manager.WaitForNavigationFinished(); | 678 manager.WaitForNavigationFinished(); |
| 605 | 679 |
| 606 EXPECT_TRUE(histogram_tester_ | 680 EXPECT_TRUE(histogram_tester_ |
| 607 .GetTotalCountsForPrefix("PageLoad.Experimental.AbortTiming.") | 681 .GetTotalCountsForPrefix("PageLoad.Experimental.AbortTiming.") |
| 608 .empty()); | 682 .empty()); |
| 609 } | 683 } |
| 610 | 684 |
| 611 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, | 685 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, |
| 612 FirstMeaningfulPaintRecorded) { | 686 FirstMeaningfulPaintRecorded) { |
| 687 ASSERT_TRUE( | |
| 688 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 613 ASSERT_TRUE(embedded_test_server()->Start()); | 689 ASSERT_TRUE(embedded_test_server()->Start()); |
| 614 | 690 |
| 615 ui_test_utils::NavigateToURL(browser(), | 691 ui_test_utils::NavigateToURL(browser(), |
| 616 embedded_test_server()->GetURL("/title1.html")); | 692 embedded_test_server()->GetURL("/title1.html")); |
| 617 | 693 |
| 618 // Wait until the renderer finishes observing layouts. | 694 // Wait until the renderer finishes observing layouts. |
| 619 const int kNetworkIdleTime = 3000; | 695 const int kNetworkIdleTime = 3000; |
| 620 const int kMargin = 500; | 696 const int kMargin = 500; |
| 621 const std::string javascript = base::StringPrintf( | 697 const std::string javascript = base::StringPrintf( |
| 622 "setTimeout(() => window.domAutomationController.send(true), %d)", | 698 "setTimeout(() => window.domAutomationController.send(true), %d)", |
| 623 kNetworkIdleTime + kMargin); | 699 kNetworkIdleTime + kMargin); |
| 624 bool result; | 700 bool result; |
| 625 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( | 701 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( |
| 626 browser()->tab_strip_model()->GetActiveWebContents(), | 702 browser()->tab_strip_model()->GetActiveWebContents(), javascript, |
| 627 javascript, &result)); | 703 &result)); |
| 628 EXPECT_TRUE(result); | 704 EXPECT_TRUE(result); |
| 629 | 705 |
| 630 NavigateToUntrackedUrl(); | 706 NavigateToUntrackedUrl(); |
| 631 histogram_tester_.ExpectUniqueSample( | 707 histogram_tester_.ExpectUniqueSample( |
| 632 internal::kHistogramFirstMeaningfulPaintStatus, | 708 internal::kHistogramFirstMeaningfulPaintStatus, |
| 633 internal::FIRST_MEANINGFUL_PAINT_RECORDED, 1); | 709 internal::FIRST_MEANINGFUL_PAINT_RECORDED, 1); |
| 634 histogram_tester_.ExpectTotalCount( | 710 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstMeaningfulPaint, |
| 635 internal::kHistogramFirstMeaningfulPaint, 1); | 711 1); |
| 636 histogram_tester_.ExpectTotalCount( | 712 histogram_tester_.ExpectTotalCount( |
| 637 internal::kHistogramParseStartToFirstMeaningfulPaint, 1); | 713 internal::kHistogramParseStartToFirstMeaningfulPaint, 1); |
| 638 } | 714 } |
| 639 | 715 |
| 640 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, | 716 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, |
| 641 FirstMeaningfulPaintNotRecorded) { | 717 FirstMeaningfulPaintNotRecorded) { |
| 718 ASSERT_TRUE( | |
| 719 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 642 ASSERT_TRUE(embedded_test_server()->Start()); | 720 ASSERT_TRUE(embedded_test_server()->Start()); |
| 643 | 721 |
| 644 std::unique_ptr<PageLoadMetricsWaiter> fcp_waiter = | 722 std::unique_ptr<PageLoadMetricsWaiter> fcp_waiter = |
| 645 CreatePageLoadMetricsWaiter(); | 723 CreatePageLoadMetricsWaiter(); |
| 646 fcp_waiter->AddExpectation(PageLoadMetricsWaiter::FIRST_CONTENTFUL_PAINT); | 724 fcp_waiter->AddExpectation(PageLoadMetricsWaiter::FIRST_CONTENTFUL_PAINT); |
| 647 | 725 |
| 648 ui_test_utils::NavigateToURL( | 726 ui_test_utils::NavigateToURL( |
| 649 browser(), embedded_test_server()->GetURL( | 727 browser(), embedded_test_server()->GetURL( |
| 650 "/page_load_metrics/page_with_active_connections.html")); | 728 "/page_load_metrics/page_with_active_connections.html")); |
| 651 fcp_waiter->Wait(); | 729 fcp_waiter->Wait(); |
| 652 | 730 |
| 653 // Navigate away before a FMP is reported. | 731 // Navigate away before a FMP is reported. |
| 654 NavigateToUntrackedUrl(); | 732 NavigateToUntrackedUrl(); |
| 655 | 733 |
| 656 histogram_tester_.ExpectUniqueSample( | 734 histogram_tester_.ExpectUniqueSample( |
| 657 internal::kHistogramFirstMeaningfulPaintStatus, | 735 internal::kHistogramFirstMeaningfulPaintStatus, |
| 658 internal::FIRST_MEANINGFUL_PAINT_DID_NOT_REACH_NETWORK_STABLE, 1); | 736 internal::FIRST_MEANINGFUL_PAINT_DID_NOT_REACH_NETWORK_STABLE, 1); |
| 659 histogram_tester_.ExpectTotalCount( | 737 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstMeaningfulPaint, |
| 660 internal::kHistogramFirstMeaningfulPaint, 0); | 738 0); |
| 661 histogram_tester_.ExpectTotalCount( | 739 histogram_tester_.ExpectTotalCount( |
| 662 internal::kHistogramParseStartToFirstMeaningfulPaint, 0); | 740 internal::kHistogramParseStartToFirstMeaningfulPaint, 0); |
| 663 } | 741 } |
| 664 | 742 |
| 665 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, | 743 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, |
| 666 NoStatePrefetchObserverCacheable) { | 744 NoStatePrefetchObserverCacheable) { |
| 745 ASSERT_TRUE( | |
| 746 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 667 ASSERT_TRUE(embedded_test_server()->Start()); | 747 ASSERT_TRUE(embedded_test_server()->Start()); |
| 668 | 748 |
| 669 std::unique_ptr<PageLoadMetricsWaiter> fcp_waiter = | 749 std::unique_ptr<PageLoadMetricsWaiter> fcp_waiter = |
| 670 CreatePageLoadMetricsWaiter(); | 750 CreatePageLoadMetricsWaiter(); |
| 671 fcp_waiter->AddExpectation(PageLoadMetricsWaiter::FIRST_CONTENTFUL_PAINT); | 751 fcp_waiter->AddExpectation(PageLoadMetricsWaiter::FIRST_CONTENTFUL_PAINT); |
| 672 | 752 |
| 673 ui_test_utils::NavigateToURL(browser(), | 753 ui_test_utils::NavigateToURL(browser(), |
| 674 embedded_test_server()->GetURL("/title1.html")); | 754 embedded_test_server()->GetURL("/title1.html")); |
| 675 | 755 |
| 676 fcp_waiter->Wait(); | 756 fcp_waiter->Wait(); |
| 677 | 757 |
| 678 histogram_tester_.ExpectTotalCount( | 758 histogram_tester_.ExpectTotalCount( |
| 679 "Prerender.none_PrefetchTTFCP.Reference.NoStore.Visible", 0); | 759 "Prerender.none_PrefetchTTFCP.Reference.NoStore.Visible", 0); |
| 680 histogram_tester_.ExpectTotalCount( | 760 histogram_tester_.ExpectTotalCount( |
| 681 "Prerender.none_PrefetchTTFCP.Reference.Cacheable.Visible", 1); | 761 "Prerender.none_PrefetchTTFCP.Reference.Cacheable.Visible", 1); |
| 682 } | 762 } |
| 683 | 763 |
| 684 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, | 764 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, |
| 685 NoStatePrefetchObserverNoStore) { | 765 NoStatePrefetchObserverNoStore) { |
| 766 ASSERT_TRUE( | |
| 767 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 686 ASSERT_TRUE(embedded_test_server()->Start()); | 768 ASSERT_TRUE(embedded_test_server()->Start()); |
| 687 | 769 |
| 688 std::unique_ptr<PageLoadMetricsWaiter> fcp_waiter = | 770 std::unique_ptr<PageLoadMetricsWaiter> fcp_waiter = |
| 689 CreatePageLoadMetricsWaiter(); | 771 CreatePageLoadMetricsWaiter(); |
| 690 fcp_waiter->AddExpectation(PageLoadMetricsWaiter::FIRST_CONTENTFUL_PAINT); | 772 fcp_waiter->AddExpectation(PageLoadMetricsWaiter::FIRST_CONTENTFUL_PAINT); |
| 691 | 773 |
| 692 ui_test_utils::NavigateToURL(browser(), | 774 ui_test_utils::NavigateToURL(browser(), |
| 693 embedded_test_server()->GetURL("/nostore.html")); | 775 embedded_test_server()->GetURL("/nostore.html")); |
| 694 | 776 |
| 695 fcp_waiter->Wait(); | 777 fcp_waiter->Wait(); |
| 696 | 778 |
| 697 histogram_tester_.ExpectTotalCount( | 779 histogram_tester_.ExpectTotalCount( |
| 698 "Prerender.none_PrefetchTTFCP.Reference.NoStore.Visible", 1); | 780 "Prerender.none_PrefetchTTFCP.Reference.NoStore.Visible", 1); |
| 699 histogram_tester_.ExpectTotalCount( | 781 histogram_tester_.ExpectTotalCount( |
| 700 "Prerender.none_PrefetchTTFCP.Reference.Cacheable.Visible", 0); | 782 "Prerender.none_PrefetchTTFCP.Reference.Cacheable.Visible", 0); |
| 701 } | 783 } |
| 702 | 784 |
| 703 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, CSSTiming) { | 785 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, CSSTiming) { |
| 786 ASSERT_TRUE( | |
| 787 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 704 ASSERT_TRUE(embedded_test_server()->Start()); | 788 ASSERT_TRUE(embedded_test_server()->Start()); |
| 705 | 789 |
| 706 std::unique_ptr<PageLoadMetricsWaiter> fcp_waiter = | 790 std::unique_ptr<PageLoadMetricsWaiter> fcp_waiter = |
| 707 CreatePageLoadMetricsWaiter(); | 791 CreatePageLoadMetricsWaiter(); |
| 708 fcp_waiter->AddExpectation(PageLoadMetricsWaiter::STYLE_UPDATE_BEFORE_FCP); | 792 fcp_waiter->AddExpectation(PageLoadMetricsWaiter::STYLE_UPDATE_BEFORE_FCP); |
| 709 | 793 |
| 710 // Careful: Blink code clamps timestamps to 5us, so any CSS parsing we do here | 794 // Careful: Blink code clamps timestamps to 5us, so any CSS parsing we do here |
| 711 // must take >> 5us, otherwise we'll log 0 for the value and it will remain | 795 // must take >> 5us, otherwise we'll log 0 for the value and it will remain |
| 712 // unset here. | 796 // unset here. |
| 713 ui_test_utils::NavigateToURL( | 797 ui_test_utils::NavigateToURL( |
| 714 browser(), | 798 browser(), |
| 715 embedded_test_server()->GetURL("/page_load_metrics/page_with_css.html")); | 799 embedded_test_server()->GetURL("/page_load_metrics/page_with_css.html")); |
| 716 NavigateToUntrackedUrl(); | 800 NavigateToUntrackedUrl(); |
| 717 fcp_waiter->Wait(); | 801 fcp_waiter->Wait(); |
| 718 | 802 |
| 719 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, | 803 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, |
| 720 1); | 804 1); |
| 721 histogram_tester_.ExpectTotalCount( | 805 histogram_tester_.ExpectTotalCount( |
| 722 "PageLoad.CSSTiming.Parse.BeforeFirstContentfulPaint", 1); | 806 "PageLoad.CSSTiming.Parse.BeforeFirstContentfulPaint", 1); |
| 723 histogram_tester_.ExpectTotalCount( | 807 histogram_tester_.ExpectTotalCount( |
| 724 "PageLoad.CSSTiming.Update.BeforeFirstContentfulPaint", 1); | 808 "PageLoad.CSSTiming.Update.BeforeFirstContentfulPaint", 1); |
| 725 histogram_tester_.ExpectTotalCount( | 809 histogram_tester_.ExpectTotalCount( |
| 726 "PageLoad.CSSTiming.ParseAndUpdate.BeforeFirstContentfulPaint", 1); | 810 "PageLoad.CSSTiming.ParseAndUpdate.BeforeFirstContentfulPaint", 1); |
| 727 } | 811 } |
| 728 | 812 |
| 729 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, PayloadSize) { | 813 IN_PROC_BROWSER_TEST_F(PageLoadMetricsMojoficationBrowserTest, PayloadSize) { |
| 814 ASSERT_TRUE( | |
| 815 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication)); | |
| 730 ASSERT_TRUE(embedded_test_server()->Start()); | 816 ASSERT_TRUE(embedded_test_server()->Start()); |
| 731 | 817 |
| 732 ui_test_utils::NavigateToURL(browser(), embedded_test_server()->GetURL( | 818 ui_test_utils::NavigateToURL(browser(), embedded_test_server()->GetURL( |
| 733 "/page_load_metrics/large.html")); | 819 "/page_load_metrics/large.html")); |
| 734 NavigateToUntrackedUrl(); | 820 NavigateToUntrackedUrl(); |
| 735 | 821 |
| 736 histogram_tester_.ExpectTotalCount(internal::kHistogramTotalBytes, 1); | 822 histogram_tester_.ExpectTotalCount(internal::kHistogramTotalBytes, 1); |
| 737 | 823 |
| 738 // Verify that there is a single sample recorded in the 10kB bucket (the size | 824 // Verify that there is a single sample recorded in the 10kB bucket (the size |
| 739 // of the main HTML response). | 825 // of the main HTML response). |
| 740 histogram_tester_.ExpectBucketCount(internal::kHistogramTotalBytes, 10, 1); | 826 histogram_tester_.ExpectBucketCount(internal::kHistogramTotalBytes, 10, 1); |
| 741 } | 827 } |
| OLD | NEW |