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 1ec713c21dfa9c9b64d40312aa1c4ab1f45d3133..d5b17e71c1da1125811d85a42e5f8a23d60adcd5 100644 |
--- a/content/browser/background_sync/background_sync_browsertest.cc |
+++ b/content/browser/background_sync/background_sync_browsertest.cc |
@@ -38,6 +38,8 @@ namespace content { |
namespace { |
const char kDefaultTestURL[] = "/background_sync/test.html"; |
+const char kEmptyURL[] = "/background_sync/empty.html"; |
+const char kRegisterSyncURL[] = "/background_sync/register_sync.html"; |
const char kSuccessfulOperationPrefix[] = "ok - "; |
@@ -188,6 +190,8 @@ class BackgroundSyncBrowserTest : public ContentBrowserTest { |
bool CompleteDelayedOneShot(); |
bool RejectDelayedOneShot(); |
+ net::EmbeddedTestServer* https_server() { return https_server_.get(); } |
+ |
private: |
scoped_ptr<net::EmbeddedTestServer> https_server_; |
Shell* shell_ = nullptr; |
@@ -620,4 +624,31 @@ IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest, VerifyRetry) { |
EXPECT_TRUE(OneShotPending("delay")); |
} |
+IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest, RegisterFromNonMainFrame) { |
+ std::string script_result; |
+ GURL url = https_server()->GetURL(kEmptyURL); |
+ EXPECT_TRUE( |
+ RunScript(BuildScriptString("registerOneShotFromLocalFrame", url.spec()), |
+ &script_result)); |
+ EXPECT_EQ(BuildExpectedResult("iframe", "failed to register sync"), |
+ script_result); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(BackgroundSyncBrowserTest, |
+ RegisterFromServiceWorkerWithoutMainFrameHost) { |
+ // Start a second https server to use as a second origin. |
+ net::EmbeddedTestServer alt_server(net::EmbeddedTestServer::TYPE_HTTPS); |
+ alt_server.ServeFilesFromSourceDirectory("content/test/data"); |
+ ASSERT_TRUE(alt_server.Start()); |
+ |
+ std::string script_result; |
+ GURL url = alt_server.GetURL(kRegisterSyncURL); |
+ EXPECT_TRUE( |
+ RunScript(BuildScriptString("registerOneShotFromCrossOriginServiceWorker", |
+ url.spec()), |
+ &script_result)); |
+ EXPECT_EQ(BuildExpectedResult("worker", "failed to register sync"), |
+ script_result); |
+} |
+ |
} // namespace content |