Index: content/browser/service_worker/service_worker_handle_unittest.cc |
diff --git a/content/browser/service_worker/service_worker_handle_unittest.cc b/content/browser/service_worker/service_worker_handle_unittest.cc |
index 75ea7d1facbad37ac541f0222c9a93cf7498b09d..c64bd23fbe12a11dcd694c4c0140a322248f6096 100644 |
--- a/content/browser/service_worker/service_worker_handle_unittest.cc |
+++ b/content/browser/service_worker/service_worker_handle_unittest.cc |
@@ -7,12 +7,14 @@ |
#include "content/browser/service_worker/embedded_worker_registry.h" |
#include "content/browser/service_worker/embedded_worker_test_helper.h" |
#include "content/browser/service_worker/service_worker_context_core.h" |
+#include "content/browser/service_worker/service_worker_dispatcher_host.h" |
#include "content/browser/service_worker/service_worker_handle.h" |
#include "content/browser/service_worker/service_worker_registration.h" |
#include "content/browser/service_worker/service_worker_test_utils.h" |
#include "content/browser/service_worker/service_worker_version.h" |
#include "content/common/service_worker/embedded_worker_messages.h" |
#include "content/common/service_worker/service_worker_messages.h" |
+#include "content/public/test/mock_resource_context.h" |
#include "content/public/test/test_browser_thread_bundle.h" |
#include "ipc/ipc_message.h" |
#include "ipc/ipc_test_sink.h" |
@@ -38,6 +40,30 @@ void VerifyStateChangedMessage(int expected_handle_id, |
} // namespace |
+class TestingServiceWorkerDispatcherHost : public ServiceWorkerDispatcherHost { |
+ public: |
+ TestingServiceWorkerDispatcherHost( |
+ int process_id, |
+ ServiceWorkerContextWrapper* context_wrapper, |
+ ResourceContext* resource_context, |
+ EmbeddedWorkerTestHelper* helper) |
+ : ServiceWorkerDispatcherHost(process_id, nullptr, resource_context), |
+ bad_message_received_count_(0), |
+ helper_(helper) { |
+ Init(context_wrapper); |
+ } |
+ |
+ bool Send(IPC::Message* message) override { return helper_->Send(message); } |
+ |
+ void BadMessageReceived() override { ++bad_message_received_count_; } |
+ |
+ int bad_message_received_count_; |
+ |
+ protected: |
+ EmbeddedWorkerTestHelper* helper_; |
+ ~TestingServiceWorkerDispatcherHost() override {} |
+}; |
+ |
class ServiceWorkerHandleTest : public testing::Test { |
public: |
ServiceWorkerHandleTest() |
@@ -46,6 +72,10 @@ class ServiceWorkerHandleTest : public testing::Test { |
void SetUp() override { |
helper_.reset(new EmbeddedWorkerTestHelper(kRenderProcessId)); |
+ dispatcher_host_ = new TestingServiceWorkerDispatcherHost( |
+ kRenderProcessId, helper_->context_wrapper(), |
+ &resource_context_, helper_.get()); |
+ |
const GURL pattern("http://www.example.com/"); |
registration_ = new ServiceWorkerRegistration( |
pattern, |
@@ -57,21 +87,31 @@ class ServiceWorkerHandleTest : public testing::Test { |
1L, |
helper_->context()->AsWeakPtr()); |
+ provider_host_.reset(new ServiceWorkerProviderHost( |
+ kRenderProcessId, MSG_ROUTING_NONE, 1, |
+ helper_->context()->AsWeakPtr(), dispatcher_host_.get())); |
+ |
helper_->SimulateAddProcessToPattern(pattern, kRenderProcessId); |
} |
void TearDown() override { |
+ dispatcher_host_ = NULL; |
registration_ = NULL; |
version_ = NULL; |
+ provider_host_.reset(); |
helper_.reset(); |
} |
IPC::TestSink* ipc_sink() { return helper_->ipc_sink(); } |
TestBrowserThreadBundle browser_thread_bundle_; |
+ MockResourceContext resource_context_; |
+ |
scoped_ptr<EmbeddedWorkerTestHelper> helper_; |
+ scoped_ptr<ServiceWorkerProviderHost> provider_host_; |
scoped_refptr<ServiceWorkerRegistration> registration_; |
scoped_refptr<ServiceWorkerVersion> version_; |
+ scoped_refptr<TestingServiceWorkerDispatcherHost> dispatcher_host_; |
private: |
DISALLOW_COPY_AND_ASSIGN(ServiceWorkerHandleTest); |
@@ -80,7 +120,7 @@ class ServiceWorkerHandleTest : public testing::Test { |
TEST_F(ServiceWorkerHandleTest, OnVersionStateChanged) { |
scoped_ptr<ServiceWorkerHandle> handle = |
ServiceWorkerHandle::Create(helper_->context()->AsWeakPtr(), |
- helper_.get(), |
+ provider_host_->AsWeakPtr(), |
version_.get()); |
// Start the worker, and then... |
@@ -99,6 +139,7 @@ TEST_F(ServiceWorkerHandleTest, OnVersionStateChanged) { |
version_->SetStatus(ServiceWorkerVersion::INSTALLED); |
ASSERT_EQ(4UL, ipc_sink()->message_count()); |
+ ASSERT_EQ(0L, dispatcher_host_->bad_message_received_count_); |
// We should be sending 1. StartWorker, |
EXPECT_EQ(EmbeddedWorkerMsg_StartWorker::ID, |