OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/renderer/service_worker/service_worker_context_client.h" | 5 #include "content/renderer/service_worker/service_worker_context_client.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
(...skipping 20 matching lines...) Expand all Loading... |
31 #include "content/child/thread_safe_sender.h" | 31 #include "content/child/thread_safe_sender.h" |
32 #include "content/child/web_data_consumer_handle_impl.h" | 32 #include "content/child/web_data_consumer_handle_impl.h" |
33 #include "content/child/web_url_loader_impl.h" | 33 #include "content/child/web_url_loader_impl.h" |
34 #include "content/child/webmessageportchannel_impl.h" | 34 #include "content/child/webmessageportchannel_impl.h" |
35 #include "content/common/devtools_messages.h" | 35 #include "content/common/devtools_messages.h" |
36 #include "content/common/service_worker/embedded_worker_messages.h" | 36 #include "content/common/service_worker/embedded_worker_messages.h" |
37 #include "content/common/service_worker/service_worker_event_dispatcher.mojom.h" | 37 #include "content/common/service_worker/service_worker_event_dispatcher.mojom.h" |
38 #include "content/common/service_worker/service_worker_messages.h" | 38 #include "content/common/service_worker/service_worker_messages.h" |
39 #include "content/common/service_worker/service_worker_status_code.h" | 39 #include "content/common/service_worker/service_worker_status_code.h" |
40 #include "content/common/service_worker/service_worker_utils.h" | 40 #include "content/common/service_worker/service_worker_utils.h" |
| 41 #include "content/common/worker_fetch_context_factory.mojom.h" |
| 42 #include "content/public/common/content_features.h" |
41 #include "content/public/common/push_event_payload.h" | 43 #include "content/public/common/push_event_payload.h" |
42 #include "content/public/common/referrer.h" | 44 #include "content/public/common/referrer.h" |
43 #include "content/public/renderer/content_renderer_client.h" | 45 #include "content/public/renderer/content_renderer_client.h" |
44 #include "content/public/renderer/document_state.h" | 46 #include "content/public/renderer/document_state.h" |
45 #include "content/renderer/devtools/devtools_agent.h" | 47 #include "content/renderer/devtools/devtools_agent.h" |
46 #include "content/renderer/render_thread_impl.h" | 48 #include "content/renderer/render_thread_impl.h" |
| 49 #include "content/renderer/renderer_blink_platform_impl.h" |
47 #include "content/renderer/service_worker/embedded_worker_devtools_agent.h" | 50 #include "content/renderer/service_worker/embedded_worker_devtools_agent.h" |
48 #include "content/renderer/service_worker/embedded_worker_dispatcher.h" | 51 #include "content/renderer/service_worker/embedded_worker_dispatcher.h" |
49 #include "content/renderer/service_worker/embedded_worker_instance_client_impl.h
" | 52 #include "content/renderer/service_worker/embedded_worker_instance_client_impl.h
" |
| 53 #include "content/renderer/service_worker/service_worker_fetch_context_info_impl
.h" |
50 #include "content/renderer/service_worker/service_worker_type_converters.h" | 54 #include "content/renderer/service_worker/service_worker_type_converters.h" |
51 #include "content/renderer/service_worker/service_worker_type_util.h" | 55 #include "content/renderer/service_worker/service_worker_type_util.h" |
52 #include "ipc/ipc_message.h" | 56 #include "ipc/ipc_message.h" |
53 #include "ipc/ipc_message_macros.h" | 57 #include "ipc/ipc_message_macros.h" |
54 #include "net/http/http_response_headers.h" | 58 #include "net/http/http_response_headers.h" |
| 59 #include "third_party/WebKit/public/platform/InterfaceProvider.h" |
55 #include "third_party/WebKit/public/platform/URLConversion.h" | 60 #include "third_party/WebKit/public/platform/URLConversion.h" |
56 #include "third_party/WebKit/public/platform/WebMessagePortChannel.h" | 61 #include "third_party/WebKit/public/platform/WebMessagePortChannel.h" |
57 #include "third_party/WebKit/public/platform/WebReferrerPolicy.h" | 62 #include "third_party/WebKit/public/platform/WebReferrerPolicy.h" |
58 #include "third_party/WebKit/public/platform/WebSecurityOrigin.h" | 63 #include "third_party/WebKit/public/platform/WebSecurityOrigin.h" |
59 #include "third_party/WebKit/public/platform/WebString.h" | 64 #include "third_party/WebKit/public/platform/WebString.h" |
60 #include "third_party/WebKit/public/platform/WebURLResponse.h" | 65 #include "third_party/WebKit/public/platform/WebURLResponse.h" |
61 #include "third_party/WebKit/public/platform/modules/background_fetch/WebBackgro
undFetchSettledFetch.h" | 66 #include "third_party/WebKit/public/platform/modules/background_fetch/WebBackgro
undFetchSettledFetch.h" |
62 #include "third_party/WebKit/public/platform/modules/notifications/WebNotificati
onData.h" | 67 #include "third_party/WebKit/public/platform/modules/notifications/WebNotificati
onData.h" |
63 #include "third_party/WebKit/public/platform/modules/payments/WebPaymentAppReque
st.h" | 68 #include "third_party/WebKit/public/platform/modules/payments/WebPaymentAppReque
st.h" |
64 #include "third_party/WebKit/public/platform/modules/payments/WebPaymentAppRespo
nse.h" | 69 #include "third_party/WebKit/public/platform/modules/payments/WebPaymentAppRespo
nse.h" |
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 binding_(this, std::move(preload_handle->url_loader_client_request)) {} | 371 binding_(this, std::move(preload_handle->url_loader_client_request)) {} |
367 | 372 |
368 ~NavigationPreloadRequest() override {} | 373 ~NavigationPreloadRequest() override {} |
369 | 374 |
370 void OnReceiveResponse( | 375 void OnReceiveResponse( |
371 const ResourceResponseHead& response_head, | 376 const ResourceResponseHead& response_head, |
372 mojom::DownloadedTempFilePtr downloaded_file) override { | 377 mojom::DownloadedTempFilePtr downloaded_file) override { |
373 DCHECK(!response_); | 378 DCHECK(!response_); |
374 DCHECK(!downloaded_file); | 379 DCHECK(!downloaded_file); |
375 response_ = base::MakeUnique<blink::WebURLResponse>(); | 380 response_ = base::MakeUnique<blink::WebURLResponse>(); |
376 // TODO(horo): Set report_security_info to true when DevTools is attached. | |
377 const bool report_security_info = false; | 381 const bool report_security_info = false; |
378 WebURLLoaderImpl::PopulateURLResponse(url_, response_head, response_.get(), | 382 WebURLLoaderImpl::PopulateURLResponse(url_, response_head, response_.get(), |
379 report_security_info); | 383 report_security_info); |
380 MaybeReportResponseToClient(); | 384 MaybeReportResponseToClient(); |
381 } | 385 } |
382 | 386 |
383 void OnReceiveRedirect(const net::RedirectInfo& redirect_info, | 387 void OnReceiveRedirect(const net::RedirectInfo& redirect_info, |
384 const ResourceResponseHead& response_head) override { | 388 const ResourceResponseHead& response_head) override { |
385 DCHECK(!response_); | 389 DCHECK(!response_); |
386 DCHECK(net::HttpResponseHeaders::IsRedirectResponseCode( | 390 DCHECK(net::HttpResponseHeaders::IsRedirectResponseCode( |
(...skipping 582 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
969 ServiceWorkerContextClient::createServiceWorkerNetworkProvider() { | 973 ServiceWorkerContextClient::createServiceWorkerNetworkProvider() { |
970 DCHECK(main_thread_task_runner_->RunsTasksOnCurrentThread()); | 974 DCHECK(main_thread_task_runner_->RunsTasksOnCurrentThread()); |
971 | 975 |
972 // Create a content::ServiceWorkerNetworkProvider for this data source so | 976 // Create a content::ServiceWorkerNetworkProvider for this data source so |
973 // we can observe its requests. | 977 // we can observe its requests. |
974 std::unique_ptr<ServiceWorkerNetworkProvider> provider = | 978 std::unique_ptr<ServiceWorkerNetworkProvider> provider = |
975 base::MakeUnique<ServiceWorkerNetworkProvider>( | 979 base::MakeUnique<ServiceWorkerNetworkProvider>( |
976 MSG_ROUTING_NONE, SERVICE_WORKER_PROVIDER_FOR_CONTROLLER, | 980 MSG_ROUTING_NONE, SERVICE_WORKER_PROVIDER_FOR_CONTROLLER, |
977 true /* is_parent_frame_secure */); | 981 true /* is_parent_frame_secure */); |
978 provider_context_ = provider->context(); | 982 provider_context_ = provider->context(); |
| 983 network_provider_id_ = provider->provider_id(); |
979 | 984 |
980 // Tell the network provider about which version to load. | 985 // Tell the network provider about which version to load. |
981 provider->SetServiceWorkerVersionId(service_worker_version_id_, | 986 provider->SetServiceWorkerVersionId(service_worker_version_id_, |
982 embedded_worker_id_); | 987 embedded_worker_id_); |
983 | 988 |
984 // Blink is responsible for deleting the returned object. | 989 // Blink is responsible for deleting the returned object. |
985 return new WebServiceWorkerNetworkProviderImpl(std::move(provider)); | 990 return new WebServiceWorkerNetworkProviderImpl(std::move(provider)); |
986 } | 991 } |
987 | 992 |
| 993 blink::WebWorkerFetchContextInfo* |
| 994 ServiceWorkerContextClient::createServiceWorkerFetchContextInfo() { |
| 995 if (!base::FeatureList::IsEnabled(features::kOffMainThreadFetch)) |
| 996 return nullptr; |
| 997 // TODO(horo): more simple mojo IPC. We only need URLLoaderFactory. |
| 998 mojom::WorkerFetchContextFactoryPtr worker_fetch_context_factory; |
| 999 RenderThreadImpl::current() |
| 1000 ->blink_platform_impl() |
| 1001 ->interfaceProvider() |
| 1002 ->getInterface(mojo::MakeRequest(&worker_fetch_context_factory)); |
| 1003 |
| 1004 // Blink is responsible for deleting the returned object. |
| 1005 return new ServiceWorkerFetchContextInfoImpl( |
| 1006 worker_fetch_context_factory.PassInterface(), network_provider_id_); |
| 1007 } |
| 1008 |
988 blink::WebServiceWorkerProvider* | 1009 blink::WebServiceWorkerProvider* |
989 ServiceWorkerContextClient::createServiceWorkerProvider() { | 1010 ServiceWorkerContextClient::createServiceWorkerProvider() { |
990 DCHECK(main_thread_task_runner_->RunsTasksOnCurrentThread()); | 1011 DCHECK(main_thread_task_runner_->RunsTasksOnCurrentThread()); |
991 DCHECK(provider_context_); | 1012 DCHECK(provider_context_); |
992 | 1013 |
993 // Blink is responsible for deleting the returned object. | 1014 // Blink is responsible for deleting the returned object. |
994 return new WebServiceWorkerProviderImpl( | 1015 return new WebServiceWorkerProviderImpl( |
995 sender_.get(), provider_context_.get()); | 1016 sender_.get(), provider_context_.get()); |
996 } | 1017 } |
997 | 1018 |
(...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1522 } | 1543 } |
1523 | 1544 |
1524 base::WeakPtr<ServiceWorkerContextClient> | 1545 base::WeakPtr<ServiceWorkerContextClient> |
1525 ServiceWorkerContextClient::GetWeakPtr() { | 1546 ServiceWorkerContextClient::GetWeakPtr() { |
1526 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); | 1547 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); |
1527 DCHECK(context_); | 1548 DCHECK(context_); |
1528 return context_->weak_factory.GetWeakPtr(); | 1549 return context_->weak_factory.GetWeakPtr(); |
1529 } | 1550 } |
1530 | 1551 |
1531 } // namespace content | 1552 } // namespace content |
OLD | NEW |