| Index: content/browser/service_worker/embedded_worker_test_helper.cc
|
| diff --git a/content/browser/service_worker/embedded_worker_test_helper.cc b/content/browser/service_worker/embedded_worker_test_helper.cc
|
| index 6fa62d051e2a1a5f684bf18eae8b42702a740cd2..0295ee89057ed9c42ff5ac6235e32c6deeb191c1 100644
|
| --- a/content/browser/service_worker/embedded_worker_test_helper.cc
|
| +++ b/content/browser/service_worker/embedded_worker_test_helper.cc
|
| @@ -16,12 +16,19 @@
|
| #include "content/browser/service_worker/embedded_worker_registry.h"
|
| #include "content/browser/service_worker/service_worker_context_core.h"
|
| #include "content/browser/service_worker/service_worker_context_wrapper.h"
|
| +#include "content/common/service_worker/embedded_worker.mojom.h"
|
| #include "content/common/service_worker/embedded_worker_messages.h"
|
| #include "content/common/service_worker/service_worker_messages.h"
|
| +#include "content/public/test/mock_render_process_host.h"
|
| +#include "content/public/test/test_browser_context.h"
|
| +#include "mojo/common/url_type_converters.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| +#include "third_party/mojo/src/mojo/public/cpp/bindings/strong_binding.h"
|
|
|
| namespace content {
|
|
|
| +namespace {
|
| +
|
| class MockMessagePortMessageFilter : public MessagePortMessageFilter {
|
| public:
|
| MockMessagePortMessageFilter()
|
| @@ -39,6 +46,72 @@ class MockMessagePortMessageFilter : public MessagePortMessageFilter {
|
| base::AtomicSequenceNumber next_routing_id_;
|
| ScopedVector<IPC::Message> message_queue_;
|
| };
|
| +}
|
| +
|
| +class MockEmbeddedWorker : public EmbeddedWorker {
|
| + public:
|
| + static void Create(base::WeakPtr<EmbeddedWorkerTestHelper> helper,
|
| + mojo::InterfaceRequest<EmbeddedWorker> request) {
|
| + new MockEmbeddedWorker(helper, request.Pass());
|
| + }
|
| + ~MockEmbeddedWorker() override {
|
| + if (!helper_ || embedded_worker_id_ == -1)
|
| + return;
|
| + base::ThreadTaskRunnerHandle::Get()->PostTask(
|
| + FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnStopWorker, helper_,
|
| + embedded_worker_id_));
|
| + }
|
| +
|
| + void Initialize(EmbeddedWorkerStartWorkerParamsPtr params) override {
|
| + if (!helper_)
|
| + return;
|
| + ASSERT_EQ(embedded_worker_id_, -1);
|
| + embedded_worker_id_ = params->embedded_worker_id;
|
| + EmbeddedWorkerInstance* worker =
|
| + helper_->registry()->GetWorker(params->embedded_worker_id);
|
| + ASSERT_TRUE(worker != NULL);
|
| + EXPECT_EQ(EmbeddedWorkerInstance::STARTING, worker->status());
|
| + base::ThreadTaskRunnerHandle::Get()->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&EmbeddedWorkerTestHelper::OnStartWorker, helper_,
|
| + params->embedded_worker_id,
|
| + params->service_worker_version_id, params->scope.To<GURL>(),
|
| + params->script_url.To<GURL>()));
|
| + }
|
| +
|
| + private:
|
| + MockEmbeddedWorker(base::WeakPtr<EmbeddedWorkerTestHelper> helper,
|
| + mojo::InterfaceRequest<EmbeddedWorker> request)
|
| + : binding_(this, request.Pass()), helper_(helper) {}
|
| +
|
| + mojo::StrongBinding<EmbeddedWorker> binding_;
|
| + base::WeakPtr<EmbeddedWorkerTestHelper> helper_;
|
| + int embedded_worker_id_ = -1;
|
| +};
|
| +
|
| +EmbeddedWorkerTestHelper::EmbeddedWorkerTestHelper(
|
| + const base::FilePath& user_data_directory)
|
| + : wrapper_(new ServiceWorkerContextWrapper(NULL)),
|
| + next_thread_id_(0),
|
| + browser_context_(new TestBrowserContext),
|
| + render_process_host_(new MockRenderProcessHost(browser_context_.get())),
|
| + weak_factory_(this) {
|
| + mock_render_process_id_ = render_process_host_->GetID();
|
| + service_registry_.ServiceRegistry::AddService(
|
| + base::Bind(&MockEmbeddedWorker::Create, weak_factory_.GetWeakPtr()));
|
| + mojo::ServiceProviderPtr services;
|
| + service_registry_.Bind(mojo::GetProxy(&services));
|
| + static_cast<ServiceRegistryImpl*>(render_process_host_->GetServiceRegistry())
|
| + ->BindRemoteServiceProvider(services.Pass());
|
| + scoped_ptr<MockServiceWorkerDatabaseTaskManager> database_task_manager(
|
| + new MockServiceWorkerDatabaseTaskManager(
|
| + base::ThreadTaskRunnerHandle::Get()));
|
| + wrapper_->InitInternal(user_data_directory, database_task_manager.Pass(),
|
| + base::ThreadTaskRunnerHandle::Get(), NULL, NULL);
|
| + wrapper_->process_manager()->SetProcessIdForTest(mock_render_process_id_);
|
| + registry()->AddChildProcessSender(mock_render_process_id_, this,
|
| + NewMessagePortMessageFilter());
|
| +}
|
|
|
| EmbeddedWorkerTestHelper::EmbeddedWorkerTestHelper(
|
| const base::FilePath& user_data_directory,
|
| @@ -83,8 +156,8 @@ bool EmbeddedWorkerTestHelper::Send(IPC::Message* message) {
|
| bool EmbeddedWorkerTestHelper::OnMessageReceived(const IPC::Message& message) {
|
| bool handled = true;
|
| IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerTestHelper, message)
|
| - IPC_MESSAGE_HANDLER(EmbeddedWorkerMsg_StartWorker, OnStartWorkerStub)
|
| - IPC_MESSAGE_HANDLER(EmbeddedWorkerMsg_StopWorker, OnStopWorkerStub)
|
| + // IPC_MESSAGE_HANDLER(EmbeddedWorkerMsg_StartWorker, OnStartWorkerStub)
|
| + // IPC_MESSAGE_HANDLER(EmbeddedWorkerMsg_StopWorker, OnStopWorkerStub)
|
| IPC_MESSAGE_HANDLER(EmbeddedWorkerContextMsg_MessageToWorker,
|
| OnMessageToWorkerStub)
|
| IPC_MESSAGE_UNHANDLED(handled = false)
|
| @@ -254,16 +327,16 @@ void EmbeddedWorkerTestHelper::SimulateSend(
|
|
|
| void EmbeddedWorkerTestHelper::OnStartWorkerStub(
|
| const EmbeddedWorkerMsg_StartWorker_Params& params) {
|
| - EmbeddedWorkerInstance* worker =
|
| - registry()->GetWorker(params.embedded_worker_id);
|
| - ASSERT_TRUE(worker != NULL);
|
| - EXPECT_EQ(EmbeddedWorkerInstance::STARTING, worker->status());
|
| - base::ThreadTaskRunnerHandle::Get()->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&EmbeddedWorkerTestHelper::OnStartWorker,
|
| - weak_factory_.GetWeakPtr(), params.embedded_worker_id,
|
| - params.service_worker_version_id, params.scope,
|
| - params.script_url));
|
| + /* EmbeddedWorkerInstance* worker =
|
| + registry()->GetWorker(params.embedded_worker_id);
|
| + ASSERT_TRUE(worker != NULL);
|
| + EXPECT_EQ(EmbeddedWorkerInstance::STARTING, worker->status());
|
| + base::ThreadTaskRunnerHandle::Get()->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&EmbeddedWorkerTestHelper::OnStartWorker,
|
| + weak_factory_.GetWeakPtr(), params.embedded_worker_id,
|
| + params.service_worker_version_id, params.scope,
|
| + params.script_url));*/
|
| }
|
|
|
| void EmbeddedWorkerTestHelper::OnStopWorkerStub(int embedded_worker_id) {
|
|
|