| 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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 params.minimum_badge_icon_size_in_px = 72; | 54 params.minimum_badge_icon_size_in_px = 72; |
| 55 params.fetch_valid_badge_icon = true; | 55 params.fetch_valid_badge_icon = true; |
| 56 return params; | 56 return params; |
| 57 } | 57 } |
| 58 | 58 |
| 59 } // anonymous namespace | 59 } // anonymous namespace |
| 60 | 60 |
| 61 class CallbackTester { | 61 class CallbackTester { |
| 62 public: | 62 public: |
| 63 explicit CallbackTester(base::Closure quit_closure) | 63 explicit CallbackTester(base::Closure quit_closure) |
| 64 : quit_closure_(quit_closure) { } | 64 : quit_closure_(quit_closure) {} |
| 65 | 65 |
| 66 void OnDidFinishInstallableCheck(const InstallableData& data) { | 66 void OnDidFinishInstallableCheck(const InstallableData& data) { |
| 67 error_code_ = data.error_code; | 67 error_code_ = data.error_code; |
| 68 manifest_url_ = data.manifest_url; | 68 manifest_url_ = data.manifest_url; |
| 69 manifest_ = data.manifest; | 69 manifest_ = data.manifest; |
| 70 primary_icon_url_ = data.primary_icon_url; | 70 primary_icon_url_ = data.primary_icon_url; |
| 71 if (data.primary_icon) | 71 if (data.primary_icon) |
| 72 primary_icon_.reset(new SkBitmap(*data.primary_icon)); | 72 primary_icon_.reset(new SkBitmap(*data.primary_icon)); |
| 73 badge_icon_url_ = data.badge_icon_url; | 73 badge_icon_url_ = data.badge_icon_url; |
| 74 if (data.badge_icon) | 74 if (data.badge_icon) |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 193 content::WebContents* web_contents = | 193 content::WebContents* web_contents = |
| 194 browser()->tab_strip_model()->GetActiveWebContents(); | 194 browser()->tab_strip_model()->GetActiveWebContents(); |
| 195 InstallableManager::CreateForWebContents(web_contents); | 195 InstallableManager::CreateForWebContents(web_contents); |
| 196 InstallableManager* manager = | 196 InstallableManager* manager = |
| 197 InstallableManager::FromWebContents(web_contents); | 197 InstallableManager::FromWebContents(web_contents); |
| 198 CHECK(manager); | 198 CHECK(manager); |
| 199 | 199 |
| 200 return manager; | 200 return manager; |
| 201 } | 201 } |
| 202 | 202 |
| 203 InstallabilityCheckStatus GetStatus() { return GetManager()->page_status_; } |
| 203 }; | 204 }; |
| 204 | 205 |
| 205 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, | 206 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, |
| 206 ManagerBeginsInEmptyState) { | 207 ManagerBeginsInEmptyState) { |
| 207 // Ensure that the InstallableManager starts off with everything null. | 208 // Ensure that the InstallableManager starts off with everything null. |
| 208 InstallableManager* manager = GetManager(); | 209 InstallableManager* manager = GetManager(); |
| 209 | 210 |
| 210 EXPECT_TRUE(manager->manifest().IsEmpty()); | 211 EXPECT_TRUE(manager->manifest().IsEmpty()); |
| 211 EXPECT_TRUE(manager->manifest_url().is_empty()); | 212 EXPECT_TRUE(manager->manifest_url().is_empty()); |
| 212 EXPECT_TRUE(manager->icons_.empty()); | 213 EXPECT_TRUE(manager->icons_.empty()); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 230 | 231 |
| 231 // If there is no manifest, everything should be empty. | 232 // If there is no manifest, everything should be empty. |
| 232 EXPECT_TRUE(tester->manifest().IsEmpty()); | 233 EXPECT_TRUE(tester->manifest().IsEmpty()); |
| 233 EXPECT_TRUE(tester->manifest_url().is_empty()); | 234 EXPECT_TRUE(tester->manifest_url().is_empty()); |
| 234 EXPECT_TRUE(tester->primary_icon_url().is_empty()); | 235 EXPECT_TRUE(tester->primary_icon_url().is_empty()); |
| 235 EXPECT_EQ(nullptr, tester->primary_icon()); | 236 EXPECT_EQ(nullptr, tester->primary_icon()); |
| 236 EXPECT_TRUE(tester->badge_icon_url().is_empty()); | 237 EXPECT_TRUE(tester->badge_icon_url().is_empty()); |
| 237 EXPECT_EQ(nullptr, tester->badge_icon()); | 238 EXPECT_EQ(nullptr, tester->badge_icon()); |
| 238 EXPECT_FALSE(tester->is_installable()); | 239 EXPECT_FALSE(tester->is_installable()); |
| 239 EXPECT_EQ(NO_MANIFEST, tester->error_code()); | 240 EXPECT_EQ(NO_MANIFEST, tester->error_code()); |
| 241 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED); |
| 240 } | 242 } |
| 241 | 243 |
| 242 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckManifest404) { | 244 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckManifest404) { |
| 243 base::RunLoop run_loop; | 245 base::RunLoop run_loop; |
| 244 std::unique_ptr<CallbackTester> tester( | 246 std::unique_ptr<CallbackTester> tester( |
| 245 new CallbackTester(run_loop.QuitClosure())); | 247 new CallbackTester(run_loop.QuitClosure())); |
| 246 | 248 |
| 247 NavigateAndRunInstallableManager(tester.get(), GetManifestParams(), | 249 NavigateAndRunInstallableManager(tester.get(), GetManifestParams(), |
| 248 GetURLOfPageWithServiceWorkerAndManifest( | 250 GetURLOfPageWithServiceWorkerAndManifest( |
| 249 "/banners/manifest_missing.json")); | 251 "/banners/manifest_missing.json")); |
| 250 run_loop.Run(); | 252 run_loop.Run(); |
| 251 | 253 |
| 252 // 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. |
| 253 // However, the check should fail with a ManifestEmpty error. | 255 // However, the check should fail with a ManifestEmpty error. |
| 254 EXPECT_TRUE(tester->manifest().IsEmpty()); | 256 EXPECT_TRUE(tester->manifest().IsEmpty()); |
| 255 | 257 |
| 256 EXPECT_FALSE(tester->manifest_url().is_empty()); | 258 EXPECT_FALSE(tester->manifest_url().is_empty()); |
| 257 EXPECT_TRUE(tester->primary_icon_url().is_empty()); | 259 EXPECT_TRUE(tester->primary_icon_url().is_empty()); |
| 258 EXPECT_EQ(nullptr, tester->primary_icon()); | 260 EXPECT_EQ(nullptr, tester->primary_icon()); |
| 259 EXPECT_TRUE(tester->badge_icon_url().is_empty()); | 261 EXPECT_TRUE(tester->badge_icon_url().is_empty()); |
| 260 EXPECT_EQ(nullptr, tester->badge_icon()); | 262 EXPECT_EQ(nullptr, tester->badge_icon()); |
| 261 EXPECT_FALSE(tester->is_installable()); | 263 EXPECT_FALSE(tester->is_installable()); |
| 262 EXPECT_EQ(MANIFEST_EMPTY, tester->error_code()); | 264 EXPECT_EQ(MANIFEST_EMPTY, tester->error_code()); |
| 265 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED); |
| 263 } | 266 } |
| 264 | 267 |
| 265 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckManifestOnly) { | 268 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckManifestOnly) { |
| 266 // Verify that asking for just the manifest works as expected. | 269 // Verify that asking for just the manifest works as expected. |
| 267 base::RunLoop run_loop; | 270 base::RunLoop run_loop; |
| 268 std::unique_ptr<CallbackTester> tester( | 271 std::unique_ptr<CallbackTester> tester( |
| 269 new CallbackTester(run_loop.QuitClosure())); | 272 new CallbackTester(run_loop.QuitClosure())); |
| 270 | 273 |
| 271 NavigateAndRunInstallableManager(tester.get(), GetManifestParams(), | 274 NavigateAndRunInstallableManager(tester.get(), GetManifestParams(), |
| 272 "/banners/manifest_test_page.html"); | 275 "/banners/manifest_test_page.html"); |
| 273 run_loop.Run(); | 276 run_loop.Run(); |
| 274 | 277 |
| 275 EXPECT_FALSE(tester->manifest().IsEmpty()); | 278 EXPECT_FALSE(tester->manifest().IsEmpty()); |
| 276 EXPECT_FALSE(tester->manifest_url().is_empty()); | 279 EXPECT_FALSE(tester->manifest_url().is_empty()); |
| 277 | 280 |
| 278 EXPECT_TRUE(tester->primary_icon_url().is_empty()); | 281 EXPECT_TRUE(tester->primary_icon_url().is_empty()); |
| 279 EXPECT_EQ(nullptr, tester->primary_icon()); | 282 EXPECT_EQ(nullptr, tester->primary_icon()); |
| 280 EXPECT_TRUE(tester->badge_icon_url().is_empty()); | 283 EXPECT_TRUE(tester->badge_icon_url().is_empty()); |
| 281 EXPECT_EQ(nullptr, tester->badge_icon()); | 284 EXPECT_EQ(nullptr, tester->badge_icon()); |
| 282 EXPECT_FALSE(tester->is_installable()); | 285 EXPECT_FALSE(tester->is_installable()); |
| 283 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); | 286 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); |
| 287 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED); |
| 284 } | 288 } |
| 285 | 289 |
| 286 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, | 290 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, |
| 287 CheckInstallableParamsDefaultConstructor) { | 291 CheckInstallableParamsDefaultConstructor) { |
| 288 // Verify that using InstallableParams' default constructor is equivalent to | 292 // Verify that using InstallableParams' default constructor is equivalent to |
| 289 // just asking for the manifest alone. | 293 // just asking for the manifest alone. |
| 290 base::RunLoop run_loop; | 294 base::RunLoop run_loop; |
| 291 std::unique_ptr<CallbackTester> tester( | 295 std::unique_ptr<CallbackTester> tester( |
| 292 new CallbackTester(run_loop.QuitClosure())); | 296 new CallbackTester(run_loop.QuitClosure())); |
| 293 | 297 |
| 294 InstallableParams params; | 298 InstallableParams params; |
| 295 NavigateAndRunInstallableManager(tester.get(), params, | 299 NavigateAndRunInstallableManager(tester.get(), params, |
| 296 "/banners/manifest_test_page.html"); | 300 "/banners/manifest_test_page.html"); |
| 297 run_loop.Run(); | 301 run_loop.Run(); |
| 298 | 302 |
| 299 EXPECT_FALSE(tester->manifest().IsEmpty()); | 303 EXPECT_FALSE(tester->manifest().IsEmpty()); |
| 300 EXPECT_FALSE(tester->manifest_url().is_empty()); | 304 EXPECT_FALSE(tester->manifest_url().is_empty()); |
| 301 | 305 |
| 302 EXPECT_TRUE(tester->primary_icon_url().is_empty()); | 306 EXPECT_TRUE(tester->primary_icon_url().is_empty()); |
| 303 EXPECT_EQ(nullptr, tester->primary_icon()); | 307 EXPECT_EQ(nullptr, tester->primary_icon()); |
| 304 EXPECT_TRUE(tester->badge_icon_url().is_empty()); | 308 EXPECT_TRUE(tester->badge_icon_url().is_empty()); |
| 305 EXPECT_EQ(nullptr, tester->badge_icon()); | 309 EXPECT_EQ(nullptr, tester->badge_icon()); |
| 306 EXPECT_FALSE(tester->is_installable()); | 310 EXPECT_FALSE(tester->is_installable()); |
| 307 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); | 311 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); |
| 312 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED); |
| 308 } | 313 } |
| 309 | 314 |
| 310 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, | 315 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, |
| 311 CheckManifestWithOnlyRelatedApplications) { | 316 CheckManifestWithOnlyRelatedApplications) { |
| 312 // This page has a manifest with only related applications specified. Asking | 317 // This page has a manifest with only related applications specified. Asking |
| 313 // for just the manifest should succeed. | 318 // for just the manifest should succeed. |
| 314 { | 319 { |
| 315 base::RunLoop run_loop; | 320 base::RunLoop run_loop; |
| 316 std::unique_ptr<CallbackTester> tester( | 321 std::unique_ptr<CallbackTester> tester( |
| 317 new CallbackTester(run_loop.QuitClosure())); | 322 new CallbackTester(run_loop.QuitClosure())); |
| 318 | 323 |
| 319 NavigateAndRunInstallableManager(tester.get(), GetManifestParams(), | 324 NavigateAndRunInstallableManager(tester.get(), GetManifestParams(), |
| 320 "/banners/play_app_test_page.html"); | 325 "/banners/play_app_test_page.html"); |
| 321 run_loop.Run(); | 326 run_loop.Run(); |
| 322 | 327 |
| 323 EXPECT_FALSE(tester->manifest().IsEmpty()); | 328 EXPECT_FALSE(tester->manifest().IsEmpty()); |
| 324 EXPECT_FALSE(tester->manifest_url().is_empty()); | 329 EXPECT_FALSE(tester->manifest_url().is_empty()); |
| 325 EXPECT_TRUE(tester->manifest().prefer_related_applications); | 330 EXPECT_TRUE(tester->manifest().prefer_related_applications); |
| 326 | 331 |
| 327 EXPECT_TRUE(tester->primary_icon_url().is_empty()); | 332 EXPECT_TRUE(tester->primary_icon_url().is_empty()); |
| 328 EXPECT_EQ(nullptr, tester->primary_icon()); | 333 EXPECT_EQ(nullptr, tester->primary_icon()); |
| 329 EXPECT_TRUE(tester->badge_icon_url().is_empty()); | 334 EXPECT_TRUE(tester->badge_icon_url().is_empty()); |
| 330 EXPECT_EQ(nullptr, tester->badge_icon()); | 335 EXPECT_EQ(nullptr, tester->badge_icon()); |
| 331 EXPECT_FALSE(tester->is_installable()); | 336 EXPECT_FALSE(tester->is_installable()); |
| 332 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); | 337 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); |
| 338 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED); |
| 333 } | 339 } |
| 334 | 340 |
| 335 // 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 |
| 336 // NO_ACCEPTABLE_ICON. | 342 // NO_ACCEPTABLE_ICON. |
| 337 { | 343 { |
| 338 base::RunLoop run_loop; | 344 base::RunLoop run_loop; |
| 339 std::unique_ptr<CallbackTester> tester( | 345 std::unique_ptr<CallbackTester> tester( |
| 340 new CallbackTester(run_loop.QuitClosure())); | 346 new CallbackTester(run_loop.QuitClosure())); |
| 341 | 347 |
| 342 RunInstallableManager(tester.get(), GetPrimaryIconParams()); | 348 RunInstallableManager(tester.get(), GetPrimaryIconParams()); |
| 343 run_loop.Run(); | 349 run_loop.Run(); |
| 344 | 350 |
| 345 EXPECT_FALSE(tester->manifest().IsEmpty()); | 351 EXPECT_FALSE(tester->manifest().IsEmpty()); |
| 346 EXPECT_FALSE(tester->manifest_url().is_empty()); | 352 EXPECT_FALSE(tester->manifest_url().is_empty()); |
| 347 EXPECT_TRUE(tester->manifest().prefer_related_applications); | 353 EXPECT_TRUE(tester->manifest().prefer_related_applications); |
| 348 | 354 |
| 349 EXPECT_TRUE(tester->primary_icon_url().is_empty()); | 355 EXPECT_TRUE(tester->primary_icon_url().is_empty()); |
| 350 EXPECT_EQ(nullptr, tester->primary_icon()); | 356 EXPECT_EQ(nullptr, tester->primary_icon()); |
| 351 EXPECT_TRUE(tester->badge_icon_url().is_empty()); | 357 EXPECT_TRUE(tester->badge_icon_url().is_empty()); |
| 352 EXPECT_EQ(nullptr, tester->badge_icon()); | 358 EXPECT_EQ(nullptr, tester->badge_icon()); |
| 353 EXPECT_FALSE(tester->is_installable()); | 359 EXPECT_FALSE(tester->is_installable()); |
| 354 EXPECT_EQ(NO_ACCEPTABLE_ICON, tester->error_code()); | 360 EXPECT_EQ(NO_ACCEPTABLE_ICON, tester->error_code()); |
| 361 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED); |
| 355 } | 362 } |
| 356 | 363 |
| 357 // Ask for everything except badge icon. This should fail with | 364 // Ask for everything except badge icon. This should fail with |
| 358 // 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 |
| 359 // cached error stops the installable check from being performed. | 366 // cached error stops the installable check from being performed. |
| 360 { | 367 { |
| 361 base::RunLoop run_loop; | 368 base::RunLoop run_loop; |
| 362 std::unique_ptr<CallbackTester> tester( | 369 std::unique_ptr<CallbackTester> tester( |
| 363 new CallbackTester(run_loop.QuitClosure())); | 370 new CallbackTester(run_loop.QuitClosure())); |
| 364 | 371 |
| 365 RunInstallableManager(tester.get(), GetWebAppParams()); | 372 RunInstallableManager(tester.get(), GetWebAppParams()); |
| 366 run_loop.Run(); | 373 run_loop.Run(); |
| 367 | 374 |
| 368 EXPECT_FALSE(tester->manifest().IsEmpty()); | 375 EXPECT_FALSE(tester->manifest().IsEmpty()); |
| 369 EXPECT_FALSE(tester->manifest_url().is_empty()); | 376 EXPECT_FALSE(tester->manifest_url().is_empty()); |
| 370 EXPECT_TRUE(tester->manifest().prefer_related_applications); | 377 EXPECT_TRUE(tester->manifest().prefer_related_applications); |
| 371 | 378 |
| 372 EXPECT_TRUE(tester->primary_icon_url().is_empty()); | 379 EXPECT_TRUE(tester->primary_icon_url().is_empty()); |
| 373 EXPECT_EQ(nullptr, tester->primary_icon()); | 380 EXPECT_EQ(nullptr, tester->primary_icon()); |
| 374 EXPECT_TRUE(tester->badge_icon_url().is_empty()); | 381 EXPECT_TRUE(tester->badge_icon_url().is_empty()); |
| 375 EXPECT_EQ(nullptr, tester->badge_icon()); | 382 EXPECT_EQ(nullptr, tester->badge_icon()); |
| 376 EXPECT_FALSE(tester->is_installable()); | 383 EXPECT_FALSE(tester->is_installable()); |
| 377 EXPECT_EQ(NO_ACCEPTABLE_ICON, tester->error_code()); | 384 EXPECT_EQ(NO_ACCEPTABLE_ICON, tester->error_code()); |
| 385 EXPECT_EQ(GetStatus(), |
| 386 InstallabilityCheckStatus::COMPLETE_NON_PROGRESSIVE_WEB_APP); |
| 378 } | 387 } |
| 379 | 388 |
| 380 // Ask for a different size primary icon. This should fail with | 389 // Ask for a different size primary icon. This should fail with |
| 381 // START_URL_NOT_VALID since we won't have a cached icon error. | 390 // START_URL_NOT_VALID since we won't have a cached icon error. |
| 382 { | 391 { |
| 383 base::RunLoop run_loop; | 392 base::RunLoop run_loop; |
| 384 std::unique_ptr<CallbackTester> tester( | 393 std::unique_ptr<CallbackTester> tester( |
| 385 new CallbackTester(run_loop.QuitClosure())); | 394 new CallbackTester(run_loop.QuitClosure())); |
| 386 | 395 |
| 387 InstallableParams params = GetWebAppParams(); | 396 InstallableParams params = GetWebAppParams(); |
| 388 params.ideal_primary_icon_size_in_px = 96; | 397 params.ideal_primary_icon_size_in_px = 96; |
| 389 params.minimum_primary_icon_size_in_px = 96; | 398 params.minimum_primary_icon_size_in_px = 96; |
| 390 RunInstallableManager(tester.get(), params); | 399 RunInstallableManager(tester.get(), params); |
| 391 run_loop.Run(); | 400 run_loop.Run(); |
| 392 | 401 |
| 393 EXPECT_FALSE(tester->manifest().IsEmpty()); | 402 EXPECT_FALSE(tester->manifest().IsEmpty()); |
| 394 EXPECT_FALSE(tester->manifest_url().is_empty()); | 403 EXPECT_FALSE(tester->manifest_url().is_empty()); |
| 395 EXPECT_TRUE(tester->manifest().prefer_related_applications); | 404 EXPECT_TRUE(tester->manifest().prefer_related_applications); |
| 396 | 405 |
| 397 EXPECT_TRUE(tester->primary_icon_url().is_empty()); | 406 EXPECT_TRUE(tester->primary_icon_url().is_empty()); |
| 398 EXPECT_EQ(nullptr, tester->primary_icon()); | 407 EXPECT_EQ(nullptr, tester->primary_icon()); |
| 399 EXPECT_TRUE(tester->badge_icon_url().is_empty()); | 408 EXPECT_TRUE(tester->badge_icon_url().is_empty()); |
| 400 EXPECT_EQ(nullptr, tester->badge_icon()); | 409 EXPECT_EQ(nullptr, tester->badge_icon()); |
| 401 EXPECT_FALSE(tester->is_installable()); | 410 EXPECT_FALSE(tester->is_installable()); |
| 402 EXPECT_EQ(START_URL_NOT_VALID, tester->error_code()); | 411 EXPECT_EQ(START_URL_NOT_VALID, tester->error_code()); |
| 412 EXPECT_EQ(GetStatus(), |
| 413 InstallabilityCheckStatus::COMPLETE_NON_PROGRESSIVE_WEB_APP); |
| 403 } | 414 } |
| 404 } | 415 } |
| 405 | 416 |
| 406 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckManifestAndIcon) { | 417 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckManifestAndIcon) { |
| 407 // Add to homescreen checks for manifest + primary icon. | 418 // Add to homescreen checks for manifest + primary icon. |
| 408 { | 419 { |
| 409 base::RunLoop run_loop; | 420 base::RunLoop run_loop; |
| 410 std::unique_ptr<CallbackTester> tester( | 421 std::unique_ptr<CallbackTester> tester( |
| 411 new CallbackTester(run_loop.QuitClosure())); | 422 new CallbackTester(run_loop.QuitClosure())); |
| 412 | 423 |
| 413 NavigateAndRunInstallableManager(tester.get(), GetPrimaryIconParams(), | 424 NavigateAndRunInstallableManager(tester.get(), GetPrimaryIconParams(), |
| 414 "/banners/manifest_test_page.html"); | 425 "/banners/manifest_test_page.html"); |
| 415 run_loop.Run(); | 426 run_loop.Run(); |
| 416 | 427 |
| 417 EXPECT_FALSE(tester->manifest().IsEmpty()); | 428 EXPECT_FALSE(tester->manifest().IsEmpty()); |
| 418 EXPECT_FALSE(tester->manifest_url().is_empty()); | 429 EXPECT_FALSE(tester->manifest_url().is_empty()); |
| 419 | 430 |
| 420 EXPECT_FALSE(tester->primary_icon_url().is_empty()); | 431 EXPECT_FALSE(tester->primary_icon_url().is_empty()); |
| 421 EXPECT_NE(nullptr, tester->primary_icon()); | 432 EXPECT_NE(nullptr, tester->primary_icon()); |
| 422 EXPECT_TRUE(tester->badge_icon_url().is_empty()); | 433 EXPECT_TRUE(tester->badge_icon_url().is_empty()); |
| 423 EXPECT_EQ(nullptr, tester->badge_icon()); | 434 EXPECT_EQ(nullptr, tester->badge_icon()); |
| 424 EXPECT_FALSE(tester->is_installable()); | 435 EXPECT_FALSE(tester->is_installable()); |
| 425 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); | 436 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); |
| 437 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED); |
| 426 } | 438 } |
| 427 | 439 |
| 428 // Add to homescreen checks for manifest + primary icon + badge icon. | 440 // Add to homescreen checks for manifest + primary icon + badge icon. |
| 429 { | 441 { |
| 430 base::RunLoop run_loop; | 442 base::RunLoop run_loop; |
| 431 std::unique_ptr<CallbackTester> tester( | 443 std::unique_ptr<CallbackTester> tester( |
| 432 new CallbackTester(run_loop.QuitClosure())); | 444 new CallbackTester(run_loop.QuitClosure())); |
| 433 | 445 |
| 434 RunInstallableManager(tester.get(), GetPrimaryIconAndBadgeIconParams()); | 446 RunInstallableManager(tester.get(), GetPrimaryIconAndBadgeIconParams()); |
| 435 run_loop.Run(); | 447 run_loop.Run(); |
| 436 | 448 |
| 437 EXPECT_FALSE(tester->manifest().IsEmpty()); | 449 EXPECT_FALSE(tester->manifest().IsEmpty()); |
| 438 EXPECT_FALSE(tester->manifest_url().is_empty()); | 450 EXPECT_FALSE(tester->manifest_url().is_empty()); |
| 439 | 451 |
| 440 EXPECT_FALSE(tester->primary_icon_url().is_empty()); | 452 EXPECT_FALSE(tester->primary_icon_url().is_empty()); |
| 441 EXPECT_NE(nullptr, tester->primary_icon()); | 453 EXPECT_NE(nullptr, tester->primary_icon()); |
| 442 EXPECT_FALSE(tester->badge_icon_url().is_empty()); | 454 EXPECT_FALSE(tester->badge_icon_url().is_empty()); |
| 443 EXPECT_NE(nullptr, tester->badge_icon()); | 455 EXPECT_NE(nullptr, tester->badge_icon()); |
| 444 EXPECT_FALSE(tester->is_installable()); | 456 EXPECT_FALSE(tester->is_installable()); |
| 445 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); | 457 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); |
| 458 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED); |
| 446 } | 459 } |
| 447 | 460 |
| 448 // Request an oversized badge icon. This should fetch only the manifest and | 461 // Request an oversized badge icon. This should fetch only the manifest and |
| 449 // the primary icon, and return no errors. | 462 // the primary icon, and return no errors. |
| 450 { | 463 { |
| 451 base::RunLoop run_loop; | 464 base::RunLoop run_loop; |
| 452 std::unique_ptr<CallbackTester> tester( | 465 std::unique_ptr<CallbackTester> tester( |
| 453 new CallbackTester(run_loop.QuitClosure())); | 466 new CallbackTester(run_loop.QuitClosure())); |
| 454 | 467 |
| 455 InstallableParams params = GetPrimaryIconAndBadgeIconParams(); | 468 InstallableParams params = GetPrimaryIconAndBadgeIconParams(); |
| 456 params.ideal_badge_icon_size_in_px = 2000; | 469 params.ideal_badge_icon_size_in_px = 2000; |
| 457 params.minimum_badge_icon_size_in_px = 2000; | 470 params.minimum_badge_icon_size_in_px = 2000; |
| 458 RunInstallableManager(tester.get(), params); | 471 RunInstallableManager(tester.get(), params); |
| 459 run_loop.Run(); | 472 run_loop.Run(); |
| 460 | 473 |
| 461 EXPECT_FALSE(tester->manifest().IsEmpty()); | 474 EXPECT_FALSE(tester->manifest().IsEmpty()); |
| 462 EXPECT_FALSE(tester->manifest_url().is_empty()); | 475 EXPECT_FALSE(tester->manifest_url().is_empty()); |
| 463 | 476 |
| 464 EXPECT_FALSE(tester->primary_icon_url().is_empty()); | 477 EXPECT_FALSE(tester->primary_icon_url().is_empty()); |
| 465 EXPECT_NE(nullptr, tester->primary_icon()); | 478 EXPECT_NE(nullptr, tester->primary_icon()); |
| 466 EXPECT_TRUE(tester->badge_icon_url().is_empty()); | 479 EXPECT_TRUE(tester->badge_icon_url().is_empty()); |
| 467 EXPECT_EQ(nullptr, tester->badge_icon()); | 480 EXPECT_EQ(nullptr, tester->badge_icon()); |
| 468 EXPECT_FALSE(tester->is_installable()); | 481 EXPECT_FALSE(tester->is_installable()); |
| 469 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); | 482 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); |
| 483 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED); |
| 470 } | 484 } |
| 471 } | 485 } |
| 472 | 486 |
| 473 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckWebapp) { | 487 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckWebapp) { |
| 474 // Request everything except badge icon. | 488 // Request everything except badge icon. |
| 475 { | 489 { |
| 476 base::RunLoop run_loop; | 490 base::RunLoop run_loop; |
| 477 std::unique_ptr<CallbackTester> tester( | 491 std::unique_ptr<CallbackTester> tester( |
| 478 new CallbackTester(run_loop.QuitClosure())); | 492 new CallbackTester(run_loop.QuitClosure())); |
| 479 | 493 |
| 480 NavigateAndRunInstallableManager(tester.get(), GetWebAppParams(), | 494 NavigateAndRunInstallableManager(tester.get(), GetWebAppParams(), |
| 481 "/banners/manifest_test_page.html"); | 495 "/banners/manifest_test_page.html"); |
| 482 run_loop.Run(); | 496 run_loop.Run(); |
| 483 | 497 |
| 484 EXPECT_FALSE(tester->manifest().IsEmpty()); | 498 EXPECT_FALSE(tester->manifest().IsEmpty()); |
| 485 EXPECT_FALSE(tester->manifest_url().is_empty()); | 499 EXPECT_FALSE(tester->manifest_url().is_empty()); |
| 486 EXPECT_TRUE(tester->is_installable()); | 500 EXPECT_TRUE(tester->is_installable()); |
| 487 EXPECT_FALSE(tester->primary_icon_url().is_empty()); | 501 EXPECT_FALSE(tester->primary_icon_url().is_empty()); |
| 488 EXPECT_NE(nullptr, tester->primary_icon()); | 502 EXPECT_NE(nullptr, tester->primary_icon()); |
| 489 EXPECT_TRUE(tester->badge_icon_url().is_empty()); | 503 EXPECT_TRUE(tester->badge_icon_url().is_empty()); |
| 490 EXPECT_EQ(nullptr, tester->badge_icon()); | 504 EXPECT_EQ(nullptr, tester->badge_icon()); |
| 491 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); | 505 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); |
| 506 EXPECT_EQ(GetStatus(), |
| 507 InstallabilityCheckStatus::COMPLETE_PROGRESSIVE_WEB_APP); |
| 492 | 508 |
| 493 // Verify that the returned state matches manager internal state. | 509 // Verify that the returned state matches manager internal state. |
| 494 InstallableManager* manager = GetManager(); | 510 InstallableManager* manager = GetManager(); |
| 495 | 511 |
| 496 EXPECT_FALSE(manager->manifest().IsEmpty()); | 512 EXPECT_FALSE(manager->manifest().IsEmpty()); |
| 497 EXPECT_FALSE(manager->manifest_url().is_empty()); | 513 EXPECT_FALSE(manager->manifest_url().is_empty()); |
| 498 EXPECT_TRUE(manager->is_installable()); | 514 EXPECT_TRUE(manager->is_installable()); |
| 499 EXPECT_EQ(1u, manager->icons_.size()); | 515 EXPECT_EQ(1u, manager->icons_.size()); |
| 500 EXPECT_FALSE((manager->icon_url(kPrimaryIconParams).is_empty())); | 516 EXPECT_FALSE((manager->icon_url(kPrimaryIconParams).is_empty())); |
| 501 EXPECT_NE(nullptr, (manager->icon(kPrimaryIconParams))); | 517 EXPECT_NE(nullptr, (manager->icon(kPrimaryIconParams))); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 516 run_loop.Run(); | 532 run_loop.Run(); |
| 517 | 533 |
| 518 EXPECT_FALSE(tester->manifest().IsEmpty()); | 534 EXPECT_FALSE(tester->manifest().IsEmpty()); |
| 519 EXPECT_FALSE(tester->manifest_url().is_empty()); | 535 EXPECT_FALSE(tester->manifest_url().is_empty()); |
| 520 EXPECT_TRUE(tester->is_installable()); | 536 EXPECT_TRUE(tester->is_installable()); |
| 521 EXPECT_FALSE(tester->primary_icon_url().is_empty()); | 537 EXPECT_FALSE(tester->primary_icon_url().is_empty()); |
| 522 EXPECT_NE(nullptr, tester->primary_icon()); | 538 EXPECT_NE(nullptr, tester->primary_icon()); |
| 523 EXPECT_TRUE(tester->badge_icon_url().is_empty()); | 539 EXPECT_TRUE(tester->badge_icon_url().is_empty()); |
| 524 EXPECT_EQ(nullptr, tester->badge_icon()); | 540 EXPECT_EQ(nullptr, tester->badge_icon()); |
| 525 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); | 541 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); |
| 542 EXPECT_EQ(GetStatus(), |
| 543 InstallabilityCheckStatus::COMPLETE_PROGRESSIVE_WEB_APP); |
| 526 | 544 |
| 527 // Verify that the returned state matches manager internal state. | 545 // Verify that the returned state matches manager internal state. |
| 528 InstallableManager* manager = GetManager(); | 546 InstallableManager* manager = GetManager(); |
| 529 | 547 |
| 530 EXPECT_FALSE(manager->manifest().IsEmpty()); | 548 EXPECT_FALSE(manager->manifest().IsEmpty()); |
| 531 EXPECT_FALSE(manager->manifest_url().is_empty()); | 549 EXPECT_FALSE(manager->manifest_url().is_empty()); |
| 532 EXPECT_TRUE(manager->is_installable()); | 550 EXPECT_TRUE(manager->is_installable()); |
| 533 EXPECT_EQ(1u, manager->icons_.size()); | 551 EXPECT_EQ(1u, manager->icons_.size()); |
| 534 EXPECT_FALSE((manager->icon_url(kPrimaryIconParams).is_empty())); | 552 EXPECT_FALSE((manager->icon_url(kPrimaryIconParams).is_empty())); |
| 535 EXPECT_NE(nullptr, (manager->icon(kPrimaryIconParams))); | 553 EXPECT_NE(nullptr, (manager->icon(kPrimaryIconParams))); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 566 // The installable manager should only retrieve items in the main frame; | 584 // The installable manager should only retrieve items in the main frame; |
| 567 // everything should be empty here. | 585 // everything should be empty here. |
| 568 EXPECT_TRUE(tester->manifest().IsEmpty()); | 586 EXPECT_TRUE(tester->manifest().IsEmpty()); |
| 569 EXPECT_TRUE(tester->manifest_url().is_empty()); | 587 EXPECT_TRUE(tester->manifest_url().is_empty()); |
| 570 EXPECT_TRUE(tester->primary_icon_url().is_empty()); | 588 EXPECT_TRUE(tester->primary_icon_url().is_empty()); |
| 571 EXPECT_EQ(nullptr, tester->primary_icon()); | 589 EXPECT_EQ(nullptr, tester->primary_icon()); |
| 572 EXPECT_TRUE(tester->badge_icon_url().is_empty()); | 590 EXPECT_TRUE(tester->badge_icon_url().is_empty()); |
| 573 EXPECT_EQ(nullptr, tester->badge_icon()); | 591 EXPECT_EQ(nullptr, tester->badge_icon()); |
| 574 EXPECT_FALSE(tester->is_installable()); | 592 EXPECT_FALSE(tester->is_installable()); |
| 575 EXPECT_EQ(NO_MANIFEST, tester->error_code()); | 593 EXPECT_EQ(NO_MANIFEST, tester->error_code()); |
| 594 EXPECT_EQ(GetStatus(), |
| 595 InstallabilityCheckStatus::COMPLETE_NON_PROGRESSIVE_WEB_APP); |
| 576 } | 596 } |
| 577 | 597 |
| 578 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, | 598 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, |
| 579 CheckPageWithManifestAndNoServiceWorker) { | 599 CheckPageWithManifestAndNoServiceWorker) { |
| 580 // Just fetch the manifest. This should have no error. | 600 // Just fetch the manifest. This should have no error. |
| 581 { | 601 { |
| 582 base::RunLoop run_loop; | 602 base::RunLoop run_loop; |
| 583 std::unique_ptr<CallbackTester> tester( | 603 std::unique_ptr<CallbackTester> tester( |
| 584 new CallbackTester(run_loop.QuitClosure())); | 604 new CallbackTester(run_loop.QuitClosure())); |
| 585 | 605 |
| 586 NavigateAndRunInstallableManager( | 606 NavigateAndRunInstallableManager( |
| 587 tester.get(), GetManifestParams(), | 607 tester.get(), GetManifestParams(), |
| 588 "/banners/manifest_no_service_worker.html"); | 608 "/banners/manifest_no_service_worker.html"); |
| 589 run_loop.Run(); | 609 run_loop.Run(); |
| 590 | 610 |
| 591 EXPECT_FALSE(tester->manifest().IsEmpty()); | 611 EXPECT_FALSE(tester->manifest().IsEmpty()); |
| 592 EXPECT_FALSE(tester->manifest_url().is_empty()); | 612 EXPECT_FALSE(tester->manifest_url().is_empty()); |
| 593 | 613 |
| 594 EXPECT_TRUE(tester->primary_icon_url().is_empty()); | 614 EXPECT_TRUE(tester->primary_icon_url().is_empty()); |
| 595 EXPECT_EQ(nullptr, tester->primary_icon()); | 615 EXPECT_EQ(nullptr, tester->primary_icon()); |
| 596 EXPECT_TRUE(tester->badge_icon_url().is_empty()); | 616 EXPECT_TRUE(tester->badge_icon_url().is_empty()); |
| 597 EXPECT_EQ(nullptr, tester->badge_icon()); | 617 EXPECT_EQ(nullptr, tester->badge_icon()); |
| 598 EXPECT_FALSE(tester->is_installable()); | 618 EXPECT_FALSE(tester->is_installable()); |
| 599 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); | 619 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); |
| 620 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED); |
| 600 } | 621 } |
| 601 | 622 |
| 602 // Fetch the full criteria should fail. | 623 // Fetch the full criteria should fail. |
| 603 { | 624 { |
| 604 base::RunLoop run_loop; | 625 base::RunLoop run_loop; |
| 605 std::unique_ptr<CallbackTester> tester( | 626 std::unique_ptr<CallbackTester> tester( |
| 606 new CallbackTester(run_loop.QuitClosure())); | 627 new CallbackTester(run_loop.QuitClosure())); |
| 607 | 628 |
| 608 RunInstallableManager(tester.get(), GetWebAppParams()); | 629 RunInstallableManager(tester.get(), GetWebAppParams()); |
| 609 run_loop.Run(); | 630 run_loop.Run(); |
| 610 | 631 |
| 611 EXPECT_FALSE(tester->manifest().IsEmpty()); | 632 EXPECT_FALSE(tester->manifest().IsEmpty()); |
| 612 EXPECT_FALSE(tester->manifest_url().is_empty()); | 633 EXPECT_FALSE(tester->manifest_url().is_empty()); |
| 613 | 634 |
| 614 EXPECT_TRUE(tester->primary_icon_url().is_empty()); | 635 EXPECT_TRUE(tester->primary_icon_url().is_empty()); |
| 615 EXPECT_EQ(nullptr, tester->primary_icon()); | 636 EXPECT_EQ(nullptr, tester->primary_icon()); |
| 616 EXPECT_TRUE(tester->badge_icon_url().is_empty()); | 637 EXPECT_TRUE(tester->badge_icon_url().is_empty()); |
| 617 EXPECT_EQ(nullptr, tester->badge_icon()); | 638 EXPECT_EQ(nullptr, tester->badge_icon()); |
| 618 EXPECT_FALSE(tester->is_installable()); | 639 EXPECT_FALSE(tester->is_installable()); |
| 619 EXPECT_EQ(NO_MATCHING_SERVICE_WORKER, tester->error_code()); | 640 EXPECT_EQ(NO_MATCHING_SERVICE_WORKER, tester->error_code()); |
| 641 EXPECT_EQ(GetStatus(), |
| 642 InstallabilityCheckStatus::COMPLETE_NON_PROGRESSIVE_WEB_APP); |
| 620 } | 643 } |
| 621 } | 644 } |
| 622 | 645 |
| 623 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, | 646 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, |
| 624 CheckPageWithNoServiceWorkerFetchHandler) { | 647 CheckPageWithNoServiceWorkerFetchHandler) { |
| 625 base::RunLoop run_loop; | 648 base::RunLoop run_loop; |
| 626 std::unique_ptr<CallbackTester> tester( | 649 std::unique_ptr<CallbackTester> tester( |
| 627 new CallbackTester(run_loop.QuitClosure())); | 650 new CallbackTester(run_loop.QuitClosure())); |
| 628 | 651 |
| 629 NavigateAndRunInstallableManager( | 652 NavigateAndRunInstallableManager( |
| 630 tester.get(), GetWebAppParams(), | 653 tester.get(), GetWebAppParams(), |
| 631 "/banners/no_sw_fetch_handler_test_page.html"); | 654 "/banners/no_sw_fetch_handler_test_page.html"); |
| 632 | 655 |
| 633 RunInstallableManager(tester.get(), GetWebAppParams()); | 656 RunInstallableManager(tester.get(), GetWebAppParams()); |
| 634 run_loop.Run(); | 657 run_loop.Run(); |
| 635 | 658 |
| 636 EXPECT_FALSE(tester->manifest().IsEmpty()); | 659 EXPECT_FALSE(tester->manifest().IsEmpty()); |
| 637 EXPECT_FALSE(tester->manifest_url().is_empty()); | 660 EXPECT_FALSE(tester->manifest_url().is_empty()); |
| 638 | 661 |
| 639 EXPECT_TRUE(tester->primary_icon_url().is_empty()); | 662 EXPECT_TRUE(tester->primary_icon_url().is_empty()); |
| 640 EXPECT_EQ(nullptr, tester->primary_icon()); | 663 EXPECT_EQ(nullptr, tester->primary_icon()); |
| 641 EXPECT_TRUE(tester->badge_icon_url().is_empty()); | 664 EXPECT_TRUE(tester->badge_icon_url().is_empty()); |
| 642 EXPECT_EQ(nullptr, tester->badge_icon()); | 665 EXPECT_EQ(nullptr, tester->badge_icon()); |
| 643 EXPECT_FALSE(tester->is_installable()); | 666 EXPECT_FALSE(tester->is_installable()); |
| 644 EXPECT_EQ(NOT_OFFLINE_CAPABLE, tester->error_code()); | 667 EXPECT_EQ(NOT_OFFLINE_CAPABLE, tester->error_code()); |
| 668 EXPECT_EQ(GetStatus(), |
| 669 InstallabilityCheckStatus::COMPLETE_NON_PROGRESSIVE_WEB_APP); |
| 645 } | 670 } |
| 646 | 671 |
| 647 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckDataUrlIcon) { | 672 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckDataUrlIcon) { |
| 648 // Verify that InstallableManager can handle data URL icons. | 673 // Verify that InstallableManager can handle data URL icons. |
| 649 base::RunLoop run_loop; | 674 base::RunLoop run_loop; |
| 650 std::unique_ptr<CallbackTester> tester( | 675 std::unique_ptr<CallbackTester> tester( |
| 651 new CallbackTester(run_loop.QuitClosure())); | 676 new CallbackTester(run_loop.QuitClosure())); |
| 652 | 677 |
| 653 NavigateAndRunInstallableManager(tester.get(), GetWebAppParams(), | 678 NavigateAndRunInstallableManager(tester.get(), GetWebAppParams(), |
| 654 GetURLOfPageWithServiceWorkerAndManifest( | 679 GetURLOfPageWithServiceWorkerAndManifest( |
| 655 "/banners/manifest_data_url_icon.json")); | 680 "/banners/manifest_data_url_icon.json")); |
| 656 run_loop.Run(); | 681 run_loop.Run(); |
| 657 | 682 |
| 658 EXPECT_FALSE(tester->manifest().IsEmpty()); | 683 EXPECT_FALSE(tester->manifest().IsEmpty()); |
| 659 EXPECT_FALSE(tester->manifest_url().is_empty()); | 684 EXPECT_FALSE(tester->manifest_url().is_empty()); |
| 660 | 685 |
| 661 EXPECT_FALSE(tester->primary_icon_url().is_empty()); | 686 EXPECT_FALSE(tester->primary_icon_url().is_empty()); |
| 662 EXPECT_NE(nullptr, tester->primary_icon()); | 687 EXPECT_NE(nullptr, tester->primary_icon()); |
| 663 EXPECT_EQ(144, tester->primary_icon()->width()); | 688 EXPECT_EQ(144, tester->primary_icon()->width()); |
| 664 EXPECT_TRUE(tester->badge_icon_url().is_empty()); | 689 EXPECT_TRUE(tester->badge_icon_url().is_empty()); |
| 665 EXPECT_EQ(nullptr, tester->badge_icon()); | 690 EXPECT_EQ(nullptr, tester->badge_icon()); |
| 666 EXPECT_TRUE(tester->is_installable()); | 691 EXPECT_TRUE(tester->is_installable()); |
| 667 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); | 692 EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); |
| 693 EXPECT_EQ(GetStatus(), |
| 694 InstallabilityCheckStatus::COMPLETE_PROGRESSIVE_WEB_APP); |
| 668 } | 695 } |
| 669 | 696 |
| 670 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, | 697 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, |
| 671 CheckManifestCorruptedIcon) { | 698 CheckManifestCorruptedIcon) { |
| 672 // Verify that the returned InstallableData::primary_icon is null if the web | 699 // Verify that the returned InstallableData::primary_icon is null if the web |
| 673 // manifest points to a corrupt primary icon. | 700 // manifest points to a corrupt primary icon. |
| 674 base::RunLoop run_loop; | 701 base::RunLoop run_loop; |
| 675 std::unique_ptr<CallbackTester> tester( | 702 std::unique_ptr<CallbackTester> tester( |
| 676 new CallbackTester(run_loop.QuitClosure())); | 703 new CallbackTester(run_loop.QuitClosure())); |
| 677 | 704 |
| 678 NavigateAndRunInstallableManager(tester.get(), GetPrimaryIconParams(), | 705 NavigateAndRunInstallableManager(tester.get(), GetPrimaryIconParams(), |
| 679 GetURLOfPageWithServiceWorkerAndManifest( | 706 GetURLOfPageWithServiceWorkerAndManifest( |
| 680 "/banners/manifest_bad_icon.json")); | 707 "/banners/manifest_bad_icon.json")); |
| 681 run_loop.Run(); | 708 run_loop.Run(); |
| 682 | 709 |
| 683 EXPECT_FALSE(tester->manifest().IsEmpty()); | 710 EXPECT_FALSE(tester->manifest().IsEmpty()); |
| 684 EXPECT_FALSE(tester->manifest_url().is_empty()); | 711 EXPECT_FALSE(tester->manifest_url().is_empty()); |
| 685 EXPECT_TRUE(tester->primary_icon_url().is_empty()); | 712 EXPECT_TRUE(tester->primary_icon_url().is_empty()); |
| 686 EXPECT_EQ(nullptr, tester->primary_icon()); | 713 EXPECT_EQ(nullptr, tester->primary_icon()); |
| 687 EXPECT_TRUE(tester->badge_icon_url().is_empty()); | 714 EXPECT_TRUE(tester->badge_icon_url().is_empty()); |
| 688 EXPECT_EQ(nullptr, tester->badge_icon()); | 715 EXPECT_EQ(nullptr, tester->badge_icon()); |
| 689 EXPECT_FALSE(tester->is_installable()); | 716 EXPECT_FALSE(tester->is_installable()); |
| 690 EXPECT_EQ(NO_ICON_AVAILABLE, tester->error_code()); | 717 EXPECT_EQ(NO_ICON_AVAILABLE, tester->error_code()); |
| 718 EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_STARTED); |
| 691 } | 719 } |
| 692 | 720 |
| 693 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, | 721 IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, |
| 694 CheckChangeInIconDimensions) { | 722 CheckChangeInIconDimensions) { |
| 695 // Verify that a follow-up request for a primary icon with a different size | 723 // Verify that a follow-up request for a primary icon with a different size |
| 696 // works. | 724 // works. |
| 697 { | 725 { |
| 698 base::RunLoop run_loop; | 726 base::RunLoop run_loop; |
| 699 std::unique_ptr<CallbackTester> tester( | 727 std::unique_ptr<CallbackTester> tester( |
| 700 new CallbackTester(run_loop.QuitClosure())); | 728 new CallbackTester(run_loop.QuitClosure())); |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 785 CheckNestedCallsToGetData) { | 813 CheckNestedCallsToGetData) { |
| 786 // Verify that we can call GetData while in a callback from GetData. | 814 // Verify that we can call GetData while in a callback from GetData. |
| 787 base::RunLoop run_loop; | 815 base::RunLoop run_loop; |
| 788 InstallableParams params = GetWebAppParams(); | 816 InstallableParams params = GetWebAppParams(); |
| 789 std::unique_ptr<NestedCallbackTester> tester( | 817 std::unique_ptr<NestedCallbackTester> tester( |
| 790 new NestedCallbackTester(GetManager(), params, run_loop.QuitClosure())); | 818 new NestedCallbackTester(GetManager(), params, run_loop.QuitClosure())); |
| 791 | 819 |
| 792 tester->Run(); | 820 tester->Run(); |
| 793 run_loop.Run(); | 821 run_loop.Run(); |
| 794 } | 822 } |
| OLD | NEW |