Index: content/browser/background_sync/background_sync_browsertest.cc |
diff --git a/content/browser/background_sync/background_sync_browsertest.cc b/content/browser/background_sync/background_sync_browsertest.cc |
index eb79df9d19cdc42283d0d01d922d32ff1d2d641b..38fddf2453278309de2ef3a5368ac986fa552f03 100644 |
--- a/content/browser/background_sync/background_sync_browsertest.cc |
+++ b/content/browser/background_sync/background_sync_browsertest.cc |
@@ -154,13 +154,20 @@ class BackgroundSyncBrowserTest : public ContentBrowserTest { |
// (assertion failure) if the tag isn't registered. |
bool OneShotPending(const std::string& tag); |
+ std::string PopConsoleString(); |
bool PopConsole(const std::string& expected_msg); |
bool RegisterServiceWorker(); |
bool RegisterOneShot(const std::string& tag); |
+ bool RegisterOneShotFromServiceWorker(const std::string& tag); |
bool UnregisterOneShot(const std::string& tag); |
bool UnregisterOneShotTwice(const std::string& tag); |
bool GetRegistrationOneShot(const std::string& tag); |
+ bool GetRegistrationOneShotFromServiceWorker(const std::string& tag); |
+ bool MatchRegistrations(const std::string& script_result, |
+ const std::vector<std::string>& expected_tags); |
bool GetRegistrationsOneShot(const std::vector<std::string>& expected_tags); |
+ bool GetRegistrationsOneShotFromServiceWorker( |
+ const std::vector<std::string>& expected_tags); |
bool CompleteDelayedOneShot(); |
bool RejectDelayedOneShot(); |
bool NotifyWhenDoneOneShot(const std::string& tag); |
@@ -211,9 +218,14 @@ bool BackgroundSyncBrowserTest::OneShotPending(const std::string& tag) { |
return is_pending; |
} |
-bool BackgroundSyncBrowserTest::PopConsole(const std::string& expected_msg) { |
+std::string BackgroundSyncBrowserTest::PopConsoleString() { |
std::string script_result; |
EXPECT_TRUE(RunScript("resultQueue.pop()", &script_result)); |
+ return script_result; |
+} |
+ |
+bool BackgroundSyncBrowserTest::PopConsole(const std::string& expected_msg) { |
+ std::string script_result = PopConsoleString(); |
return script_result == expected_msg; |
} |
@@ -230,6 +242,15 @@ bool BackgroundSyncBrowserTest::RegisterOneShot(const std::string& tag) { |
return script_result == BuildExpectedResult(tag, "registered"); |
} |
+bool BackgroundSyncBrowserTest::RegisterOneShotFromServiceWorker( |
+ const std::string& tag) { |
+ std::string script_result; |
+ EXPECT_TRUE( |
+ RunScript(BuildScriptString("registerOneShotFromServiceWorker", tag), |
+ &script_result)); |
+ return script_result == BuildExpectedResult(tag, "register sent to SW"); |
+} |
+ |
bool BackgroundSyncBrowserTest::UnregisterOneShot(const std::string& tag) { |
std::string script_result; |
EXPECT_TRUE( |
@@ -252,21 +273,49 @@ bool BackgroundSyncBrowserTest::GetRegistrationOneShot(const std::string& tag) { |
return script_result == BuildExpectedResult(tag, "found"); |
} |
-bool BackgroundSyncBrowserTest::GetRegistrationsOneShot( |
- const std::vector<std::string>& expected_tags) { |
+bool BackgroundSyncBrowserTest::GetRegistrationOneShotFromServiceWorker( |
+ const std::string& tag) { |
std::string script_result; |
- EXPECT_TRUE(RunScript("getRegistrationsOneShot()", &script_result)); |
+ EXPECT_TRUE(RunScript( |
+ BuildScriptString("getRegistrationOneShotFromServiceWorker", tag), |
+ &script_result)); |
+ EXPECT_TRUE(script_result == "ok - getRegistration sent to SW"); |
+ |
+ return PopConsole(BuildExpectedResult(tag, "found")); |
+} |
+bool BackgroundSyncBrowserTest::MatchRegistrations( |
+ const std::string& script_result, |
+ const std::vector<std::string>& expected_tags) { |
EXPECT_TRUE(base::StartsWith(script_result, kSuccessfulOperationPrefix, |
base::CompareCase::INSENSITIVE_ASCII)); |
- script_result = script_result.substr(strlen(kSuccessfulOperationPrefix)); |
+ std::string tag_string = |
+ script_result.substr(strlen(kSuccessfulOperationPrefix)); |
std::vector<std::string> result_tags = base::SplitString( |
- script_result, ",", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL); |
+ tag_string, ",", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL); |
return std::set<std::string>(expected_tags.begin(), expected_tags.end()) == |
std::set<std::string>(result_tags.begin(), result_tags.end()); |
} |
+bool BackgroundSyncBrowserTest::GetRegistrationsOneShot( |
+ const std::vector<std::string>& expected_tags) { |
+ std::string script_result; |
+ EXPECT_TRUE(RunScript("getRegistrationsOneShot()", &script_result)); |
+ |
+ return MatchRegistrations(script_result, expected_tags); |
+} |
+ |
+bool BackgroundSyncBrowserTest::GetRegistrationsOneShotFromServiceWorker( |
+ const std::vector<std::string>& expected_tags) { |
+ std::string script_result; |
+ EXPECT_TRUE( |
+ RunScript("getRegistrationsOneShotFromServiceWorker()", &script_result)); |
+ EXPECT_TRUE(script_result == "ok - getRegistrations sent to SW"); |
+ |
+ return MatchRegistrations(PopConsoleString(), expected_tags); |
+} |
+ |
bool BackgroundSyncBrowserTest::CompleteDelayedOneShot() { |
std::string script_result; |
EXPECT_TRUE(RunScript("completeDelayedOneShot()", &script_result)); |
@@ -309,6 +358,18 @@ IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest, OneShotFires) { |
EXPECT_FALSE(GetRegistrationOneShot("foo")); |
} |
+// Verify that Register works in a service worker |
+IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest, |
+ OneShotFromServiceWorkerFires) { |
+ EXPECT_TRUE(RegisterServiceWorker()); |
+ EXPECT_TRUE(LoadTestPage(kDefaultTestURL)); // Control the page. |
+ |
+ EXPECT_TRUE(RegisterOneShotFromServiceWorker("foo_sw")); |
+ EXPECT_TRUE(PopConsole("ok - foo_sw registered in SW")); |
+ EXPECT_TRUE(PopConsole("foo_sw fired")); |
+ EXPECT_FALSE(GetRegistrationOneShot("foo_sw")); |
+} |
+ |
IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest, OneShotDelaysForNetwork) { |
EXPECT_TRUE(RegisterServiceWorker()); |
EXPECT_TRUE(LoadTestPage(kDefaultTestURL)); // Control the page. |
@@ -413,6 +474,43 @@ IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest, GetRegistrations) { |
EXPECT_TRUE(GetRegistrationsOneShot(registered_tags)); |
} |
+// Verify that GetRegistrations works in a service worker |
+IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest, |
+ GetRegistrationsFromServiceWorker) { |
+ EXPECT_TRUE(RegisterServiceWorker()); |
+ EXPECT_TRUE(LoadTestPage(kDefaultTestURL)); // Control the page. |
+ |
+ std::vector<std::string> registered_tags; |
+ EXPECT_TRUE(GetRegistrationsOneShot(registered_tags)); |
+ |
+ SetOnline(false); |
+ registered_tags.push_back("foo_sw"); |
+ registered_tags.push_back("bar_sw"); |
+ |
+ for (const std::string& tag : registered_tags) { |
+ EXPECT_TRUE(RegisterOneShotFromServiceWorker(tag)); |
+ EXPECT_TRUE(PopConsole(BuildExpectedResult(tag, "registered in SW"))); |
+ } |
+ |
+ EXPECT_TRUE(GetRegistrationsOneShotFromServiceWorker(registered_tags)); |
+} |
+ |
+// Verify that GetRegistration works in a service worker |
+IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest, |
+ GetRegistrationFromServiceWorker) { |
+ EXPECT_TRUE(RegisterServiceWorker()); |
+ EXPECT_TRUE(LoadTestPage(kDefaultTestURL)); // Control the page. |
+ |
+ std::vector<std::string> registered_tags; |
+ EXPECT_TRUE(GetRegistrationsOneShot(registered_tags)); |
+ |
+ SetOnline(false); |
+ |
+ EXPECT_TRUE(RegisterOneShotFromServiceWorker("foo_sw")); |
+ EXPECT_TRUE(PopConsole("ok - foo_sw registered in SW")); |
+ EXPECT_TRUE(GetRegistrationOneShotFromServiceWorker("foo_sw")); |
+} |
+ |
IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest, Unregister) { |
EXPECT_TRUE(RegisterServiceWorker()); |
EXPECT_TRUE(LoadTestPage(kDefaultTestURL)); // Control the page. |