| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |