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 "base/macros.h" | 5 #include "base/macros.h" |
6 #include "base/test/histogram_tester.h" | 6 #include "base/test/histogram_tester.h" |
7 #include "chrome/browser/page_load_metrics/observers/core_page_load_metrics_obse
rver.h" | 7 #include "chrome/browser/page_load_metrics/observers/core_page_load_metrics_obse
rver.h" |
8 #include "chrome/browser/page_load_metrics/observers/document_write_page_load_me
trics_observer.h" | 8 #include "chrome/browser/page_load_metrics/observers/document_write_page_load_me
trics_observer.h" |
9 #include "chrome/common/url_constants.h" | 9 #include "chrome/common/url_constants.h" |
10 #include "chrome/test/base/in_process_browser_test.h" | 10 #include "chrome/test/base/in_process_browser_test.h" |
11 #include "chrome/test/base/ui_test_utils.h" | 11 #include "chrome/test/base/ui_test_utils.h" |
12 #include "net/test/embedded_test_server/embedded_test_server.h" | 12 #include "net/test/embedded_test_server/embedded_test_server.h" |
13 | 13 |
14 class MetricsWebContentsObserverBrowserTest : public InProcessBrowserTest { | 14 class MetricsWebContentsObserverBrowserTest : public InProcessBrowserTest { |
15 public: | 15 public: |
16 MetricsWebContentsObserverBrowserTest() {} | 16 MetricsWebContentsObserverBrowserTest() {} |
17 ~MetricsWebContentsObserverBrowserTest() override {} | 17 ~MetricsWebContentsObserverBrowserTest() override {} |
18 | 18 |
19 protected: | 19 protected: |
| 20 void NavigateToUntrackedUrl() { |
| 21 ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL)); |
| 22 } |
| 23 |
20 base::HistogramTester histogram_tester_; | 24 base::HistogramTester histogram_tester_; |
21 | 25 |
22 DISALLOW_COPY_AND_ASSIGN(MetricsWebContentsObserverBrowserTest); | 26 DISALLOW_COPY_AND_ASSIGN(MetricsWebContentsObserverBrowserTest); |
23 }; | 27 }; |
24 | 28 |
25 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, NoNavigation) { | 29 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, NoNavigation) { |
26 ASSERT_TRUE(embedded_test_server()->Start()); | 30 ASSERT_TRUE(embedded_test_server()->Start()); |
27 | 31 |
28 histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 0); | 32 histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 0); |
29 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 0); | 33 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 0); |
30 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 0); | 34 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 0); |
31 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 0); | 35 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 0); |
32 } | 36 } |
33 | 37 |
34 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, NewPage) { | 38 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, NewPage) { |
35 ASSERT_TRUE(embedded_test_server()->Start()); | 39 ASSERT_TRUE(embedded_test_server()->Start()); |
36 | 40 |
37 ui_test_utils::NavigateToURL(browser(), | 41 ui_test_utils::NavigateToURL(browser(), |
38 embedded_test_server()->GetURL("/title1.html")); | 42 embedded_test_server()->GetURL("/title1.html")); |
39 ui_test_utils::NavigateToURL(browser(), | 43 NavigateToUntrackedUrl(); |
40 embedded_test_server()->GetURL("/title2.html")); | |
41 | 44 |
42 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); | 45 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); |
43 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); | 46 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); |
44 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); | 47 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); |
45 histogram_tester_.ExpectTotalCount(internal::kHistogramParseDuration, 1); | 48 histogram_tester_.ExpectTotalCount(internal::kHistogramParseDuration, 1); |
46 histogram_tester_.ExpectTotalCount( | 49 histogram_tester_.ExpectTotalCount( |
47 internal::kHistogramParseBlockedOnScriptLoad, 1); | 50 internal::kHistogramParseBlockedOnScriptLoad, 1); |
48 } | 51 } |
49 | 52 |
50 // Flaky in win: crbug.com/630076 | |
51 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, | 53 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
52 DISABLED_SamePageNavigation) { | 54 SamePageNavigation) { |
53 ASSERT_TRUE(embedded_test_server()->Start()); | 55 ASSERT_TRUE(embedded_test_server()->Start()); |
54 | 56 |
55 ui_test_utils::NavigateToURL(browser(), | 57 ui_test_utils::NavigateToURL(browser(), |
56 embedded_test_server()->GetURL("/title1.html")); | 58 embedded_test_server()->GetURL("/title1.html")); |
57 ui_test_utils::NavigateToURL( | 59 ui_test_utils::NavigateToURL( |
58 browser(), embedded_test_server()->GetURL("/title1.html#hash")); | 60 browser(), embedded_test_server()->GetURL("/title1.html#hash")); |
59 ui_test_utils::NavigateToURL(browser(), | 61 NavigateToUntrackedUrl(); |
60 embedded_test_server()->GetURL("/title2.html")); | |
61 | 62 |
62 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); | 63 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); |
63 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); | 64 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); |
64 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); | 65 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); |
65 } | 66 } |
66 | 67 |
67 // Flaky in win: crbug.com/630076 | |
68 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, | 68 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
69 DISABLED_SameUrlNavigation) { | 69 SameUrlNavigation) { |
70 ASSERT_TRUE(embedded_test_server()->Start()); | 70 ASSERT_TRUE(embedded_test_server()->Start()); |
71 | 71 |
72 ui_test_utils::NavigateToURL(browser(), | 72 ui_test_utils::NavigateToURL(browser(), |
73 embedded_test_server()->GetURL("/title1.html")); | 73 embedded_test_server()->GetURL("/title1.html")); |
74 ui_test_utils::NavigateToURL(browser(), | 74 ui_test_utils::NavigateToURL(browser(), |
75 embedded_test_server()->GetURL("/title1.html")); | 75 embedded_test_server()->GetURL("/title1.html")); |
76 ui_test_utils::NavigateToURL(browser(), | 76 NavigateToUntrackedUrl(); |
77 embedded_test_server()->GetURL("/title2.html")); | |
78 | 77 |
79 // We expect one histogram sample for each navigation to title1.html. | 78 // We expect one histogram sample for each navigation to title1.html. |
80 histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 2); | 79 histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 2); |
81 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 2); | 80 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 2); |
82 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 2); | 81 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 2); |
83 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 2); | 82 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 2); |
84 } | 83 } |
85 | 84 |
86 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, | 85 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
87 NonHtmlMainResource) { | 86 NonHtmlMainResource) { |
88 ASSERT_TRUE(embedded_test_server()->Start()); | 87 ASSERT_TRUE(embedded_test_server()->Start()); |
89 | 88 |
90 ui_test_utils::NavigateToURL(browser(), | 89 ui_test_utils::NavigateToURL(browser(), |
91 embedded_test_server()->GetURL("/simple.svg")); | 90 embedded_test_server()->GetURL("/simple.svg")); |
92 ui_test_utils::NavigateToURL(browser(), | 91 NavigateToUntrackedUrl(); |
93 embedded_test_server()->GetURL("/title1.html")); | |
94 | 92 |
95 histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 0); | 93 histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 0); |
96 } | 94 } |
97 | 95 |
98 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, | 96 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
99 NonHttpOrHttpsUrl) { | 97 NonHttpOrHttpsUrl) { |
100 ASSERT_TRUE(embedded_test_server()->Start()); | 98 ASSERT_TRUE(embedded_test_server()->Start()); |
101 | 99 |
102 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIVersionURL)); | 100 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIVersionURL)); |
103 ui_test_utils::NavigateToURL(browser(), | 101 NavigateToUntrackedUrl(); |
104 embedded_test_server()->GetURL("/title1.html")); | |
105 | 102 |
106 histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 0); | 103 histogram_tester_.ExpectTotalCount(internal::kHistogramCommit, 0); |
107 } | 104 } |
108 | 105 |
109 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, | 106 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
110 PreloadDocumentWrite) { | 107 PreloadDocumentWrite) { |
111 ASSERT_TRUE(embedded_test_server()->Start()); | 108 ASSERT_TRUE(embedded_test_server()->Start()); |
112 | 109 |
113 ui_test_utils::NavigateToURL( | 110 ui_test_utils::NavigateToURL( |
114 browser(), embedded_test_server()->GetURL( | 111 browser(), embedded_test_server()->GetURL( |
115 "/page_load_metrics/document_write_external_script.html")); | 112 "/page_load_metrics/document_write_external_script.html")); |
116 ui_test_utils::NavigateToURL(browser(), | 113 NavigateToUntrackedUrl(); |
117 embedded_test_server()->GetURL("/title2.html")); | |
118 | 114 |
119 histogram_tester_.ExpectTotalCount( | 115 histogram_tester_.ExpectTotalCount( |
120 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 1); | 116 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 1); |
121 } | 117 } |
122 | 118 |
123 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, | 119 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
124 NoPreloadDocumentWrite) { | 120 NoPreloadDocumentWrite) { |
125 ASSERT_TRUE(embedded_test_server()->Start()); | 121 ASSERT_TRUE(embedded_test_server()->Start()); |
126 | 122 |
127 ui_test_utils::NavigateToURL( | 123 ui_test_utils::NavigateToURL( |
128 browser(), embedded_test_server()->GetURL( | 124 browser(), embedded_test_server()->GetURL( |
129 "/page_load_metrics/document_write_no_script.html")); | 125 "/page_load_metrics/document_write_no_script.html")); |
130 ui_test_utils::NavigateToURL(browser(), | 126 NavigateToUntrackedUrl(); |
131 embedded_test_server()->GetURL("/title2.html")); | |
132 | 127 |
133 histogram_tester_.ExpectTotalCount( | 128 histogram_tester_.ExpectTotalCount( |
134 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 0); | 129 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 0); |
135 } | 130 } |
136 | 131 |
137 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, NoDocumentWrite) { | 132 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, NoDocumentWrite) { |
138 ASSERT_TRUE(embedded_test_server()->Start()); | 133 ASSERT_TRUE(embedded_test_server()->Start()); |
139 | 134 |
140 ui_test_utils::NavigateToURL(browser(), | 135 ui_test_utils::NavigateToURL(browser(), |
141 embedded_test_server()->GetURL("/title1.html")); | 136 embedded_test_server()->GetURL("/title1.html")); |
142 ui_test_utils::NavigateToURL(browser(), | 137 NavigateToUntrackedUrl(); |
143 embedded_test_server()->GetURL("/title2.html")); | |
144 histogram_tester_.ExpectTotalCount( | 138 histogram_tester_.ExpectTotalCount( |
145 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 0); | 139 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 0); |
146 histogram_tester_.ExpectTotalCount( | 140 histogram_tester_.ExpectTotalCount( |
147 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); | 141 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); |
148 } | 142 } |
149 | 143 |
150 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, | 144 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
151 DocumentWriteBlock) { | 145 DocumentWriteBlock) { |
152 ASSERT_TRUE(embedded_test_server()->Start()); | 146 ASSERT_TRUE(embedded_test_server()->Start()); |
153 | 147 |
154 ui_test_utils::NavigateToURL( | 148 ui_test_utils::NavigateToURL( |
155 browser(), embedded_test_server()->GetURL( | 149 browser(), embedded_test_server()->GetURL( |
156 "/page_load_metrics/document_write_script_block.html")); | 150 "/page_load_metrics/document_write_script_block.html")); |
157 | 151 NavigateToUntrackedUrl(); |
158 ui_test_utils::NavigateToURL(browser(), | |
159 embedded_test_server()->GetURL("/title2.html")); | |
160 | 152 |
161 histogram_tester_.ExpectTotalCount( | 153 histogram_tester_.ExpectTotalCount( |
162 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); | 154 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); |
163 } | 155 } |
164 | 156 |
165 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, | 157 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
166 DocumentWriteReload) { | 158 DocumentWriteReload) { |
167 ASSERT_TRUE(embedded_test_server()->Start()); | 159 ASSERT_TRUE(embedded_test_server()->Start()); |
168 | 160 |
169 ui_test_utils::NavigateToURL( | 161 ui_test_utils::NavigateToURL( |
170 browser(), embedded_test_server()->GetURL( | 162 browser(), embedded_test_server()->GetURL( |
171 "/page_load_metrics/document_write_script_block.html")); | 163 "/page_load_metrics/document_write_script_block.html")); |
172 | 164 |
173 // Reload should not log the histogram as the script is not blocked. | 165 // Reload should not log the histogram as the script is not blocked. |
174 ui_test_utils::NavigateToURL( | 166 ui_test_utils::NavigateToURL( |
175 browser(), embedded_test_server()->GetURL( | 167 browser(), embedded_test_server()->GetURL( |
176 "/page_load_metrics/document_write_script_block.html")); | 168 "/page_load_metrics/document_write_script_block.html")); |
177 | 169 |
178 ui_test_utils::NavigateToURL( | 170 ui_test_utils::NavigateToURL( |
179 browser(), embedded_test_server()->GetURL( | 171 browser(), embedded_test_server()->GetURL( |
180 "/page_load_metrics/document_write_script_block.html")); | 172 "/page_load_metrics/document_write_script_block.html")); |
181 | 173 |
182 histogram_tester_.ExpectTotalCount( | 174 histogram_tester_.ExpectTotalCount( |
183 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); | 175 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); |
184 | 176 |
185 ui_test_utils::NavigateToURL(browser(), | 177 NavigateToUntrackedUrl(); |
186 embedded_test_server()->GetURL("/title2.html")); | |
187 | 178 |
188 histogram_tester_.ExpectTotalCount( | 179 histogram_tester_.ExpectTotalCount( |
189 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); | 180 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); |
190 | 181 |
191 histogram_tester_.ExpectTotalCount( | 182 histogram_tester_.ExpectTotalCount( |
192 internal::kHistogramDocWriteBlockReloadCount, 2); | 183 internal::kHistogramDocWriteBlockReloadCount, 2); |
193 } | 184 } |
194 | 185 |
195 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, | 186 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
196 DocumentWriteAsync) { | 187 DocumentWriteAsync) { |
197 ASSERT_TRUE(embedded_test_server()->Start()); | 188 ASSERT_TRUE(embedded_test_server()->Start()); |
198 | 189 |
199 ui_test_utils::NavigateToURL( | 190 ui_test_utils::NavigateToURL( |
200 browser(), embedded_test_server()->GetURL( | 191 browser(), embedded_test_server()->GetURL( |
201 "/page_load_metrics/document_write_script_async.html")); | 192 "/page_load_metrics/document_write_script_async.html")); |
202 ui_test_utils::NavigateToURL(browser(), | 193 NavigateToUntrackedUrl(); |
203 embedded_test_server()->GetURL("/title2.html")); | |
204 | 194 |
205 histogram_tester_.ExpectTotalCount( | 195 histogram_tester_.ExpectTotalCount( |
206 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); | 196 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); |
207 } | 197 } |
208 | 198 |
209 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, | 199 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
210 DocumentWriteSameDomain) { | 200 DocumentWriteSameDomain) { |
211 ASSERT_TRUE(embedded_test_server()->Start()); | 201 ASSERT_TRUE(embedded_test_server()->Start()); |
212 | 202 |
213 ui_test_utils::NavigateToURL( | 203 ui_test_utils::NavigateToURL( |
214 browser(), embedded_test_server()->GetURL( | 204 browser(), embedded_test_server()->GetURL( |
215 "/page_load_metrics/document_write_external_script.html")); | 205 "/page_load_metrics/document_write_external_script.html")); |
216 ui_test_utils::NavigateToURL(browser(), | 206 NavigateToUntrackedUrl(); |
217 embedded_test_server()->GetURL("/title2.html")); | |
218 | 207 |
219 histogram_tester_.ExpectTotalCount( | 208 histogram_tester_.ExpectTotalCount( |
220 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); | 209 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); |
221 } | 210 } |
222 | 211 |
223 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, | 212 IN_PROC_BROWSER_TEST_F(MetricsWebContentsObserverBrowserTest, |
224 NoDocumentWriteScript) { | 213 NoDocumentWriteScript) { |
225 ASSERT_TRUE(embedded_test_server()->Start()); | 214 ASSERT_TRUE(embedded_test_server()->Start()); |
226 | 215 |
227 ui_test_utils::NavigateToURL( | 216 ui_test_utils::NavigateToURL( |
228 browser(), embedded_test_server()->GetURL( | 217 browser(), embedded_test_server()->GetURL( |
229 "/page_load_metrics/document_write_no_script.html")); | 218 "/page_load_metrics/document_write_no_script.html")); |
230 ui_test_utils::NavigateToURL(browser(), | 219 NavigateToUntrackedUrl(); |
231 embedded_test_server()->GetURL("/title2.html")); | |
232 | 220 |
233 histogram_tester_.ExpectTotalCount( | 221 histogram_tester_.ExpectTotalCount( |
234 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); | 222 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); |
235 } | 223 } |
OLD | NEW |