| Index: content/browser/service_worker/service_worker_browsertest.cc
|
| diff --git a/content/browser/service_worker/service_worker_browsertest.cc b/content/browser/service_worker/service_worker_browsertest.cc
|
| index 122d610109639f22f8fa5f0153760ef118b0009a..4d73b52bba36bcc6c5170679cf6898a6c2cf6e56 100644
|
| --- a/content/browser/service_worker/service_worker_browsertest.cc
|
| +++ b/content/browser/service_worker/service_worker_browsertest.cc
|
| @@ -1917,4 +1917,81 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerV8CacheStrategiesAggressiveTest,
|
| CheckStrategyIsAggressive();
|
| }
|
|
|
| +// ServiceWorkerDisableWebSecurityTests check the behavior when the web security
|
| +// is disabled. If '--disable-web-security' flag is set, we don't check the
|
| +// origin equality in Blink. So the Service Worker related APIs should succeed
|
| +// even if it is thouching other origin Service Workers.
|
| +class ServiceWorkerDisableWebSecurityTest : public ServiceWorkerBrowserTest {
|
| + public:
|
| + ServiceWorkerDisableWebSecurityTest() {}
|
| + ~ServiceWorkerDisableWebSecurityTest() override {}
|
| +
|
| + void SetUpCommandLine(base::CommandLine* command_line) override {
|
| + command_line->AppendSwitch(switches::kDisableWebSecurity);
|
| + }
|
| +
|
| + void SetUpOnMainThread() override {
|
| + cross_origin_server_.ServeFilesFromSourceDirectory("content/test/data");
|
| + ASSERT_TRUE(cross_origin_server_.Start());
|
| + ServiceWorkerBrowserTest::SetUpOnMainThread();
|
| + }
|
| +
|
| + void RegisterServiceWorkerOnCrossOriginServer(const std::string& scope,
|
| + const std::string& script) {
|
| + scoped_refptr<WorkerActivatedObserver> observer =
|
| + new WorkerActivatedObserver(wrapper());
|
| + observer->Init();
|
| + public_context()->RegisterServiceWorker(
|
| + cross_origin_server_.GetURL(scope), cross_origin_server_.GetURL(script),
|
| + base::Bind(&ExpectResultAndRun, true, base::Bind(&base::DoNothing)));
|
| + observer->Wait();
|
| + }
|
| +
|
| + void RunTestWithCrossOriginURL(const std::string& test_page,
|
| + const std::string& cross_origin_url) {
|
| + const base::string16 title = base::ASCIIToUTF16("PASS");
|
| + TitleWatcher title_watcher(shell()->web_contents(), title);
|
| + NavigateToURL(shell(),
|
| + embedded_test_server()->GetURL(
|
| + test_page + "?" +
|
| + cross_origin_server_.GetURL(cross_origin_url).spec()));
|
| + EXPECT_EQ(title, title_watcher.WaitAndGetTitle());
|
| + }
|
| +
|
| + private:
|
| + net::EmbeddedTestServer cross_origin_server_;
|
| + DISALLOW_COPY_AND_ASSIGN(ServiceWorkerDisableWebSecurityTest);
|
| +};
|
| +
|
| +IN_PROC_BROWSER_TEST_F(ServiceWorkerDisableWebSecurityTest,
|
| + GetRegistrationNoCrash) {
|
| + const char kPageUrl[] =
|
| + "/service_worker/disable_web_security_get_registration.html";
|
| + const char kScopeUrl[] = "/service_worker/";
|
| + RunTestWithCrossOriginURL(kPageUrl, kScopeUrl);
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(ServiceWorkerDisableWebSecurityTest, RegisterNoCrash) {
|
| + const char kPageUrl[] = "/service_worker/disable_web_security_register.html";
|
| + const char kScopeUrl[] = "/service_worker/";
|
| + RunTestWithCrossOriginURL(kPageUrl, kScopeUrl);
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(ServiceWorkerDisableWebSecurityTest, UnregisterNoCrash) {
|
| + const char kPageUrl[] =
|
| + "/service_worker/disable_web_security_unregister.html";
|
| + const char kScopeUrl[] = "/service_worker/scope/";
|
| + const char kWorkerUrl[] = "/service_worker/fetch_event_blob.js";
|
| + RegisterServiceWorkerOnCrossOriginServer(kScopeUrl, kWorkerUrl);
|
| + RunTestWithCrossOriginURL(kPageUrl, kScopeUrl);
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(ServiceWorkerDisableWebSecurityTest, UpdateNoCrash) {
|
| + const char kPageUrl[] = "/service_worker/disable_web_security_update.html";
|
| + const char kScopeUrl[] = "/service_worker/scope/";
|
| + const char kWorkerUrl[] = "/service_worker/fetch_event_blob.js";
|
| + RegisterServiceWorkerOnCrossOriginServer(kScopeUrl, kWorkerUrl);
|
| + RunTestWithCrossOriginURL(kPageUrl, kScopeUrl);
|
| +}
|
| +
|
| } // namespace content
|
|
|