Chromium Code Reviews| 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 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 259 : public mojom::URLLoaderClient { | 259 : public mojom::URLLoaderClient { |
| 260 public: | 260 public: |
| 261 NavigationPreloadRequest(int fetch_event_id, | 261 NavigationPreloadRequest(int fetch_event_id, |
| 262 const GURL& url, | 262 const GURL& url, |
| 263 mojom::FetchEventPreloadHandlePtr preload_handle) | 263 mojom::FetchEventPreloadHandlePtr preload_handle) |
| 264 : fetch_event_id_(fetch_event_id), | 264 : fetch_event_id_(fetch_event_id), |
| 265 url_(url), | 265 url_(url), |
| 266 url_loader_(std::move(preload_handle->url_loader)), | 266 url_loader_(std::move(preload_handle->url_loader)), |
| 267 binding_(this, std::move(preload_handle->url_loader_client_request)) {} | 267 binding_(this, std::move(preload_handle->url_loader_client_request)) {} |
| 268 | 268 |
| 269 ~NavigationPreloadRequest() override { | 269 ~NavigationPreloadRequest() override {} |
| 270 } | |
| 271 | 270 |
| 272 void OnReceiveResponse( | 271 void OnReceiveResponse( |
| 273 const ResourceResponseHead& response_head, | 272 const ResourceResponseHead& response_head, |
| 274 mojom::DownloadedTempFilePtr downloaded_file) override { | 273 mojom::DownloadedTempFilePtr downloaded_file) override { |
| 275 DCHECK(!response_); | 274 DCHECK(!response_); |
| 276 DCHECK(!downloaded_file); | 275 DCHECK(!downloaded_file); |
| 277 response_ = base::MakeUnique<blink::WebURLResponse>(); | 276 response_ = base::MakeUnique<blink::WebURLResponse>(); |
| 278 // TODO(horo): Set report_security_info to true when DevTools is attached. | 277 // TODO(horo): Set report_security_info to true when DevTools is attached. |
| 279 const bool report_security_info = false; | 278 const bool report_security_info = false; |
| 280 WebURLLoaderImpl::PopulateURLResponse(url_, response_head, response_.get(), | 279 WebURLLoaderImpl::PopulateURLResponse(url_, response_head, response_.get(), |
| 281 report_security_info); | 280 report_security_info); |
| 282 MaybeReportResponseToClient(); | 281 MaybeReportResponseToClient(); |
| 283 } | 282 } |
| 284 | 283 |
| 285 void OnReceiveRedirect(const net::RedirectInfo& redirect_info, | 284 void OnReceiveRedirect(const net::RedirectInfo& redirect_info, |
| 286 const ResourceResponseHead& response_head) override { | 285 const ResourceResponseHead& response_head) override { |
| 287 // This will delete itself. | 286 // This will delete itself. |
| 288 ReportErrorToClient( | 287 ReportErrorToClient( |
| 289 "Service Worker navigation preload doesn't suport redirect."); | 288 "Service Worker navigation preload doesn't support redirects."); |
| 290 } | 289 } |
| 291 | 290 |
| 292 void OnDataDownloaded(int64_t data_length, | 291 void OnDataDownloaded(int64_t data_length, |
| 293 int64_t encoded_data_length) override { | 292 int64_t encoded_data_length) override { |
| 294 NOTREACHED(); | 293 NOTREACHED(); |
| 295 } | 294 } |
| 296 | 295 |
| 297 void OnTransferSizeUpdated(int32_t transfer_size_diff) override { | 296 void OnTransferSizeUpdated(int32_t transfer_size_diff) override { |
| 298 NOTREACHED(); | 297 // TODO(horo): Send this transfer size update notification to DevTools. |
| 299 } | 298 } |
| 300 | 299 |
| 301 void OnStartLoadingResponseBody( | 300 void OnStartLoadingResponseBody( |
| 302 mojo::ScopedDataPipeConsumerHandle body) override { | 301 mojo::ScopedDataPipeConsumerHandle body) override { |
| 303 DCHECK(!body_.is_valid()); | 302 DCHECK(!body_.is_valid()); |
| 304 body_ = std::move(body); | 303 body_ = std::move(body); |
| 305 MaybeReportResponseToClient(); | 304 MaybeReportResponseToClient(); |
| 306 } | 305 } |
| 307 | 306 |
| 308 void OnComplete(const ResourceRequestCompletionStatus& status) override { | 307 void OnComplete(const ResourceRequestCompletionStatus& status) override { |
| (...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 955 TRACE_EVENT0("ServiceWorker", | 954 TRACE_EVENT0("ServiceWorker", |
| 956 "ServiceWorkerContextClient::OnInstallEvent"); | 955 "ServiceWorkerContextClient::OnInstallEvent"); |
| 957 proxy_->dispatchInstallEvent(request_id); | 956 proxy_->dispatchInstallEvent(request_id); |
| 958 } | 957 } |
| 959 | 958 |
| 960 void ServiceWorkerContextClient::DispatchFetchEvent( | 959 void ServiceWorkerContextClient::DispatchFetchEvent( |
| 961 int fetch_event_id, | 960 int fetch_event_id, |
| 962 const ServiceWorkerFetchRequest& request, | 961 const ServiceWorkerFetchRequest& request, |
| 963 mojom::FetchEventPreloadHandlePtr preload_handle, | 962 mojom::FetchEventPreloadHandlePtr preload_handle, |
| 964 const DispatchFetchEventCallback& callback) { | 963 const DispatchFetchEventCallback& callback) { |
| 965 std::unique_ptr<NavigationPreloadRequest> preload_request = | 964 std::unique_ptr<NavigationPreloadRequest> preload_request; |
| 966 preload_handle | 965 if (preload_handle) { |
| 967 ? base::MakeUnique<NavigationPreloadRequest>( | 966 proxy_->onNavigationPreloadSent( |
| 968 fetch_event_id, request.url, std::move(preload_handle)) | 967 fetch_event_id, request.url, |
| 969 : nullptr; | 968 preload_handle->sent_timestamp.ToInternalValue() / |
| 969 static_cast<double>(base::Time::kMicrosecondsPerSecond), | |
| 970 preload_handle->sent_wall_time.ToDoubleT()); | |
|
falken
2017/01/18 14:50:07
nit: I'd pass these as standard base/Time.h object
horo
2017/01/19 09:57:09
Done.
I added public/web/modules/serviceworker/DE
| |
| 971 preload_request = base::MakeUnique<NavigationPreloadRequest>( | |
| 972 fetch_event_id, request.url, std::move(preload_handle)); | |
| 973 } | |
| 970 const bool navigation_preload_sent = !!preload_request; | 974 const bool navigation_preload_sent = !!preload_request; |
| 971 blink::WebServiceWorkerRequest webRequest; | 975 blink::WebServiceWorkerRequest webRequest; |
| 972 TRACE_EVENT0("ServiceWorker", | 976 TRACE_EVENT0("ServiceWorker", |
| 973 "ServiceWorkerContextClient::DispatchFetchEvent"); | 977 "ServiceWorkerContextClient::DispatchFetchEvent"); |
| 974 context_->fetch_event_callbacks.AddWithID( | 978 context_->fetch_event_callbacks.AddWithID( |
| 975 base::MakeUnique<FetchCallback>(callback), fetch_event_id); | 979 base::MakeUnique<FetchCallback>(callback), fetch_event_id); |
| 976 if (preload_request) { | 980 if (preload_request) { |
| 977 context_->preload_requests.AddWithID(std::move(preload_request), | 981 context_->preload_requests.AddWithID(std::move(preload_request), |
| 978 fetch_event_id); | 982 fetch_event_id); |
| 979 } | 983 } |
| (...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1249 | 1253 |
| 1250 void ServiceWorkerContextClient::OnNavigationPreloadError( | 1254 void ServiceWorkerContextClient::OnNavigationPreloadError( |
| 1251 int fetch_event_id, | 1255 int fetch_event_id, |
| 1252 std::unique_ptr<blink::WebServiceWorkerError> error) { | 1256 std::unique_ptr<blink::WebServiceWorkerError> error) { |
| 1253 proxy_->onNavigationPreloadError(fetch_event_id, std::move(error)); | 1257 proxy_->onNavigationPreloadError(fetch_event_id, std::move(error)); |
| 1254 context_->preload_requests.Remove(fetch_event_id); | 1258 context_->preload_requests.Remove(fetch_event_id); |
| 1255 } | 1259 } |
| 1256 | 1260 |
| 1257 void ServiceWorkerContextClient::OnNavigationPreloadComplete( | 1261 void ServiceWorkerContextClient::OnNavigationPreloadComplete( |
| 1258 int fetch_event_id) { | 1262 int fetch_event_id) { |
| 1263 proxy_->onNavigationPreloadCompleted(fetch_event_id); | |
| 1259 context_->preload_requests.Remove(fetch_event_id); | 1264 context_->preload_requests.Remove(fetch_event_id); |
| 1260 } | 1265 } |
| 1261 | 1266 |
| 1262 void ServiceWorkerContextClient::BindEventDispatcher( | 1267 void ServiceWorkerContextClient::BindEventDispatcher( |
| 1263 mojom::ServiceWorkerEventDispatcherRequest request) { | 1268 mojom::ServiceWorkerEventDispatcherRequest request) { |
| 1264 DCHECK(context_); | 1269 DCHECK(context_); |
| 1265 DCHECK(!context_->event_dispatcher_binding.is_bound()); | 1270 DCHECK(!context_->event_dispatcher_binding.is_bound()); |
| 1266 context_->event_dispatcher_binding.Bind(std::move(request)); | 1271 context_->event_dispatcher_binding.Bind(std::move(request)); |
| 1267 } | 1272 } |
| 1268 | 1273 |
| 1269 base::WeakPtr<ServiceWorkerContextClient> | 1274 base::WeakPtr<ServiceWorkerContextClient> |
| 1270 ServiceWorkerContextClient::GetWeakPtr() { | 1275 ServiceWorkerContextClient::GetWeakPtr() { |
| 1271 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); | 1276 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); |
| 1272 DCHECK(context_); | 1277 DCHECK(context_); |
| 1273 return context_->weak_factory.GetWeakPtr(); | 1278 return context_->weak_factory.GetWeakPtr(); |
| 1274 } | 1279 } |
| 1275 | 1280 |
| 1276 } // namespace content | 1281 } // namespace content |
| OLD | NEW |