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

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

Issue 2352173004: Mojoify FetchEvent of Service Worker. (Closed)
Patch Set: incorporated dcheng's comment Created 4 years, 2 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 #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/embedded_worker_start_params.h" 24 #include "content/common/service_worker/embedded_worker_start_params.h"
25 #include "content/common/service_worker/fetch_event_dispatcher.mojom.h"
25 #include "content/common/service_worker/service_worker_messages.h" 26 #include "content/common/service_worker/service_worker_messages.h"
27 #include "content/common/service_worker/service_worker_status_code.h"
26 #include "content/public/common/push_event_payload.h" 28 #include "content/public/common/push_event_payload.h"
27 #include "content/public/test/mock_render_process_host.h" 29 #include "content/public/test/mock_render_process_host.h"
28 #include "content/public/test/test_browser_context.h" 30 #include "content/public/test/test_browser_context.h"
29 #include "mojo/public/cpp/bindings/interface_request.h" 31 #include "mojo/public/cpp/bindings/interface_request.h"
30 #include "mojo/public/cpp/bindings/strong_binding.h" 32 #include "mojo/public/cpp/bindings/strong_binding.h"
31 #include "services/shell/public/cpp/interface_provider.h" 33 #include "services/shell/public/cpp/interface_provider.h"
32 #include "services/shell/public/cpp/interface_registry.h" 34 #include "services/shell/public/cpp/interface_registry.h"
33 #include "testing/gtest/include/gtest/gtest.h" 35 #include "testing/gtest/include/gtest/gtest.h"
34 36
35 namespace content { 37 namespace content {
(...skipping 16 matching lines...) Expand all
52 ~MockMessagePortMessageFilter() override {} 54 ~MockMessagePortMessageFilter() override {}
53 base::AtomicSequenceNumber next_routing_id_; 55 base::AtomicSequenceNumber next_routing_id_;
54 ScopedVector<IPC::Message> message_queue_; 56 ScopedVector<IPC::Message> message_queue_;
55 }; 57 };
56 58
57 } // namespace 59 } // namespace
58 60
59 class EmbeddedWorkerTestHelper::MockEmbeddedWorkerSetup 61 class EmbeddedWorkerTestHelper::MockEmbeddedWorkerSetup
60 : public mojom::EmbeddedWorkerSetup { 62 : public mojom::EmbeddedWorkerSetup {
61 public: 63 public:
62 explicit MockEmbeddedWorkerSetup(
63 const base::WeakPtr<EmbeddedWorkerTestHelper>& helper)
64 : helper_(helper) {}
65
66 static void Create(const base::WeakPtr<EmbeddedWorkerTestHelper>& helper, 64 static void Create(const base::WeakPtr<EmbeddedWorkerTestHelper>& helper,
67 mojom::EmbeddedWorkerSetupRequest request) { 65 mojom::EmbeddedWorkerSetupRequest request) {
68 mojo::MakeStrongBinding(base::MakeUnique<MockEmbeddedWorkerSetup>(helper), 66 mojo::MakeStrongBinding(base::MakeUnique<MockEmbeddedWorkerSetup>(helper),
69 std::move(request)); 67 std::move(request));
70 } 68 }
71 69
70 explicit MockEmbeddedWorkerSetup(
71 const base::WeakPtr<EmbeddedWorkerTestHelper>& helper)
72 : helper_(helper) {}
73
74 ~MockEmbeddedWorkerSetup() override {}
75
72 void ExchangeInterfaceProviders( 76 void ExchangeInterfaceProviders(
73 int32_t thread_id, 77 int32_t thread_id,
74 shell::mojom::InterfaceProviderRequest request, 78 shell::mojom::InterfaceProviderRequest request,
75 shell::mojom::InterfaceProviderPtr remote_interfaces) override { 79 shell::mojom::InterfaceProviderPtr remote_interfaces) override {
76 if (!helper_) 80 if (!helper_)
77 return; 81 return;
78 helper_->OnSetupMojoStub(thread_id, std::move(request), 82 helper_->OnSetupMojoStub(thread_id, std::move(request),
79 std::move(remote_interfaces)); 83 std::move(remote_interfaces));
80 } 84 }
81 85
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 base::MakeUnique<MockEmbeddedWorkerInstanceClient>(helper)); 129 base::MakeUnique<MockEmbeddedWorkerInstanceClient>(helper));
126 } 130 }
127 131
128 std::unique_ptr<MockEmbeddedWorkerInstanceClient>& client = 132 std::unique_ptr<MockEmbeddedWorkerInstanceClient>& client =
129 clients->at(next_client_index); 133 clients->at(next_client_index);
130 helper->mock_instance_clients_next_index_ = next_client_index + 1; 134 helper->mock_instance_clients_next_index_ = next_client_index + 1;
131 if (client) 135 if (client)
132 client->binding_.Bind(std::move(request)); 136 client->binding_.Bind(std::move(request));
133 } 137 }
134 138
139 class EmbeddedWorkerTestHelper::MockFetchEventDispatcher
140 : public NON_EXPORTED_BASE(mojom::FetchEventDispatcher) {
141 public:
142 static void Create(const base::WeakPtr<EmbeddedWorkerTestHelper>& helper,
143 int thread_id,
144 mojom::FetchEventDispatcherRequest request) {
145 mojo::MakeStrongBinding(
146 base::MakeUnique<MockFetchEventDispatcher>(helper, thread_id),
147 std::move(request));
148 }
149
150 MockFetchEventDispatcher(
151 const base::WeakPtr<EmbeddedWorkerTestHelper>& helper,
152 int thread_id)
153 : helper_(helper), thread_id_(thread_id) {}
154
155 ~MockFetchEventDispatcher() override {}
156
157 void DispatchFetchEvent(int response_id,
158 const ServiceWorkerFetchRequest& request,
159 const DispatchFetchEventCallback& callback) override {
160 if (!helper_)
161 return;
162 helper_->OnFetchEventStub(thread_id_, response_id, request, callback);
163 }
164
165 private:
166 base::WeakPtr<EmbeddedWorkerTestHelper> helper_;
167 const int thread_id_;
168 };
169
135 EmbeddedWorkerTestHelper::EmbeddedWorkerTestHelper( 170 EmbeddedWorkerTestHelper::EmbeddedWorkerTestHelper(
136 const base::FilePath& user_data_directory) 171 const base::FilePath& user_data_directory)
137 : browser_context_(new TestBrowserContext), 172 : browser_context_(new TestBrowserContext),
138 render_process_host_(new MockRenderProcessHost(browser_context_.get())), 173 render_process_host_(new MockRenderProcessHost(browser_context_.get())),
139 new_render_process_host_( 174 new_render_process_host_(
140 new MockRenderProcessHost(browser_context_.get())), 175 new MockRenderProcessHost(browser_context_.get())),
141 wrapper_(new ServiceWorkerContextWrapper(browser_context_.get())), 176 wrapper_(new ServiceWorkerContextWrapper(browser_context_.get())),
142 mock_instance_clients_next_index_(0), 177 mock_instance_clients_next_index_(0),
143 next_thread_id_(0), 178 next_thread_id_(0),
144 mock_render_process_id_(render_process_host_->GetID()), 179 mock_render_process_id_(render_process_host_->GetID()),
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 bool EmbeddedWorkerTestHelper::OnMessageToWorker(int thread_id, 271 bool EmbeddedWorkerTestHelper::OnMessageToWorker(int thread_id,
237 int embedded_worker_id, 272 int embedded_worker_id,
238 const IPC::Message& message) { 273 const IPC::Message& message) {
239 bool handled = true; 274 bool handled = true;
240 current_embedded_worker_id_ = embedded_worker_id; 275 current_embedded_worker_id_ = embedded_worker_id;
241 IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerTestHelper, message) 276 IPC_BEGIN_MESSAGE_MAP(EmbeddedWorkerTestHelper, message)
242 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ActivateEvent, OnActivateEventStub) 277 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ActivateEvent, OnActivateEventStub)
243 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ExtendableMessageEvent, 278 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_ExtendableMessageEvent,
244 OnExtendableMessageEventStub) 279 OnExtendableMessageEventStub)
245 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_InstallEvent, OnInstallEventStub) 280 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_InstallEvent, OnInstallEventStub)
246 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_FetchEvent, OnFetchEventStub)
247 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_PushEvent, OnPushEventStub) 281 IPC_MESSAGE_HANDLER(ServiceWorkerMsg_PushEvent, OnPushEventStub)
248 IPC_MESSAGE_UNHANDLED(handled = false) 282 IPC_MESSAGE_UNHANDLED(handled = false)
249 IPC_END_MESSAGE_MAP() 283 IPC_END_MESSAGE_MAP()
250 // Record all messages directed to inner script context. 284 // Record all messages directed to inner script context.
251 inner_sink_.OnMessageReceived(message); 285 inner_sink_.OnMessageReceived(message);
252 return handled; 286 return handled;
253 } 287 }
254 288
255 void EmbeddedWorkerTestHelper::OnSetupMojo( 289 void EmbeddedWorkerTestHelper::OnSetupMojo(
256 shell::InterfaceRegistry* interface_registry) {} 290 int thread_id,
291 shell::InterfaceRegistry* interface_registry) {
292 interface_registry->AddInterface(base::Bind(&MockFetchEventDispatcher::Create,
293 weak_factory_.GetWeakPtr(),
294 thread_id));
295 }
257 296
258 void EmbeddedWorkerTestHelper::OnActivateEvent(int embedded_worker_id, 297 void EmbeddedWorkerTestHelper::OnActivateEvent(int embedded_worker_id,
259 int request_id) { 298 int request_id) {
260 SimulateSend(new ServiceWorkerHostMsg_ActivateEventFinished( 299 SimulateSend(new ServiceWorkerHostMsg_ActivateEventFinished(
261 embedded_worker_id, request_id, 300 embedded_worker_id, request_id,
262 blink::WebServiceWorkerEventResultCompleted, base::Time::Now())); 301 blink::WebServiceWorkerEventResultCompleted, base::Time::Now()));
263 } 302 }
264 303
265 void EmbeddedWorkerTestHelper::OnExtendableMessageEvent(int embedded_worker_id, 304 void EmbeddedWorkerTestHelper::OnExtendableMessageEvent(int embedded_worker_id,
266 int request_id) { 305 int request_id) {
267 SimulateSend(new ServiceWorkerHostMsg_ExtendableMessageEventFinished( 306 SimulateSend(new ServiceWorkerHostMsg_ExtendableMessageEventFinished(
268 embedded_worker_id, request_id, 307 embedded_worker_id, request_id,
269 blink::WebServiceWorkerEventResultCompleted, base::Time::Now())); 308 blink::WebServiceWorkerEventResultCompleted, base::Time::Now()));
270 } 309 }
271 310
272 void EmbeddedWorkerTestHelper::OnInstallEvent(int embedded_worker_id, 311 void EmbeddedWorkerTestHelper::OnInstallEvent(int embedded_worker_id,
273 int request_id) { 312 int request_id) {
274 // The installing worker may have been doomed and terminated. 313 // The installing worker may have been doomed and terminated.
275 if (!registry()->GetWorker(embedded_worker_id)) 314 if (!registry()->GetWorker(embedded_worker_id))
276 return; 315 return;
277 SimulateSend(new ServiceWorkerHostMsg_InstallEventFinished( 316 SimulateSend(new ServiceWorkerHostMsg_InstallEventFinished(
278 embedded_worker_id, request_id, 317 embedded_worker_id, request_id,
279 blink::WebServiceWorkerEventResultCompleted, true, base::Time::Now())); 318 blink::WebServiceWorkerEventResultCompleted, true, base::Time::Now()));
280 } 319 }
281 320
282 void EmbeddedWorkerTestHelper::OnFetchEvent( 321 void EmbeddedWorkerTestHelper::OnFetchEvent(
283 int embedded_worker_id, 322 int embedded_worker_id,
284 int response_id, 323 int response_id,
285 int event_finish_id, 324 const ServiceWorkerFetchRequest& request,
286 const ServiceWorkerFetchRequest& request) { 325 const FetchCallback& callback) {
287 SimulateSend(new ServiceWorkerHostMsg_FetchEventResponse( 326 SimulateSend(new ServiceWorkerHostMsg_FetchEventResponse(
288 embedded_worker_id, response_id, 327 embedded_worker_id, response_id,
289 SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, 328 SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE,
290 ServiceWorkerResponse( 329 ServiceWorkerResponse(
291 GURL(), 200, "OK", blink::WebServiceWorkerResponseTypeDefault, 330 GURL(), 200, "OK", blink::WebServiceWorkerResponseTypeDefault,
292 ServiceWorkerHeaderMap(), std::string(), 0, GURL(), 331 ServiceWorkerHeaderMap(), std::string(), 0, GURL(),
293 blink::WebServiceWorkerResponseErrorUnknown, base::Time(), 332 blink::WebServiceWorkerResponseErrorUnknown, base::Time(),
294 false /* is_in_cache_storage */, 333 false /* is_in_cache_storage */,
295 std::string() /* cache_storage_cache_name */, 334 std::string() /* cache_storage_cache_name */,
296 ServiceWorkerHeaderList() /* cors_exposed_header_names */), 335 ServiceWorkerHeaderList() /* cors_exposed_header_names */),
297 base::Time::Now())); 336 base::Time::Now()));
298 SimulateSend(new ServiceWorkerHostMsg_FetchEventFinished( 337 callback.Run(SERVICE_WORKER_OK, base::Time::Now());
299 embedded_worker_id, event_finish_id,
300 blink::WebServiceWorkerEventResultCompleted, base::Time::Now()));
301 } 338 }
302 339
303 void EmbeddedWorkerTestHelper::OnPushEvent(int embedded_worker_id, 340 void EmbeddedWorkerTestHelper::OnPushEvent(int embedded_worker_id,
304 int request_id, 341 int request_id,
305 const PushEventPayload& payload) { 342 const PushEventPayload& payload) {
306 SimulateSend(new ServiceWorkerHostMsg_PushEventFinished( 343 SimulateSend(new ServiceWorkerHostMsg_PushEventFinished(
307 embedded_worker_id, request_id, 344 embedded_worker_id, request_id,
308 blink::WebServiceWorkerEventResultCompleted, base::Time::Now())); 345 blink::WebServiceWorkerEventResultCompleted, base::Time::Now()));
309 } 346 }
310 347
(...skipping 24 matching lines...) Expand all
335 void EmbeddedWorkerTestHelper::SimulateWorkerScriptLoaded( 372 void EmbeddedWorkerTestHelper::SimulateWorkerScriptLoaded(
336 int embedded_worker_id) { 373 int embedded_worker_id) {
337 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); 374 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id);
338 ASSERT_TRUE(worker != NULL); 375 ASSERT_TRUE(worker != NULL);
339 registry()->OnWorkerScriptLoaded(worker->process_id(), embedded_worker_id); 376 registry()->OnWorkerScriptLoaded(worker->process_id(), embedded_worker_id);
340 } 377 }
341 378
342 void EmbeddedWorkerTestHelper::SimulateWorkerThreadStarted( 379 void EmbeddedWorkerTestHelper::SimulateWorkerThreadStarted(
343 int thread_id, 380 int thread_id,
344 int embedded_worker_id) { 381 int embedded_worker_id) {
382 thread_id_embedded_worker_id_map_[thread_id] = embedded_worker_id;
345 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); 383 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id);
346 ASSERT_TRUE(worker != NULL); 384 ASSERT_TRUE(worker != NULL);
347 registry()->OnWorkerThreadStarted(worker->process_id(), thread_id, 385 registry()->OnWorkerThreadStarted(worker->process_id(), thread_id,
348 embedded_worker_id); 386 embedded_worker_id);
349 } 387 }
350 388
351 void EmbeddedWorkerTestHelper::SimulateWorkerScriptEvaluated( 389 void EmbeddedWorkerTestHelper::SimulateWorkerScriptEvaluated(
352 int embedded_worker_id, 390 int embedded_worker_id,
353 bool success) { 391 bool success) {
354 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); 392 EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id);
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
436 } 474 }
437 475
438 void EmbeddedWorkerTestHelper::OnInstallEventStub(int request_id) { 476 void EmbeddedWorkerTestHelper::OnInstallEventStub(int request_id) {
439 base::ThreadTaskRunnerHandle::Get()->PostTask( 477 base::ThreadTaskRunnerHandle::Get()->PostTask(
440 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnInstallEvent, 478 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnInstallEvent,
441 weak_factory_.GetWeakPtr(), 479 weak_factory_.GetWeakPtr(),
442 current_embedded_worker_id_, request_id)); 480 current_embedded_worker_id_, request_id));
443 } 481 }
444 482
445 void EmbeddedWorkerTestHelper::OnFetchEventStub( 483 void EmbeddedWorkerTestHelper::OnFetchEventStub(
484 int thread_id,
446 int response_id, 485 int response_id,
447 int event_finish_id, 486 const ServiceWorkerFetchRequest& request,
448 const ServiceWorkerFetchRequest& request) { 487 const FetchCallback& callback) {
449 base::ThreadTaskRunnerHandle::Get()->PostTask( 488 base::ThreadTaskRunnerHandle::Get()->PostTask(
450 FROM_HERE, 489 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnFetchEvent,
451 base::Bind(&EmbeddedWorkerTestHelper::OnFetchEvent, 490 weak_factory_.GetWeakPtr(),
452 weak_factory_.GetWeakPtr(), current_embedded_worker_id_, 491 thread_id_embedded_worker_id_map_[thread_id],
453 response_id, event_finish_id, request)); 492 response_id, request, callback));
454 } 493 }
455 494
456 void EmbeddedWorkerTestHelper::OnPushEventStub( 495 void EmbeddedWorkerTestHelper::OnPushEventStub(
457 int request_id, 496 int request_id,
458 const PushEventPayload& payload) { 497 const PushEventPayload& payload) {
459 base::ThreadTaskRunnerHandle::Get()->PostTask( 498 base::ThreadTaskRunnerHandle::Get()->PostTask(
460 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnPushEvent, 499 FROM_HERE, base::Bind(&EmbeddedWorkerTestHelper::OnPushEvent,
461 weak_factory_.GetWeakPtr(), 500 weak_factory_.GetWeakPtr(),
462 current_embedded_worker_id_, request_id, payload)); 501 current_embedded_worker_id_, request_id, payload));
463 } 502 }
464 503
465 void EmbeddedWorkerTestHelper::OnSetupMojoStub( 504 void EmbeddedWorkerTestHelper::OnSetupMojoStub(
466 int thread_id, 505 int thread_id,
467 shell::mojom::InterfaceProviderRequest request, 506 shell::mojom::InterfaceProviderRequest request,
468 shell::mojom::InterfaceProviderPtr remote_interfaces) { 507 shell::mojom::InterfaceProviderPtr remote_interfaces) {
469 std::unique_ptr<shell::InterfaceRegistry> local( 508 std::unique_ptr<shell::InterfaceRegistry> local(
470 new shell::InterfaceRegistry); 509 new shell::InterfaceRegistry);
471 local->Bind(std::move(request)); 510 local->Bind(std::move(request));
472 511
473 std::unique_ptr<shell::InterfaceProvider> remote( 512 std::unique_ptr<shell::InterfaceProvider> remote(
474 new shell::InterfaceProvider); 513 new shell::InterfaceProvider);
475 remote->Bind(std::move(remote_interfaces)); 514 remote->Bind(std::move(remote_interfaces));
476 515
477 OnSetupMojo(local.get()); 516 OnSetupMojo(thread_id, local.get());
478 InterfaceRegistryAndProvider pair(std::move(local), std::move(remote)); 517 InterfaceRegistryAndProvider pair(std::move(local), std::move(remote));
479 thread_id_service_registry_map_[thread_id] = std::move(pair); 518 thread_id_service_registry_map_[thread_id] = std::move(pair);
480 } 519 }
481 520
482 EmbeddedWorkerRegistry* EmbeddedWorkerTestHelper::registry() { 521 EmbeddedWorkerRegistry* EmbeddedWorkerTestHelper::registry() {
483 DCHECK(context()); 522 DCHECK(context());
484 return context()->embedded_worker_registry(); 523 return context()->embedded_worker_registry();
485 } 524 }
486 525
487 MessagePortMessageFilter* 526 MessagePortMessageFilter*
(...skipping 17 matching lines...) Expand all
505 registry->Bind(mojo::GetProxy(&interfaces)); 544 registry->Bind(mojo::GetProxy(&interfaces));
506 545
507 std::unique_ptr<shell::InterfaceProvider> remote_interfaces( 546 std::unique_ptr<shell::InterfaceProvider> remote_interfaces(
508 new shell::InterfaceProvider); 547 new shell::InterfaceProvider);
509 remote_interfaces->Bind(std::move(interfaces)); 548 remote_interfaces->Bind(std::move(interfaces));
510 rph->SetRemoteInterfaces(std::move(remote_interfaces)); 549 rph->SetRemoteInterfaces(std::move(remote_interfaces));
511 return registry; 550 return registry;
512 } 551 }
513 552
514 } // namespace content 553 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698