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

Side by Side Diff: content/renderer/service_worker/service_worker_context_client.cc

Issue 2416863002: Use fetch_event_id (fetchEventID in blink) for FetchEvent (Closed)
Patch Set: 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 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 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 public: 228 public:
229 static void Create(mojom::FetchEventDispatcherRequest request) { 229 static void Create(mojom::FetchEventDispatcherRequest request) {
230 mojo::MakeStrongBinding(base::MakeUnique<FetchEventDispatcherImpl>(), 230 mojo::MakeStrongBinding(base::MakeUnique<FetchEventDispatcherImpl>(),
231 std::move(request)); 231 std::move(request));
232 } 232 }
233 233
234 FetchEventDispatcherImpl() {} 234 FetchEventDispatcherImpl() {}
235 235
236 ~FetchEventDispatcherImpl() override {} 236 ~FetchEventDispatcherImpl() override {}
237 237
238 void DispatchFetchEvent(int response_id, 238 void DispatchFetchEvent(int fetch_event_id,
239 const ServiceWorkerFetchRequest& request, 239 const ServiceWorkerFetchRequest& request,
240 const DispatchFetchEventCallback& callback) override { 240 const DispatchFetchEventCallback& callback) override {
241 ServiceWorkerContextClient* client = 241 ServiceWorkerContextClient* client =
242 ServiceWorkerContextClient::ThreadSpecificInstance(); 242 ServiceWorkerContextClient::ThreadSpecificInstance();
243 if (!client) { 243 if (!client) {
244 callback.Run(SERVICE_WORKER_ERROR_ABORT, base::Time::Now()); 244 callback.Run(SERVICE_WORKER_ERROR_ABORT, base::Time::Now());
245 return; 245 return;
246 } 246 }
247 client->DispatchFetchEvent(response_id, request, callback); 247 client->DispatchFetchEvent(fetch_event_id, request, callback);
248 } 248 }
249 249
250 private: 250 private:
251 DISALLOW_COPY_AND_ASSIGN(FetchEventDispatcherImpl); 251 DISALLOW_COPY_AND_ASSIGN(FetchEventDispatcherImpl);
252 }; 252 };
253 253
254 ServiceWorkerContextClient* 254 ServiceWorkerContextClient*
255 ServiceWorkerContextClient::ThreadSpecificInstance() { 255 ServiceWorkerContextClient::ThreadSpecificInstance() {
256 return g_worker_client_tls.Pointer()->Get(); 256 return g_worker_client_tls.Pointer()->Get();
257 } 257 }
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
579 void ServiceWorkerContextClient::didHandleInstallEvent( 579 void ServiceWorkerContextClient::didHandleInstallEvent(
580 int request_id, 580 int request_id,
581 blink::WebServiceWorkerEventResult result, 581 blink::WebServiceWorkerEventResult result,
582 double event_dispatch_time) { 582 double event_dispatch_time) {
583 Send(new ServiceWorkerHostMsg_InstallEventFinished( 583 Send(new ServiceWorkerHostMsg_InstallEventFinished(
584 GetRoutingID(), request_id, result, proxy_->hasFetchEventHandler(), 584 GetRoutingID(), request_id, result, proxy_->hasFetchEventHandler(),
585 base::Time::FromDoubleT(event_dispatch_time))); 585 base::Time::FromDoubleT(event_dispatch_time)));
586 } 586 }
587 587
588 void ServiceWorkerContextClient::respondToFetchEvent( 588 void ServiceWorkerContextClient::respondToFetchEvent(
589 int response_id, 589 int fetch_event_id,
590 double event_dispatch_time) { 590 double event_dispatch_time) {
591 Send(new ServiceWorkerHostMsg_FetchEventResponse( 591 Send(new ServiceWorkerHostMsg_FetchEventResponse(
592 GetRoutingID(), response_id, SERVICE_WORKER_FETCH_EVENT_RESULT_FALLBACK, 592 GetRoutingID(), fetch_event_id,
593 ServiceWorkerResponse(), base::Time::FromDoubleT(event_dispatch_time))); 593 SERVICE_WORKER_FETCH_EVENT_RESULT_FALLBACK, ServiceWorkerResponse(),
594 base::Time::FromDoubleT(event_dispatch_time)));
594 } 595 }
595 596
596 void ServiceWorkerContextClient::respondToFetchEvent( 597 void ServiceWorkerContextClient::respondToFetchEvent(
597 int response_id, 598 int fetch_event_id,
598 const blink::WebServiceWorkerResponse& web_response, 599 const blink::WebServiceWorkerResponse& web_response,
599 double event_dispatch_time) { 600 double event_dispatch_time) {
600 ServiceWorkerHeaderMap headers; 601 ServiceWorkerHeaderMap headers;
601 GetServiceWorkerHeaderMapFromWebResponse(web_response, &headers); 602 GetServiceWorkerHeaderMapFromWebResponse(web_response, &headers);
602 ServiceWorkerHeaderList cors_exposed_header_names; 603 ServiceWorkerHeaderList cors_exposed_header_names;
603 GetCorsExposedHeaderNamesFromWebResponse(web_response, 604 GetCorsExposedHeaderNamesFromWebResponse(web_response,
604 &cors_exposed_header_names); 605 &cors_exposed_header_names);
605 ServiceWorkerResponse response( 606 ServiceWorkerResponse response(
606 web_response.url(), web_response.status(), 607 web_response.url(), web_response.status(),
607 web_response.statusText().utf8(), web_response.responseType(), headers, 608 web_response.statusText().utf8(), web_response.responseType(), headers,
608 web_response.blobUUID().utf8(), web_response.blobSize(), 609 web_response.blobUUID().utf8(), web_response.blobSize(),
609 web_response.streamURL(), web_response.error(), 610 web_response.streamURL(), web_response.error(),
610 base::Time::FromInternalValue(web_response.responseTime()), 611 base::Time::FromInternalValue(web_response.responseTime()),
611 !web_response.cacheStorageCacheName().isNull(), 612 !web_response.cacheStorageCacheName().isNull(),
612 web_response.cacheStorageCacheName().utf8(), cors_exposed_header_names); 613 web_response.cacheStorageCacheName().utf8(), cors_exposed_header_names);
613 Send(new ServiceWorkerHostMsg_FetchEventResponse( 614 Send(new ServiceWorkerHostMsg_FetchEventResponse(
614 GetRoutingID(), response_id, SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, 615 GetRoutingID(), fetch_event_id,
615 response, base::Time::FromDoubleT(event_dispatch_time))); 616 SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, response,
617 base::Time::FromDoubleT(event_dispatch_time)));
616 } 618 }
617 619
618 void ServiceWorkerContextClient::didHandleFetchEvent( 620 void ServiceWorkerContextClient::didHandleFetchEvent(
619 int event_finish_id, 621 int fetch_event_id,
620 blink::WebServiceWorkerEventResult result, 622 blink::WebServiceWorkerEventResult result,
621 double event_dispatch_time) { 623 double event_dispatch_time) {
622 const FetchCallback* callback = 624 const FetchCallback* callback =
623 context_->fetch_event_callbacks.Lookup(event_finish_id); 625 context_->fetch_event_callbacks.Lookup(fetch_event_id);
624 if (!callback) 626 if (!callback)
625 return; 627 return;
626 628
627 callback->Run(result == blink::WebServiceWorkerEventResultCompleted 629 callback->Run(result == blink::WebServiceWorkerEventResultCompleted
628 ? SERVICE_WORKER_OK 630 ? SERVICE_WORKER_OK
629 : SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED, 631 : SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED,
630 base::Time::FromDoubleT(event_dispatch_time)); 632 base::Time::FromDoubleT(event_dispatch_time));
631 context_->fetch_event_callbacks.Remove(event_finish_id); 633 context_->fetch_event_callbacks.Remove(fetch_event_id);
632 } 634 }
633 635
634 void ServiceWorkerContextClient::didHandleNotificationClickEvent( 636 void ServiceWorkerContextClient::didHandleNotificationClickEvent(
635 int request_id, 637 int request_id,
636 blink::WebServiceWorkerEventResult result, 638 blink::WebServiceWorkerEventResult result,
637 double event_dispatch_time) { 639 double event_dispatch_time) {
638 Send(new ServiceWorkerHostMsg_NotificationClickEventFinished( 640 Send(new ServiceWorkerHostMsg_NotificationClickEventFinished(
639 GetRoutingID(), request_id, result, 641 GetRoutingID(), request_id, result,
640 base::Time::FromDoubleT(event_dispatch_time))); 642 base::Time::FromDoubleT(event_dispatch_time)));
641 } 643 }
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
862 WebServiceWorkerImpl::CreateHandle(worker)); 864 WebServiceWorkerImpl::CreateHandle(worker));
863 } 865 }
864 866
865 void ServiceWorkerContextClient::OnInstallEvent(int request_id) { 867 void ServiceWorkerContextClient::OnInstallEvent(int request_id) {
866 TRACE_EVENT0("ServiceWorker", 868 TRACE_EVENT0("ServiceWorker",
867 "ServiceWorkerContextClient::OnInstallEvent"); 869 "ServiceWorkerContextClient::OnInstallEvent");
868 proxy_->dispatchInstallEvent(request_id); 870 proxy_->dispatchInstallEvent(request_id);
869 } 871 }
870 872
871 void ServiceWorkerContextClient::DispatchFetchEvent( 873 void ServiceWorkerContextClient::DispatchFetchEvent(
872 int response_id, 874 int fetch_event_id,
873 const ServiceWorkerFetchRequest& request, 875 const ServiceWorkerFetchRequest& request,
874 const FetchCallback& callback) { 876 const FetchCallback& callback) {
875 blink::WebServiceWorkerRequest webRequest; 877 blink::WebServiceWorkerRequest webRequest;
876 TRACE_EVENT0("ServiceWorker", 878 TRACE_EVENT0("ServiceWorker",
877 "ServiceWorkerContextClient::DispatchFetchEvent"); 879 "ServiceWorkerContextClient::DispatchFetchEvent");
878 int event_finish_id = 880 context_->fetch_event_callbacks.AddWithID(new FetchCallback(callback),
879 context_->fetch_event_callbacks.Add(new FetchCallback(callback)); 881 fetch_event_id);
880 882
881 webRequest.setURL(blink::WebURL(request.url)); 883 webRequest.setURL(blink::WebURL(request.url));
882 webRequest.setMethod(blink::WebString::fromUTF8(request.method)); 884 webRequest.setMethod(blink::WebString::fromUTF8(request.method));
883 for (ServiceWorkerHeaderMap::const_iterator it = request.headers.begin(); 885 for (ServiceWorkerHeaderMap::const_iterator it = request.headers.begin();
884 it != request.headers.end(); 886 it != request.headers.end();
885 ++it) { 887 ++it) {
886 webRequest.setHeader(blink::WebString::fromUTF8(it->first), 888 webRequest.setHeader(blink::WebString::fromUTF8(it->first),
887 blink::WebString::fromUTF8(it->second)); 889 blink::WebString::fromUTF8(it->second));
888 } 890 }
889 if (!request.blob_uuid.empty()) { 891 if (!request.blob_uuid.empty()) {
890 webRequest.setBlob(blink::WebString::fromUTF8(request.blob_uuid), 892 webRequest.setBlob(blink::WebString::fromUTF8(request.blob_uuid),
891 request.blob_size); 893 request.blob_size);
892 } 894 }
893 webRequest.setReferrer( 895 webRequest.setReferrer(
894 blink::WebString::fromUTF8(request.referrer.url.spec()), 896 blink::WebString::fromUTF8(request.referrer.url.spec()),
895 request.referrer.policy); 897 request.referrer.policy);
896 webRequest.setMode(GetBlinkFetchRequestMode(request.mode)); 898 webRequest.setMode(GetBlinkFetchRequestMode(request.mode));
897 webRequest.setIsMainResourceLoad(request.is_main_resource_load); 899 webRequest.setIsMainResourceLoad(request.is_main_resource_load);
898 webRequest.setCredentialsMode( 900 webRequest.setCredentialsMode(
899 GetBlinkFetchCredentialsMode(request.credentials_mode)); 901 GetBlinkFetchCredentialsMode(request.credentials_mode));
900 webRequest.setRedirectMode(GetBlinkFetchRedirectMode(request.redirect_mode)); 902 webRequest.setRedirectMode(GetBlinkFetchRedirectMode(request.redirect_mode));
901 webRequest.setRequestContext( 903 webRequest.setRequestContext(
902 GetBlinkRequestContext(request.request_context_type)); 904 GetBlinkRequestContext(request.request_context_type));
903 webRequest.setFrameType(GetBlinkFrameType(request.frame_type)); 905 webRequest.setFrameType(GetBlinkFrameType(request.frame_type));
904 webRequest.setClientId(blink::WebString::fromUTF8(request.client_id)); 906 webRequest.setClientId(blink::WebString::fromUTF8(request.client_id));
905 webRequest.setIsReload(request.is_reload); 907 webRequest.setIsReload(request.is_reload);
906 if (request.fetch_type == ServiceWorkerFetchType::FOREIGN_FETCH) { 908 if (request.fetch_type == ServiceWorkerFetchType::FOREIGN_FETCH) {
907 proxy_->dispatchForeignFetchEvent(response_id, event_finish_id, webRequest); 909 proxy_->dispatchForeignFetchEvent(fetch_event_id, webRequest);
908 } else { 910 } else {
909 proxy_->dispatchFetchEvent(response_id, event_finish_id, webRequest); 911 proxy_->dispatchFetchEvent(fetch_event_id, webRequest);
910 } 912 }
911 } 913 }
912 914
913 void ServiceWorkerContextClient::OnNotificationClickEvent( 915 void ServiceWorkerContextClient::OnNotificationClickEvent(
914 int request_id, 916 int request_id,
915 const std::string& notification_id, 917 const std::string& notification_id,
916 const PlatformNotificationData& notification_data, 918 const PlatformNotificationData& notification_data,
917 int action_index) { 919 int action_index) {
918 TRACE_EVENT0("ServiceWorker", 920 TRACE_EVENT0("ServiceWorker",
919 "ServiceWorkerContextClient::OnNotificationClickEvent"); 921 "ServiceWorkerContextClient::OnNotificationClickEvent");
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
1132 } 1134 }
1133 1135
1134 base::WeakPtr<ServiceWorkerContextClient> 1136 base::WeakPtr<ServiceWorkerContextClient>
1135 ServiceWorkerContextClient::GetWeakPtr() { 1137 ServiceWorkerContextClient::GetWeakPtr() {
1136 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); 1138 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread());
1137 DCHECK(context_); 1139 DCHECK(context_);
1138 return context_->weak_factory.GetWeakPtr(); 1140 return context_->weak_factory.GetWeakPtr();
1139 } 1141 }
1140 1142
1141 } // namespace content 1143 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698