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

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

Issue 2678733002: [ServiceWorker] Mojofy ActivateEvent of Service Worker (Closed)
Patch Set: Address comments #25, #26, #33 Created 3 years, 10 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 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 // also returns success for event messages (e.g. InstallEvent, FetchEvent). 58 // also returns success for event messages (e.g. InstallEvent, FetchEvent).
59 // 59 //
60 // Alternatively consumers can subclass this helper and override On*() 60 // Alternatively consumers can subclass this helper and override On*()
61 // methods to add their own logic/verification code. 61 // methods to add their own logic/verification code.
62 // 62 //
63 // See embedded_worker_instance_unittest.cc for example usages. 63 // See embedded_worker_instance_unittest.cc for example usages.
64 // 64 //
65 class EmbeddedWorkerTestHelper : public IPC::Sender, 65 class EmbeddedWorkerTestHelper : public IPC::Sender,
66 public IPC::Listener { 66 public IPC::Listener {
67 public: 67 public:
68 enum class Event { Activate };
68 using FetchCallback = 69 using FetchCallback =
69 base::Callback<void(ServiceWorkerStatusCode, 70 base::Callback<void(ServiceWorkerStatusCode,
70 base::Time /* dispatch_event_time */)>; 71 base::Time /* dispatch_event_time */)>;
71 72
72 class MockEmbeddedWorkerInstanceClient 73 class MockEmbeddedWorkerInstanceClient
73 : public mojom::EmbeddedWorkerInstanceClient { 74 : public mojom::EmbeddedWorkerInstanceClient {
74 public: 75 public:
75 explicit MockEmbeddedWorkerInstanceClient( 76 explicit MockEmbeddedWorkerInstanceClient(
76 base::WeakPtr<EmbeddedWorkerTestHelper> helper); 77 base::WeakPtr<EmbeddedWorkerTestHelper> helper);
77 ~MockEmbeddedWorkerInstanceClient() override; 78 ~MockEmbeddedWorkerInstanceClient() override;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 std::unique_ptr<MockEmbeddedWorkerInstanceClient> client); 120 std::unique_ptr<MockEmbeddedWorkerInstanceClient> client);
120 121
121 template <typename MockType, typename... Args> 122 template <typename MockType, typename... Args>
122 MockType* CreateAndRegisterMockInstanceClient(Args&&... args); 123 MockType* CreateAndRegisterMockInstanceClient(Args&&... args);
123 124
124 // IPC sink for EmbeddedWorker messages. 125 // IPC sink for EmbeddedWorker messages.
125 IPC::TestSink* ipc_sink() { return &sink_; } 126 IPC::TestSink* ipc_sink() { return &sink_; }
126 // Inner IPC sink for script context messages sent via EmbeddedWorker. 127 // Inner IPC sink for script context messages sent via EmbeddedWorker.
127 IPC::TestSink* inner_ipc_sink() { return &inner_sink_; } 128 IPC::TestSink* inner_ipc_sink() { return &inner_sink_; }
128 129
130 const std::vector<Event>& dispatched_events() const { return events_; }
131 std::vector<Event>* events_ptr() { return &events_; }
falken 2017/02/15 07:32:03 Having both a const& and ptr is a bit unusual and
xiaofengzhang 2017/02/16 06:17:50 Done.
132
129 std::vector<std::unique_ptr<MockEmbeddedWorkerInstanceClient>>* 133 std::vector<std::unique_ptr<MockEmbeddedWorkerInstanceClient>>*
130 mock_instance_clients() { 134 mock_instance_clients() {
131 return &mock_instance_clients_; 135 return &mock_instance_clients_;
132 } 136 }
133 137
134 ServiceWorkerContextCore* context(); 138 ServiceWorkerContextCore* context();
135 ServiceWorkerContextWrapper* context_wrapper() { return wrapper_.get(); } 139 ServiceWorkerContextWrapper* context_wrapper() { return wrapper_.get(); }
136 void ShutdownContext(); 140 void ShutdownContext();
137 141
138 int GetNextThreadId() { return next_thread_id_++; } 142 int GetNextThreadId() { return next_thread_id_++; }
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 // The legacy IPC message handler. This passes the messages to their 180 // The legacy IPC message handler. This passes the messages to their
177 // respective On*Event handler by default. 181 // respective On*Event handler by default.
178 virtual bool OnMessageToWorker(int thread_id, 182 virtual bool OnMessageToWorker(int thread_id,
179 int embedded_worker_id, 183 int embedded_worker_id,
180 const IPC::Message& message); 184 const IPC::Message& message);
181 185
182 // On*Event handlers. Called by the default implementation of 186 // On*Event handlers. Called by the default implementation of
183 // OnMessageToWorker when events are sent to the embedded 187 // OnMessageToWorker when events are sent to the embedded
184 // worker. By default they just return success via 188 // worker. By default they just return success via
185 // SimulateSendReplyToBrowser. 189 // SimulateSendReplyToBrowser.
186 virtual void OnActivateEvent(int embedded_worker_id, int request_id); 190 virtual void OnActivateEvent(
191 const mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback&
192 callback);
187 virtual void OnExtendableMessageEvent( 193 virtual void OnExtendableMessageEvent(
188 mojom::ExtendableMessageEventPtr event, 194 mojom::ExtendableMessageEventPtr event,
189 const mojom::ServiceWorkerEventDispatcher:: 195 const mojom::ServiceWorkerEventDispatcher::
190 DispatchExtendableMessageEventCallback& callback); 196 DispatchExtendableMessageEventCallback& callback);
191 virtual void OnInstallEvent(int embedded_worker_id, int request_id); 197 virtual void OnInstallEvent(int embedded_worker_id, int request_id);
192 virtual void OnFetchEvent(int embedded_worker_id, 198 virtual void OnFetchEvent(int embedded_worker_id,
193 int fetch_event_id, 199 int fetch_event_id,
194 const ServiceWorkerFetchRequest& request, 200 const ServiceWorkerFetchRequest& request,
195 mojom::FetchEventPreloadHandlePtr preload_handle, 201 mojom::FetchEventPreloadHandlePtr preload_handle,
196 const FetchCallback& callback); 202 const FetchCallback& callback);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 class MockServiceWorkerEventDispatcher; 238 class MockServiceWorkerEventDispatcher;
233 239
234 void OnStartWorkerStub(const EmbeddedWorkerStartParams& params, 240 void OnStartWorkerStub(const EmbeddedWorkerStartParams& params,
235 mojom::ServiceWorkerEventDispatcherRequest request); 241 mojom::ServiceWorkerEventDispatcherRequest request);
236 void OnResumeAfterDownloadStub(int embedded_worker_id); 242 void OnResumeAfterDownloadStub(int embedded_worker_id);
237 void OnStopWorkerStub( 243 void OnStopWorkerStub(
238 const mojom::EmbeddedWorkerInstanceClient::StopWorkerCallback& callback); 244 const mojom::EmbeddedWorkerInstanceClient::StopWorkerCallback& callback);
239 void OnMessageToWorkerStub(int thread_id, 245 void OnMessageToWorkerStub(int thread_id,
240 int embedded_worker_id, 246 int embedded_worker_id,
241 const IPC::Message& message); 247 const IPC::Message& message);
242 void OnActivateEventStub(int request_id); 248 void OnActivateEventStub(
249 const mojom::ServiceWorkerEventDispatcher::DispatchActivateEventCallback&
250 callback);
243 void OnExtendableMessageEventStub( 251 void OnExtendableMessageEventStub(
244 mojom::ExtendableMessageEventPtr event, 252 mojom::ExtendableMessageEventPtr event,
245 const mojom::ServiceWorkerEventDispatcher:: 253 const mojom::ServiceWorkerEventDispatcher::
246 DispatchExtendableMessageEventCallback& callback); 254 DispatchExtendableMessageEventCallback& callback);
247 void OnInstallEventStub(int request_id); 255 void OnInstallEventStub(int request_id);
248 void OnFetchEventStub(int thread_id, 256 void OnFetchEventStub(int thread_id,
249 int fetch_event_id, 257 int fetch_event_id,
250 const ServiceWorkerFetchRequest& request, 258 const ServiceWorkerFetchRequest& request,
251 mojom::FetchEventPreloadHandlePtr preload_handle, 259 mojom::FetchEventPreloadHandlePtr preload_handle,
252 const FetchCallback& callback); 260 const FetchCallback& callback);
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 std::map<int, int64_t> embedded_worker_id_service_worker_version_id_map_; 309 std::map<int, int64_t> embedded_worker_id_service_worker_version_id_map_;
302 std::map<int /* thread_id */, int /* embedded_worker_id */> 310 std::map<int /* thread_id */, int /* embedded_worker_id */>
303 thread_id_embedded_worker_id_map_; 311 thread_id_embedded_worker_id_map_;
304 312
305 // Updated each time MessageToWorker message is received. 313 // Updated each time MessageToWorker message is received.
306 int current_embedded_worker_id_; 314 int current_embedded_worker_id_;
307 315
308 std::vector<scoped_refptr<MessagePortMessageFilter>> 316 std::vector<scoped_refptr<MessagePortMessageFilter>>
309 message_port_message_filters_; 317 message_port_message_filters_;
310 318
319 std::vector<Event> events_;
320
311 base::WeakPtrFactory<EmbeddedWorkerTestHelper> weak_factory_; 321 base::WeakPtrFactory<EmbeddedWorkerTestHelper> weak_factory_;
312 322
313 DISALLOW_COPY_AND_ASSIGN(EmbeddedWorkerTestHelper); 323 DISALLOW_COPY_AND_ASSIGN(EmbeddedWorkerTestHelper);
314 }; 324 };
315 325
316 template <typename MockType, typename... Args> 326 template <typename MockType, typename... Args>
317 MockType* EmbeddedWorkerTestHelper::CreateAndRegisterMockInstanceClient( 327 MockType* EmbeddedWorkerTestHelper::CreateAndRegisterMockInstanceClient(
318 Args&&... args) { 328 Args&&... args) {
319 std::unique_ptr<MockType> mock = 329 std::unique_ptr<MockType> mock =
320 base::MakeUnique<MockType>(std::forward<Args>(args)...); 330 base::MakeUnique<MockType>(std::forward<Args>(args)...);
321 MockType* mock_rawptr = mock.get(); 331 MockType* mock_rawptr = mock.get();
322 RegisterMockInstanceClient(std::move(mock)); 332 RegisterMockInstanceClient(std::move(mock));
323 return mock_rawptr; 333 return mock_rawptr;
324 } 334 }
325 335
326 } // namespace content 336 } // namespace content
327 337
328 #endif // CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_TEST_HELPER_H_ 338 #endif // CONTENT_BROWSER_SERVICE_WORKER_EMBEDDED_WORKER_TEST_HELPER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698