Chromium Code Reviews| 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..156c3336a53da190d294f4fd71cb58e6310ea833 100644 |
| --- a/content/browser/service_worker/service_worker_browsertest.cc |
| +++ b/content/browser/service_worker/service_worker_browsertest.cc |
| @@ -1917,4 +1917,78 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerV8CacheStrategiesAggressiveTest, |
| CheckStrategyIsAggressive(); |
| } |
|
nhiroki
2016/08/01 04:32:45
Can you add a comment about what this test confirm
horo
2016/08/01 07:40:55
Done.
|
| +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()); |
| + } |
| + |
| + net::EmbeddedTestServer cross_origin_server_; |
|
nhiroki
2016/08/01 04:32:45
Can you move this to the private section?
horo
2016/08/01 07:40:55
Done.
|
| + |
| + private: |
| + 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 |