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

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

Issue 2779763004: Create ServiceWorkerProviderHost before starting worker (Closed)
Patch Set: Pass the param of BindWithProviderInfo by value instead of pointer Created 3 years, 6 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 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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/service_worker_test_utils.h" 5 #include "content/browser/service_worker/service_worker_test_utils.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "content/browser/service_worker/service_worker_provider_host.h" 9 #include "content/browser/service_worker/service_worker_provider_host.h"
10 #include "content/common/service_worker/service_worker_provider.mojom.h"
11 #include "content/public/common/child_process_host.h"
10 12
11 namespace content { 13 namespace content {
12 14
13 ServiceWorkerRemoteProviderEndpoint::ServiceWorkerRemoteProviderEndpoint() {} 15 ServiceWorkerRemoteProviderEndpoint::ServiceWorkerRemoteProviderEndpoint() {}
14 ServiceWorkerRemoteProviderEndpoint::ServiceWorkerRemoteProviderEndpoint( 16 ServiceWorkerRemoteProviderEndpoint::ServiceWorkerRemoteProviderEndpoint(
15 ServiceWorkerRemoteProviderEndpoint&& other) 17 ServiceWorkerRemoteProviderEndpoint&& other)
16 : host_ptr_(std::move(other.host_ptr_)), 18 : host_ptr_(std::move(other.host_ptr_)),
17 client_request_(std::move(other.client_request_)) {} 19 client_request_(std::move(other.client_request_)) {}
18 20
19 ServiceWorkerRemoteProviderEndpoint::~ServiceWorkerRemoteProviderEndpoint() {} 21 ServiceWorkerRemoteProviderEndpoint::~ServiceWorkerRemoteProviderEndpoint() {}
20 22
21 void ServiceWorkerRemoteProviderEndpoint::BindWithProviderHostInfo( 23 void ServiceWorkerRemoteProviderEndpoint::BindWithProviderHostInfo(
22 content::ServiceWorkerProviderHostInfo* info) { 24 content::ServiceWorkerProviderHostInfo* info) {
23 mojom::ServiceWorkerProviderAssociatedPtr client_ptr; 25 mojom::ServiceWorkerProviderAssociatedPtr client_ptr;
24 client_request_ = mojo::MakeIsolatedRequest(&client_ptr); 26 client_request_ = mojo::MakeIsolatedRequest(&client_ptr);
25 info->client_ptr_info = client_ptr.PassInterface(); 27 info->client_ptr_info = client_ptr.PassInterface();
26 info->host_request = mojo::MakeIsolatedRequest(&host_ptr_); 28 info->host_request = mojo::MakeIsolatedRequest(&host_ptr_);
27 } 29 }
28 30
31 void ServiceWorkerRemoteProviderEndpoint::BindWithProviderInfo(
32 mojom::ServiceWorkerProviderInfoForStartWorkerPtr info) {
33 client_request_ = std::move(info->client_request);
34 host_ptr_.Bind(std::move(info->host_ptr_info));
35 }
36
29 std::unique_ptr<ServiceWorkerProviderHost> CreateProviderHostForWindow( 37 std::unique_ptr<ServiceWorkerProviderHost> CreateProviderHostForWindow(
30 int process_id, 38 int process_id,
31 int provider_id, 39 int provider_id,
32 bool is_parent_frame_secure, 40 bool is_parent_frame_secure,
33 base::WeakPtr<ServiceWorkerContextCore> context, 41 base::WeakPtr<ServiceWorkerContextCore> context,
34 ServiceWorkerRemoteProviderEndpoint* output_endpoint) { 42 ServiceWorkerRemoteProviderEndpoint* output_endpoint) {
35 ServiceWorkerProviderHostInfo info(provider_id, 1 /* route_id */, 43 ServiceWorkerProviderHostInfo info(provider_id, 1 /* route_id */,
36 SERVICE_WORKER_PROVIDER_FOR_WINDOW, 44 SERVICE_WORKER_PROVIDER_FOR_WINDOW,
37 is_parent_frame_secure); 45 is_parent_frame_secure);
38 output_endpoint->BindWithProviderHostInfo(&info); 46 output_endpoint->BindWithProviderHostInfo(&info);
39 return ServiceWorkerProviderHost::Create(process_id, std::move(info), 47 return ServiceWorkerProviderHost::Create(process_id, std::move(info),
40 std::move(context), nullptr); 48 std::move(context), nullptr);
41 } 49 }
42 50
43 std::unique_ptr<ServiceWorkerProviderHost> 51 std::unique_ptr<ServiceWorkerProviderHost>
44 CreateProviderHostForServiceWorkerContext( 52 CreateProviderHostForServiceWorkerContext(
45 int process_id, 53 int process_id,
46 int provider_id,
47 bool is_parent_frame_secure, 54 bool is_parent_frame_secure,
55 ServiceWorkerVersion* hosted_version,
48 base::WeakPtr<ServiceWorkerContextCore> context, 56 base::WeakPtr<ServiceWorkerContextCore> context,
49 ServiceWorkerRemoteProviderEndpoint* output_endpoint) { 57 ServiceWorkerRemoteProviderEndpoint* output_endpoint) {
50 ServiceWorkerProviderHostInfo info(provider_id, MSG_ROUTING_NONE, 58 ServiceWorkerProviderHostInfo info(
51 SERVICE_WORKER_PROVIDER_FOR_CONTROLLER, 59 kInvalidServiceWorkerProviderId, MSG_ROUTING_NONE,
52 is_parent_frame_secure); 60 SERVICE_WORKER_PROVIDER_FOR_CONTROLLER, is_parent_frame_secure);
53 output_endpoint->BindWithProviderHostInfo(&info); 61 std::unique_ptr<ServiceWorkerProviderHost> host =
54 return ServiceWorkerProviderHost::Create(process_id, std::move(info), 62 ServiceWorkerProviderHost::PreCreateForController(std::move(context));
55 std::move(context), nullptr); 63 mojom::ServiceWorkerProviderInfoForStartWorkerPtr provider_info =
64 host->CompleteStartWorkerPreparation(process_id, hosted_version);
65 output_endpoint->BindWithProviderInfo(std::move(provider_info));
66 return host;
56 } 67 }
57 68
58 std::unique_ptr<ServiceWorkerProviderHost> CreateProviderHostWithDispatcherHost( 69 std::unique_ptr<ServiceWorkerProviderHost> CreateProviderHostWithDispatcherHost(
59 int process_id, 70 int process_id,
60 int provider_id, 71 int provider_id,
61 base::WeakPtr<ServiceWorkerContextCore> context, 72 base::WeakPtr<ServiceWorkerContextCore> context,
62 int route_id, 73 int route_id,
63 ServiceWorkerDispatcherHost* dispatcher_host, 74 ServiceWorkerDispatcherHost* dispatcher_host,
64 ServiceWorkerRemoteProviderEndpoint* output_endpoint) { 75 ServiceWorkerRemoteProviderEndpoint* output_endpoint) {
65 ServiceWorkerProviderHostInfo info(provider_id, route_id, 76 ServiceWorkerProviderHostInfo info(provider_id, route_id,
66 SERVICE_WORKER_PROVIDER_FOR_WINDOW, true); 77 SERVICE_WORKER_PROVIDER_FOR_WINDOW, true);
67 output_endpoint->BindWithProviderHostInfo(&info); 78 output_endpoint->BindWithProviderHostInfo(&info);
68 return ServiceWorkerProviderHost::Create(process_id, std::move(info), 79 return ServiceWorkerProviderHost::Create(process_id, std::move(info),
69 std::move(context), dispatcher_host); 80 std::move(context), dispatcher_host);
70 } 81 }
71 82
72 } // namespace content 83 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698