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

Side by Side Diff: chrome/browser/installable/installable_manager_browsertest.cc

Issue 2759753002: Fetch manifest icon prior to checking eligibility in InstallableManager (Closed)
Patch Set: Fetch manifest icon prior to checking eligibility in InstallableManager Created 3 years, 8 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
« no previous file with comments | « chrome/browser/installable/installable_manager.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/installable/installable_manager.h" 5 #include "chrome/browser/installable/installable_manager.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "base/threading/thread_task_runner_handle.h" 9 #include "base/threading/thread_task_runner_handle.h"
10 #include "chrome/browser/ui/browser.h" 10 #include "chrome/browser/ui/browser.h"
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 227
228 NavigateAndRunInstallableManager(tester.get(), GetManifestParams(), 228 NavigateAndRunInstallableManager(tester.get(), GetManifestParams(),
229 "/banners/no_manifest_test_page.html"); 229 "/banners/no_manifest_test_page.html");
230 run_loop.Run(); 230 run_loop.Run();
231 231
232 // If there is no manifest, everything should be empty. 232 // If there is no manifest, everything should be empty.
233 EXPECT_TRUE(tester->manifest().IsEmpty()); 233 EXPECT_TRUE(tester->manifest().IsEmpty());
234 EXPECT_TRUE(tester->manifest_url().is_empty()); 234 EXPECT_TRUE(tester->manifest_url().is_empty());
235 EXPECT_TRUE(tester->primary_icon_url().is_empty()); 235 EXPECT_TRUE(tester->primary_icon_url().is_empty());
236 EXPECT_EQ(nullptr, tester->primary_icon()); 236 EXPECT_EQ(nullptr, tester->primary_icon());
237 EXPECT_FALSE(tester->is_installable());
237 EXPECT_TRUE(tester->badge_icon_url().is_empty()); 238 EXPECT_TRUE(tester->badge_icon_url().is_empty());
238 EXPECT_EQ(nullptr, tester->badge_icon()); 239 EXPECT_EQ(nullptr, tester->badge_icon());
239 EXPECT_FALSE(tester->is_installable());
240 EXPECT_EQ(NO_MANIFEST, tester->error_code()); 240 EXPECT_EQ(NO_MANIFEST, tester->error_code());
241 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED); 241 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED);
242 } 242 }
243 243
244 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckManifest404) { 244 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckManifest404) {
245 base::RunLoop run_loop; 245 base::RunLoop run_loop;
246 std::unique_ptr<CallbackTester> tester( 246 std::unique_ptr<CallbackTester> tester(
247 new CallbackTester(run_loop.QuitClosure())); 247 new CallbackTester(run_loop.QuitClosure()));
248 248
249 NavigateAndRunInstallableManager(tester.get(), GetManifestParams(), 249 NavigateAndRunInstallableManager(tester.get(), GetManifestParams(),
250 GetURLOfPageWithServiceWorkerAndManifest( 250 GetURLOfPageWithServiceWorkerAndManifest(
251 "/banners/manifest_missing.json")); 251 "/banners/manifest_missing.json"));
252 run_loop.Run(); 252 run_loop.Run();
253 253
254 // The installable manager should return a manifest URL even if it 404s. 254 // The installable manager should return a manifest URL even if it 404s.
255 // However, the check should fail with a ManifestEmpty error. 255 // However, the check should fail with a ManifestEmpty error.
256 EXPECT_TRUE(tester->manifest().IsEmpty()); 256 EXPECT_TRUE(tester->manifest().IsEmpty());
257 257
258 EXPECT_FALSE(tester->manifest_url().is_empty()); 258 EXPECT_FALSE(tester->manifest_url().is_empty());
259 EXPECT_TRUE(tester->primary_icon_url().is_empty()); 259 EXPECT_TRUE(tester->primary_icon_url().is_empty());
260 EXPECT_EQ(nullptr, tester->primary_icon()); 260 EXPECT_EQ(nullptr, tester->primary_icon());
261 EXPECT_FALSE(tester->is_installable());
261 EXPECT_TRUE(tester->badge_icon_url().is_empty()); 262 EXPECT_TRUE(tester->badge_icon_url().is_empty());
262 EXPECT_EQ(nullptr, tester->badge_icon()); 263 EXPECT_EQ(nullptr, tester->badge_icon());
263 EXPECT_FALSE(tester->is_installable());
264 EXPECT_EQ(MANIFEST_EMPTY, tester->error_code()); 264 EXPECT_EQ(MANIFEST_EMPTY, tester->error_code());
265 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED); 265 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED);
266 } 266 }
267 267
268 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckManifestOnly) { 268 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckManifestOnly) {
269 // Verify that asking for just the manifest works as expected. 269 // Verify that asking for just the manifest works as expected.
270 base::RunLoop run_loop; 270 base::RunLoop run_loop;
271 std::unique_ptr<CallbackTester> tester( 271 std::unique_ptr<CallbackTester> tester(
272 new CallbackTester(run_loop.QuitClosure())); 272 new CallbackTester(run_loop.QuitClosure()));
273 273
274 NavigateAndRunInstallableManager(tester.get(), GetManifestParams(), 274 NavigateAndRunInstallableManager(tester.get(), GetManifestParams(),
275 "/banners/manifest_test_page.html"); 275 "/banners/manifest_test_page.html");
276 run_loop.Run(); 276 run_loop.Run();
277 277
278 EXPECT_FALSE(tester->manifest().IsEmpty()); 278 EXPECT_FALSE(tester->manifest().IsEmpty());
279 EXPECT_FALSE(tester->manifest_url().is_empty()); 279 EXPECT_FALSE(tester->manifest_url().is_empty());
280 280
281 EXPECT_TRUE(tester->primary_icon_url().is_empty()); 281 EXPECT_TRUE(tester->primary_icon_url().is_empty());
282 EXPECT_EQ(nullptr, tester->primary_icon()); 282 EXPECT_EQ(nullptr, tester->primary_icon());
283 EXPECT_FALSE(tester->is_installable());
283 EXPECT_TRUE(tester->badge_icon_url().is_empty()); 284 EXPECT_TRUE(tester->badge_icon_url().is_empty());
284 EXPECT_EQ(nullptr, tester->badge_icon()); 285 EXPECT_EQ(nullptr, tester->badge_icon());
285 EXPECT_FALSE(tester->is_installable());
286 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); 286 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code());
287 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED); 287 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED);
288 } 288 }
289 289
290 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, 290 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest,
291 CheckInstallableParamsDefaultConstructor) { 291 CheckInstallableParamsDefaultConstructor) {
292 // Verify that using InstallableParams' default constructor is equivalent to 292 // Verify that using InstallableParams' default constructor is equivalent to
293 // just asking for the manifest alone. 293 // just asking for the manifest alone.
294 base::RunLoop run_loop; 294 base::RunLoop run_loop;
295 std::unique_ptr<CallbackTester> tester( 295 std::unique_ptr<CallbackTester> tester(
296 new CallbackTester(run_loop.QuitClosure())); 296 new CallbackTester(run_loop.QuitClosure()));
297 297
298 InstallableParams params; 298 InstallableParams params;
299 NavigateAndRunInstallableManager(tester.get(), params, 299 NavigateAndRunInstallableManager(tester.get(), params,
300 "/banners/manifest_test_page.html"); 300 "/banners/manifest_test_page.html");
301 run_loop.Run(); 301 run_loop.Run();
302 302
303 EXPECT_FALSE(tester->manifest().IsEmpty()); 303 EXPECT_FALSE(tester->manifest().IsEmpty());
304 EXPECT_FALSE(tester->manifest_url().is_empty()); 304 EXPECT_FALSE(tester->manifest_url().is_empty());
305 305
306 EXPECT_TRUE(tester->primary_icon_url().is_empty()); 306 EXPECT_TRUE(tester->primary_icon_url().is_empty());
307 EXPECT_EQ(nullptr, tester->primary_icon()); 307 EXPECT_EQ(nullptr, tester->primary_icon());
308 EXPECT_FALSE(tester->is_installable());
308 EXPECT_TRUE(tester->badge_icon_url().is_empty()); 309 EXPECT_TRUE(tester->badge_icon_url().is_empty());
309 EXPECT_EQ(nullptr, tester->badge_icon()); 310 EXPECT_EQ(nullptr, tester->badge_icon());
310 EXPECT_FALSE(tester->is_installable());
311 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); 311 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code());
312 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED); 312 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED);
313 } 313 }
314 314
315 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, 315 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest,
316 CheckManifestWithOnlyRelatedApplications) { 316 CheckManifestWithOnlyRelatedApplications) {
317 // This page has a manifest with only related applications specified. Asking 317 // This page has a manifest with only related applications specified. Asking
318 // for just the manifest should succeed. 318 // for just the manifest should succeed.
319 { 319 {
320 base::RunLoop run_loop; 320 base::RunLoop run_loop;
321 std::unique_ptr<CallbackTester> tester( 321 std::unique_ptr<CallbackTester> tester(
322 new CallbackTester(run_loop.QuitClosure())); 322 new CallbackTester(run_loop.QuitClosure()));
323 323
324 NavigateAndRunInstallableManager(tester.get(), GetManifestParams(), 324 NavigateAndRunInstallableManager(tester.get(), GetManifestParams(),
325 "/banners/play_app_test_page.html"); 325 "/banners/play_app_test_page.html");
326 run_loop.Run(); 326 run_loop.Run();
327 327
328 EXPECT_FALSE(tester->manifest().IsEmpty()); 328 EXPECT_FALSE(tester->manifest().IsEmpty());
329 EXPECT_FALSE(tester->manifest_url().is_empty()); 329 EXPECT_FALSE(tester->manifest_url().is_empty());
330 EXPECT_TRUE(tester->manifest().prefer_related_applications); 330 EXPECT_TRUE(tester->manifest().prefer_related_applications);
331 331
332 EXPECT_TRUE(tester->primary_icon_url().is_empty()); 332 EXPECT_TRUE(tester->primary_icon_url().is_empty());
333 EXPECT_EQ(nullptr, tester->primary_icon()); 333 EXPECT_EQ(nullptr, tester->primary_icon());
334 EXPECT_FALSE(tester->is_installable());
334 EXPECT_TRUE(tester->badge_icon_url().is_empty()); 335 EXPECT_TRUE(tester->badge_icon_url().is_empty());
335 EXPECT_EQ(nullptr, tester->badge_icon()); 336 EXPECT_EQ(nullptr, tester->badge_icon());
336 EXPECT_FALSE(tester->is_installable());
337 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); 337 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code());
338 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED); 338 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED);
339 } 339 }
340 340
341 // Ask for a primary icon (but don't navigate). This should fail with 341 // Ask for a primary icon (but don't navigate). This should fail with
342 // NO_ACCEPTABLE_ICON. 342 // NO_ACCEPTABLE_ICON.
343 { 343 {
344 base::RunLoop run_loop; 344 base::RunLoop run_loop;
345 std::unique_ptr<CallbackTester> tester( 345 std::unique_ptr<CallbackTester> tester(
346 new CallbackTester(run_loop.QuitClosure())); 346 new CallbackTester(run_loop.QuitClosure()));
347 347
348 RunInstallableManager(tester.get(), GetPrimaryIconParams()); 348 RunInstallableManager(tester.get(), GetPrimaryIconParams());
349 run_loop.Run(); 349 run_loop.Run();
350 350
351 EXPECT_FALSE(tester->manifest().IsEmpty()); 351 EXPECT_FALSE(tester->manifest().IsEmpty());
352 EXPECT_FALSE(tester->manifest_url().is_empty()); 352 EXPECT_FALSE(tester->manifest_url().is_empty());
353 EXPECT_TRUE(tester->manifest().prefer_related_applications); 353 EXPECT_TRUE(tester->manifest().prefer_related_applications);
354 354
355 EXPECT_TRUE(tester->primary_icon_url().is_empty()); 355 EXPECT_TRUE(tester->primary_icon_url().is_empty());
356 EXPECT_EQ(nullptr, tester->primary_icon()); 356 EXPECT_EQ(nullptr, tester->primary_icon());
357 EXPECT_FALSE(tester->is_installable());
357 EXPECT_TRUE(tester->badge_icon_url().is_empty()); 358 EXPECT_TRUE(tester->badge_icon_url().is_empty());
358 EXPECT_EQ(nullptr, tester->badge_icon()); 359 EXPECT_EQ(nullptr, tester->badge_icon());
359 EXPECT_FALSE(tester->is_installable());
360 EXPECT_EQ(NO_ACCEPTABLE_ICON, tester->error_code()); 360 EXPECT_EQ(NO_ACCEPTABLE_ICON, tester->error_code());
361 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED); 361 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED);
362 } 362 }
363 363
364 // Ask for everything except badge icon. This should fail with 364 // Ask for everything except badge icon. This should fail with
365 // NO_ACCEPTABLE_ICON - the primary icon fetch has already failed, so that 365 // NO_ACCEPTABLE_ICON - the primary icon fetch has already failed, so that
366 // cached error stops the installable check from being performed. 366 // cached error stops the installable check from being performed.
367 { 367 {
368 base::RunLoop run_loop; 368 base::RunLoop run_loop;
369 std::unique_ptr<CallbackTester> tester( 369 std::unique_ptr<CallbackTester> tester(
370 new CallbackTester(run_loop.QuitClosure())); 370 new CallbackTester(run_loop.QuitClosure()));
371 371
372 RunInstallableManager(tester.get(), GetWebAppParams()); 372 RunInstallableManager(tester.get(), GetWebAppParams());
373 run_loop.Run(); 373 run_loop.Run();
374 374
375 EXPECT_FALSE(tester->manifest().IsEmpty()); 375 EXPECT_FALSE(tester->manifest().IsEmpty());
376 EXPECT_FALSE(tester->manifest_url().is_empty()); 376 EXPECT_FALSE(tester->manifest_url().is_empty());
377 EXPECT_TRUE(tester->manifest().prefer_related_applications); 377 EXPECT_TRUE(tester->manifest().prefer_related_applications);
378 378
379 EXPECT_TRUE(tester->primary_icon_url().is_empty()); 379 EXPECT_TRUE(tester->primary_icon_url().is_empty());
380 EXPECT_EQ(nullptr, tester->primary_icon()); 380 EXPECT_EQ(nullptr, tester->primary_icon());
381 EXPECT_FALSE(tester->is_installable());
381 EXPECT_TRUE(tester->badge_icon_url().is_empty()); 382 EXPECT_TRUE(tester->badge_icon_url().is_empty());
382 EXPECT_EQ(nullptr, tester->badge_icon()); 383 EXPECT_EQ(nullptr, tester->badge_icon());
383 EXPECT_FALSE(tester->is_installable());
384 EXPECT_EQ(NO_ACCEPTABLE_ICON, tester->error_code()); 384 EXPECT_EQ(NO_ACCEPTABLE_ICON, tester->error_code());
385 EXPECT_EQ(GetStatus(), 385 EXPECT_EQ(GetStatus(),
386 InstallabilityCheckStatus::COMPLETE_NON_PROGRESSIVE_WEB_APP); 386 InstallabilityCheckStatus::COMPLETE_NON_PROGRESSIVE_WEB_APP);
387 } 387 }
388 388
389 // Ask for a different size primary icon. This should fail with 389 // Do not ask for primary icon. This should fail with START_URL_NOT_VALID.
390 // START_URL_NOT_VALID since we won't have a cached icon error.
391 { 390 {
392 base::RunLoop run_loop; 391 base::RunLoop run_loop;
393 std::unique_ptr<CallbackTester> tester( 392 std::unique_ptr<CallbackTester> tester(
394 new CallbackTester(run_loop.QuitClosure())); 393 new CallbackTester(run_loop.QuitClosure()));
395 394
396 InstallableParams params = GetWebAppParams(); 395 InstallableParams params = GetWebAppParams();
397 params.ideal_primary_icon_size_in_px = 96; 396 params.fetch_valid_primary_icon = false;
398 params.minimum_primary_icon_size_in_px = 96;
399 RunInstallableManager(tester.get(), params); 397 RunInstallableManager(tester.get(), params);
400 run_loop.Run(); 398 run_loop.Run();
401 399
402 EXPECT_FALSE(tester->manifest().IsEmpty()); 400 EXPECT_FALSE(tester->manifest().IsEmpty());
403 EXPECT_FALSE(tester->manifest_url().is_empty()); 401 EXPECT_FALSE(tester->manifest_url().is_empty());
404 EXPECT_TRUE(tester->manifest().prefer_related_applications); 402 EXPECT_TRUE(tester->manifest().prefer_related_applications);
405 403
406 EXPECT_TRUE(tester->primary_icon_url().is_empty()); 404 EXPECT_TRUE(tester->primary_icon_url().is_empty());
407 EXPECT_EQ(nullptr, tester->primary_icon()); 405 EXPECT_EQ(nullptr, tester->primary_icon());
408 EXPECT_TRUE(tester->badge_icon_url().is_empty()); 406 EXPECT_TRUE(tester->badge_icon_url().is_empty());
(...skipping 14 matching lines...) Expand all
423 421
424 NavigateAndRunInstallableManager(tester.get(), GetPrimaryIconParams(), 422 NavigateAndRunInstallableManager(tester.get(), GetPrimaryIconParams(),
425 "/banners/manifest_test_page.html"); 423 "/banners/manifest_test_page.html");
426 run_loop.Run(); 424 run_loop.Run();
427 425
428 EXPECT_FALSE(tester->manifest().IsEmpty()); 426 EXPECT_FALSE(tester->manifest().IsEmpty());
429 EXPECT_FALSE(tester->manifest_url().is_empty()); 427 EXPECT_FALSE(tester->manifest_url().is_empty());
430 428
431 EXPECT_FALSE(tester->primary_icon_url().is_empty()); 429 EXPECT_FALSE(tester->primary_icon_url().is_empty());
432 EXPECT_NE(nullptr, tester->primary_icon()); 430 EXPECT_NE(nullptr, tester->primary_icon());
431 EXPECT_FALSE(tester->is_installable());
433 EXPECT_TRUE(tester->badge_icon_url().is_empty()); 432 EXPECT_TRUE(tester->badge_icon_url().is_empty());
434 EXPECT_EQ(nullptr, tester->badge_icon()); 433 EXPECT_EQ(nullptr, tester->badge_icon());
435 EXPECT_FALSE(tester->is_installable());
436 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); 434 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code());
437 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED); 435 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED);
438 } 436 }
439 437
440 // Add to homescreen checks for manifest + primary icon + badge icon. 438 // Add to homescreen checks for manifest + primary icon + badge icon.
441 { 439 {
442 base::RunLoop run_loop; 440 base::RunLoop run_loop;
443 std::unique_ptr<CallbackTester> tester( 441 std::unique_ptr<CallbackTester> tester(
444 new CallbackTester(run_loop.QuitClosure())); 442 new CallbackTester(run_loop.QuitClosure()));
445 443
446 RunInstallableManager(tester.get(), GetPrimaryIconAndBadgeIconParams()); 444 RunInstallableManager(tester.get(), GetPrimaryIconAndBadgeIconParams());
447 run_loop.Run(); 445 run_loop.Run();
448 446
449 EXPECT_FALSE(tester->manifest().IsEmpty()); 447 EXPECT_FALSE(tester->manifest().IsEmpty());
450 EXPECT_FALSE(tester->manifest_url().is_empty()); 448 EXPECT_FALSE(tester->manifest_url().is_empty());
451 449
452 EXPECT_FALSE(tester->primary_icon_url().is_empty()); 450 EXPECT_FALSE(tester->primary_icon_url().is_empty());
453 EXPECT_NE(nullptr, tester->primary_icon()); 451 EXPECT_NE(nullptr, tester->primary_icon());
452 EXPECT_FALSE(tester->is_installable());
454 EXPECT_FALSE(tester->badge_icon_url().is_empty()); 453 EXPECT_FALSE(tester->badge_icon_url().is_empty());
455 EXPECT_NE(nullptr, tester->badge_icon()); 454 EXPECT_NE(nullptr, tester->badge_icon());
456 EXPECT_FALSE(tester->is_installable());
457 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); 455 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code());
458 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED); 456 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED);
459 } 457 }
460 458
461 // Request an oversized badge icon. This should fetch only the manifest and 459 // Request an oversized badge icon. This should fetch only the manifest and
462 // the primary icon, and return no errors. 460 // the primary icon, and return no errors.
463 { 461 {
464 base::RunLoop run_loop; 462 base::RunLoop run_loop;
465 std::unique_ptr<CallbackTester> tester( 463 std::unique_ptr<CallbackTester> tester(
466 new CallbackTester(run_loop.QuitClosure())); 464 new CallbackTester(run_loop.QuitClosure()));
467 465
468 InstallableParams params = GetPrimaryIconAndBadgeIconParams(); 466 InstallableParams params = GetPrimaryIconAndBadgeIconParams();
469 params.ideal_badge_icon_size_in_px = 2000; 467 params.ideal_badge_icon_size_in_px = 2000;
470 params.minimum_badge_icon_size_in_px = 2000; 468 params.minimum_badge_icon_size_in_px = 2000;
471 RunInstallableManager(tester.get(), params); 469 RunInstallableManager(tester.get(), params);
472 run_loop.Run(); 470 run_loop.Run();
473 471
474 EXPECT_FALSE(tester->manifest().IsEmpty()); 472 EXPECT_FALSE(tester->manifest().IsEmpty());
475 EXPECT_FALSE(tester->manifest_url().is_empty()); 473 EXPECT_FALSE(tester->manifest_url().is_empty());
476 474
477 EXPECT_FALSE(tester->primary_icon_url().is_empty()); 475 EXPECT_FALSE(tester->primary_icon_url().is_empty());
478 EXPECT_NE(nullptr, tester->primary_icon()); 476 EXPECT_NE(nullptr, tester->primary_icon());
477 EXPECT_FALSE(tester->is_installable());
479 EXPECT_TRUE(tester->badge_icon_url().is_empty()); 478 EXPECT_TRUE(tester->badge_icon_url().is_empty());
480 EXPECT_EQ(nullptr, tester->badge_icon()); 479 EXPECT_EQ(nullptr, tester->badge_icon());
481 EXPECT_FALSE(tester->is_installable());
482 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); 480 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code());
483 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED); 481 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED);
484 } 482 }
485 } 483 }
486 484
487 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckWebapp) { 485 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckWebapp) {
488 // Request everything except badge icon. 486 // Request everything except badge icon.
489 { 487 {
490 base::RunLoop run_loop; 488 base::RunLoop run_loop;
491 std::unique_ptr<CallbackTester> tester( 489 std::unique_ptr<CallbackTester> tester(
492 new CallbackTester(run_loop.QuitClosure())); 490 new CallbackTester(run_loop.QuitClosure()));
493 491
494 NavigateAndRunInstallableManager(tester.get(), GetWebAppParams(), 492 NavigateAndRunInstallableManager(tester.get(), GetWebAppParams(),
495 "/banners/manifest_test_page.html"); 493 "/banners/manifest_test_page.html");
496 run_loop.Run(); 494 run_loop.Run();
497 495
498 EXPECT_FALSE(tester->manifest().IsEmpty()); 496 EXPECT_FALSE(tester->manifest().IsEmpty());
499 EXPECT_FALSE(tester->manifest_url().is_empty()); 497 EXPECT_FALSE(tester->manifest_url().is_empty());
500 EXPECT_TRUE(tester->is_installable());
501 EXPECT_FALSE(tester->primary_icon_url().is_empty()); 498 EXPECT_FALSE(tester->primary_icon_url().is_empty());
502 EXPECT_NE(nullptr, tester->primary_icon()); 499 EXPECT_NE(nullptr, tester->primary_icon());
500 EXPECT_TRUE(tester->is_installable());
503 EXPECT_TRUE(tester->badge_icon_url().is_empty()); 501 EXPECT_TRUE(tester->badge_icon_url().is_empty());
504 EXPECT_EQ(nullptr, tester->badge_icon()); 502 EXPECT_EQ(nullptr, tester->badge_icon());
505 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); 503 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code());
506 EXPECT_EQ(GetStatus(), 504 EXPECT_EQ(GetStatus(),
507 InstallabilityCheckStatus::COMPLETE_PROGRESSIVE_WEB_APP); 505 InstallabilityCheckStatus::COMPLETE_PROGRESSIVE_WEB_APP);
508 506
509 // Verify that the returned state matches manager internal state. 507 // Verify that the returned state matches manager internal state.
510 InstallableManager* manager = GetManager(); 508 InstallableManager* manager = GetManager();
511 509
512 EXPECT_FALSE(manager->manifest().IsEmpty()); 510 EXPECT_FALSE(manager->manifest().IsEmpty());
(...skipping 13 matching lines...) Expand all
526 { 524 {
527 base::RunLoop run_loop; 525 base::RunLoop run_loop;
528 std::unique_ptr<CallbackTester> tester( 526 std::unique_ptr<CallbackTester> tester(
529 new CallbackTester(run_loop.QuitClosure())); 527 new CallbackTester(run_loop.QuitClosure()));
530 528
531 RunInstallableManager(tester.get(), GetWebAppParams()); 529 RunInstallableManager(tester.get(), GetWebAppParams());
532 run_loop.Run(); 530 run_loop.Run();
533 531
534 EXPECT_FALSE(tester->manifest().IsEmpty()); 532 EXPECT_FALSE(tester->manifest().IsEmpty());
535 EXPECT_FALSE(tester->manifest_url().is_empty()); 533 EXPECT_FALSE(tester->manifest_url().is_empty());
536 EXPECT_TRUE(tester->is_installable());
537 EXPECT_FALSE(tester->primary_icon_url().is_empty()); 534 EXPECT_FALSE(tester->primary_icon_url().is_empty());
538 EXPECT_NE(nullptr, tester->primary_icon()); 535 EXPECT_NE(nullptr, tester->primary_icon());
536 EXPECT_TRUE(tester->is_installable());
539 EXPECT_TRUE(tester->badge_icon_url().is_empty()); 537 EXPECT_TRUE(tester->badge_icon_url().is_empty());
540 EXPECT_EQ(nullptr, tester->badge_icon()); 538 EXPECT_EQ(nullptr, tester->badge_icon());
541 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); 539 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code());
542 EXPECT_EQ(GetStatus(), 540 EXPECT_EQ(GetStatus(),
543 InstallabilityCheckStatus::COMPLETE_PROGRESSIVE_WEB_APP); 541 InstallabilityCheckStatus::COMPLETE_PROGRESSIVE_WEB_APP);
544 542
545 // Verify that the returned state matches manager internal state. 543 // Verify that the returned state matches manager internal state.
546 InstallableManager* manager = GetManager(); 544 InstallableManager* manager = GetManager();
547 545
548 EXPECT_FALSE(manager->manifest().IsEmpty()); 546 EXPECT_FALSE(manager->manifest().IsEmpty());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
580 NavigateAndRunInstallableManager(tester.get(), GetWebAppParams(), 578 NavigateAndRunInstallableManager(tester.get(), GetWebAppParams(),
581 "/banners/iframe_test_page.html"); 579 "/banners/iframe_test_page.html");
582 run_loop.Run(); 580 run_loop.Run();
583 581
584 // The installable manager should only retrieve items in the main frame; 582 // The installable manager should only retrieve items in the main frame;
585 // everything should be empty here. 583 // everything should be empty here.
586 EXPECT_TRUE(tester->manifest().IsEmpty()); 584 EXPECT_TRUE(tester->manifest().IsEmpty());
587 EXPECT_TRUE(tester->manifest_url().is_empty()); 585 EXPECT_TRUE(tester->manifest_url().is_empty());
588 EXPECT_TRUE(tester->primary_icon_url().is_empty()); 586 EXPECT_TRUE(tester->primary_icon_url().is_empty());
589 EXPECT_EQ(nullptr, tester->primary_icon()); 587 EXPECT_EQ(nullptr, tester->primary_icon());
588 EXPECT_FALSE(tester->is_installable());
590 EXPECT_TRUE(tester->badge_icon_url().is_empty()); 589 EXPECT_TRUE(tester->badge_icon_url().is_empty());
591 EXPECT_EQ(nullptr, tester->badge_icon()); 590 EXPECT_EQ(nullptr, tester->badge_icon());
592 EXPECT_FALSE(tester->is_installable());
593 EXPECT_EQ(NO_MANIFEST, tester->error_code()); 591 EXPECT_EQ(NO_MANIFEST, tester->error_code());
594 EXPECT_EQ(GetStatus(), 592 EXPECT_EQ(GetStatus(),
595 InstallabilityCheckStatus::COMPLETE_NON_PROGRESSIVE_WEB_APP); 593 InstallabilityCheckStatus::COMPLETE_NON_PROGRESSIVE_WEB_APP);
596 } 594 }
597 595
598 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, 596 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest,
599 CheckPageWithManifestAndNoServiceWorker) { 597 CheckPageWithManifestAndNoServiceWorker) {
600 // Just fetch the manifest. This should have no error. 598 // Just fetch the manifest. This should have no error.
601 { 599 {
602 base::RunLoop run_loop; 600 base::RunLoop run_loop;
603 std::unique_ptr<CallbackTester> tester( 601 std::unique_ptr<CallbackTester> tester(
604 new CallbackTester(run_loop.QuitClosure())); 602 new CallbackTester(run_loop.QuitClosure()));
605 603
606 NavigateAndRunInstallableManager( 604 NavigateAndRunInstallableManager(
607 tester.get(), GetManifestParams(), 605 tester.get(), GetManifestParams(),
608 "/banners/manifest_no_service_worker.html"); 606 "/banners/manifest_no_service_worker.html");
609 run_loop.Run(); 607 run_loop.Run();
610 608
611 EXPECT_FALSE(tester->manifest().IsEmpty()); 609 EXPECT_FALSE(tester->manifest().IsEmpty());
612 EXPECT_FALSE(tester->manifest_url().is_empty()); 610 EXPECT_FALSE(tester->manifest_url().is_empty());
613 611
614 EXPECT_TRUE(tester->primary_icon_url().is_empty()); 612 EXPECT_TRUE(tester->primary_icon_url().is_empty());
615 EXPECT_EQ(nullptr, tester->primary_icon()); 613 EXPECT_EQ(nullptr, tester->primary_icon());
614 EXPECT_FALSE(tester->is_installable());
616 EXPECT_TRUE(tester->badge_icon_url().is_empty()); 615 EXPECT_TRUE(tester->badge_icon_url().is_empty());
617 EXPECT_EQ(nullptr, tester->badge_icon()); 616 EXPECT_EQ(nullptr, tester->badge_icon());
618 EXPECT_FALSE(tester->is_installable());
619 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); 617 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code());
620 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED); 618 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED);
621 } 619 }
622 620
623 // Fetch the full criteria should fail. 621 // Fetch the full criteria should fail.
624 { 622 {
625 base::RunLoop run_loop; 623 base::RunLoop run_loop;
626 std::unique_ptr<CallbackTester> tester( 624 std::unique_ptr<CallbackTester> tester(
627 new CallbackTester(run_loop.QuitClosure())); 625 new CallbackTester(run_loop.QuitClosure()));
628 626
629 RunInstallableManager(tester.get(), GetWebAppParams()); 627 RunInstallableManager(tester.get(), GetWebAppParams());
630 run_loop.Run(); 628 run_loop.Run();
631 629
632 EXPECT_FALSE(tester->manifest().IsEmpty()); 630 EXPECT_FALSE(tester->manifest().IsEmpty());
633 EXPECT_FALSE(tester->manifest_url().is_empty()); 631 EXPECT_FALSE(tester->manifest_url().is_empty());
634 632
635 EXPECT_TRUE(tester->primary_icon_url().is_empty()); 633 EXPECT_FALSE(tester->primary_icon_url().is_empty());
636 EXPECT_EQ(nullptr, tester->primary_icon()); 634 EXPECT_NE(nullptr, tester->primary_icon());
635 EXPECT_FALSE(tester->is_installable());
637 EXPECT_TRUE(tester->badge_icon_url().is_empty()); 636 EXPECT_TRUE(tester->badge_icon_url().is_empty());
638 EXPECT_EQ(nullptr, tester->badge_icon()); 637 EXPECT_EQ(nullptr, tester->badge_icon());
639 EXPECT_FALSE(tester->is_installable());
640 EXPECT_EQ(NO_MATCHING_SERVICE_WORKER, tester->error_code()); 638 EXPECT_EQ(NO_MATCHING_SERVICE_WORKER, tester->error_code());
641 EXPECT_EQ(GetStatus(), 639 EXPECT_EQ(GetStatus(),
642 InstallabilityCheckStatus::COMPLETE_NON_PROGRESSIVE_WEB_APP); 640 InstallabilityCheckStatus::COMPLETE_NON_PROGRESSIVE_WEB_APP);
643 } 641 }
644 } 642 }
645 643
646 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, 644 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest,
647 CheckPageWithNoServiceWorkerFetchHandler) { 645 CheckPageWithNoServiceWorkerFetchHandler) {
648 base::RunLoop run_loop; 646 base::RunLoop run_loop;
649 std::unique_ptr<CallbackTester> tester( 647 std::unique_ptr<CallbackTester> tester(
650 new CallbackTester(run_loop.QuitClosure())); 648 new CallbackTester(run_loop.QuitClosure()));
651 649
652 NavigateAndRunInstallableManager( 650 NavigateAndRunInstallableManager(
653 tester.get(), GetWebAppParams(), 651 tester.get(), GetWebAppParams(),
654 "/banners/no_sw_fetch_handler_test_page.html"); 652 "/banners/no_sw_fetch_handler_test_page.html");
655 653
656 RunInstallableManager(tester.get(), GetWebAppParams()); 654 RunInstallableManager(tester.get(), GetWebAppParams());
657 run_loop.Run(); 655 run_loop.Run();
658 656
659 EXPECT_FALSE(tester->manifest().IsEmpty()); 657 EXPECT_FALSE(tester->manifest().IsEmpty());
660 EXPECT_FALSE(tester->manifest_url().is_empty()); 658 EXPECT_FALSE(tester->manifest_url().is_empty());
661 659
662 EXPECT_TRUE(tester->primary_icon_url().is_empty()); 660 EXPECT_FALSE(tester->primary_icon_url().is_empty());
663 EXPECT_EQ(nullptr, tester->primary_icon()); 661 EXPECT_NE(nullptr, tester->primary_icon());
662 EXPECT_FALSE(tester->is_installable());
664 EXPECT_TRUE(tester->badge_icon_url().is_empty()); 663 EXPECT_TRUE(tester->badge_icon_url().is_empty());
665 EXPECT_EQ(nullptr, tester->badge_icon()); 664 EXPECT_EQ(nullptr, tester->badge_icon());
666 EXPECT_FALSE(tester->is_installable());
667 EXPECT_EQ(NOT_OFFLINE_CAPABLE, tester->error_code()); 665 EXPECT_EQ(NOT_OFFLINE_CAPABLE, tester->error_code());
668 EXPECT_EQ(GetStatus(), 666 EXPECT_EQ(GetStatus(),
669 InstallabilityCheckStatus::COMPLETE_NON_PROGRESSIVE_WEB_APP); 667 InstallabilityCheckStatus::COMPLETE_NON_PROGRESSIVE_WEB_APP);
670 } 668 }
671 669
672 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckDataUrlIcon) { 670 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckDataUrlIcon) {
673 // Verify that InstallableManager can handle data URL icons. 671 // Verify that InstallableManager can handle data URL icons.
674 base::RunLoop run_loop; 672 base::RunLoop run_loop;
675 std::unique_ptr<CallbackTester> tester( 673 std::unique_ptr<CallbackTester> tester(
676 new CallbackTester(run_loop.QuitClosure())); 674 new CallbackTester(run_loop.QuitClosure()));
677 675
678 NavigateAndRunInstallableManager(tester.get(), GetWebAppParams(), 676 NavigateAndRunInstallableManager(tester.get(), GetWebAppParams(),
679 GetURLOfPageWithServiceWorkerAndManifest( 677 GetURLOfPageWithServiceWorkerAndManifest(
680 "/banners/manifest_data_url_icon.json")); 678 "/banners/manifest_data_url_icon.json"));
681 run_loop.Run(); 679 run_loop.Run();
682 680
683 EXPECT_FALSE(tester->manifest().IsEmpty()); 681 EXPECT_FALSE(tester->manifest().IsEmpty());
684 EXPECT_FALSE(tester->manifest_url().is_empty()); 682 EXPECT_FALSE(tester->manifest_url().is_empty());
685 683
686 EXPECT_FALSE(tester->primary_icon_url().is_empty()); 684 EXPECT_FALSE(tester->primary_icon_url().is_empty());
687 EXPECT_NE(nullptr, tester->primary_icon()); 685 EXPECT_NE(nullptr, tester->primary_icon());
688 EXPECT_EQ(144, tester->primary_icon()->width()); 686 EXPECT_EQ(144, tester->primary_icon()->width());
687 EXPECT_TRUE(tester->is_installable());
689 EXPECT_TRUE(tester->badge_icon_url().is_empty()); 688 EXPECT_TRUE(tester->badge_icon_url().is_empty());
690 EXPECT_EQ(nullptr, tester->badge_icon()); 689 EXPECT_EQ(nullptr, tester->badge_icon());
691 EXPECT_TRUE(tester->is_installable());
692 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); 690 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code());
693 EXPECT_EQ(GetStatus(), 691 EXPECT_EQ(GetStatus(),
694 InstallabilityCheckStatus::COMPLETE_PROGRESSIVE_WEB_APP); 692 InstallabilityCheckStatus::COMPLETE_PROGRESSIVE_WEB_APP);
695 } 693 }
696 694
697 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, 695 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest,
698 CheckManifestCorruptedIcon) { 696 CheckManifestCorruptedIcon) {
699 // Verify that the returned InstallableData::primary_icon is null if the web 697 // Verify that the returned InstallableData::primary_icon is null if the web
700 // manifest points to a corrupt primary icon. 698 // manifest points to a corrupt primary icon.
701 base::RunLoop run_loop; 699 base::RunLoop run_loop;
702 std::unique_ptr<CallbackTester> tester( 700 std::unique_ptr<CallbackTester> tester(
703 new CallbackTester(run_loop.QuitClosure())); 701 new CallbackTester(run_loop.QuitClosure()));
704 702
705 NavigateAndRunInstallableManager(tester.get(), GetPrimaryIconParams(), 703 NavigateAndRunInstallableManager(tester.get(), GetPrimaryIconParams(),
706 GetURLOfPageWithServiceWorkerAndManifest( 704 GetURLOfPageWithServiceWorkerAndManifest(
707 "/banners/manifest_bad_icon.json")); 705 "/banners/manifest_bad_icon.json"));
708 run_loop.Run(); 706 run_loop.Run();
709 707
710 EXPECT_FALSE(tester->manifest().IsEmpty()); 708 EXPECT_FALSE(tester->manifest().IsEmpty());
711 EXPECT_FALSE(tester->manifest_url().is_empty()); 709 EXPECT_FALSE(tester->manifest_url().is_empty());
712 EXPECT_TRUE(tester->primary_icon_url().is_empty()); 710 EXPECT_TRUE(tester->primary_icon_url().is_empty());
713 EXPECT_EQ(nullptr, tester->primary_icon()); 711 EXPECT_EQ(nullptr, tester->primary_icon());
712 EXPECT_FALSE(tester->is_installable());
714 EXPECT_TRUE(tester->badge_icon_url().is_empty()); 713 EXPECT_TRUE(tester->badge_icon_url().is_empty());
715 EXPECT_EQ(nullptr, tester->badge_icon()); 714 EXPECT_EQ(nullptr, tester->badge_icon());
716 EXPECT_FALSE(tester->is_installable());
717 EXPECT_EQ(NO_ICON_AVAILABLE, tester->error_code()); 715 EXPECT_EQ(NO_ICON_AVAILABLE, tester->error_code());
718 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED); 716 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED);
719 } 717 }
720 718
721 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, 719 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest,
722 CheckChangeInIconDimensions) { 720 CheckChangeInIconDimensions) {
723 // Verify that a follow-up request for a primary icon with a different size 721 // Verify that a follow-up request for a primary icon with a different size
724 // works. 722 // works.
725 { 723 {
726 base::RunLoop run_loop; 724 base::RunLoop run_loop;
727 std::unique_ptr<CallbackTester> tester( 725 std::unique_ptr<CallbackTester> tester(
728 new CallbackTester(run_loop.QuitClosure())); 726 new CallbackTester(run_loop.QuitClosure()));
729 727
730 NavigateAndRunInstallableManager(tester.get(), GetWebAppParams(), 728 NavigateAndRunInstallableManager(tester.get(), GetWebAppParams(),
731 "/banners/manifest_test_page.html"); 729 "/banners/manifest_test_page.html");
732 run_loop.Run(); 730 run_loop.Run();
733 731
734 EXPECT_FALSE(tester->manifest_url().is_empty()); 732 EXPECT_FALSE(tester->manifest_url().is_empty());
735 EXPECT_FALSE(tester->manifest().IsEmpty()); 733 EXPECT_FALSE(tester->manifest().IsEmpty());
736 EXPECT_TRUE(tester->is_installable());
737 EXPECT_FALSE(tester->primary_icon_url().is_empty()); 734 EXPECT_FALSE(tester->primary_icon_url().is_empty());
738 EXPECT_NE(nullptr, tester->primary_icon()); 735 EXPECT_NE(nullptr, tester->primary_icon());
736 EXPECT_TRUE(tester->is_installable());
739 EXPECT_TRUE(tester->badge_icon_url().is_empty()); 737 EXPECT_TRUE(tester->badge_icon_url().is_empty());
740 EXPECT_EQ(nullptr, tester->badge_icon()); 738 EXPECT_EQ(nullptr, tester->badge_icon());
741 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); 739 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code());
742 } 740 }
743 741
744 { 742 {
745 base::RunLoop run_loop; 743 base::RunLoop run_loop;
746 std::unique_ptr<CallbackTester> tester( 744 std::unique_ptr<CallbackTester> tester(
747 new CallbackTester(run_loop.QuitClosure())); 745 new CallbackTester(run_loop.QuitClosure()));
748 746
749 // Dial up the primary icon size requirements to something that isn't 747 // Dial up the primary icon size requirements to something that isn't
750 // available. This should now fail with NoIconMatchingRequirements. 748 // available. This should now fail with NoIconMatchingRequirements.
751 InstallableParams params = GetWebAppParams(); 749 InstallableParams params = GetWebAppParams();
752 params.ideal_primary_icon_size_in_px = 2000; 750 params.ideal_primary_icon_size_in_px = 2000;
753 params.minimum_primary_icon_size_in_px = 2000; 751 params.minimum_primary_icon_size_in_px = 2000;
754 RunInstallableManager(tester.get(), params); 752 RunInstallableManager(tester.get(), params);
755 run_loop.Run(); 753 run_loop.Run();
756 754
757 EXPECT_FALSE(tester->manifest_url().is_empty()); 755 EXPECT_FALSE(tester->manifest_url().is_empty());
758 EXPECT_FALSE(tester->manifest().IsEmpty()); 756 EXPECT_FALSE(tester->manifest().IsEmpty());
759 EXPECT_TRUE(tester->is_installable());
760 EXPECT_TRUE(tester->primary_icon_url().is_empty()); 757 EXPECT_TRUE(tester->primary_icon_url().is_empty());
761 EXPECT_EQ(nullptr, tester->primary_icon()); 758 EXPECT_EQ(nullptr, tester->primary_icon());
759 EXPECT_TRUE(tester->is_installable());
762 EXPECT_TRUE(tester->badge_icon_url().is_empty()); 760 EXPECT_TRUE(tester->badge_icon_url().is_empty());
763 EXPECT_EQ(nullptr, tester->badge_icon()); 761 EXPECT_EQ(nullptr, tester->badge_icon());
764 EXPECT_EQ(NO_ACCEPTABLE_ICON, tester->error_code()); 762 EXPECT_EQ(NO_ACCEPTABLE_ICON, tester->error_code());
765 } 763 }
766 764
767 // Navigate and verify the reverse: an overly large primary icon requested 765 // Navigate and verify the reverse: an overly large primary icon requested
768 // first fails, but a smaller primary icon requested second passes. 766 // first fails, but a smaller primary icon requested second passes.
769 { 767 {
770 base::RunLoop run_loop; 768 base::RunLoop run_loop;
771 std::unique_ptr<CallbackTester> tester( 769 std::unique_ptr<CallbackTester> tester(
772 new CallbackTester(run_loop.QuitClosure())); 770 new CallbackTester(run_loop.QuitClosure()));
773 771
774 // This should fail with NoIconMatchingRequirements. 772 // This should fail with NoIconMatchingRequirements.
775 InstallableParams params = GetWebAppParams(); 773 InstallableParams params = GetWebAppParams();
776 params.ideal_primary_icon_size_in_px = 2000; 774 params.ideal_primary_icon_size_in_px = 2000;
777 params.minimum_primary_icon_size_in_px = 2000; 775 params.minimum_primary_icon_size_in_px = 2000;
778 NavigateAndRunInstallableManager(tester.get(), params, 776 NavigateAndRunInstallableManager(tester.get(), params,
779 "/banners/manifest_test_page.html"); 777 "/banners/manifest_test_page.html");
780 run_loop.Run(); 778 run_loop.Run();
781 779
782 EXPECT_FALSE(tester->manifest_url().is_empty()); 780 EXPECT_FALSE(tester->manifest_url().is_empty());
783 EXPECT_FALSE(tester->manifest().IsEmpty()); 781 EXPECT_FALSE(tester->manifest().IsEmpty());
784 EXPECT_TRUE(tester->is_installable());
785 EXPECT_TRUE(tester->primary_icon_url().is_empty()); 782 EXPECT_TRUE(tester->primary_icon_url().is_empty());
786 EXPECT_EQ(nullptr, tester->primary_icon()); 783 EXPECT_EQ(nullptr, tester->primary_icon());
784 EXPECT_FALSE(tester->is_installable());
787 EXPECT_TRUE(tester->badge_icon_url().is_empty()); 785 EXPECT_TRUE(tester->badge_icon_url().is_empty());
788 EXPECT_EQ(nullptr, tester->badge_icon()); 786 EXPECT_EQ(nullptr, tester->badge_icon());
789 EXPECT_EQ(NO_ACCEPTABLE_ICON, tester->error_code()); 787 EXPECT_EQ(NO_ACCEPTABLE_ICON, tester->error_code());
790 } 788 }
791 789
792 { 790 {
793 base::RunLoop run_loop; 791 base::RunLoop run_loop;
794 std::unique_ptr<CallbackTester> tester( 792 std::unique_ptr<CallbackTester> tester(
795 new CallbackTester(run_loop.QuitClosure())); 793 new CallbackTester(run_loop.QuitClosure()));
796 RunInstallableManager(tester.get(), GetWebAppParams()); 794 RunInstallableManager(tester.get(), GetWebAppParams());
797 795
798 run_loop.Run(); 796 run_loop.Run();
799 797
800 // The smaller primary icon requirements should allow this to pass. 798 // The smaller primary icon requirements should allow this to pass.
801 EXPECT_FALSE(tester->manifest_url().is_empty()); 799 EXPECT_FALSE(tester->manifest_url().is_empty());
802 EXPECT_FALSE(tester->manifest().IsEmpty()); 800 EXPECT_FALSE(tester->manifest().IsEmpty());
803 EXPECT_TRUE(tester->is_installable());
804 EXPECT_FALSE(tester->primary_icon_url().is_empty()); 801 EXPECT_FALSE(tester->primary_icon_url().is_empty());
805 EXPECT_NE(nullptr, tester->primary_icon()); 802 EXPECT_NE(nullptr, tester->primary_icon());
803 EXPECT_TRUE(tester->is_installable());
806 EXPECT_TRUE(tester->badge_icon_url().is_empty()); 804 EXPECT_TRUE(tester->badge_icon_url().is_empty());
807 EXPECT_EQ(nullptr, tester->badge_icon()); 805 EXPECT_EQ(nullptr, tester->badge_icon());
808 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); 806 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code());
809 } 807 }
810 } 808 }
811 809
812 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, 810 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest,
813 CheckNestedCallsToGetData) { 811 CheckNestedCallsToGetData) {
814 // Verify that we can call GetData while in a callback from GetData. 812 // Verify that we can call GetData while in a callback from GetData.
815 base::RunLoop run_loop; 813 base::RunLoop run_loop;
816 InstallableParams params = GetWebAppParams(); 814 InstallableParams params = GetWebAppParams();
817 std::unique_ptr<NestedCallbackTester> tester( 815 std::unique_ptr<NestedCallbackTester> tester(
818 new NestedCallbackTester(GetManager(), params, run_loop.QuitClosure())); 816 new NestedCallbackTester(GetManager(), params, run_loop.QuitClosure()));
819 817
820 tester->Run(); 818 tester->Run();
821 run_loop.Run(); 819 run_loop.Run();
822 } 820 }
OLDNEW
« no previous file with comments | « chrome/browser/installable/installable_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698