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

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: Created 4 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 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 482 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 GetRoutingID(), request_id, result)); 493 GetRoutingID(), request_id, result));
494 } 494 }
495 495
496 void ServiceWorkerContextClient::didHandleInstallEvent( 496 void ServiceWorkerContextClient::didHandleInstallEvent(
497 int request_id, 497 int request_id,
498 blink::WebServiceWorkerEventResult result) { 498 blink::WebServiceWorkerEventResult result) {
499 Send(new ServiceWorkerHostMsg_InstallEventFinished( 499 Send(new ServiceWorkerHostMsg_InstallEventFinished(
500 GetRoutingID(), request_id, result, proxy_->hasFetchEventHandler())); 500 GetRoutingID(), request_id, result, proxy_->hasFetchEventHandler()));
501 } 501 }
502 502
503 void ServiceWorkerContextClient::didHandleFetchEvent(int request_id) { 503 void ServiceWorkerContextClient::respondFetchEvent(int request_id) {
504 Send(new ServiceWorkerHostMsg_FetchEventFinished( 504 Send(new ServiceWorkerHostMsg_FetchEventResponse(
505 GetRoutingID(), request_id, 505 GetRoutingID(), request_id, SERVICE_WORKER_FETCH_EVENT_RESULT_FALLBACK,
506 SERVICE_WORKER_FETCH_EVENT_RESULT_FALLBACK,
507 ServiceWorkerResponse())); 506 ServiceWorkerResponse()));
508 } 507 }
509 508
510 void ServiceWorkerContextClient::didHandleFetchEvent( 509 void ServiceWorkerContextClient::respondFetchEvent(
511 int request_id, 510 int request_id,
512 const blink::WebServiceWorkerResponse& web_response) { 511 const blink::WebServiceWorkerResponse& web_response) {
513 ServiceWorkerHeaderMap headers; 512 ServiceWorkerHeaderMap headers;
514 GetServiceWorkerHeaderMapFromWebResponse(web_response, &headers); 513 GetServiceWorkerHeaderMapFromWebResponse(web_response, &headers);
515 ServiceWorkerHeaderList cors_exposed_header_names; 514 ServiceWorkerHeaderList cors_exposed_header_names;
516 GetCorsExposedHeaderNamesFromWebResponse(web_response, 515 GetCorsExposedHeaderNamesFromWebResponse(web_response,
517 &cors_exposed_header_names); 516 &cors_exposed_header_names);
518 ServiceWorkerResponse response( 517 ServiceWorkerResponse response(
519 web_response.url(), web_response.status(), 518 web_response.url(), web_response.status(),
520 web_response.statusText().utf8(), web_response.responseType(), headers, 519 web_response.statusText().utf8(), web_response.responseType(), headers,
521 web_response.blobUUID().utf8(), web_response.blobSize(), 520 web_response.blobUUID().utf8(), web_response.blobSize(),
522 web_response.streamURL(), web_response.error(), 521 web_response.streamURL(), web_response.error(),
523 base::Time::FromInternalValue(web_response.responseTime()), 522 base::Time::FromInternalValue(web_response.responseTime()),
524 !web_response.cacheStorageCacheName().isNull(), 523 !web_response.cacheStorageCacheName().isNull(),
525 web_response.cacheStorageCacheName().utf8(), cors_exposed_header_names); 524 web_response.cacheStorageCacheName().utf8(), cors_exposed_header_names);
526 Send(new ServiceWorkerHostMsg_FetchEventFinished( 525 Send(new ServiceWorkerHostMsg_FetchEventResponse(
527 GetRoutingID(), request_id, 526 GetRoutingID(), request_id, SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE,
528 SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE,
529 response)); 527 response));
530 } 528 }
531 529
530 void ServiceWorkerContextClient::didHandleFetchEvent(
531 int request_id,
532 blink::WebServiceWorkerEventResult result) {
533 Send(new ServiceWorkerHostMsg_FetchEventFinished(GetRoutingID(), request_id,
534 result));
535 }
536
532 void ServiceWorkerContextClient::didHandleNotificationClickEvent( 537 void ServiceWorkerContextClient::didHandleNotificationClickEvent(
533 int request_id, 538 int request_id,
534 blink::WebServiceWorkerEventResult result) { 539 blink::WebServiceWorkerEventResult result) {
535 Send(new ServiceWorkerHostMsg_NotificationClickEventFinished( 540 Send(new ServiceWorkerHostMsg_NotificationClickEventFinished(
536 GetRoutingID(), request_id, result)); 541 GetRoutingID(), request_id, result));
537 } 542 }
538 543
539 void ServiceWorkerContextClient::didHandleNotificationCloseEvent( 544 void ServiceWorkerContextClient::didHandleNotificationCloseEvent(
540 int request_id, 545 int request_id,
541 blink::WebServiceWorkerEventResult result) { 546 blink::WebServiceWorkerEventResult result) {
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 WebServiceWorkerImpl::CreateHandle(worker)); 754 WebServiceWorkerImpl::CreateHandle(worker));
750 } 755 }
751 756
752 void ServiceWorkerContextClient::OnInstallEvent(int request_id) { 757 void ServiceWorkerContextClient::OnInstallEvent(int request_id) {
753 TRACE_EVENT0("ServiceWorker", 758 TRACE_EVENT0("ServiceWorker",
754 "ServiceWorkerContextClient::OnInstallEvent"); 759 "ServiceWorkerContextClient::OnInstallEvent");
755 proxy_->dispatchInstallEvent(request_id); 760 proxy_->dispatchInstallEvent(request_id);
756 } 761 }
757 762
758 void ServiceWorkerContextClient::OnFetchEvent( 763 void ServiceWorkerContextClient::OnFetchEvent(
759 int request_id, 764 int response_request_id,
765 int event_request_id,
760 const ServiceWorkerFetchRequest& request) { 766 const ServiceWorkerFetchRequest& request) {
761 blink::WebServiceWorkerRequest webRequest; 767 blink::WebServiceWorkerRequest webRequest;
762 TRACE_EVENT0("ServiceWorker", 768 TRACE_EVENT0("ServiceWorker",
763 "ServiceWorkerContextClient::OnFetchEvent"); 769 "ServiceWorkerContextClient::OnFetchEvent");
764 webRequest.setURL(blink::WebURL(request.url)); 770 webRequest.setURL(blink::WebURL(request.url));
765 webRequest.setMethod(blink::WebString::fromUTF8(request.method)); 771 webRequest.setMethod(blink::WebString::fromUTF8(request.method));
766 for (ServiceWorkerHeaderMap::const_iterator it = request.headers.begin(); 772 for (ServiceWorkerHeaderMap::const_iterator it = request.headers.begin();
767 it != request.headers.end(); 773 it != request.headers.end();
768 ++it) { 774 ++it) {
769 webRequest.setHeader(blink::WebString::fromUTF8(it->first), 775 webRequest.setHeader(blink::WebString::fromUTF8(it->first),
(...skipping 10 matching lines...) Expand all
780 webRequest.setIsMainResourceLoad(request.is_main_resource_load); 786 webRequest.setIsMainResourceLoad(request.is_main_resource_load);
781 webRequest.setCredentialsMode( 787 webRequest.setCredentialsMode(
782 GetBlinkFetchCredentialsMode(request.credentials_mode)); 788 GetBlinkFetchCredentialsMode(request.credentials_mode));
783 webRequest.setRedirectMode(GetBlinkFetchRedirectMode(request.redirect_mode)); 789 webRequest.setRedirectMode(GetBlinkFetchRedirectMode(request.redirect_mode));
784 webRequest.setRequestContext( 790 webRequest.setRequestContext(
785 GetBlinkRequestContext(request.request_context_type)); 791 GetBlinkRequestContext(request.request_context_type));
786 webRequest.setFrameType(GetBlinkFrameType(request.frame_type)); 792 webRequest.setFrameType(GetBlinkFrameType(request.frame_type));
787 webRequest.setClientId(blink::WebString::fromUTF8(request.client_id)); 793 webRequest.setClientId(blink::WebString::fromUTF8(request.client_id));
788 webRequest.setIsReload(request.is_reload); 794 webRequest.setIsReload(request.is_reload);
789 if (request.fetch_type == ServiceWorkerFetchType::FOREIGN_FETCH) { 795 if (request.fetch_type == ServiceWorkerFetchType::FOREIGN_FETCH) {
790 proxy_->dispatchForeignFetchEvent(request_id, webRequest); 796 proxy_->dispatchForeignFetchEvent(response_request_id, event_request_id,
797 webRequest);
791 } else { 798 } else {
792 proxy_->dispatchFetchEvent(request_id, webRequest); 799 proxy_->dispatchFetchEvent(response_request_id, event_request_id,
800 webRequest);
793 } 801 }
794 } 802 }
795 803
796 void ServiceWorkerContextClient::OnNotificationClickEvent( 804 void ServiceWorkerContextClient::OnNotificationClickEvent(
797 int request_id, 805 int request_id,
798 int64_t persistent_notification_id, 806 int64_t persistent_notification_id,
799 const PlatformNotificationData& notification_data, 807 const PlatformNotificationData& notification_data,
800 int action_index) { 808 int action_index) {
801 TRACE_EVENT0("ServiceWorker", 809 TRACE_EVENT0("ServiceWorker",
802 "ServiceWorkerContextClient::OnNotificationClickEvent"); 810 "ServiceWorkerContextClient::OnNotificationClickEvent");
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
1017 } 1025 }
1018 1026
1019 base::WeakPtr<ServiceWorkerContextClient> 1027 base::WeakPtr<ServiceWorkerContextClient>
1020 ServiceWorkerContextClient::GetWeakPtr() { 1028 ServiceWorkerContextClient::GetWeakPtr() {
1021 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); 1029 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread());
1022 DCHECK(context_); 1030 DCHECK(context_);
1023 return context_->weak_factory.GetWeakPtr(); 1031 return context_->weak_factory.GetWeakPtr();
1024 } 1032 }
1025 1033
1026 } // namespace content 1034 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698