Index: chrome/browser/installable/installable_manager_browsertest.cc |
diff --git a/chrome/browser/installable/installable_manager_browsertest.cc b/chrome/browser/installable/installable_manager_browsertest.cc |
index 58cabb85b4996b4dd1ff2f2960ffff70113aa860..65b89f449d0f4c4a93970345886b2acc32006234 100644 |
--- a/chrome/browser/installable/installable_manager_browsertest.cc |
+++ b/chrome/browser/installable/installable_manager_browsertest.cc |
@@ -214,7 +214,8 @@ IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, |
EXPECT_FALSE(manager->is_installable()); |
EXPECT_EQ(NO_ERROR_DETECTED, manager->manifest_error()); |
- EXPECT_EQ(NO_ERROR_DETECTED, manager->installable_error()); |
+ EXPECT_EQ(NO_ERROR_DETECTED, manager->valid_manifest_error()); |
+ EXPECT_EQ(NO_ERROR_DETECTED, manager->worker_error()); |
EXPECT_TRUE(manager->tasks_.empty()); |
} |
@@ -543,7 +544,8 @@ IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckWebapp) { |
EXPECT_FALSE((manager->icon_url(kPrimaryIconParams).is_empty())); |
EXPECT_NE(nullptr, (manager->icon(kPrimaryIconParams))); |
EXPECT_EQ(NO_ERROR_DETECTED, manager->manifest_error()); |
- EXPECT_EQ(NO_ERROR_DETECTED, manager->installable_error()); |
+ EXPECT_EQ(NO_ERROR_DETECTED, manager->valid_manifest_error()); |
+ EXPECT_EQ(NO_ERROR_DETECTED, manager->worker_error()); |
EXPECT_EQ(NO_ERROR_DETECTED, (manager->icon_error(kPrimaryIconParams))); |
EXPECT_TRUE(manager->tasks_.empty()); |
} |
@@ -579,7 +581,8 @@ IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckWebapp) { |
EXPECT_FALSE((manager->icon_url(kPrimaryIconParams).is_empty())); |
EXPECT_NE(nullptr, (manager->icon(kPrimaryIconParams))); |
EXPECT_EQ(NO_ERROR_DETECTED, manager->manifest_error()); |
- EXPECT_EQ(NO_ERROR_DETECTED, manager->installable_error()); |
+ EXPECT_EQ(NO_ERROR_DETECTED, manager->valid_manifest_error()); |
+ EXPECT_EQ(NO_ERROR_DETECTED, manager->worker_error()); |
EXPECT_EQ(NO_ERROR_DETECTED, (manager->icon_error(kPrimaryIconParams))); |
EXPECT_TRUE(manager->tasks_.empty()); |
} |
@@ -594,7 +597,8 @@ IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, CheckWebapp) { |
EXPECT_FALSE(manager->is_installable()); |
EXPECT_TRUE(manager->icons_.empty()); |
EXPECT_EQ(NO_ERROR_DETECTED, manager->manifest_error()); |
- EXPECT_EQ(NO_ERROR_DETECTED, manager->installable_error()); |
+ EXPECT_EQ(NO_ERROR_DETECTED, manager->valid_manifest_error()); |
+ EXPECT_EQ(NO_ERROR_DETECTED, manager->worker_error()); |
EXPECT_TRUE(manager->tasks_.empty()); |
} |
} |
@@ -647,13 +651,15 @@ IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, |
EXPECT_EQ(GetStatus(), InstallabilityCheckStatus::NOT_COMPLETED); |
} |
- // Fetch the full criteria should fail. |
+ // Fetching the full criteria should fail if we don't wait for the worker. |
{ |
base::RunLoop run_loop; |
std::unique_ptr<CallbackTester> tester( |
new CallbackTester(run_loop.QuitClosure())); |
- RunInstallableManager(tester.get(), GetWebAppParams()); |
+ InstallableParams params = GetWebAppParams(); |
+ params.wait_for_worker = false; |
+ RunInstallableManager(tester.get(), params); |
run_loop.Run(); |
EXPECT_FALSE(tester->manifest().IsEmpty()); |
@@ -670,6 +676,59 @@ IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, |
} |
} |
+IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, |
+ CheckLazyServiceWorkerFailsWithoutWaiting) { |
+ base::RunLoop run_loop; |
+ std::unique_ptr<CallbackTester> tester( |
+ new CallbackTester(run_loop.QuitClosure())); |
+ |
+ // This page registers its worker after a short delay. Verify the check |
+ // deterministically fails if we don't wait for the worker. |
+ InstallableParams params = GetWebAppParams(); |
+ params.wait_for_worker = false; |
+ NavigateAndRunInstallableManager( |
+ tester.get(), params, |
+ "/banners/lazy_service_worker_test_page.html?swdelay=500"); |
benwells
2017/06/15 04:42:43
Is the 500 important here? Just asking as 300 chan
dominickn
2017/06/15 04:50:12
In my empirical testing, 300ms was originally long
|
+ run_loop.Run(); |
+ |
+ EXPECT_FALSE(tester->manifest().IsEmpty()); |
+ EXPECT_FALSE(tester->manifest_url().is_empty()); |
+ |
+ EXPECT_FALSE(tester->primary_icon_url().is_empty()); |
+ EXPECT_NE(nullptr, tester->primary_icon()); |
+ EXPECT_FALSE(tester->is_installable()); |
+ EXPECT_TRUE(tester->badge_icon_url().is_empty()); |
+ EXPECT_EQ(nullptr, tester->badge_icon()); |
+ EXPECT_EQ(NO_MATCHING_SERVICE_WORKER, tester->error_code()); |
+ EXPECT_EQ(GetStatus(), |
+ InstallabilityCheckStatus::COMPLETE_NON_PROGRESSIVE_WEB_APP); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, |
+ CheckLazyServiceWorkerPassesWhenWaiting) { |
+ base::RunLoop run_loop; |
+ std::unique_ptr<CallbackTester> tester( |
+ new CallbackTester(run_loop.QuitClosure())); |
+ |
+ // This page registers its worker after a short delay. Verify the check |
+ // deterministically passes if we do wait for the worker. |
+ NavigateAndRunInstallableManager( |
+ tester.get(), GetWebAppParams(), |
+ "/banners/lazy_service_worker_test_page.html?swdelay=500"); |
+ run_loop.Run(); |
+ |
+ EXPECT_FALSE(tester->manifest().IsEmpty()); |
+ EXPECT_FALSE(tester->manifest_url().is_empty()); |
+ EXPECT_FALSE(tester->primary_icon_url().is_empty()); |
+ EXPECT_NE(nullptr, tester->primary_icon()); |
+ EXPECT_TRUE(tester->is_installable()); |
+ EXPECT_TRUE(tester->badge_icon_url().is_empty()); |
+ EXPECT_EQ(nullptr, tester->badge_icon()); |
+ EXPECT_EQ(NO_ERROR_DETECTED, tester->error_code()); |
+ EXPECT_EQ(GetStatus(), |
+ InstallabilityCheckStatus::COMPLETE_PROGRESSIVE_WEB_APP); |
+} |
+ |
IN_PROC_BROWSER_TEST_F(InstallableManagerBrowserTest, |
CheckPageWithNoServiceWorkerFetchHandler) { |
base::RunLoop run_loop; |