Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1446)

Unified Diff: content/browser/service_worker/embedded_worker_test_helper.cc

Issue 1223193009: WIP attempt to replace StartWorker/StopWorker IPCs with a new mojo EmbeddedWorker service. Base URL: https://chromium.googlesource.com/chromium/src.git@mojo-event-dispatching-option2
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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) {

Powered by Google App Engine
This is Rietveld 408576698