OLD | NEW |
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 #include "content/browser/service_worker/embedded_worker_test_helper.h" | 5 #include "content/browser/service_worker/embedded_worker_test_helper.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <string> | 8 #include <string> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
11 #include "base/atomic_sequence_num.h" | 11 #include "base/atomic_sequence_num.h" |
12 #include "base/bind.h" | 12 #include "base/bind.h" |
13 #include "base/memory/scoped_vector.h" | 13 #include "base/memory/scoped_vector.h" |
14 #include "base/threading/thread_task_runner_handle.h" | 14 #include "base/threading/thread_task_runner_handle.h" |
15 #include "base/time/time.h" | 15 #include "base/time/time.h" |
16 #include "content/browser/message_port_message_filter.h" | 16 #include "content/browser/message_port_message_filter.h" |
17 #include "content/browser/service_worker/embedded_worker_instance.h" | 17 #include "content/browser/service_worker/embedded_worker_instance.h" |
18 #include "content/browser/service_worker/embedded_worker_registry.h" | 18 #include "content/browser/service_worker/embedded_worker_registry.h" |
19 #include "content/browser/service_worker/embedded_worker_status.h" | 19 #include "content/browser/service_worker/embedded_worker_status.h" |
20 #include "content/browser/service_worker/service_worker_context_core.h" | 20 #include "content/browser/service_worker/service_worker_context_core.h" |
21 #include "content/browser/service_worker/service_worker_context_wrapper.h" | 21 #include "content/browser/service_worker/service_worker_context_wrapper.h" |
22 #include "content/common/service_worker/embedded_worker_messages.h" | 22 #include "content/common/service_worker/embedded_worker_messages.h" |
23 #include "content/common/service_worker/embedded_worker_setup.mojom.h" | 23 #include "content/common/service_worker/embedded_worker_setup.mojom.h" |
| 24 #include "content/common/service_worker/fetch_event_dispatcher.mojom.h" |
24 #include "content/common/service_worker/service_worker_messages.h" | 25 #include "content/common/service_worker/service_worker_messages.h" |
| 26 #include "content/common/service_worker/service_worker_status_code.h" |
25 #include "content/public/common/push_event_payload.h" | 27 #include "content/public/common/push_event_payload.h" |
26 #include "content/public/test/mock_render_process_host.h" | 28 #include "content/public/test/mock_render_process_host.h" |
27 #include "content/public/test/test_browser_context.h" | 29 #include "content/public/test/test_browser_context.h" |
28 #include "mojo/public/cpp/bindings/interface_request.h" | 30 #include "mojo/public/cpp/bindings/interface_request.h" |
29 #include "mojo/public/cpp/bindings/strong_binding.h" | 31 #include "mojo/public/cpp/bindings/strong_binding.h" |
30 #include "services/shell/public/cpp/interface_provider.h" | 32 #include "services/shell/public/cpp/interface_provider.h" |
31 #include "services/shell/public/cpp/interface_registry.h" | 33 #include "services/shell/public/cpp/interface_registry.h" |
32 #include "testing/gtest/include/gtest/gtest.h" | 34 #include "testing/gtest/include/gtest/gtest.h" |
33 | 35 |
34 namespace content { | 36 namespace content { |
(...skipping 16 matching lines...) Expand all Loading... |
51 ~MockMessagePortMessageFilter() override {} | 53 ~MockMessagePortMessageFilter() override {} |
52 base::AtomicSequenceNumber next_routing_id_; | 54 base::AtomicSequenceNumber next_routing_id_; |
53 ScopedVector<IPC::Message> message_queue_; | 55 ScopedVector<IPC::Message> message_queue_; |
54 }; | 56 }; |
55 | 57 |
56 } // namespace | 58 } // namespace |
57 | 59 |
58 class EmbeddedWorkerTestHelper::MockEmbeddedWorkerSetup | 60 class EmbeddedWorkerTestHelper::MockEmbeddedWorkerSetup |
59 : public mojom::EmbeddedWorkerSetup { | 61 : public mojom::EmbeddedWorkerSetup { |
60 public: | 62 public: |
61 explicit MockEmbeddedWorkerSetup( | |
62 const base::WeakPtr<EmbeddedWorkerTestHelper>& helper) | |
63 : helper_(helper) {} | |
64 | |
65 static void Create(const base::WeakPtr<EmbeddedWorkerTestHelper>& helper, | 63 static void Create(const base::WeakPtr<EmbeddedWorkerTestHelper>& helper, |
66 mojom::EmbeddedWorkerSetupRequest request) { | 64 mojom::EmbeddedWorkerSetupRequest request) { |
67 mojo::MakeStrongBinding(base::MakeUnique<MockEmbeddedWorkerSetup>(helper), | 65 mojo::MakeStrongBinding(base::MakeUnique<MockEmbeddedWorkerSetup>(helper), |
68 std::move(request)); | 66 std::move(request)); |
69 } | 67 } |
70 | 68 |
| 69 explicit MockEmbeddedWorkerSetup( |
| 70 const base::WeakPtr<EmbeddedWorkerTestHelper>& helper) |
| 71 : helper_(helper) {} |
| 72 |
| 73 ~MockEmbeddedWorkerSetup() override {} |
| 74 |
71 void ExchangeInterfaceProviders( | 75 void ExchangeInterfaceProviders( |
72 int32_t thread_id, | 76 int32_t thread_id, |
73 shell::mojom::InterfaceProviderRequest request, | 77 shell::mojom::InterfaceProviderRequest request, |
74 shell::mojom::InterfaceProviderPtr remote_interfaces) override { | 78 shell::mojom::InterfaceProviderPtr remote_interfaces) override { |
75 if (!helper_) | 79 if (!helper_) |
76 return; | 80 return; |
77 helper_->OnSetupMojoStub(thread_id, std::move(request), | 81 helper_->OnSetupMojoStub(thread_id, std::move(request), |
78 std::move(remote_interfaces)); | 82 std::move(remote_interfaces)); |
79 } | 83 } |
80 | 84 |
81 private: | 85 private: |
82 base::WeakPtr<EmbeddedWorkerTestHelper> helper_; | 86 base::WeakPtr<EmbeddedWorkerTestHelper> helper_; |
83 }; | 87 }; |
84 | 88 |
| 89 class EmbeddedWorkerTestHelper::MockFetchEventDispatcher |
| 90 : public NON_EXPORTED_BASE(mojom::FetchEventDispatcher) { |
| 91 public: |
| 92 static void Create(const base::WeakPtr<EmbeddedWorkerTestHelper>& helper, |
| 93 int thread_id, |
| 94 mojom::FetchEventDispatcherRequest request) { |
| 95 mojo::MakeStrongBinding( |
| 96 base::MakeUnique<MockFetchEventDispatcher>(helper, thread_id), |
| 97 std::move(request)); |
| 98 } |
| 99 |
| 100 MockFetchEventDispatcher( |
| 101 const base::WeakPtr<EmbeddedWorkerTestHelper>& helper, |
| 102 int thread_id) |
| 103 : helper_(helper), thread_id_(thread_id) {} |
| 104 |
| 105 ~MockFetchEventDispatcher() override {} |
| 106 |
| 107 void DispatchFetchEvent(int response_id, |
| 108 const ServiceWorkerFetchRequest& request, |
| 109 const DispatchFetchEventCallback& callback) override { |
| 110 if (!helper_) |
| 111 return; |
| 112 helper_->OnFetchEventStub(thread_id_, response_id, request, callback); |
| 113 } |
| 114 |
| 115 private: |
| 116 base::WeakPtr<EmbeddedWorkerTestHelper> helper_; |
| 117 const int thread_id_; |
| 118 }; |
| 119 |
85 EmbeddedWorkerTestHelper::EmbeddedWorkerTestHelper( | 120 EmbeddedWorkerTestHelper::EmbeddedWorkerTestHelper( |
86 const base::FilePath& user_data_directory) | 121 const base::FilePath& user_data_directory) |
87 : browser_context_(new TestBrowserContext), | 122 : browser_context_(new TestBrowserContext), |
88 render_process_host_(new MockRenderProcessHost(browser_context_.get())), | 123 render_process_host_(new MockRenderProcessHost(browser_context_.get())), |
89 wrapper_(new ServiceWorkerContextWrapper(browser_context_.get())), | 124 wrapper_(new ServiceWorkerContextWrapper(browser_context_.get())), |
90 next_thread_id_(0), | 125 next_thread_id_(0), |
91 mock_render_process_id_(render_process_host_->GetID()), | 126 mock_render_process_id_(render_process_host_->GetID()), |
92 weak_factory_(this) { | 127 weak_factory_(this) { |
93 std::unique_ptr<MockServiceWorkerDatabaseTaskManager> database_task_manager( | 128 std::unique_ptr<MockServiceWorkerDatabaseTaskManager> database_task_manager( |
94 new MockServiceWorkerDatabaseTaskManager( | 129 new MockServiceWorkerDatabaseTaskManager( |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
188 bool EmbeddedWorkerTestHelper::OnMessageToWorker(int thread_id, | 223 bool EmbeddedWorkerTestHelper::OnMessageToWorker(int thread_id, |
189 int embedded_worker_id, | 224 int embedded_worker_id, |
190 const IPC::Message& message) { | 225 const IPC::Message& message) { |
191 bool handled = true; | 226 bool handled = true; |
192 current_embedded_worker_id_ = embedded_worker_id; | 227 current_embedded_worker_id_ = embedded_worker_id; |
193 IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerTestHelper, message) | 228 IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerTestHelper, message) |
194 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ActivateEvent, OnActivateEventStub) | 229 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ActivateEvent, OnActivateEventStub) |
195 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ExtendableMessageEvent, | 230 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ExtendableMessageEvent, |
196 OnExtendableMessageEventStub) | 231 OnExtendableMessageEventStub) |
197 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_InstallEvent, OnInstallEventStub) | 232 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_InstallEvent, OnInstallEventStub) |
198 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_FetchEvent, OnFetchEventStub) | |
199 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_PushEvent, OnPushEventStub) | 233 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_PushEvent, OnPushEventStub) |
200 IPC_MESSAGE_UNHANDLED(handled = false) | 234 IPC_MESSAGE_UNHANDLED(handled = false) |
201 IPC_END_MESSAGE_MAP() | 235 IPC_END_MESSAGE_MAP() |
202 // Record all messages directed to inner script context. | 236 // Record all messages directed to inner script context. |
203 inner_sink_.OnMessageReceived(message); | 237 inner_sink_.OnMessageReceived(message); |
204 return handled; | 238 return handled; |
205 } | 239 } |
206 | 240 |
207 void EmbeddedWorkerTestHelper::OnSetupMojo( | 241 void EmbeddedWorkerTestHelper::OnSetupMojo( |
208 shell::InterfaceRegistry* interface_registry) {} | 242 int thread_id, |
| 243 shell::InterfaceRegistry* interface_registry) { |
| 244 interface_registry->AddInterface(base::Bind(&MockFetchEventDispatcher::Create, |
| 245 weak_factory_.GetWeakPtr(), |
| 246 thread_id)); |
| 247 } |
209 | 248 |
210 void EmbeddedWorkerTestHelper::OnActivateEvent(int embedded_worker_id, | 249 void EmbeddedWorkerTestHelper::OnActivateEvent(int embedded_worker_id, |
211 int request_id) { | 250 int request_id) { |
212 SimulateSend(new ServiceWorkerHostMsg_ActivateEventFinished( | 251 SimulateSend(new ServiceWorkerHostMsg_ActivateEventFinished( |
213 embedded_worker_id, request_id, | 252 embedded_worker_id, request_id, |
214 blink::WebServiceWorkerEventResultCompleted, base::Time::Now())); | 253 blink::WebServiceWorkerEventResultCompleted, base::Time::Now())); |
215 } | 254 } |
216 | 255 |
217 void EmbeddedWorkerTestHelper::OnExtendableMessageEvent(int embedded_worker_id, | 256 void EmbeddedWorkerTestHelper::OnExtendableMessageEvent(int embedded_worker_id, |
218 int request_id) { | 257 int request_id) { |
219 SimulateSend(new ServiceWorkerHostMsg_ExtendableMessageEventFinished( | 258 SimulateSend(new ServiceWorkerHostMsg_ExtendableMessageEventFinished( |
220 embedded_worker_id, request_id, | 259 embedded_worker_id, request_id, |
221 blink::WebServiceWorkerEventResultCompleted, base::Time::Now())); | 260 blink::WebServiceWorkerEventResultCompleted, base::Time::Now())); |
222 } | 261 } |
223 | 262 |
224 void EmbeddedWorkerTestHelper::OnInstallEvent(int embedded_worker_id, | 263 void EmbeddedWorkerTestHelper::OnInstallEvent(int embedded_worker_id, |
225 int request_id) { | 264 int request_id) { |
226 // The installing worker may have been doomed and terminated. | 265 // The installing worker may have been doomed and terminated. |
227 if (!registry()->GetWorker(embedded_worker_id)) | 266 if (!registry()->GetWorker(embedded_worker_id)) |
228 return; | 267 return; |
229 SimulateSend(new ServiceWorkerHostMsg_InstallEventFinished( | 268 SimulateSend(new ServiceWorkerHostMsg_InstallEventFinished( |
230 embedded_worker_id, request_id, | 269 embedded_worker_id, request_id, |
231 blink::WebServiceWorkerEventResultCompleted, true, base::Time::Now())); | 270 blink::WebServiceWorkerEventResultCompleted, true, base::Time::Now())); |
232 } | 271 } |
233 | 272 |
234 void EmbeddedWorkerTestHelper::OnFetchEvent( | 273 void EmbeddedWorkerTestHelper::OnFetchEvent( |
235 int embedded_worker_id, | 274 int embedded_worker_id, |
236 int response_id, | 275 int response_id, |
237 int event_finish_id, | 276 const ServiceWorkerFetchRequest& request, |
238 const ServiceWorkerFetchRequest& request) { | 277 const FetchCallback& callback) { |
239 SimulateSend(new ServiceWorkerHostMsg_FetchEventResponse( | 278 SimulateSend(new ServiceWorkerHostMsg_FetchEventResponse( |
240 embedded_worker_id, response_id, | 279 embedded_worker_id, response_id, |
241 SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, | 280 SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, |
242 ServiceWorkerResponse( | 281 ServiceWorkerResponse( |
243 GURL(), 200, "OK", blink::WebServiceWorkerResponseTypeDefault, | 282 GURL(), 200, "OK", blink::WebServiceWorkerResponseTypeDefault, |
244 ServiceWorkerHeaderMap(), std::string(), 0, GURL(), | 283 ServiceWorkerHeaderMap(), std::string(), 0, GURL(), |
245 blink::WebServiceWorkerResponseErrorUnknown, base::Time(), | 284 blink::WebServiceWorkerResponseErrorUnknown, base::Time(), |
246 false /* is_in_cache_storage */, | 285 false /* is_in_cache_storage */, |
247 std::string() /* cache_storage_cache_name */, | 286 std::string() /* cache_storage_cache_name */, |
248 ServiceWorkerHeaderList() /* cors_exposed_header_names */), | 287 ServiceWorkerHeaderList() /* cors_exposed_header_names */), |
249 base::Time::Now())); | 288 base::Time::Now())); |
250 SimulateSend(new ServiceWorkerHostMsg_FetchEventFinished( | 289 callback.Run(SERVICE_WORKER_OK, base::Time::Now()); |
251 embedded_worker_id, event_finish_id, | |
252 blink::WebServiceWorkerEventResultCompleted, base::Time::Now())); | |
253 } | 290 } |
254 | 291 |
255 void EmbeddedWorkerTestHelper::OnPushEvent(int embedded_worker_id, | 292 void EmbeddedWorkerTestHelper::OnPushEvent(int embedded_worker_id, |
256 int request_id, | 293 int request_id, |
257 const PushEventPayload& payload) { | 294 const PushEventPayload& payload) { |
258 SimulateSend(new ServiceWorkerHostMsg_PushEventFinished( | 295 SimulateSend(new ServiceWorkerHostMsg_PushEventFinished( |
259 embedded_worker_id, request_id, | 296 embedded_worker_id, request_id, |
260 blink::WebServiceWorkerEventResultCompleted, base::Time::Now())); | 297 blink::WebServiceWorkerEventResultCompleted, base::Time::Now())); |
261 } | 298 } |
262 | 299 |
(...skipping 24 matching lines...) Expand all Loading... |
287 void EmbeddedWorkerTestHelper::SimulateWorkerScriptLoaded( | 324 void EmbeddedWorkerTestHelper::SimulateWorkerScriptLoaded( |
288 int embedded_worker_id) { | 325 int embedded_worker_id) { |
289 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | 326 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); |
290 ASSERT_TRUE(worker != NULL); | 327 ASSERT_TRUE(worker != NULL); |
291 registry()->OnWorkerScriptLoaded(worker->process_id(), embedded_worker_id); | 328 registry()->OnWorkerScriptLoaded(worker->process_id(), embedded_worker_id); |
292 } | 329 } |
293 | 330 |
294 void EmbeddedWorkerTestHelper::SimulateWorkerThreadStarted( | 331 void EmbeddedWorkerTestHelper::SimulateWorkerThreadStarted( |
295 int thread_id, | 332 int thread_id, |
296 int embedded_worker_id) { | 333 int embedded_worker_id) { |
| 334 thread_id_embedded_worker_id_map_[thread_id] = embedded_worker_id; |
297 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | 335 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); |
298 ASSERT_TRUE(worker != NULL); | 336 ASSERT_TRUE(worker != NULL); |
299 registry()->OnWorkerThreadStarted(worker->process_id(), thread_id, | 337 registry()->OnWorkerThreadStarted(worker->process_id(), thread_id, |
300 embedded_worker_id); | 338 embedded_worker_id); |
301 } | 339 } |
302 | 340 |
303 void EmbeddedWorkerTestHelper::SimulateWorkerScriptEvaluated( | 341 void EmbeddedWorkerTestHelper::SimulateWorkerScriptEvaluated( |
304 int embedded_worker_id, | 342 int embedded_worker_id, |
305 bool success) { | 343 bool success) { |
306 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); | 344 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
388 } | 426 } |
389 | 427 |
390 void EmbeddedWorkerTestHelper::OnInstallEventStub(int request_id) { | 428 void EmbeddedWorkerTestHelper::OnInstallEventStub(int request_id) { |
391 base::ThreadTaskRunnerHandle::Get()->PostTask( | 429 base::ThreadTaskRunnerHandle::Get()->PostTask( |
392 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnInstallEvent, | 430 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnInstallEvent, |
393 weak_factory_.GetWeakPtr(), | 431 weak_factory_.GetWeakPtr(), |
394 current_embedded_worker_id_, request_id)); | 432 current_embedded_worker_id_, request_id)); |
395 } | 433 } |
396 | 434 |
397 void EmbeddedWorkerTestHelper::OnFetchEventStub( | 435 void EmbeddedWorkerTestHelper::OnFetchEventStub( |
| 436 int thread_id, |
398 int response_id, | 437 int response_id, |
399 int event_finish_id, | 438 const ServiceWorkerFetchRequest& request, |
400 const ServiceWorkerFetchRequest& request) { | 439 const FetchCallback& callback) { |
401 base::ThreadTaskRunnerHandle::Get()->PostTask( | 440 base::ThreadTaskRunnerHandle::Get()->PostTask( |
402 FROM_HERE, | 441 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnFetchEvent, |
403 base::Bind(&EmbeddedWorkerTestHelper::OnFetchEvent, | 442 weak_factory_.GetWeakPtr(), |
404 weak_factory_.GetWeakPtr(), current_embedded_worker_id_, | 443 thread_id_embedded_worker_id_map_[thread_id], |
405 response_id, event_finish_id, request)); | 444 response_id, request, callback)); |
406 } | 445 } |
407 | 446 |
408 void EmbeddedWorkerTestHelper::OnPushEventStub( | 447 void EmbeddedWorkerTestHelper::OnPushEventStub( |
409 int request_id, | 448 int request_id, |
410 const PushEventPayload& payload) { | 449 const PushEventPayload& payload) { |
411 base::ThreadTaskRunnerHandle::Get()->PostTask( | 450 base::ThreadTaskRunnerHandle::Get()->PostTask( |
412 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnPushEvent, | 451 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnPushEvent, |
413 weak_factory_.GetWeakPtr(), | 452 weak_factory_.GetWeakPtr(), |
414 current_embedded_worker_id_, request_id, payload)); | 453 current_embedded_worker_id_, request_id, payload)); |
415 } | 454 } |
416 | 455 |
417 void EmbeddedWorkerTestHelper::OnSetupMojoStub( | 456 void EmbeddedWorkerTestHelper::OnSetupMojoStub( |
418 int thread_id, | 457 int thread_id, |
419 shell::mojom::InterfaceProviderRequest request, | 458 shell::mojom::InterfaceProviderRequest request, |
420 shell::mojom::InterfaceProviderPtr remote_interfaces) { | 459 shell::mojom::InterfaceProviderPtr remote_interfaces) { |
421 std::unique_ptr<shell::InterfaceRegistry> local( | 460 std::unique_ptr<shell::InterfaceRegistry> local( |
422 new shell::InterfaceRegistry); | 461 new shell::InterfaceRegistry); |
423 local->Bind(std::move(request)); | 462 local->Bind(std::move(request)); |
424 | 463 |
425 std::unique_ptr<shell::InterfaceProvider> remote( | 464 std::unique_ptr<shell::InterfaceProvider> remote( |
426 new shell::InterfaceProvider); | 465 new shell::InterfaceProvider); |
427 remote->Bind(std::move(remote_interfaces)); | 466 remote->Bind(std::move(remote_interfaces)); |
428 | 467 |
429 OnSetupMojo(local.get()); | 468 OnSetupMojo(thread_id, local.get()); |
430 InterfaceRegistryAndProvider pair(std::move(local), std::move(remote)); | 469 InterfaceRegistryAndProvider pair(std::move(local), std::move(remote)); |
431 thread_id_service_registry_map_[thread_id] = std::move(pair); | 470 thread_id_service_registry_map_[thread_id] = std::move(pair); |
432 } | 471 } |
433 | 472 |
434 EmbeddedWorkerRegistry* EmbeddedWorkerTestHelper::registry() { | 473 EmbeddedWorkerRegistry* EmbeddedWorkerTestHelper::registry() { |
435 DCHECK(context()); | 474 DCHECK(context()); |
436 return context()->embedded_worker_registry(); | 475 return context()->embedded_worker_registry(); |
437 } | 476 } |
438 | 477 |
439 MessagePortMessageFilter* | 478 MessagePortMessageFilter* |
440 EmbeddedWorkerTestHelper::NewMessagePortMessageFilter() { | 479 EmbeddedWorkerTestHelper::NewMessagePortMessageFilter() { |
441 scoped_refptr<MessagePortMessageFilter> filter( | 480 scoped_refptr<MessagePortMessageFilter> filter( |
442 new MockMessagePortMessageFilter); | 481 new MockMessagePortMessageFilter); |
443 message_port_message_filters_.push_back(filter); | 482 message_port_message_filters_.push_back(filter); |
444 return filter.get(); | 483 return filter.get(); |
445 } | 484 } |
446 | 485 |
447 } // namespace content | 486 } // namespace content |
OLD | NEW |