Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(385)

Side by Side Diff: third_party/WebKit/Source/web/tests/DeferredLoadingTest.cpp

Issue 2516473002: Cross-origin iframes: collect data under hypothetical loading strategies (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "platform/testing/HistogramTester.h" 5 #include "platform/testing/HistogramTester.h"
6 #include "platform/testing/UnitTestHelpers.h" 6 #include "platform/testing/UnitTestHelpers.h"
7 #include "web/WebViewImpl.h" 7 #include "web/WebViewImpl.h"
8 #include "web/tests/sim/SimCompositor.h" 8 #include "web/tests/sim/SimCompositor.h"
9 #include "web/tests/sim/SimDisplayItemList.h" 9 #include "web/tests/sim/SimDisplayItemList.h"
10 #include "web/tests/sim/SimRequest.h" 10 #include "web/tests/sim/SimRequest.h"
11 #include "web/tests/sim/SimTest.h" 11 #include "web/tests/sim/SimTest.h"
12 12
13 namespace blink { 13 namespace blink {
14 14
15 static const char* kHistogramName = 15 static const char* kHistogramName =
16 "Navigation.DeferredDocumentLoading.StatesV3"; 16 "Navigation.DeferredDocumentLoading.StatesV4";
17 17
18 class DeferredLoadingTest : public SimTest { 18 class DeferredLoadingTest : public SimTest {
19 protected: 19 protected:
20 DeferredLoadingTest() { webView().resize(WebSize(640, 480)); } 20 DeferredLoadingTest() { webView().resize(WebSize(640, 480)); }
21 void compositeFrame() { 21 void compositeFrame() {
22 compositor().beginFrame(); 22 while (compositor().needsBeginFrame()) {
23 testing::runPendingTasks(); 23 compositor().beginFrame();
24 if (compositor().needsBeginFrame()) 24 testing::runPendingTasks();
25 compositor().beginFrame(); // VisibleNestedInRight doesn't need this. 25 }
26 ASSERT_FALSE(compositor().needsBeginFrame());
27 } 26 }
28 27
29 std::unique_ptr<SimRequest> createMainResource() { 28 std::unique_ptr<SimRequest> createMainResource() {
30 std::unique_ptr<SimRequest> mainResource = 29 std::unique_ptr<SimRequest> mainResource =
31 wrapUnique(new SimRequest("https://example.com/", "text/html")); 30 wrapUnique(new SimRequest("https://example.com/", "text/html"));
32 loadURL("https://example.com/"); 31 loadURL("https://example.com/");
33 return mainResource; 32 return mainResource;
34 } 33 }
35 }; 34 };
36 35
37 TEST_F(DeferredLoadingTest, Visible) { 36 TEST_F(DeferredLoadingTest, Visible) {
38 HistogramTester histogramTester; 37 HistogramTester histogramTester;
39 std::unique_ptr<SimRequest> mainResource = createMainResource(); 38 std::unique_ptr<SimRequest> mainResource = createMainResource();
40 39
41 mainResource->complete("<iframe sandbox></iframe>"); 40 mainResource->complete("<iframe sandbox></iframe>");
42 41
43 compositeFrame(); 42 compositeFrame();
44 43
45 histogramTester.expectBucketCount(kHistogramName, Created, 1); 44 histogramTester.expectBucketCount(kHistogramName, Created, 1);
46 histogramTester.expectBucketCount(kHistogramName, WouldLoadVisible, 1); 45 histogramTester.expectBucketCount(kHistogramName, WouldLoadVisible, 1);
46 histogramTester.expectBucketCount(kHistogramName, WouldLoad1ScreenAway, 1);
47 histogramTester.expectBucketCount(kHistogramName, WouldLoad2ScreensAway, 1);
48 histogramTester.expectBucketCount(kHistogramName, WouldLoad3ScreensAway, 1);
49 histogramTester.expectTotalCount(kHistogramName, 5);
47 } 50 }
48 51
49 TEST_F(DeferredLoadingTest, Right) { 52 TEST_F(DeferredLoadingTest, Right) {
50 HistogramTester histogramTester; 53 HistogramTester histogramTester;
51 std::unique_ptr<SimRequest> mainResource = createMainResource(); 54 std::unique_ptr<SimRequest> mainResource = createMainResource();
52 55
53 mainResource->complete( 56 mainResource->complete(
54 "<iframe style='position:absolute; left:105vw;' sandbox></iframe>"); 57 "<iframe style='position:absolute; left:105vw;' sandbox></iframe>");
55 58
56 compositeFrame(); 59 compositeFrame();
57 60
58 histogramTester.expectBucketCount(kHistogramName, Created, 1); 61 histogramTester.expectBucketCount(kHistogramName, Created, 1);
59 histogramTester.expectTotalCount(kHistogramName, 1); 62 histogramTester.expectBucketCount(kHistogramName, WouldLoad1ScreenAway, 1);
63 histogramTester.expectBucketCount(kHistogramName, WouldLoad2ScreensAway, 1);
64 histogramTester.expectBucketCount(kHistogramName, WouldLoad3ScreensAway, 1);
65 histogramTester.expectTotalCount(kHistogramName, 4);
60 } 66 }
61 67
62 TEST_F(DeferredLoadingTest, Below) { 68 TEST_F(DeferredLoadingTest, TwoScreensBelow) {
63 HistogramTester histogramTester; 69 HistogramTester histogramTester;
64 std::unique_ptr<SimRequest> mainResource = createMainResource(); 70 std::unique_ptr<SimRequest> mainResource = createMainResource();
65 71
66 mainResource->complete( 72 mainResource->complete(
67 "<iframe style='position:absolute; top:105vh;' sandbox></iframe>"); 73 "<iframe style='position:absolute; top:205vh;' sandbox></iframe>");
68 74
69 compositeFrame(); 75 compositeFrame();
70 76
71 histogramTester.expectBucketCount(kHistogramName, Created, 1); 77 histogramTester.expectBucketCount(kHistogramName, Created, 1);
72 histogramTester.expectTotalCount(kHistogramName, 1); 78 histogramTester.expectBucketCount(kHistogramName, WouldLoad2ScreensAway, 1);
79 histogramTester.expectBucketCount(kHistogramName, WouldLoad3ScreensAway, 1);
80 histogramTester.expectTotalCount(kHistogramName, 3);
73 } 81 }
74 82
75 TEST_F(DeferredLoadingTest, Above) { 83 TEST_F(DeferredLoadingTest, Above) {
76 HistogramTester histogramTester; 84 HistogramTester histogramTester;
77 std::unique_ptr<SimRequest> mainResource = createMainResource(); 85 std::unique_ptr<SimRequest> mainResource = createMainResource();
78 86
79 mainResource->complete( 87 mainResource->complete(
80 "<iframe style='position:absolute; top:-10000px;' sandbox></iframe>"); 88 "<iframe style='position:absolute; top:-10000px;' sandbox></iframe>");
81 89
82 compositeFrame(); 90 compositeFrame();
83 91
84 histogramTester.expectBucketCount(kHistogramName, Created, 1); 92 histogramTester.expectBucketCount(kHistogramName, Created, 1);
85 histogramTester.expectBucketCount(kHistogramName, WouldLoadAbove, 1); 93 histogramTester.expectBucketCount(kHistogramName, WouldLoadVisible, 1);
94 histogramTester.expectBucketCount(kHistogramName, WouldLoad1ScreenAway, 1);
95 histogramTester.expectBucketCount(kHistogramName, WouldLoad2ScreensAway, 1);
96 histogramTester.expectBucketCount(kHistogramName, WouldLoad3ScreensAway, 1);
97 histogramTester.expectTotalCount(kHistogramName, 5);
86 } 98 }
87 99
88 TEST_F(DeferredLoadingTest, Left) { 100 TEST_F(DeferredLoadingTest, Left) {
89 HistogramTester histogramTester; 101 HistogramTester histogramTester;
90 std::unique_ptr<SimRequest> mainResource = createMainResource(); 102 std::unique_ptr<SimRequest> mainResource = createMainResource();
91 103
92 mainResource->complete( 104 mainResource->complete(
93 "<iframe style='position:absolute; left:-10000px;' sandbox></iframe>"); 105 "<iframe style='position:absolute; left:-10000px;' sandbox></iframe>");
94 106
95 compositeFrame(); 107 compositeFrame();
96 108
97 histogramTester.expectBucketCount(kHistogramName, Created, 1); 109 histogramTester.expectBucketCount(kHistogramName, Created, 1);
98 histogramTester.expectBucketCount(kHistogramName, WouldLoadLeft, 1); 110 histogramTester.expectBucketCount(kHistogramName, WouldLoadVisible, 1);
111 histogramTester.expectBucketCount(kHistogramName, WouldLoad1ScreenAway, 1);
112 histogramTester.expectBucketCount(kHistogramName, WouldLoad2ScreensAway, 1);
113 histogramTester.expectBucketCount(kHistogramName, WouldLoad3ScreensAway, 1);
114 histogramTester.expectTotalCount(kHistogramName, 5);
99 } 115 }
100 116
101 TEST_F(DeferredLoadingTest, AboveAndLeft) { 117 TEST_F(DeferredLoadingTest, AboveAndLeft) {
102 HistogramTester histogramTester; 118 HistogramTester histogramTester;
103 std::unique_ptr<SimRequest> mainResource = createMainResource(); 119 std::unique_ptr<SimRequest> mainResource = createMainResource();
104 120
105 mainResource->complete( 121 mainResource->complete(
106 "<iframe style='position:absolute; left:-10000px; top:-10000px' sandbox>" 122 "<iframe style='position:absolute; left:-10000px; top:-10000px' sandbox>"
107 "</iframe>"); 123 "</iframe>");
108 124
109 compositeFrame(); 125 compositeFrame();
110 126
111 histogramTester.expectBucketCount(kHistogramName, Created, 1); 127 histogramTester.expectBucketCount(kHistogramName, Created, 1);
112 histogramTester.expectBucketCount(kHistogramName, WouldLoadAboveAndLeft, 1); 128 histogramTester.expectBucketCount(kHistogramName, WouldLoadVisible, 1);
113 histogramTester.expectTotalCount(kHistogramName, 2); 129 histogramTester.expectTotalCount(kHistogramName, 5);
114 } 130 }
115 131
116 TEST_F(DeferredLoadingTest, ZeroByZero) { 132 TEST_F(DeferredLoadingTest, ZeroByZero) {
117 HistogramTester histogramTester; 133 HistogramTester histogramTester;
118 std::unique_ptr<SimRequest> mainResource = createMainResource(); 134 std::unique_ptr<SimRequest> mainResource = createMainResource();
119 135
120 mainResource->complete( 136 mainResource->complete(
121 "<iframe style='height:0px;width:0px;' sandbox></iframe>"); 137 "<iframe style='height:0px;width:0px;' sandbox></iframe>");
122 138
123 compositeFrame(); 139 compositeFrame();
124 140
125 histogramTester.expectBucketCount(kHistogramName, Created, 1); 141 histogramTester.expectBucketCount(kHistogramName, Created, 1);
126 histogramTester.expectBucketCount(kHistogramName, WouldLoadZeroByZero, 1); 142 histogramTester.expectBucketCount(kHistogramName, WouldLoadVisible, 1);
127 } 143 }
128 144
129 TEST_F(DeferredLoadingTest, DisplayNone) { 145 TEST_F(DeferredLoadingTest, DisplayNone) {
130 HistogramTester histogramTester; 146 HistogramTester histogramTester;
131 std::unique_ptr<SimRequest> mainResource = createMainResource(); 147 std::unique_ptr<SimRequest> mainResource = createMainResource();
132 148
133 mainResource->complete("<iframe style='display:none' sandbox></iframe>"); 149 mainResource->complete("<iframe style='display:none' sandbox></iframe>");
134 150
135 compositeFrame(); 151 compositeFrame();
136 152
137 histogramTester.expectBucketCount(kHistogramName, Created, 1); 153 histogramTester.expectBucketCount(kHistogramName, Created, 1);
138 histogramTester.expectBucketCount(kHistogramName, WouldLoadDisplayNone, 1); 154 histogramTester.expectBucketCount(kHistogramName, WouldLoadNoParent, 1);
155 histogramTester.expectTotalCount(kHistogramName, 6);
139 } 156 }
140 157
141 TEST_F(DeferredLoadingTest, VisibleNestedInRight) { 158 TEST_F(DeferredLoadingTest, DisplayNoneIn2ScreensAway) {
142 HistogramTester histogramTester; 159 HistogramTester histogramTester;
143 std::unique_ptr<SimRequest> mainResource = createMainResource(); 160 std::unique_ptr<SimRequest> mainResource = createMainResource();
144 SimRequest frameResource("https://example.com/iframe.html", "text/html"); 161 SimRequest frameResource("https://example.com/iframe.html", "text/html");
145 162
146 mainResource->complete( 163 mainResource->complete(
147 "<iframe style='position:absolute; left:105vw;' src='iframe.html' " 164 "<iframe style='position:absolute; left:105vw; top:105vh' "
148 "sandbox></iframe>"); 165 "src='iframe.html' sandbox></iframe>");
149 frameResource.complete("<iframe sandbox></iframe>"); 166 frameResource.complete("<iframe style='display:none' sandbox></iframe>");
150 167
151 compositeFrame(); 168 compositeFrame();
152 169
153 histogramTester.expectBucketCount(kHistogramName, Created, 2); 170 histogramTester.expectBucketCount(kHistogramName, Created, 2);
154 histogramTester.expectTotalCount(kHistogramName, 2); 171 histogramTester.expectBucketCount(kHistogramName, WouldLoadNoParent, 1);
172 histogramTester.expectBucketCount(kHistogramName, WouldLoadVisible, 1);
173 histogramTester.expectBucketCount(kHistogramName, WouldLoad1ScreenAway, 1);
174 histogramTester.expectBucketCount(kHistogramName, WouldLoad2ScreensAway, 2);
175 histogramTester.expectBucketCount(kHistogramName, WouldLoad3ScreensAway, 2);
176 histogramTester.expectTotalCount(kHistogramName, 9);
155 } 177 }
156 178
157 TEST_F(DeferredLoadingTest, LeftNestedInBelow) { 179 TEST_F(DeferredLoadingTest, LeftNestedInBelow) {
158 HistogramTester histogramTester; 180 HistogramTester histogramTester;
159 std::unique_ptr<SimRequest> mainResource = createMainResource(); 181 std::unique_ptr<SimRequest> mainResource = createMainResource();
160 SimRequest frameResource("https://example.com/iframe.html", "text/html"); 182 SimRequest frameResource("https://example.com/iframe.html", "text/html");
161 183
162 mainResource->complete( 184 mainResource->complete(
163 "<iframe style='position:absolute; top:105vh;' src='iframe.html' " 185 "<iframe style='position:absolute; top:105vh;' src='iframe.html' "
164 "sandbox></iframe>"); 186 "sandbox></iframe>");
165 frameResource.complete( 187 frameResource.complete(
166 "<iframe style='position:absolute; left:-10000px;' sandbox></iframe>"); 188 "<iframe style='position:absolute; left:-10000px;' sandbox></iframe>");
167 189
168 compositeFrame(); 190 compositeFrame();
169 191
170 histogramTester.expectBucketCount(kHistogramName, Created, 2); 192 histogramTester.expectBucketCount(kHistogramName, Created, 2);
171 histogramTester.expectTotalCount(kHistogramName, 2); 193 histogramTester.expectBucketCount(kHistogramName, WouldLoad1ScreenAway, 2);
194 histogramTester.expectBucketCount(kHistogramName, WouldLoad2ScreensAway, 2);
195 histogramTester.expectBucketCount(kHistogramName, WouldLoad3ScreensAway, 2);
196 histogramTester.expectTotalCount(kHistogramName, 8);
197 }
198
199 TEST_F(DeferredLoadingTest, OneScreenBelowThenVisible) {
200 HistogramTester histogramTester;
201 std::unique_ptr<SimRequest> mainResource = createMainResource();
202
203 mainResource->start();
204 mainResource->write(
205 "<iframe id='theFrame' style='position:absolute; top:105vh;' "
206 "sandbox></iframe>");
207
208 compositeFrame();
209
210 histogramTester.expectBucketCount(kHistogramName, Created, 1);
211 histogramTester.expectTotalCount(kHistogramName, 4);
212
213 mainResource->write("<script>theFrame.style.top='10px'</script>");
214 mainResource->finish();
215
216 compositeFrame();
217
218 histogramTester.expectBucketCount(kHistogramName, WouldLoadVisible, 1);
219 histogramTester.expectTotalCount(kHistogramName, 5);
220 }
221
222 TEST_F(DeferredLoadingTest, DisplayNoneThenTwoScreensAway) {
223 HistogramTester histogramTester;
224 std::unique_ptr<SimRequest> mainResource = createMainResource();
225
226 mainResource->start();
227 mainResource->write(
228 "<iframe id='theFrame' style='display:none' sandbox></iframe>");
229
230 compositeFrame();
231
232 histogramTester.expectBucketCount(kHistogramName, Created, 1);
233 histogramTester.expectTotalCount(kHistogramName, 6);
234
235 mainResource->write(
236 "<script>theFrame.style.top='200vh';"
237 "theFrame.style.position='absolute';"
238 "theFrame.style.display='block';</script>");
239 mainResource->finish();
240
241 compositeFrame();
242
243 histogramTester.expectBucketCount(kHistogramName, WouldLoadNoParent, 1);
ojan 2016/11/22 00:41:59 This test doesn't seem to be testing the two scree
dgrogan 2016/11/29 00:57:32 It's testing that the 3screen and 2screen buckets
244 histogramTester.expectTotalCount(kHistogramName, 6);
245 }
246
247 TEST_F(DeferredLoadingTest, DisplayNoneAsync) {
248 HistogramTester histogramTester;
249 std::unique_ptr<SimRequest> mainResource = createMainResource();
250
251 mainResource->start();
252 mainResource->write("some stuff");
253
254 compositeFrame();
255
256 mainResource->write(
257 "<script>frame = document.createElement('iframe');"
258 "frame.setAttribute('sandbox', true);"
259 "frame.style.display = 'none';"
260 "document.body.appendChild(frame);"
261 "</script>");
262 mainResource->finish();
263
264 compositeFrame();
265
266 histogramTester.expectBucketCount(kHistogramName, Created, 1);
267 histogramTester.expectBucketCount(kHistogramName, WouldLoadNoParent, 1);
268 histogramTester.expectTotalCount(kHistogramName, 6);
269 }
270
271 // Documents some weird counting with display:none frames: If a frame changes to
272 // display:none we don't count it as such until another frame is created. This
273 // is hopefully rare in practice though.
274 TEST_F(DeferredLoadingTest, TwoScreensAwayThenDisplayNoneThenNew) {
275 HistogramTester histogramTester;
276 std::unique_ptr<SimRequest> mainResource = createMainResource();
277
278 mainResource->start();
279 mainResource->write(
280 "<iframe id='theFrame' style='position:absolute; top:205vh' sandbox>"
281 "</iframe>");
282
283 compositeFrame();
284
285 histogramTester.expectBucketCount(kHistogramName, Created, 1);
286 histogramTester.expectBucketCount(kHistogramName, WouldLoad2ScreensAway, 1);
287 histogramTester.expectBucketCount(kHistogramName, WouldLoad3ScreensAway, 1);
288 histogramTester.expectTotalCount(kHistogramName, 3);
289
290 mainResource->write("<script>theFrame.style.display='none'</script>");
291
292 compositeFrame();
293
294 histogramTester.expectTotalCount(kHistogramName, 3);
295
296 mainResource->write(
297 "<script>document.body.appendChild(document.createElement"
298 "('iframe'));</script>");
299 mainResource->finish();
300
301 compositeFrame();
302
303 histogramTester.expectBucketCount(kHistogramName, Created, 1);
304 histogramTester.expectBucketCount(kHistogramName, WouldLoadNoParent, 1);
305 histogramTester.expectBucketCount(kHistogramName, WouldLoadVisible, 1);
306 histogramTester.expectBucketCount(kHistogramName, WouldLoad1ScreenAway, 1);
307 histogramTester.expectBucketCount(kHistogramName, WouldLoad2ScreensAway, 1);
308 histogramTester.expectBucketCount(kHistogramName, WouldLoad3ScreensAway, 1);
309 histogramTester.expectTotalCount(kHistogramName, 6);
172 } 310 }
173 311
174 TEST_F(DeferredLoadingTest, SameOriginNotCounted) { 312 TEST_F(DeferredLoadingTest, SameOriginNotCounted) {
175 HistogramTester histogramTester; 313 HistogramTester histogramTester;
176 std::unique_ptr<SimRequest> mainResource = createMainResource(); 314 std::unique_ptr<SimRequest> mainResource = createMainResource();
177 SimRequest frameResource("https://example.com/iframe.html", "text/html"); 315 SimRequest frameResource("https://example.com/iframe.html", "text/html");
178 316
179 mainResource->complete("<iframe src='iframe.html'></iframe>"); 317 mainResource->complete("<iframe src='iframe.html'></iframe>");
180 frameResource.complete("<iframe></iframe>"); 318 frameResource.complete("<iframe></iframe>");
181 compositeFrame(); 319 compositeFrame();
182 320
183 histogramTester.expectTotalCount(kHistogramName, 0); 321 histogramTester.expectTotalCount(kHistogramName, 0);
184 } 322 }
185 323
324 TEST_F(DeferredLoadingTest, AboveNestedInThreeScreensBelow) {
325 HistogramTester histogramTester;
326 std::unique_ptr<SimRequest> mainResource = createMainResource();
327 SimRequest frameResource("https://example.com/iframe.html", "text/html");
328
329 mainResource->complete(
330 "<iframe style='position:absolute; top:300vh' src='iframe.html' "
331 "sandbox></iframe>");
332 frameResource.complete(
333 "<iframe style='position:absolute; top:-10000px;' sandbox></iframe>");
334
335 compositeFrame();
336
337 histogramTester.expectBucketCount(kHistogramName, Created, 2);
338 histogramTester.expectBucketCount(kHistogramName, WouldLoad3ScreensAway, 2);
339 histogramTester.expectTotalCount(kHistogramName, 4);
340 }
341
342 TEST_F(DeferredLoadingTest, VisibleNestedInTwoScreensBelow) {
343 HistogramTester histogramTester;
344 std::unique_ptr<SimRequest> mainResource = createMainResource();
345 SimRequest frameResource("https://example.com/iframe.html", "text/html");
346
347 mainResource->complete(
348 "<iframe style='position:absolute; top:205vh' src='iframe.html' "
349 "sandbox></iframe>");
350 frameResource.complete("<iframe sandbox></iframe>");
351
352 compositeFrame();
353
354 histogramTester.expectBucketCount(kHistogramName, Created, 2);
355 histogramTester.expectBucketCount(kHistogramName, WouldLoad2ScreensAway, 2);
356 histogramTester.expectBucketCount(kHistogramName, WouldLoad3ScreensAway, 2);
357 histogramTester.expectTotalCount(kHistogramName, 6);
358 }
359
360 TEST_F(DeferredLoadingTest, ThreeScreensBelowNestedInTwoScreensBelow) {
361 HistogramTester histogramTester;
362 std::unique_ptr<SimRequest> mainResource = createMainResource();
363 SimRequest frameResource("https://example.com/iframe.html", "text/html");
364
365 mainResource->complete(
366 "<iframe style='position:absolute; top:205vh' src='iframe.html' "
367 "sandbox></iframe>");
368 frameResource.complete(
369 "<iframe style='position:absolute; top:305vh' sandbox></iframe>");
370
371 compositeFrame();
372
373 histogramTester.expectBucketCount(kHistogramName, Created, 2);
374 histogramTester.expectBucketCount(kHistogramName, WouldLoad2ScreensAway, 1);
375 histogramTester.expectBucketCount(kHistogramName, WouldLoad3ScreensAway, 2);
376 histogramTester.expectTotalCount(kHistogramName, 5);
377 }
378
379 TEST_F(DeferredLoadingTest, TriplyNested) {
380 HistogramTester histogramTester;
381 std::unique_ptr<SimRequest> mainResource = createMainResource();
382 SimRequest frameResource("https://example.com/iframe.html", "text/html");
383 SimRequest frameResource2("https://example.com/iframe2.html", "text/html");
384
385 mainResource->complete(
386 "<iframe style='position:absolute; top:300vh' src='iframe.html' "
387 "sandbox></iframe>");
388 frameResource.complete(
389 "<iframe style='position:absolute; top:200vh' src='iframe2.html' "
390 "sandbox></iframe>");
391 frameResource2.complete(
392 "<iframe style='position:absolute; top:100vh' sandbox></iframe>");
393
394 compositeFrame();
395
396 histogramTester.expectBucketCount(kHistogramName, Created, 3);
397 histogramTester.expectBucketCount(kHistogramName, WouldLoad3ScreensAway, 3);
398 histogramTester.expectTotalCount(kHistogramName, 6);
399 }
400
401 TEST_F(DeferredLoadingTest, QuadruplyNested) {
402 HistogramTester histogramTester;
403 std::unique_ptr<SimRequest> mainResource = createMainResource();
404 SimRequest frameResource("https://example.com/iframe.html", "text/html");
405 SimRequest frameResource2("https://example.com/iframe2.html", "text/html");
406 SimRequest frameResource3("https://example.com/iframe3.html", "text/html");
407
408 mainResource->complete(
409 "<iframe style='position:absolute; top:300vh' src='iframe.html' "
410 "sandbox></iframe>");
411 frameResource.complete(
412 "<iframe style='position:absolute; top:200vh' src='iframe2.html' "
413 "sandbox></iframe>");
414 frameResource2.complete(
415 "<iframe style='position:absolute; top:100vh' src='iframe3.html' "
416 "sandbox></iframe>");
417 frameResource3.complete(
418 "<iframe style='position:absolute; top:100vh' sandbox></iframe>");
419 compositeFrame();
420
421 histogramTester.expectBucketCount(kHistogramName, Created, 4);
422 histogramTester.expectBucketCount(kHistogramName, WouldLoad3ScreensAway, 4);
423 histogramTester.expectTotalCount(kHistogramName, 8);
424 }
425
426 TEST_F(DeferredLoadingTest, VisibleCrossOriginNestedInBelowFoldSameOrigin) {
427 HistogramTester histogramTester;
428 std::unique_ptr<SimRequest> mainResource = createMainResource();
429 SimRequest frameResource("https://example.com/iframe.html", "text/html");
430
431 mainResource->complete(
432 "<iframe style='position:absolute; top:105vh' src='iframe.html'>"
433 "</iframe>");
434 frameResource.complete("<iframe sandbox></iframe>");
435
436 compositeFrame();
437
438 histogramTester.expectBucketCount(kHistogramName, Created, 1);
439 histogramTester.expectBucketCount(kHistogramName, WouldLoadVisible, 1);
440 histogramTester.expectBucketCount(kHistogramName, WouldLoad1ScreenAway, 1);
441 histogramTester.expectBucketCount(kHistogramName, WouldLoad2ScreensAway, 1);
442 histogramTester.expectBucketCount(kHistogramName, WouldLoad3ScreensAway, 1);
443 histogramTester.expectTotalCount(kHistogramName, 5);
444 }
445
186 } // namespace blink 446 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698