| Index: content/browser/service_worker/service_worker_context_unittest.cc
|
| diff --git a/content/browser/service_worker/service_worker_context_unittest.cc b/content/browser/service_worker/service_worker_context_unittest.cc
|
| index d299a2e3ba82856595694b2d966906b4f964bd19..4e6f154e298a465da676ea1a24e99a1015dceeb4 100644
|
| --- a/content/browser/service_worker/service_worker_context_unittest.cc
|
| +++ b/content/browser/service_worker/service_worker_context_unittest.cc
|
| @@ -26,20 +26,20 @@ namespace content {
|
|
|
| namespace {
|
|
|
| -void SaveResponseCallback(bool* called,
|
| +void SaveResponseCallback(const scoped_refptr<MessageLoopRunner>& runner,
|
| int64* store_registration_id,
|
| ServiceWorkerStatusCode status,
|
| const std::string& status_message,
|
| int64 registration_id) {
|
| EXPECT_EQ(SERVICE_WORKER_OK, status) << ServiceWorkerStatusToString(status);
|
| - *called = true;
|
| *store_registration_id = registration_id;
|
| + runner->Quit();
|
| }
|
|
|
| ServiceWorkerContextCore::RegistrationCallback MakeRegisteredCallback(
|
| - bool* called,
|
| + const scoped_refptr<MessageLoopRunner>& runner,
|
| int64* store_registration_id) {
|
| - return base::Bind(&SaveResponseCallback, called, store_registration_id);
|
| + return base::Bind(&SaveResponseCallback, runner, store_registration_id);
|
| }
|
|
|
| void CallCompletedCallback(bool* called, ServiceWorkerStatusCode) {
|
| @@ -78,8 +78,7 @@ void ExpectRegisteredWorkers(
|
|
|
| class RejectInstallTestHelper : public EmbeddedWorkerTestHelper {
|
| public:
|
| - explicit RejectInstallTestHelper(int mock_render_process_id)
|
| - : EmbeddedWorkerTestHelper(base::FilePath(), mock_render_process_id) {}
|
| + RejectInstallTestHelper() : EmbeddedWorkerTestHelper(base::FilePath()) {}
|
|
|
| void OnInstallEvent(int embedded_worker_id,
|
| int request_id) override {
|
| @@ -92,8 +91,8 @@ class RejectInstallTestHelper : public EmbeddedWorkerTestHelper {
|
|
|
| class RejectActivateTestHelper : public EmbeddedWorkerTestHelper {
|
| public:
|
| - explicit RejectActivateTestHelper(int mock_render_process_id)
|
| - : EmbeddedWorkerTestHelper(base::FilePath(), mock_render_process_id) {}
|
| + explicit RejectActivateTestHelper()
|
| + : EmbeddedWorkerTestHelper(base::FilePath()) {}
|
|
|
| void OnActivateEvent(int embedded_worker_id, int request_id) override {
|
| SimulateSend(
|
| @@ -121,12 +120,10 @@ class ServiceWorkerContextTest : public ServiceWorkerContextObserver,
|
| public testing::Test {
|
| public:
|
| ServiceWorkerContextTest()
|
| - : browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP),
|
| - render_process_id_(99) {}
|
| + : browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP) {}
|
|
|
| void SetUp() override {
|
| - helper_.reset(
|
| - new EmbeddedWorkerTestHelper(base::FilePath(), render_process_id_));
|
| + helper_.reset(new EmbeddedWorkerTestHelper(base::FilePath()));
|
| helper_->context_wrapper()->AddObserver(this);
|
| }
|
|
|
| @@ -160,7 +157,6 @@ class ServiceWorkerContextTest : public ServiceWorkerContextObserver,
|
| protected:
|
| TestBrowserThreadBundle browser_thread_bundle_;
|
| scoped_ptr<EmbeddedWorkerTestHelper> helper_;
|
| - const int render_process_id_;
|
| std::vector<NotificationLog> notifications_;
|
| };
|
|
|
| @@ -170,26 +166,18 @@ TEST_F(ServiceWorkerContextTest, Register) {
|
| GURL script_url("http://www.example.com/service_worker.js");
|
|
|
| int64 registration_id = kInvalidServiceWorkerRegistrationId;
|
| - bool called = false;
|
| + scoped_refptr<MessageLoopRunner> runner(new MessageLoopRunner);
|
| context()->RegisterServiceWorker(
|
| - pattern,
|
| - script_url,
|
| - NULL,
|
| - MakeRegisteredCallback(&called, ®istration_id));
|
| + pattern, script_url, NULL,
|
| + MakeRegisteredCallback(runner, ®istration_id));
|
|
|
| - ASSERT_FALSE(called);
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_TRUE(called);
|
| + runner->Run();
|
|
|
| - EXPECT_EQ(4UL, helper_->ipc_sink()->message_count());
|
| - EXPECT_TRUE(helper_->ipc_sink()->GetUniqueMessageMatching(
|
| - EmbeddedWorkerMsg_StartWorker::ID));
|
| + EXPECT_EQ(2UL, helper_->ipc_sink()->message_count());
|
| EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
|
| ServiceWorkerMsg_InstallEvent::ID));
|
| EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
|
| ServiceWorkerMsg_ActivateEvent::ID));
|
| - EXPECT_TRUE(helper_->ipc_sink()->GetUniqueMessageMatching(
|
| - EmbeddedWorkerMsg_StopWorker::ID));
|
| EXPECT_NE(kInvalidServiceWorkerRegistrationId, registration_id);
|
|
|
| ASSERT_EQ(1u, notifications_.size());
|
| @@ -215,29 +203,21 @@ TEST_F(ServiceWorkerContextTest, Register_RejectInstall) {
|
| GURL script_url("http://www.example.com/service_worker.js");
|
|
|
| helper_.reset(); // Make sure the process lookups stay overridden.
|
| - helper_.reset(new RejectInstallTestHelper(render_process_id_));
|
| + helper_.reset(new RejectInstallTestHelper());
|
| helper_->context_wrapper()->AddObserver(this);
|
| int64 registration_id = kInvalidServiceWorkerRegistrationId;
|
| - bool called = false;
|
| + scoped_refptr<MessageLoopRunner> runner(new MessageLoopRunner);
|
| context()->RegisterServiceWorker(
|
| - pattern,
|
| - script_url,
|
| - NULL,
|
| - MakeRegisteredCallback(&called, ®istration_id));
|
| + pattern, script_url, NULL,
|
| + MakeRegisteredCallback(runner, ®istration_id));
|
|
|
| - ASSERT_FALSE(called);
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_TRUE(called);
|
| + runner->Run();
|
|
|
| - EXPECT_EQ(3UL, helper_->ipc_sink()->message_count());
|
| - EXPECT_TRUE(helper_->ipc_sink()->GetUniqueMessageMatching(
|
| - EmbeddedWorkerMsg_StartWorker::ID));
|
| + EXPECT_EQ(1UL, helper_->ipc_sink()->message_count());
|
| EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
|
| ServiceWorkerMsg_InstallEvent::ID));
|
| EXPECT_FALSE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
|
| ServiceWorkerMsg_ActivateEvent::ID));
|
| - EXPECT_TRUE(helper_->ipc_sink()->GetUniqueMessageMatching(
|
| - EmbeddedWorkerMsg_StopWorker::ID));
|
| EXPECT_NE(kInvalidServiceWorkerRegistrationId, registration_id);
|
|
|
| ASSERT_EQ(1u, notifications_.size());
|
| @@ -262,27 +242,21 @@ TEST_F(ServiceWorkerContextTest, Register_RejectActivate) {
|
| GURL script_url("http://www.example.com/service_worker.js");
|
|
|
| helper_.reset();
|
| - helper_.reset(new RejectActivateTestHelper(render_process_id_));
|
| + helper_.reset(new RejectActivateTestHelper());
|
| helper_->context_wrapper()->AddObserver(this);
|
| int64 registration_id = kInvalidServiceWorkerRegistrationId;
|
| - bool called = false;
|
| + scoped_refptr<MessageLoopRunner> runner(new MessageLoopRunner);
|
| context()->RegisterServiceWorker(
|
| pattern, script_url, NULL,
|
| - MakeRegisteredCallback(&called, ®istration_id));
|
| + MakeRegisteredCallback(runner, ®istration_id));
|
|
|
| - ASSERT_FALSE(called);
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_TRUE(called);
|
| + runner->Run();
|
|
|
| - EXPECT_EQ(4UL, helper_->ipc_sink()->message_count());
|
| - EXPECT_TRUE(helper_->ipc_sink()->GetUniqueMessageMatching(
|
| - EmbeddedWorkerMsg_StartWorker::ID));
|
| + EXPECT_EQ(2UL, helper_->ipc_sink()->message_count());
|
| EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
|
| ServiceWorkerMsg_InstallEvent::ID));
|
| EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
|
| ServiceWorkerMsg_ActivateEvent::ID));
|
| - EXPECT_TRUE(helper_->ipc_sink()->GetUniqueMessageMatching(
|
| - EmbeddedWorkerMsg_StopWorker::ID));
|
| EXPECT_NE(kInvalidServiceWorkerRegistrationId, registration_id);
|
|
|
| ASSERT_EQ(1u, notifications_.size());
|
| @@ -301,20 +275,16 @@ TEST_F(ServiceWorkerContextTest, Register_RejectActivate) {
|
| TEST_F(ServiceWorkerContextTest, Unregister) {
|
| GURL pattern("http://www.example.com/");
|
|
|
| - bool called = false;
|
| + scoped_refptr<MessageLoopRunner> runner(new MessageLoopRunner);
|
| int64 registration_id = kInvalidServiceWorkerRegistrationId;
|
| context()->RegisterServiceWorker(
|
| - pattern,
|
| - GURL("http://www.example.com/service_worker.js"),
|
| - NULL,
|
| - MakeRegisteredCallback(&called, ®istration_id));
|
| + pattern, GURL("http://www.example.com/service_worker.js"), NULL,
|
| + MakeRegisteredCallback(runner, ®istration_id));
|
|
|
| - ASSERT_FALSE(called);
|
| - base::RunLoop().RunUntilIdle();
|
| - ASSERT_TRUE(called);
|
| + runner->Run();
|
| EXPECT_NE(kInvalidServiceWorkerRegistrationId, registration_id);
|
|
|
| - called = false;
|
| + bool called = false;
|
| context()->UnregisterServiceWorker(pattern,
|
| MakeUnregisteredCallback(&called));
|
|
|
| @@ -347,42 +317,38 @@ TEST_F(ServiceWorkerContextTest, UnregisterMultiple) {
|
| GURL origin2_p1("http://www.example.com:8080/again");
|
| GURL origin3_p1("http://www.other.com/");
|
|
|
| - bool called = false;
|
| + scoped_refptr<MessageLoopRunner> runner1(new MessageLoopRunner);
|
| + scoped_refptr<MessageLoopRunner> runner2(new MessageLoopRunner);
|
| + scoped_refptr<MessageLoopRunner> runner3(new MessageLoopRunner);
|
| + scoped_refptr<MessageLoopRunner> runner4(new MessageLoopRunner);
|
| int64 registration_id1 = kInvalidServiceWorkerRegistrationId;
|
| int64 registration_id2 = kInvalidServiceWorkerRegistrationId;
|
| int64 registration_id3 = kInvalidServiceWorkerRegistrationId;
|
| int64 registration_id4 = kInvalidServiceWorkerRegistrationId;
|
| context()->RegisterServiceWorker(
|
| - origin1_p1,
|
| - GURL("http://www.example.com/service_worker.js"),
|
| - NULL,
|
| - MakeRegisteredCallback(&called, ®istration_id1));
|
| + origin1_p1, GURL("http://www.example.com/service_worker.js"), NULL,
|
| + MakeRegisteredCallback(runner1, ®istration_id1));
|
| context()->RegisterServiceWorker(
|
| - origin1_p2,
|
| - GURL("http://www.example.com/service_worker2.js"),
|
| - NULL,
|
| - MakeRegisteredCallback(&called, ®istration_id2));
|
| + origin1_p2, GURL("http://www.example.com/service_worker2.js"), NULL,
|
| + MakeRegisteredCallback(runner2, ®istration_id2));
|
| context()->RegisterServiceWorker(
|
| - origin2_p1,
|
| - GURL("http://www.example.com:8080/service_worker3.js"),
|
| - NULL,
|
| - MakeRegisteredCallback(&called, ®istration_id3));
|
| + origin2_p1, GURL("http://www.example.com:8080/service_worker3.js"), NULL,
|
| + MakeRegisteredCallback(runner3, ®istration_id3));
|
| context()->RegisterServiceWorker(
|
| - origin3_p1,
|
| - GURL("http://www.other.com/service_worker4.js"),
|
| - NULL,
|
| - MakeRegisteredCallback(&called, ®istration_id4));
|
| + origin3_p1, GURL("http://www.other.com/service_worker4.js"), NULL,
|
| + MakeRegisteredCallback(runner4, ®istration_id4));
|
|
|
| - ASSERT_FALSE(called);
|
| - base::RunLoop().RunUntilIdle();
|
| - ASSERT_TRUE(called);
|
| + runner1->Run();
|
| + runner2->Run();
|
| + runner3->Run();
|
| + runner4->Run();
|
|
|
| EXPECT_NE(kInvalidServiceWorkerRegistrationId, registration_id1);
|
| EXPECT_NE(kInvalidServiceWorkerRegistrationId, registration_id2);
|
| EXPECT_NE(kInvalidServiceWorkerRegistrationId, registration_id3);
|
| EXPECT_NE(kInvalidServiceWorkerRegistrationId, registration_id4);
|
|
|
| - called = false;
|
| + bool called = false;
|
| context()->UnregisterServiceWorkers(origin1_p1.GetOrigin(),
|
| MakeUnregisteredCallback(&called));
|
|
|
| @@ -447,30 +413,22 @@ TEST_F(ServiceWorkerContextTest, UnregisterMultiple) {
|
| TEST_F(ServiceWorkerContextTest, RegisterNewScript) {
|
| GURL pattern("http://www.example.com/");
|
|
|
| - bool called = false;
|
| + scoped_refptr<MessageLoopRunner> runner(new MessageLoopRunner);
|
| int64 old_registration_id = kInvalidServiceWorkerRegistrationId;
|
| context()->RegisterServiceWorker(
|
| - pattern,
|
| - GURL("http://www.example.com/service_worker.js"),
|
| - NULL,
|
| - MakeRegisteredCallback(&called, &old_registration_id));
|
| + pattern, GURL("http://www.example.com/service_worker.js"), NULL,
|
| + MakeRegisteredCallback(runner, &old_registration_id));
|
|
|
| - ASSERT_FALSE(called);
|
| - base::RunLoop().RunUntilIdle();
|
| - ASSERT_TRUE(called);
|
| + runner->Run();
|
| EXPECT_NE(kInvalidServiceWorkerRegistrationId, old_registration_id);
|
|
|
| - called = false;
|
| + runner = new MessageLoopRunner;
|
| int64 new_registration_id = kInvalidServiceWorkerRegistrationId;
|
| context()->RegisterServiceWorker(
|
| - pattern,
|
| - GURL("http://www.example.com/service_worker_new.js"),
|
| - NULL,
|
| - MakeRegisteredCallback(&called, &new_registration_id));
|
| + pattern, GURL("http://www.example.com/service_worker_new.js"), NULL,
|
| + MakeRegisteredCallback(runner, &new_registration_id));
|
|
|
| - ASSERT_FALSE(called);
|
| - base::RunLoop().RunUntilIdle();
|
| - ASSERT_TRUE(called);
|
| + runner->Run();
|
|
|
| EXPECT_NE(kInvalidServiceWorkerRegistrationId, new_registration_id);
|
| EXPECT_EQ(old_registration_id, new_registration_id);
|
| @@ -490,30 +448,22 @@ TEST_F(ServiceWorkerContextTest, RegisterDuplicateScript) {
|
| GURL pattern("http://www.example.com/");
|
| GURL script_url("http://www.example.com/service_worker.js");
|
|
|
| - bool called = false;
|
| + scoped_refptr<MessageLoopRunner> runner(new MessageLoopRunner);
|
| int64 old_registration_id = kInvalidServiceWorkerRegistrationId;
|
| context()->RegisterServiceWorker(
|
| - pattern,
|
| - script_url,
|
| - NULL,
|
| - MakeRegisteredCallback(&called, &old_registration_id));
|
| + pattern, script_url, NULL,
|
| + MakeRegisteredCallback(runner, &old_registration_id));
|
|
|
| - ASSERT_FALSE(called);
|
| - base::RunLoop().RunUntilIdle();
|
| - ASSERT_TRUE(called);
|
| + runner->Run();
|
| EXPECT_NE(kInvalidServiceWorkerRegistrationId, old_registration_id);
|
|
|
| - called = false;
|
| + runner = new MessageLoopRunner;
|
| int64 new_registration_id = kInvalidServiceWorkerRegistrationId;
|
| context()->RegisterServiceWorker(
|
| - pattern,
|
| - script_url,
|
| - NULL,
|
| - MakeRegisteredCallback(&called, &new_registration_id));
|
| + pattern, script_url, NULL,
|
| + MakeRegisteredCallback(runner, &new_registration_id));
|
|
|
| - ASSERT_FALSE(called);
|
| - base::RunLoop().RunUntilIdle();
|
| - ASSERT_TRUE(called);
|
| + runner->Run();
|
| EXPECT_EQ(old_registration_id, new_registration_id);
|
|
|
| ASSERT_EQ(2u, notifications_.size());
|
| @@ -620,22 +570,17 @@ TEST_P(ServiceWorkerContextRecoveryTest, DeleteAndStartOver) {
|
| // Reinitialize the helper to test on-disk storage.
|
| base::ScopedTempDir user_data_directory;
|
| ASSERT_TRUE(user_data_directory.CreateUniqueTempDir());
|
| - helper_.reset(new EmbeddedWorkerTestHelper(user_data_directory.path(),
|
| - render_process_id_));
|
| + helper_.reset(new EmbeddedWorkerTestHelper(user_data_directory.path()));
|
| helper_->context_wrapper()->AddObserver(this);
|
| }
|
|
|
| int64 registration_id = kInvalidServiceWorkerRegistrationId;
|
| - bool called = false;
|
| + scoped_refptr<MessageLoopRunner> runner(new MessageLoopRunner);
|
| context()->RegisterServiceWorker(
|
| - pattern,
|
| - script_url,
|
| - NULL,
|
| - MakeRegisteredCallback(&called, ®istration_id));
|
| + pattern, script_url, NULL,
|
| + MakeRegisteredCallback(runner, ®istration_id));
|
|
|
| - ASSERT_FALSE(called);
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_TRUE(called);
|
| + runner->Run();
|
|
|
| context()->storage()->FindRegistrationForId(
|
| registration_id,
|
| @@ -674,16 +619,12 @@ TEST_P(ServiceWorkerContextRecoveryTest, DeleteAndStartOver) {
|
| true /* expect_active */));
|
| base::RunLoop().RunUntilIdle();
|
|
|
| - called = false;
|
| + runner = new MessageLoopRunner;
|
| context()->RegisterServiceWorker(
|
| - pattern,
|
| - script_url,
|
| - NULL,
|
| - MakeRegisteredCallback(&called, ®istration_id));
|
| + pattern, script_url, NULL,
|
| + MakeRegisteredCallback(runner, ®istration_id));
|
|
|
| - ASSERT_FALSE(called);
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_TRUE(called);
|
| + runner->Run();
|
|
|
| context()->storage()->FindRegistrationForId(
|
| registration_id,
|
|
|