Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(456)

Unified Diff: content/browser/background_sync/background_sync_browsertest.cc

Issue 1471763003: [BackgroundSync] Only allow SyncManager.register to occur from main frame (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@split
Patch Set: Address comments from PS5 Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698