Index: content/browser/service_worker/embedded_worker_test_helper.h |
diff --git a/content/browser/service_worker/embedded_worker_test_helper.h b/content/browser/service_worker/embedded_worker_test_helper.h |
index 88bf11bee43571ba4fb8a2c205c564bd3de553f9..97ec16377256d795e09c3ebb7c891891ae6b1605 100644 |
--- a/content/browser/service_worker/embedded_worker_test_helper.h |
+++ b/content/browser/service_worker/embedded_worker_test_helper.h |
@@ -15,14 +15,16 @@ |
#include "base/containers/hash_tables.h" |
#include "base/macros.h" |
#include "base/memory/weak_ptr.h" |
+#include "base/optional.h" |
+#include "content/common/service_worker/embedded_worker.mojom.h" |
#include "ipc/ipc_listener.h" |
#include "ipc/ipc_test_sink.h" |
+#include "mojo/public/cpp/bindings/binding.h" |
#include "services/shell/public/interfaces/interface_provider.mojom.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "url/gurl.h" |
class GURL; |
-struct EmbeddedWorkerMsg_StartWorker_Params; |
struct ServiceWorkerMsg_ExtendableMessageEvent_Params; |
namespace shell { |
@@ -39,6 +41,7 @@ |
class ServiceWorkerContextCore; |
class ServiceWorkerContextWrapper; |
class TestBrowserContext; |
+struct EmbeddedWorkerStartParams; |
struct PushEventPayload; |
struct ServiceWorkerFetchRequest; |
@@ -60,6 +63,28 @@ |
class EmbeddedWorkerTestHelper : public IPC::Sender, |
public IPC::Listener { |
public: |
+ class MockEmbeddedWorkerInstanceClient |
+ : public mojom::EmbeddedWorkerInstanceClient { |
+ public: |
+ explicit MockEmbeddedWorkerInstanceClient( |
+ base::WeakPtr<EmbeddedWorkerTestHelper> helper); |
+ ~MockEmbeddedWorkerInstanceClient() override; |
+ |
+ static void Bind(const base::WeakPtr<EmbeddedWorkerTestHelper>& helper, |
+ mojom::EmbeddedWorkerInstanceClientRequest request); |
+ |
+ private: |
+ // Implementation of mojo interfaces. |
+ void StartWorker(const EmbeddedWorkerStartParams& params) override; |
+ |
+ base::WeakPtr<EmbeddedWorkerTestHelper> helper_; |
+ mojo::Binding<mojom::EmbeddedWorkerInstanceClient> binding_; |
+ |
+ base::Optional<int> embedded_worker_id_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(MockEmbeddedWorkerInstanceClient); |
+ }; |
+ |
// If |user_data_directory| is empty, the context makes storage stuff in |
// memory. |
explicit EmbeddedWorkerTestHelper(const base::FilePath& user_data_directory); |
@@ -80,6 +105,11 @@ |
// Inner IPC sink for script context messages sent via EmbeddedWorker. |
IPC::TestSink* inner_ipc_sink() { return &inner_sink_; } |
+ std::vector<std::unique_ptr<MockEmbeddedWorkerInstanceClient>>* |
+ mock_instance_clients() { |
+ return &mock_instance_clients_; |
+ } |
+ |
ServiceWorkerContextCore* context(); |
ServiceWorkerContextWrapper* context_wrapper() { return wrapper_.get(); } |
void ShutdownContext(); |
@@ -95,9 +125,8 @@ |
return embedded_worker_id_service_worker_version_id_map_; |
} |
- // Only used for tests that force creating a new render process. There is no |
- // corresponding MockRenderProcessHost. |
- int new_render_process_id() const { return mock_render_process_id_ + 1; } |
+ // Only used for tests that force creating a new render process. |
+ int new_render_process_id() const { return new_mock_render_process_id_; } |
TestBrowserContext* browser_context() { return browser_context_.get(); } |
@@ -158,7 +187,7 @@ |
class MockEmbeddedWorkerSetup; |
- void OnStartWorkerStub(const EmbeddedWorkerMsg_StartWorker_Params& params); |
+ void OnStartWorkerStub(const EmbeddedWorkerStartParams& params); |
void OnResumeAfterDownloadStub(int embedded_worker_id); |
void OnStopWorkerStub(int embedded_worker_id); |
void OnMessageToWorkerStub(int thread_id, |
@@ -179,18 +208,29 @@ |
MessagePortMessageFilter* NewMessagePortMessageFilter(); |
+ std::unique_ptr<shell::InterfaceRegistry> CreateInterfaceRegistry( |
+ MockRenderProcessHost* rph); |
+ |
std::unique_ptr<TestBrowserContext> browser_context_; |
std::unique_ptr<MockRenderProcessHost> render_process_host_; |
+ std::unique_ptr<MockRenderProcessHost> new_render_process_host_; |
scoped_refptr<ServiceWorkerContextWrapper> wrapper_; |
IPC::TestSink sink_; |
IPC::TestSink inner_sink_; |
+ std::vector<std::unique_ptr<MockEmbeddedWorkerInstanceClient>> |
+ mock_instance_clients_; |
+ size_t mock_instance_clients_next_index_; |
+ |
int next_thread_id_; |
int mock_render_process_id_; |
+ int new_mock_render_process_id_; |
std::unique_ptr<shell::InterfaceRegistry> render_process_interface_registry_; |
+ std::unique_ptr<shell::InterfaceRegistry> |
+ new_render_process_interface_registry_; |
std::map<int, int64_t> embedded_worker_id_service_worker_version_id_map_; |