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/time/time.h" | 9 #include "base/time/time.h" |
10 #include "chrome/browser/page_load_metrics/metrics_web_contents_observer.h" | 10 #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" | 11 #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" | 12 #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" | 13 #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" | 14 #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" | 15 #include "chrome/browser/page_load_metrics/page_load_tracker.h" |
16 #include "chrome/browser/prerender/prerender_histograms.h" | 16 #include "chrome/browser/prerender/prerender_histograms.h" |
17 #include "chrome/browser/prerender/prerender_origin.h" | 17 #include "chrome/browser/prerender/prerender_origin.h" |
18 #include "chrome/browser/profiles/profile.h" | 18 #include "chrome/browser/profiles/profile.h" |
19 #include "chrome/browser/ui/browser.h" | 19 #include "chrome/browser/ui/browser.h" |
Bryan McQuade
2017/05/03 19:03:05
looks like you can revert this file
lpy
2017/05/05 17:49:30
We have two FailAllNetworkTransactions in browsert
| |
20 #include "chrome/browser/ui/browser_navigator_params.h" | 20 #include "chrome/browser/ui/browser_navigator_params.h" |
21 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 21 #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/pref_names.h" | 22 #include "chrome/common/pref_names.h" |
24 #include "chrome/common/url_constants.h" | 23 #include "chrome/common/url_constants.h" |
25 #include "chrome/test/base/in_process_browser_test.h" | 24 #include "chrome/test/base/in_process_browser_test.h" |
26 #include "chrome/test/base/ui_test_utils.h" | 25 #include "chrome/test/base/ui_test_utils.h" |
27 #include "components/prefs/pref_service.h" | 26 #include "components/prefs/pref_service.h" |
28 #include "content/public/browser/browser_thread.h" | 27 #include "content/public/browser/browser_thread.h" |
29 #include "content/public/browser/render_process_host.h" | 28 #include "content/public/browser/render_process_host.h" |
30 #include "content/public/browser/render_view_host.h" | 29 #include "content/public/browser/render_view_host.h" |
31 #include "content/public/test/browser_test_utils.h" | 30 #include "content/public/test/browser_test_utils.h" |
32 #include "content/public/test/download_test_observer.h" | 31 #include "content/public/test/download_test_observer.h" |
33 #include "net/http/failing_http_transaction_factory.h" | 32 #include "net/http/failing_http_transaction_factory.h" |
34 #include "net/http/http_cache.h" | 33 #include "net/http/http_cache.h" |
35 #include "net/test/embedded_test_server/embedded_test_server.h" | 34 #include "net/test/embedded_test_server/embedded_test_server.h" |
36 #include "net/test/url_request/url_request_failed_job.h" | 35 #include "net/test/url_request/url_request_failed_job.h" |
37 #include "net/url_request/url_request_context.h" | 36 #include "net/url_request/url_request_context.h" |
38 #include "net/url_request/url_request_context_getter.h" | 37 #include "net/url_request/url_request_context_getter.h" |
39 | 38 |
40 namespace { | 39 namespace { |
41 | 40 |
41 void FailAllNetworkTransactions(net::URLRequestContextGetter* getter) { | |
42 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); | |
43 net::HttpCache* cache( | |
44 getter->GetURLRequestContext()->http_transaction_factory()->GetCache()); | |
45 DCHECK(cache); | |
46 std::unique_ptr<net::FailingHttpTransactionFactory> factory( | |
47 new net::FailingHttpTransactionFactory(cache->GetSession(), | |
48 net::ERR_FAILED)); | |
49 // Throw away old version; since this is a browser test, there is no | |
50 // need to restore the old state. | |
51 cache->SetHttpNetworkTransactionFactoryForTesting(std::move(factory)); | |
52 } | |
53 | |
42 // Waits until specified timing and metadata expectations are satisfied. | 54 // Waits until specified timing and metadata expectations are satisfied. |
43 class PageLoadMetricsWaiter | 55 class PageLoadMetricsWaiter |
44 : public page_load_metrics::MetricsWebContentsObserver::TestingObserver { | 56 : public page_load_metrics::MetricsWebContentsObserver::TestingObserver { |
45 public: | 57 public: |
46 // A bitvector to express which timing fields to match on. | 58 // A bitvector to express which timing fields to match on. |
47 enum ExpectedTimingFields { | 59 enum ExpectedTimingFields { |
48 FIRST_PAINT = 1 << 0, | 60 FIRST_PAINT = 1 << 0, |
49 FIRST_CONTENTFUL_PAINT = 1 << 1, | 61 FIRST_CONTENTFUL_PAINT = 1 << 1, |
50 STYLE_UPDATE_BEFORE_FCP = 1 << 2 | 62 STYLE_UPDATE_BEFORE_FCP = 1 << 2 |
51 }; | 63 }; |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
141 browser()->tab_strip_model()->GetActiveWebContents(); | 153 browser()->tab_strip_model()->GetActiveWebContents(); |
142 return base::MakeUnique<PageLoadMetricsWaiter>(web_contents); | 154 return base::MakeUnique<PageLoadMetricsWaiter>(web_contents); |
143 } | 155 } |
144 | 156 |
145 base::HistogramTester histogram_tester_; | 157 base::HistogramTester histogram_tester_; |
146 | 158 |
147 private: | 159 private: |
148 DISALLOW_COPY_AND_ASSIGN(PageLoadMetricsBrowserTest); | 160 DISALLOW_COPY_AND_ASSIGN(PageLoadMetricsBrowserTest); |
149 }; | 161 }; |
150 | 162 |
151 void FailAllNetworkTransactions(net::URLRequestContextGetter* getter) { | |
152 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); | |
153 net::HttpCache* cache( | |
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) { | 163 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoNavigation) { |
165 ASSERT_TRUE(embedded_test_server()->Start()); | 164 ASSERT_TRUE(embedded_test_server()->Start()); |
166 EXPECT_TRUE(NoPageLoadMetricsRecorded()); | 165 EXPECT_TRUE(NoPageLoadMetricsRecorded()); |
167 } | 166 } |
168 | 167 |
169 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NewPage) { | 168 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NewPage) { |
170 ASSERT_TRUE(embedded_test_server()->Start()); | 169 ASSERT_TRUE(embedded_test_server()->Start()); |
171 | 170 |
172 ui_test_utils::NavigateToURL(browser(), | 171 ui_test_utils::NavigateToURL(browser(), |
173 embedded_test_server()->GetURL("/title1.html")); | 172 embedded_test_server()->GetURL("/title1.html")); |
(...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
732 ui_test_utils::NavigateToURL(browser(), embedded_test_server()->GetURL( | 731 ui_test_utils::NavigateToURL(browser(), embedded_test_server()->GetURL( |
733 "/page_load_metrics/large.html")); | 732 "/page_load_metrics/large.html")); |
734 NavigateToUntrackedUrl(); | 733 NavigateToUntrackedUrl(); |
735 | 734 |
736 histogram_tester_.ExpectTotalCount(internal::kHistogramTotalBytes, 1); | 735 histogram_tester_.ExpectTotalCount(internal::kHistogramTotalBytes, 1); |
737 | 736 |
738 // Verify that there is a single sample recorded in the 10kB bucket (the size | 737 // Verify that there is a single sample recorded in the 10kB bucket (the size |
739 // of the main HTML response). | 738 // of the main HTML response). |
740 histogram_tester_.ExpectBucketCount(internal::kHistogramTotalBytes, 10, 1); | 739 histogram_tester_.ExpectBucketCount(internal::kHistogramTotalBytes, 10, 1); |
741 } | 740 } |
OLD | NEW |