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

Side by Side Diff: chrome/browser/android/offline_pages/prerendering_loader_unittest.cc

Issue 2711693002: [Offline Pages] Make prerenderer notify us of network progress. (Closed)
Patch Set: Created 3 years, 10 months 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 "chrome/browser/android/offline_pages/prerendering_loader.h" 5 #include "chrome/browser/android/offline_pages/prerendering_loader.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "base/memory/ref_counted.h" 9 #include "base/memory/ref_counted.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 161
162 TEST_F(PrerenderingLoaderTest, LoadPageLoadSucceededFromDomContentLoaded) { 162 TEST_F(PrerenderingLoaderTest, LoadPageLoadSucceededFromDomContentLoaded) {
163 test_adapter()->Configure( 163 test_adapter()->Configure(
164 content::WebContentsTester::CreateTestWebContents(profile(), NULL), 164 content::WebContentsTester::CreateTestWebContents(profile(), NULL),
165 prerender::FINAL_STATUS_USED); 165 prerender::FINAL_STATUS_USED);
166 GURL gurl("http://testit.sea"); 166 GURL gurl("http://testit.sea");
167 EXPECT_TRUE(loader()->IsIdle()); 167 EXPECT_TRUE(loader()->IsIdle());
168 EXPECT_FALSE(loader()->IsLoaded()); 168 EXPECT_FALSE(loader()->IsLoaded());
169 EXPECT_TRUE(loader()->LoadPage( 169 EXPECT_TRUE(loader()->LoadPage(
170 gurl, 170 gurl,
171 base::Bind(&PrerenderingLoaderTest::OnLoadDone, base::Unretained(this)))); 171 base::Bind(&PrerenderingLoaderTest::OnLoadDone, base::Unretained(this)),
172 base::Bind([](int64_t bytes) {})));
Pete Williamson 2017/02/22 18:46:30 What does this line do? Is this a "do-nothing" la
Dmitry Titov 2017/02/23 04:27:54 Yep, lambda. https://cs.chromium.org/search/?q=Bi
pasko 2017/02/24 15:10:28 Interestingly, Bind allows capture-less lambda, bu
172 173
173 test_adapter()->GetObserver()->OnPrerenderDomContentLoaded(); 174 test_adapter()->GetObserver()->OnPrerenderDomContentLoaded();
174 // Skip SnapshotController's wait time and emulate StartSnapshot call. 175 // Skip SnapshotController's wait time and emulate StartSnapshot call.
175 loader()->StartSnapshot(); 176 loader()->StartSnapshot();
176 PumpLoop(); 177 PumpLoop();
177 EXPECT_FALSE(loader()->IsIdle()); 178 EXPECT_FALSE(loader()->IsIdle());
178 EXPECT_TRUE(loader()->IsLoaded()); 179 EXPECT_TRUE(loader()->IsLoaded());
179 EXPECT_TRUE(callback_called()); 180 EXPECT_TRUE(callback_called());
180 EXPECT_EQ(Offliner::RequestStatus::LOADED, callback_load_status()); 181 EXPECT_EQ(Offliner::RequestStatus::LOADED, callback_load_status());
181 182
182 loader()->StopLoading(); 183 loader()->StopLoading();
183 EXPECT_TRUE(loader()->IsIdle()); 184 EXPECT_TRUE(loader()->IsIdle());
184 EXPECT_FALSE(loader()->IsLoaded()); 185 EXPECT_FALSE(loader()->IsLoaded());
185 } 186 }
186 187
187 TEST_F(PrerenderingLoaderTest, LoadPageLoadSucceededFromPrerenderStopLoading) { 188 TEST_F(PrerenderingLoaderTest, LoadPageLoadSucceededFromPrerenderStopLoading) {
188 test_adapter()->Configure( 189 test_adapter()->Configure(
189 content::WebContentsTester::CreateTestWebContents(profile(), NULL), 190 content::WebContentsTester::CreateTestWebContents(profile(), NULL),
190 prerender::FINAL_STATUS_USED); 191 prerender::FINAL_STATUS_USED);
191 GURL gurl("http://testit.sea"); 192 GURL gurl("http://testit.sea");
192 EXPECT_TRUE(loader()->IsIdle()); 193 EXPECT_TRUE(loader()->IsIdle());
193 EXPECT_FALSE(loader()->IsLoaded()); 194 EXPECT_FALSE(loader()->IsLoaded());
194 EXPECT_TRUE(loader()->LoadPage( 195 EXPECT_TRUE(loader()->LoadPage(
195 gurl, 196 gurl,
196 base::Bind(&PrerenderingLoaderTest::OnLoadDone, base::Unretained(this)))); 197 base::Bind(&PrerenderingLoaderTest::OnLoadDone, base::Unretained(this)),
198 base::Bind([](int64_t bytes) {})));
197 199
198 PumpLoop(); 200 PumpLoop();
199 EXPECT_FALSE(loader()->IsIdle()); 201 EXPECT_FALSE(loader()->IsIdle());
200 EXPECT_FALSE(loader()->IsLoaded()); 202 EXPECT_FALSE(loader()->IsLoaded());
201 203
202 test_adapter()->GetObserver()->OnPrerenderStopLoading(); 204 test_adapter()->GetObserver()->OnPrerenderStopLoading();
203 // Skip SnapshotController's wait time and emulate StartSnapshot call. 205 // Skip SnapshotController's wait time and emulate StartSnapshot call.
204 loader()->StartSnapshot(); 206 loader()->StartSnapshot();
205 PumpLoop(); 207 PumpLoop();
206 EXPECT_FALSE(loader()->IsIdle()); 208 EXPECT_FALSE(loader()->IsIdle());
(...skipping 10 matching lines...) Expand all
217 EXPECT_FALSE(test_adapter()->IsActive()); 219 EXPECT_FALSE(test_adapter()->IsActive());
218 } 220 }
219 221
220 TEST_F(PrerenderingLoaderTest, LoadPageLoadFailedNoContent) { 222 TEST_F(PrerenderingLoaderTest, LoadPageLoadFailedNoContent) {
221 test_adapter()->Configure(nullptr /* web_contents */, 223 test_adapter()->Configure(nullptr /* web_contents */,
222 prerender::FINAL_STATUS_CACHE_OR_HISTORY_CLEARED); 224 prerender::FINAL_STATUS_CACHE_OR_HISTORY_CLEARED);
223 GURL gurl("http://testit.sea"); 225 GURL gurl("http://testit.sea");
224 EXPECT_TRUE(loader()->IsIdle()); 226 EXPECT_TRUE(loader()->IsIdle());
225 EXPECT_TRUE(loader()->LoadPage( 227 EXPECT_TRUE(loader()->LoadPage(
226 gurl, 228 gurl,
227 base::Bind(&PrerenderingLoaderTest::OnLoadDone, base::Unretained(this)))); 229 base::Bind(&PrerenderingLoaderTest::OnLoadDone, base::Unretained(this)),
230 base::Bind([](int64_t bytes) {})));
228 EXPECT_FALSE(loader()->IsIdle()); 231 EXPECT_FALSE(loader()->IsIdle());
229 EXPECT_FALSE(loader()->IsLoaded()); 232 EXPECT_FALSE(loader()->IsLoaded());
230 233
231 test_adapter()->GetObserver()->OnPrerenderDomContentLoaded(); 234 test_adapter()->GetObserver()->OnPrerenderDomContentLoaded();
232 PumpLoop(); 235 PumpLoop();
233 EXPECT_TRUE(loader()->IsIdle()); 236 EXPECT_TRUE(loader()->IsIdle());
234 EXPECT_TRUE(callback_called()); 237 EXPECT_TRUE(callback_called());
235 // We did not provide any WebContents for the callback so expect did not load. 238 // We did not provide any WebContents for the callback so expect did not load.
236 EXPECT_EQ(Offliner::RequestStatus::LOADING_FAILED, callback_load_status()); 239 EXPECT_EQ(Offliner::RequestStatus::LOADING_FAILED, callback_load_status());
237 240
238 // Stopped event causes no harm. 241 // Stopped event causes no harm.
239 test_adapter()->GetObserver()->OnPrerenderStop(); 242 test_adapter()->GetObserver()->OnPrerenderStop();
240 PumpLoop(); 243 PumpLoop();
241 } 244 }
242 245
243 TEST_F(PrerenderingLoaderTest, LoadPageLoadFailedNoRetry) { 246 TEST_F(PrerenderingLoaderTest, LoadPageLoadFailedNoRetry) {
244 test_adapter()->Configure(nullptr /* web_contents */, 247 test_adapter()->Configure(nullptr /* web_contents */,
245 prerender::FINAL_STATUS_SAFE_BROWSING); 248 prerender::FINAL_STATUS_SAFE_BROWSING);
246 GURL gurl("http://testit.sea"); 249 GURL gurl("http://testit.sea");
247 EXPECT_TRUE(loader()->IsIdle()); 250 EXPECT_TRUE(loader()->IsIdle());
248 EXPECT_TRUE(loader()->LoadPage( 251 EXPECT_TRUE(loader()->LoadPage(
249 gurl, 252 gurl,
250 base::Bind(&PrerenderingLoaderTest::OnLoadDone, base::Unretained(this)))); 253 base::Bind(&PrerenderingLoaderTest::OnLoadDone, base::Unretained(this)),
254 base::Bind([](int64_t bytes) {})));
251 EXPECT_FALSE(loader()->IsIdle()); 255 EXPECT_FALSE(loader()->IsIdle());
252 EXPECT_FALSE(loader()->IsLoaded()); 256 EXPECT_FALSE(loader()->IsLoaded());
253 257
254 test_adapter()->GetObserver()->OnPrerenderDomContentLoaded(); 258 test_adapter()->GetObserver()->OnPrerenderDomContentLoaded();
255 PumpLoop(); 259 PumpLoop();
256 EXPECT_TRUE(loader()->IsIdle()); 260 EXPECT_TRUE(loader()->IsIdle());
257 EXPECT_TRUE(callback_called()); 261 EXPECT_TRUE(callback_called());
258 // We did not provide any WebContents for the callback so expect did not load. 262 // We did not provide any WebContents for the callback so expect did not load.
259 // FinalStatus is non-retryable failure. 263 // FinalStatus is non-retryable failure.
260 EXPECT_EQ(Offliner::RequestStatus::LOADING_FAILED_NO_RETRY, 264 EXPECT_EQ(Offliner::RequestStatus::LOADING_FAILED_NO_RETRY,
261 callback_load_status()); 265 callback_load_status());
262 266
263 // Stopped event causes no harm. 267 // Stopped event causes no harm.
264 test_adapter()->GetObserver()->OnPrerenderStop(); 268 test_adapter()->GetObserver()->OnPrerenderStop();
265 PumpLoop(); 269 PumpLoop();
266 } 270 }
267 271
268 TEST_F(PrerenderingLoaderTest, LoadPageLoadFailedNoNext) { 272 TEST_F(PrerenderingLoaderTest, LoadPageLoadFailedNoNext) {
269 test_adapter()->Configure(nullptr /* web_contents */, 273 test_adapter()->Configure(nullptr /* web_contents */,
270 prerender::FINAL_STATUS_MEMORY_LIMIT_EXCEEDED); 274 prerender::FINAL_STATUS_MEMORY_LIMIT_EXCEEDED);
271 GURL gurl("http://testit.sea"); 275 GURL gurl("http://testit.sea");
272 EXPECT_TRUE(loader()->IsIdle()); 276 EXPECT_TRUE(loader()->IsIdle());
273 EXPECT_TRUE(loader()->LoadPage( 277 EXPECT_TRUE(loader()->LoadPage(
274 gurl, 278 gurl,
275 base::Bind(&PrerenderingLoaderTest::OnLoadDone, base::Unretained(this)))); 279 base::Bind(&PrerenderingLoaderTest::OnLoadDone, base::Unretained(this)),
280 base::Bind([](int64_t bytes) {})));
276 EXPECT_FALSE(loader()->IsIdle()); 281 EXPECT_FALSE(loader()->IsIdle());
277 EXPECT_FALSE(loader()->IsLoaded()); 282 EXPECT_FALSE(loader()->IsLoaded());
278 283
279 test_adapter()->GetObserver()->OnPrerenderDomContentLoaded(); 284 test_adapter()->GetObserver()->OnPrerenderDomContentLoaded();
280 PumpLoop(); 285 PumpLoop();
281 EXPECT_TRUE(loader()->IsIdle()); 286 EXPECT_TRUE(loader()->IsIdle());
282 EXPECT_TRUE(callback_called()); 287 EXPECT_TRUE(callback_called());
283 // We did not provide any WebContents for the callback so expect did not load. 288 // We did not provide any WebContents for the callback so expect did not load.
284 // FinalStatus is non-next failure. 289 // FinalStatus is non-next failure.
285 EXPECT_EQ(Offliner::RequestStatus::LOADING_FAILED_NO_NEXT, 290 EXPECT_EQ(Offliner::RequestStatus::LOADING_FAILED_NO_NEXT,
286 callback_load_status()); 291 callback_load_status());
287 292
288 // Stopped event causes no harm. 293 // Stopped event causes no harm.
289 test_adapter()->GetObserver()->OnPrerenderStop(); 294 test_adapter()->GetObserver()->OnPrerenderStop();
290 PumpLoop(); 295 PumpLoop();
291 } 296 }
292 297
293 TEST_F(PrerenderingLoaderTest, LoadPageLoadCanceled) { 298 TEST_F(PrerenderingLoaderTest, LoadPageLoadCanceled) {
294 test_adapter()->Configure(nullptr /* web_contents */, 299 test_adapter()->Configure(nullptr /* web_contents */,
295 prerender::FINAL_STATUS_CANCELLED); 300 prerender::FINAL_STATUS_CANCELLED);
296 GURL gurl("http://testit.sea"); 301 GURL gurl("http://testit.sea");
297 EXPECT_TRUE(loader()->IsIdle()); 302 EXPECT_TRUE(loader()->IsIdle());
298 EXPECT_TRUE(loader()->LoadPage( 303 EXPECT_TRUE(loader()->LoadPage(
299 gurl, 304 gurl,
300 base::Bind(&PrerenderingLoaderTest::OnLoadDone, base::Unretained(this)))); 305 base::Bind(&PrerenderingLoaderTest::OnLoadDone, base::Unretained(this)),
306 base::Bind([](int64_t bytes) {})));
301 EXPECT_FALSE(loader()->IsIdle()); 307 EXPECT_FALSE(loader()->IsIdle());
302 EXPECT_FALSE(loader()->IsLoaded()); 308 EXPECT_FALSE(loader()->IsLoaded());
303 309
304 test_adapter()->GetObserver()->OnPrerenderDomContentLoaded(); 310 test_adapter()->GetObserver()->OnPrerenderDomContentLoaded();
305 PumpLoop(); 311 PumpLoop();
306 EXPECT_TRUE(loader()->IsIdle()); 312 EXPECT_TRUE(loader()->IsIdle());
307 EXPECT_TRUE(callback_called()); 313 EXPECT_TRUE(callback_called());
308 EXPECT_EQ(Offliner::RequestStatus::LOADING_CANCELED, callback_load_status()); 314 EXPECT_EQ(Offliner::RequestStatus::LOADING_CANCELED, callback_load_status());
309 315
310 // Stopped event causes no harm. 316 // Stopped event causes no harm.
311 test_adapter()->GetObserver()->OnPrerenderStop(); 317 test_adapter()->GetObserver()->OnPrerenderStop();
312 PumpLoop(); 318 PumpLoop();
313 } 319 }
314 320
315 TEST_F(PrerenderingLoaderTest, LoadPageLoadFailedUnsupportedScheme) { 321 TEST_F(PrerenderingLoaderTest, LoadPageLoadFailedUnsupportedScheme) {
316 test_adapter()->Configure(nullptr /* web_contents */, 322 test_adapter()->Configure(nullptr /* web_contents */,
317 prerender::FINAL_STATUS_UNSUPPORTED_SCHEME); 323 prerender::FINAL_STATUS_UNSUPPORTED_SCHEME);
318 GURL gurl("http://testit.sea"); 324 GURL gurl("http://testit.sea");
319 EXPECT_TRUE(loader()->IsIdle()); 325 EXPECT_TRUE(loader()->IsIdle());
320 EXPECT_TRUE(loader()->LoadPage( 326 EXPECT_TRUE(loader()->LoadPage(
321 gurl, 327 gurl,
322 base::Bind(&PrerenderingLoaderTest::OnLoadDone, base::Unretained(this)))); 328 base::Bind(&PrerenderingLoaderTest::OnLoadDone, base::Unretained(this)),
329 base::Bind([](int64_t bytes) {})));
323 EXPECT_FALSE(loader()->IsIdle()); 330 EXPECT_FALSE(loader()->IsIdle());
324 EXPECT_FALSE(loader()->IsLoaded()); 331 EXPECT_FALSE(loader()->IsLoaded());
325 332
326 test_adapter()->GetObserver()->OnPrerenderDomContentLoaded(); 333 test_adapter()->GetObserver()->OnPrerenderDomContentLoaded();
327 PumpLoop(); 334 PumpLoop();
328 EXPECT_TRUE(loader()->IsIdle()); 335 EXPECT_TRUE(loader()->IsIdle());
329 EXPECT_TRUE(callback_called()); 336 EXPECT_TRUE(callback_called());
330 // Unsupported Scheme final status currently considered a cancel rather 337 // Unsupported Scheme final status currently considered a cancel rather
331 // than failure in case it is due to lost network connectivity. 338 // than failure in case it is due to lost network connectivity.
332 EXPECT_EQ(Offliner::RequestStatus::LOADING_CANCELED, callback_load_status()); 339 EXPECT_EQ(Offliner::RequestStatus::LOADING_CANCELED, callback_load_status());
333 340
334 // Stopped event causes no harm. 341 // Stopped event causes no harm.
335 test_adapter()->GetObserver()->OnPrerenderStop(); 342 test_adapter()->GetObserver()->OnPrerenderStop();
336 PumpLoop(); 343 PumpLoop();
337 } 344 }
338 345
339 TEST_F(PrerenderingLoaderTest, LoadPageLoadCanceledFromStopLoading) { 346 TEST_F(PrerenderingLoaderTest, LoadPageLoadCanceledFromStopLoading) {
340 GURL gurl("http://testit.sea"); 347 GURL gurl("http://testit.sea");
341 EXPECT_TRUE(loader()->IsIdle()); 348 EXPECT_TRUE(loader()->IsIdle());
342 EXPECT_TRUE(loader()->LoadPage( 349 EXPECT_TRUE(loader()->LoadPage(
343 gurl, 350 gurl,
344 base::Bind(&PrerenderingLoaderTest::OnLoadDone, base::Unretained(this)))); 351 base::Bind(&PrerenderingLoaderTest::OnLoadDone, base::Unretained(this)),
352 base::Bind([](int64_t bytes) {})));
345 EXPECT_FALSE(loader()->IsIdle()); 353 EXPECT_FALSE(loader()->IsIdle());
346 EXPECT_FALSE(loader()->IsLoaded()); 354 EXPECT_FALSE(loader()->IsLoaded());
347 355
348 loader()->StopLoading(); 356 loader()->StopLoading();
349 PumpLoop(); 357 PumpLoop();
350 EXPECT_TRUE(loader()->IsIdle()); 358 EXPECT_TRUE(loader()->IsIdle());
351 EXPECT_FALSE(callback_called()); 359 EXPECT_FALSE(callback_called());
352 } 360 }
353 361
354 TEST_F(PrerenderingLoaderTest, LoadPageNotAcceptedWhenNotIdle) { 362 TEST_F(PrerenderingLoaderTest, LoadPageNotAcceptedWhenNotIdle) {
355 GURL gurl("http://testit.sea"); 363 GURL gurl("http://testit.sea");
356 EXPECT_TRUE(loader()->IsIdle()); 364 EXPECT_TRUE(loader()->IsIdle());
357 EXPECT_TRUE(loader()->LoadPage( 365 EXPECT_TRUE(loader()->LoadPage(
358 gurl, 366 gurl,
359 base::Bind(&PrerenderingLoaderTest::OnLoadDone, base::Unretained(this)))); 367 base::Bind(&PrerenderingLoaderTest::OnLoadDone, base::Unretained(this)),
368 base::Bind([](int64_t bytes) {})));
360 EXPECT_FALSE(loader()->IsIdle()); 369 EXPECT_FALSE(loader()->IsIdle());
361 EXPECT_FALSE(loader()->IsLoaded()); 370 EXPECT_FALSE(loader()->IsLoaded());
362 371
363 // Now try another load while first is still active. 372 // Now try another load while first is still active.
364 EXPECT_FALSE(loader()->LoadPage( 373 EXPECT_FALSE(loader()->LoadPage(
365 gurl, 374 gurl,
366 base::Bind(&PrerenderingLoaderTest::OnLoadDone, base::Unretained(this)))); 375 base::Bind(&PrerenderingLoaderTest::OnLoadDone, base::Unretained(this)),
376 base::Bind([](int64_t bytes) {})));
367 EXPECT_FALSE(loader()->IsIdle()); 377 EXPECT_FALSE(loader()->IsIdle());
368 } 378 }
369 379
370 TEST_F(PrerenderingLoaderTest, LoadPageNotAcceptedWhenStartPrerenderFalse) { 380 TEST_F(PrerenderingLoaderTest, LoadPageNotAcceptedWhenStartPrerenderFalse) {
371 test_adapter()->FailStart(); 381 test_adapter()->FailStart();
372 GURL gurl("http://testit.sea"); 382 GURL gurl("http://testit.sea");
373 EXPECT_TRUE(loader()->IsIdle()); 383 EXPECT_TRUE(loader()->IsIdle());
374 EXPECT_FALSE(loader()->LoadPage( 384 EXPECT_FALSE(loader()->LoadPage(
375 gurl, 385 gurl,
376 base::Bind(&PrerenderingLoaderTest::OnLoadDone, base::Unretained(this)))); 386 base::Bind(&PrerenderingLoaderTest::OnLoadDone, base::Unretained(this)),
387 base::Bind([](int64_t bytes) {})));
377 EXPECT_TRUE(loader()->IsIdle()); 388 EXPECT_TRUE(loader()->IsIdle());
378 } 389 }
379 390
380 } // namespace offline_pages 391 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698