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

Side by Side Diff: content/browser/service_worker/embedded_worker_test_helper.h

Issue 2787883003: [ServiceWorker] Add EmbeddedWorkerInstanceHost Interface. (Closed)
Patch Set: Address comments from shimazu@ Created 3 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_TEST_HELPER_H_ 5 #ifndef CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_TEST_HELPER_H_
6 #define CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_TEST_HELPER_H_ 6 #define CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_TEST_HELPER_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <map> 10 #include <map>
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 base::WeakPtr<EmbeddedWorkerTestHelper> helper); 78 base::WeakPtr<EmbeddedWorkerTestHelper> helper);
79 ~MockEmbeddedWorkerInstanceClient() override; 79 ~MockEmbeddedWorkerInstanceClient() override;
80 80
81 static void Bind(const base::WeakPtr<EmbeddedWorkerTestHelper>& helper, 81 static void Bind(const base::WeakPtr<EmbeddedWorkerTestHelper>& helper,
82 mojom::EmbeddedWorkerInstanceClientRequest request); 82 mojom::EmbeddedWorkerInstanceClientRequest request);
83 83
84 protected: 84 protected:
85 // Implementation of mojo interfaces. 85 // Implementation of mojo interfaces.
86 void StartWorker( 86 void StartWorker(
87 const EmbeddedWorkerStartParams& params, 87 const EmbeddedWorkerStartParams& params,
88 mojom::ServiceWorkerEventDispatcherRequest dispatcher_request) override; 88 mojom::ServiceWorkerEventDispatcherRequest dispatcher_request,
89 void StopWorker(const StopWorkerCallback& callback) override; 89 mojom::EmbeddedWorkerInstanceHostAssociatedPtrInfo instance_host)
90 override;
91 void StopWorker() override;
90 void ResumeAfterDownload() override; 92 void ResumeAfterDownload() override;
91 void AddMessageToConsole(blink::WebConsoleMessage::Level level, 93 void AddMessageToConsole(blink::WebConsoleMessage::Level level,
92 const std::string& message) override; 94 const std::string& message) override;
93 95
94 base::WeakPtr<EmbeddedWorkerTestHelper> helper_; 96 base::WeakPtr<EmbeddedWorkerTestHelper> helper_;
95 mojo::Binding<mojom::EmbeddedWorkerInstanceClient> binding_; 97 mojo::Binding<mojom::EmbeddedWorkerInstanceClient> binding_;
96 98
97 base::Optional<int> embedded_worker_id_; 99 base::Optional<int> embedded_worker_id_;
98 100
99 private: 101 private:
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 std::vector<std::unique_ptr<MockEmbeddedWorkerInstanceClient>>* 135 std::vector<std::unique_ptr<MockEmbeddedWorkerInstanceClient>>*
134 mock_instance_clients() { 136 mock_instance_clients() {
135 return &mock_instance_clients_; 137 return &mock_instance_clients_;
136 } 138 }
137 139
138 ServiceWorkerContextCore* context(); 140 ServiceWorkerContextCore* context();
139 ServiceWorkerContextWrapper* context_wrapper() { return wrapper_.get(); } 141 ServiceWorkerContextWrapper* context_wrapper() { return wrapper_.get(); }
140 void ShutdownContext(); 142 void ShutdownContext();
141 143
142 int GetNextThreadId() { return next_thread_id_++; } 144 int GetNextThreadId() { return next_thread_id_++; }
145 int GetNextProviderId() { return next_provider_id_++; }
143 146
144 int mock_render_process_id() const { return mock_render_process_id_; } 147 int mock_render_process_id() const { return mock_render_process_id_; }
145 MockRenderProcessHost* mock_render_process_host() { 148 MockRenderProcessHost* mock_render_process_host() {
146 return render_process_host_.get(); 149 return render_process_host_.get();
147 } 150 }
148 151
149 std::map<int, int64_t> embedded_worker_id_service_worker_version_id_map() { 152 std::map<int, int64_t> embedded_worker_id_service_worker_version_id_map() {
150 return embedded_worker_id_service_worker_version_id_map_; 153 return embedded_worker_id_service_worker_version_id_map_;
151 } 154 }
152 155
(...skipping 11 matching lines...) Expand all
164 protected: 167 protected:
165 // StartWorker IPC handler routed through MockEmbeddedWorkerInstanceClient. 168 // StartWorker IPC handler routed through MockEmbeddedWorkerInstanceClient.
166 // This simulates each legacy IPC sent from the renderer and binds |request| 169 // This simulates each legacy IPC sent from the renderer and binds |request|
167 // to MockServiceWorkerEventDispatcher by default. 170 // to MockServiceWorkerEventDispatcher by default.
168 virtual void OnStartWorker( 171 virtual void OnStartWorker(
169 int embedded_worker_id, 172 int embedded_worker_id,
170 int64_t service_worker_version_id, 173 int64_t service_worker_version_id,
171 const GURL& scope, 174 const GURL& scope,
172 const GURL& script_url, 175 const GURL& script_url,
173 bool pause_after_download, 176 bool pause_after_download,
174 mojom::ServiceWorkerEventDispatcherRequest request); 177 mojom::ServiceWorkerEventDispatcherRequest request,
178 mojom::EmbeddedWorkerInstanceHostAssociatedPtrInfo instance_host);
175 virtual void OnResumeAfterDownload(int embedded_worker_id); 179 virtual void OnResumeAfterDownload(int embedded_worker_id);
176 // StopWorker IPC handler routed through MockEmbeddedWorkerInstanceClient. 180 // StopWorker IPC handler routed through MockEmbeddedWorkerInstanceClient.
177 // This calls StopWorkerCallback by default. 181 // This calls SimulateWorkerStopped(embedded_worker_id) by default.
178 virtual void OnStopWorker( 182 virtual void OnStopWorker(int embedded_worker_id);
179 const mojom::EmbeddedWorkerInstanceClient::StopWorkerCallback& callback);
180 // The legacy IPC message handler. This passes the messages to their 183 // The legacy IPC message handler. This passes the messages to their
181 // respective On*Event handler by default. 184 // respective On*Event handler by default.
182 virtual bool OnMessageToWorker(int thread_id, 185 virtual bool OnMessageToWorker(int thread_id,
183 int embedded_worker_id, 186 int embedded_worker_id,
184 const IPC::Message& message); 187 const IPC::Message& message);
185 188
186 // On*Event handlers. Called by the default implementation of 189 // On*Event handlers. Called by the default implementation of
187 // OnMessageToWorker when events are sent to the embedded 190 // OnMessageToWorker when events are sent to the embedded
188 // worker. By default they just return success via 191 // worker. By default they just return success via
189 // SimulateSendReplyToBrowser. 192 // SimulateSendReplyToBrowser.
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 payments::mojom::PaymentAppRequestPtr data, 242 payments::mojom::PaymentAppRequestPtr data,
240 payments::mojom::PaymentAppResponseCallbackPtr response_callback, 243 payments::mojom::PaymentAppResponseCallbackPtr response_callback,
241 const mojom::ServiceWorkerEventDispatcher:: 244 const mojom::ServiceWorkerEventDispatcher::
242 DispatchPaymentRequestEventCallback& callback); 245 DispatchPaymentRequestEventCallback& callback);
243 246
244 // These functions simulate sending an EmbeddedHostMsg message through the 247 // These functions simulate sending an EmbeddedHostMsg message through the
245 // legacy IPC system to the browser. 248 // legacy IPC system to the browser.
246 void SimulateWorkerReadyForInspection(int embedded_worker_id); 249 void SimulateWorkerReadyForInspection(int embedded_worker_id);
247 void SimulateWorkerScriptCached(int embedded_worker_id); 250 void SimulateWorkerScriptCached(int embedded_worker_id);
248 void SimulateWorkerScriptLoaded(int embedded_worker_id); 251 void SimulateWorkerScriptLoaded(int embedded_worker_id);
249 void SimulateWorkerThreadStarted(int thread_id, int embedded_worker_id); 252 void SimulateWorkerThreadStarted(int thread_id,
253 int embedded_worker_id,
254 int provider_id);
250 void SimulateWorkerScriptEvaluated(int embedded_worker_id, bool success); 255 void SimulateWorkerScriptEvaluated(int embedded_worker_id, bool success);
251 void SimulateWorkerStarted(int embedded_worker_id); 256 void SimulateWorkerStarted(int embedded_worker_id);
252 void SimulateWorkerStopped(int embedded_worker_id); 257 void SimulateWorkerStopped(int embedded_worker_id);
253 void SimulateSend(IPC::Message* message); 258 void SimulateSend(IPC::Message* message);
254 259
255 EmbeddedWorkerRegistry* registry(); 260 EmbeddedWorkerRegistry* registry();
256 261
257 private: 262 private:
258 class MockServiceWorkerEventDispatcher; 263 class MockServiceWorkerEventDispatcher;
259 264
260 void OnStartWorkerStub(const EmbeddedWorkerStartParams& params, 265 void OnStartWorkerStub(
261 mojom::ServiceWorkerEventDispatcherRequest request); 266 const EmbeddedWorkerStartParams& params,
267 mojom::ServiceWorkerEventDispatcherRequest request,
268 mojom::EmbeddedWorkerInstanceHostAssociatedPtrInfo instance_host);
262 void OnResumeAfterDownloadStub(int embedded_worker_id); 269 void OnResumeAfterDownloadStub(int embedded_worker_id);
263 void OnStopWorkerStub( 270 void OnStopWorkerStub(int embedded_worker_id);
264 const mojom::EmbeddedWorkerInstanceClient::StopWorkerCallback& callback);
265 void OnMessageToWorkerStub(int thread_id, 271 void OnMessageToWorkerStub(int thread_id,
266 int embedded_worker_id, 272 int embedded_worker_id,
267 const IPC::Message& message); 273 const IPC::Message& message);
268 void OnActivateEventStub( 274 void OnActivateEventStub(
269 const mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback& 275 const mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback&
270 callback); 276 callback);
271 void OnBackgroundFetchAbortEventStub( 277 void OnBackgroundFetchAbortEventStub(
272 const std::string& tag, 278 const std::string& tag,
273 const mojom::ServiceWorkerEventDispatcher:: 279 const mojom::ServiceWorkerEventDispatcher::
274 DispatchBackgroundFetchAbortEventCallback& callback); 280 DispatchBackgroundFetchAbortEventCallback& callback);
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 scoped_refptr<ServiceWorkerContextWrapper> wrapper_; 335 scoped_refptr<ServiceWorkerContextWrapper> wrapper_;
330 336
331 IPC::TestSink sink_; 337 IPC::TestSink sink_;
332 IPC::TestSink inner_sink_; 338 IPC::TestSink inner_sink_;
333 339
334 std::vector<std::unique_ptr<MockEmbeddedWorkerInstanceClient>> 340 std::vector<std::unique_ptr<MockEmbeddedWorkerInstanceClient>>
335 mock_instance_clients_; 341 mock_instance_clients_;
336 size_t mock_instance_clients_next_index_; 342 size_t mock_instance_clients_next_index_;
337 343
338 int next_thread_id_; 344 int next_thread_id_;
345 int next_provider_id_;
339 int mock_render_process_id_; 346 int mock_render_process_id_;
340 int new_mock_render_process_id_; 347 int new_mock_render_process_id_;
341 348
342 std::map<int /* process_id */, scoped_refptr<ServiceWorkerDispatcherHost>> 349 std::map<int /* process_id */, scoped_refptr<ServiceWorkerDispatcherHost>>
343 dispatcher_hosts_; 350 dispatcher_hosts_;
344 351
345 std::unique_ptr<service_manager::InterfaceRegistry> 352 std::unique_ptr<service_manager::InterfaceRegistry>
346 render_process_interface_registry_; 353 render_process_interface_registry_;
347 std::unique_ptr<service_manager::InterfaceRegistry> 354 std::unique_ptr<service_manager::InterfaceRegistry>
348 new_render_process_interface_registry_; 355 new_render_process_interface_registry_;
349 356
350 std::map<int, int64_t> embedded_worker_id_service_worker_version_id_map_; 357 std::map<int, int64_t> embedded_worker_id_service_worker_version_id_map_;
351 std::map<int /* thread_id */, int /* embedded_worker_id */> 358 std::map<int /* thread_id */, int /* embedded_worker_id */>
352 thread_id_embedded_worker_id_map_; 359 thread_id_embedded_worker_id_map_;
353 360
361 std::map<
362 int /* embedded_worker_id */,
363 mojom::EmbeddedWorkerInstanceHostAssociatedPtr /* instance_host_ptr */>
364 embedded_worker_id_instance_host_ptr_map_;
365
354 // Updated each time MessageToWorker message is received. 366 // Updated each time MessageToWorker message is received.
355 int current_embedded_worker_id_; 367 int current_embedded_worker_id_;
356 368
357 std::vector<Event> events_; 369 std::vector<Event> events_;
358 370
359 base::WeakPtrFactory<EmbeddedWorkerTestHelper> weak_factory_; 371 base::WeakPtrFactory<EmbeddedWorkerTestHelper> weak_factory_;
360 372
361 DISALLOW_COPY_AND_ASSIGN(EmbeddedWorkerTestHelper); 373 DISALLOW_COPY_AND_ASSIGN(EmbeddedWorkerTestHelper);
362 }; 374 };
363 375
364 template <typename MockType, typename... Args> 376 template <typename MockType, typename... Args>
365 MockType* EmbeddedWorkerTestHelper::CreateAndRegisterMockInstanceClient( 377 MockType* EmbeddedWorkerTestHelper::CreateAndRegisterMockInstanceClient(
366 Args&&... args) { 378 Args&&... args) {
367 std::unique_ptr<MockType> mock = 379 std::unique_ptr<MockType> mock =
368 base::MakeUnique<MockType>(std::forward<Args>(args)...); 380 base::MakeUnique<MockType>(std::forward<Args>(args)...);
369 MockType* mock_rawptr = mock.get(); 381 MockType* mock_rawptr = mock.get();
370 RegisterMockInstanceClient(std::move(mock)); 382 RegisterMockInstanceClient(std::move(mock));
371 return mock_rawptr; 383 return mock_rawptr;
372 } 384 }
373 385
374 } // namespace content 386 } // namespace content
375 387
376 #endif // CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_TEST_HELPER_H_ 388 #endif // CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_TEST_HELPER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698