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

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

Issue 2034663002: ServiceWorker: Keep the worker alive until FetchEvent.waitUntil settles (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 5 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 488 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 GetRoutingID(), request_id, result)); 499 GetRoutingID(), request_id, result));
500 } 500 }
501 501
502 void ServiceWorkerContextClient::didHandleInstallEvent( 502 void ServiceWorkerContextClient::didHandleInstallEvent(
503 int request_id, 503 int request_id,
504 blink::WebServiceWorkerEventResult result) { 504 blink::WebServiceWorkerEventResult result) {
505 Send(new ServiceWorkerHostMsg_InstallEventFinished( 505 Send(new ServiceWorkerHostMsg_InstallEventFinished(
506 GetRoutingID(), request_id, result, proxy_->hasFetchEventHandler())); 506 GetRoutingID(), request_id, result, proxy_->hasFetchEventHandler()));
507 } 507 }
508 508
509 void ServiceWorkerContextClient::didHandleFetchEvent(int request_id) { 509 void ServiceWorkerContextClient::respondToFetchEvent(int response_id) {
510 Send(new ServiceWorkerHostMsg_FetchEventFinished( 510 Send(new ServiceWorkerHostMsg_FetchEventResponse(
511 GetRoutingID(), request_id, 511 GetRoutingID(), response_id, SERVICE_WORKER_FETCH_EVENT_RESULT_FALLBACK,
512 SERVICE_WORKER_FETCH_EVENT_RESULT_FALLBACK,
513 ServiceWorkerResponse())); 512 ServiceWorkerResponse()));
514 } 513 }
515 514
516 void ServiceWorkerContextClient::didHandleFetchEvent( 515 void ServiceWorkerContextClient::respondToFetchEvent(
517 int request_id, 516 int response_id,
518 const blink::WebServiceWorkerResponse& web_response) { 517 const blink::WebServiceWorkerResponse& web_response) {
519 ServiceWorkerHeaderMap headers; 518 ServiceWorkerHeaderMap headers;
520 GetServiceWorkerHeaderMapFromWebResponse(web_response, &headers); 519 GetServiceWorkerHeaderMapFromWebResponse(web_response, &headers);
521 ServiceWorkerHeaderList cors_exposed_header_names; 520 ServiceWorkerHeaderList cors_exposed_header_names;
522 GetCorsExposedHeaderNamesFromWebResponse(web_response, 521 GetCorsExposedHeaderNamesFromWebResponse(web_response,
523 &cors_exposed_header_names); 522 &cors_exposed_header_names);
524 ServiceWorkerResponse response( 523 ServiceWorkerResponse response(
525 web_response.url(), web_response.status(), 524 web_response.url(), web_response.status(),
526 web_response.statusText().utf8(), web_response.responseType(), headers, 525 web_response.statusText().utf8(), web_response.responseType(), headers,
527 web_response.blobUUID().utf8(), web_response.blobSize(), 526 web_response.blobUUID().utf8(), web_response.blobSize(),
528 web_response.streamURL(), web_response.error(), 527 web_response.streamURL(), web_response.error(),
529 base::Time::FromInternalValue(web_response.responseTime()), 528 base::Time::FromInternalValue(web_response.responseTime()),
530 !web_response.cacheStorageCacheName().isNull(), 529 !web_response.cacheStorageCacheName().isNull(),
531 web_response.cacheStorageCacheName().utf8(), cors_exposed_header_names); 530 web_response.cacheStorageCacheName().utf8(), cors_exposed_header_names);
532 Send(new ServiceWorkerHostMsg_FetchEventFinished( 531 Send(new ServiceWorkerHostMsg_FetchEventResponse(
533 GetRoutingID(), request_id, 532 GetRoutingID(), response_id, SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE,
534 SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE,
535 response)); 533 response));
536 } 534 }
537 535
536 void ServiceWorkerContextClient::didHandleFetchEvent(
537 int event_finish_id,
538 blink::WebServiceWorkerEventResult result) {
539 Send(new ServiceWorkerHostMsg_FetchEventFinished(GetRoutingID(),
540 event_finish_id, result));
541 }
542
538 void ServiceWorkerContextClient::didHandleNotificationClickEvent( 543 void ServiceWorkerContextClient::didHandleNotificationClickEvent(
539 int request_id, 544 int request_id,
540 blink::WebServiceWorkerEventResult result) { 545 blink::WebServiceWorkerEventResult result) {
541 Send(new ServiceWorkerHostMsg_NotificationClickEventFinished( 546 Send(new ServiceWorkerHostMsg_NotificationClickEventFinished(
542 GetRoutingID(), request_id, result)); 547 GetRoutingID(), request_id, result));
543 } 548 }
544 549
545 void ServiceWorkerContextClient::didHandleNotificationCloseEvent( 550 void ServiceWorkerContextClient::didHandleNotificationCloseEvent(
546 int request_id, 551 int request_id,
547 blink::WebServiceWorkerEventResult result) { 552 blink::WebServiceWorkerEventResult result) {
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
756 WebServiceWorkerImpl::CreateHandle(worker)); 761 WebServiceWorkerImpl::CreateHandle(worker));
757 } 762 }
758 763
759 void ServiceWorkerContextClient::OnInstallEvent(int request_id) { 764 void ServiceWorkerContextClient::OnInstallEvent(int request_id) {
760 TRACE_EVENT0("ServiceWorker", 765 TRACE_EVENT0("ServiceWorker",
761 "ServiceWorkerContextClient::OnInstallEvent"); 766 "ServiceWorkerContextClient::OnInstallEvent");
762 proxy_->dispatchInstallEvent(request_id); 767 proxy_->dispatchInstallEvent(request_id);
763 } 768 }
764 769
765 void ServiceWorkerContextClient::OnFetchEvent( 770 void ServiceWorkerContextClient::OnFetchEvent(
766 int request_id, 771 int response_id,
772 int event_finish_id,
767 const ServiceWorkerFetchRequest& request) { 773 const ServiceWorkerFetchRequest& request) {
768 blink::WebServiceWorkerRequest webRequest; 774 blink::WebServiceWorkerRequest webRequest;
769 TRACE_EVENT0("ServiceWorker", 775 TRACE_EVENT0("ServiceWorker",
770 "ServiceWorkerContextClient::OnFetchEvent"); 776 "ServiceWorkerContextClient::OnFetchEvent");
771 webRequest.setURL(blink::WebURL(request.url)); 777 webRequest.setURL(blink::WebURL(request.url));
772 webRequest.setMethod(blink::WebString::fromUTF8(request.method)); 778 webRequest.setMethod(blink::WebString::fromUTF8(request.method));
773 for (ServiceWorkerHeaderMap::const_iterator it = request.headers.begin(); 779 for (ServiceWorkerHeaderMap::const_iterator it = request.headers.begin();
774 it != request.headers.end(); 780 it != request.headers.end();
775 ++it) { 781 ++it) {
776 webRequest.setHeader(blink::WebString::fromUTF8(it->first), 782 webRequest.setHeader(blink::WebString::fromUTF8(it->first),
(...skipping 10 matching lines...) Expand all
787 webRequest.setIsMainResourceLoad(request.is_main_resource_load); 793 webRequest.setIsMainResourceLoad(request.is_main_resource_load);
788 webRequest.setCredentialsMode( 794 webRequest.setCredentialsMode(
789 GetBlinkFetchCredentialsMode(request.credentials_mode)); 795 GetBlinkFetchCredentialsMode(request.credentials_mode));
790 webRequest.setRedirectMode(GetBlinkFetchRedirectMode(request.redirect_mode)); 796 webRequest.setRedirectMode(GetBlinkFetchRedirectMode(request.redirect_mode));
791 webRequest.setRequestContext( 797 webRequest.setRequestContext(
792 GetBlinkRequestContext(request.request_context_type)); 798 GetBlinkRequestContext(request.request_context_type));
793 webRequest.setFrameType(GetBlinkFrameType(request.frame_type)); 799 webRequest.setFrameType(GetBlinkFrameType(request.frame_type));
794 webRequest.setClientId(blink::WebString::fromUTF8(request.client_id)); 800 webRequest.setClientId(blink::WebString::fromUTF8(request.client_id));
795 webRequest.setIsReload(request.is_reload); 801 webRequest.setIsReload(request.is_reload);
796 if (request.fetch_type == ServiceWorkerFetchType::FOREIGN_FETCH) { 802 if (request.fetch_type == ServiceWorkerFetchType::FOREIGN_FETCH) {
797 proxy_->dispatchForeignFetchEvent(request_id, webRequest); 803 proxy_->dispatchForeignFetchEvent(response_id, event_finish_id, webRequest);
798 } else { 804 } else {
799 proxy_->dispatchFetchEvent(request_id, webRequest); 805 proxy_->dispatchFetchEvent(response_id, event_finish_id, webRequest);
800 } 806 }
801 } 807 }
802 808
803 void ServiceWorkerContextClient::OnNotificationClickEvent( 809 void ServiceWorkerContextClient::OnNotificationClickEvent(
804 int request_id, 810 int request_id,
805 int64_t persistent_notification_id, 811 int64_t persistent_notification_id,
806 const PlatformNotificationData& notification_data, 812 const PlatformNotificationData& notification_data,
807 int action_index) { 813 int action_index) {
808 TRACE_EVENT0("ServiceWorker", 814 TRACE_EVENT0("ServiceWorker",
809 "ServiceWorkerContextClient::OnNotificationClickEvent"); 815 "ServiceWorkerContextClient::OnNotificationClickEvent");
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
1024 } 1030 }
1025 1031
1026 base::WeakPtr<ServiceWorkerContextClient> 1032 base::WeakPtr<ServiceWorkerContextClient>
1027 ServiceWorkerContextClient::GetWeakPtr() { 1033 ServiceWorkerContextClient::GetWeakPtr() {
1028 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); 1034 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread());
1029 DCHECK(context_); 1035 DCHECK(context_);
1030 return context_->weak_factory.GetWeakPtr(); 1036 return context_->weak_factory.GetWeakPtr();
1031 } 1037 }
1032 1038
1033 } // namespace content 1039 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698