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 665 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 676 base::Time::FromDoubleT(event_dispatch_time))); | 676 base::Time::FromDoubleT(event_dispatch_time))); |
| 677 } | 677 } |
| 678 | 678 |
| 679 void ServiceWorkerContextClient::didHandleExtendableMessageEvent( | 679 void ServiceWorkerContextClient::didHandleExtendableMessageEvent( |
| 680 int request_id, | 680 int request_id, |
| 681 blink::WebServiceWorkerEventResult result, | 681 blink::WebServiceWorkerEventResult result, |
| 682 double event_dispatch_time) { | 682 double event_dispatch_time) { |
| 683 const DispatchExtendableMessageEventCallback* callback = | 683 const DispatchExtendableMessageEventCallback* callback = |
| 684 context_->message_event_callbacks.Lookup(request_id); | 684 context_->message_event_callbacks.Lookup(request_id); |
| 685 DCHECK(callback); | 685 DCHECK(callback); |
| 686 if (result == blink::WebServiceWorkerEventResultCompleted) { | 686 callback->Run(EventResultToStatus(result), |
| 687 callback->Run(SERVICE_WORKER_OK, | 687 base::Time::FromDoubleT(event_dispatch_time)); |
| 688 base::Time::FromDoubleT(event_dispatch_time)); | |
| 689 } else { | |
| 690 callback->Run(SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED, | |
| 691 base::Time::FromDoubleT(event_dispatch_time)); | |
| 692 } | |
| 693 context_->message_event_callbacks.Remove(request_id); | 688 context_->message_event_callbacks.Remove(request_id); |
| 694 } | 689 } |
| 695 | 690 |
| 696 void ServiceWorkerContextClient::didHandleInstallEvent( | 691 void ServiceWorkerContextClient::didHandleInstallEvent( |
| 697 int request_id, | 692 int request_id, |
| 698 blink::WebServiceWorkerEventResult result, | 693 blink::WebServiceWorkerEventResult result, |
| 699 double event_dispatch_time) { | 694 double event_dispatch_time) { |
| 700 Send(new ServiceWorkerHostMsg_InstallEventFinished( | 695 Send(new ServiceWorkerHostMsg_InstallEventFinished( |
| 701 GetRoutingID(), request_id, result, proxy_->hasFetchEventHandler(), | 696 GetRoutingID(), request_id, result, proxy_->hasFetchEventHandler(), |
| 702 base::Time::FromDoubleT(event_dispatch_time))); | 697 base::Time::FromDoubleT(event_dispatch_time))); |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 727 blink::WebServiceWorkerEventResult result, | 722 blink::WebServiceWorkerEventResult result, |
| 728 double event_dispatch_time) { | 723 double event_dispatch_time) { |
| 729 if (context_->preload_requests.Lookup(fetch_event_id)) { | 724 if (context_->preload_requests.Lookup(fetch_event_id)) { |
| 730 // Deletes NavigationPreloadRequest. If the network request is ongoing, it | 725 // Deletes NavigationPreloadRequest. If the network request is ongoing, it |
| 731 // will be canceled by deleting the mojom::URLLoaderPtr in the | 726 // will be canceled by deleting the mojom::URLLoaderPtr in the |
| 732 // NavigationPreloadRequest. | 727 // NavigationPreloadRequest. |
| 733 context_->preload_requests.Remove(fetch_event_id); | 728 context_->preload_requests.Remove(fetch_event_id); |
| 734 } | 729 } |
| 735 const FetchCallback* callback = | 730 const FetchCallback* callback = |
| 736 context_->fetch_event_callbacks.Lookup(fetch_event_id); | 731 context_->fetch_event_callbacks.Lookup(fetch_event_id); |
| 737 if (!callback) | 732 DCHECK(callback); |
| 738 return; | 733 callback->Run(EventResultToStatus(result), |
| 739 | |
| 740 callback->Run(result == blink::WebServiceWorkerEventResultCompleted | |
| 741 ? SERVICE_WORKER_OK | |
| 742 : SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED, | |
| 743 base::Time::FromDoubleT(event_dispatch_time)); | 734 base::Time::FromDoubleT(event_dispatch_time)); |
| 744 context_->fetch_event_callbacks.Remove(fetch_event_id); | 735 context_->fetch_event_callbacks.Remove(fetch_event_id); |
| 745 } | 736 } |
| 746 | 737 |
| 747 void ServiceWorkerContextClient::didHandleNotificationClickEvent( | 738 void ServiceWorkerContextClient::didHandleNotificationClickEvent( |
| 748 int request_id, | 739 int request_id, |
| 749 blink::WebServiceWorkerEventResult result, | 740 blink::WebServiceWorkerEventResult result, |
| 750 double event_dispatch_time) { | 741 double event_dispatch_time) { |
| 751 Send(new ServiceWorkerHostMsg_NotificationClickEventFinished( | 742 Send(new ServiceWorkerHostMsg_NotificationClickEventFinished( |
| 752 GetRoutingID(), request_id, result, | 743 GetRoutingID(), request_id, result, |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 770 GetRoutingID(), request_id, result, | 761 GetRoutingID(), request_id, result, |
| 771 base::Time::FromDoubleT(event_dispatch_time))); | 762 base::Time::FromDoubleT(event_dispatch_time))); |
| 772 } | 763 } |
| 773 | 764 |
| 774 void ServiceWorkerContextClient::didHandleSyncEvent( | 765 void ServiceWorkerContextClient::didHandleSyncEvent( |
| 775 int request_id, | 766 int request_id, |
| 776 blink::WebServiceWorkerEventResult result, | 767 blink::WebServiceWorkerEventResult result, |
| 777 double event_dispatch_time) { | 768 double event_dispatch_time) { |
| 778 const SyncCallback* callback = | 769 const SyncCallback* callback = |
| 779 context_->sync_event_callbacks.Lookup(request_id); | 770 context_->sync_event_callbacks.Lookup(request_id); |
| 780 if (!callback) | 771 DCHECK(callback); |
| 781 return; | 772 callback->Run(EventResultToStatus(result), |
| 782 if (result == blink::WebServiceWorkerEventResultCompleted) { | 773 base::Time::FromDoubleT(event_dispatch_time)); |
| 783 callback->Run(SERVICE_WORKER_OK, | |
| 784 base::Time::FromDoubleT(event_dispatch_time)); | |
| 785 } else { | |
| 786 callback->Run(SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED, | |
| 787 base::Time::FromDoubleT(event_dispatch_time)); | |
| 788 } | |
| 789 context_->sync_event_callbacks.Remove(request_id); | 774 context_->sync_event_callbacks.Remove(request_id); |
| 790 } | 775 } |
| 791 | 776 |
| 792 blink::WebServiceWorkerNetworkProvider* | 777 blink::WebServiceWorkerNetworkProvider* |
| 793 ServiceWorkerContextClient::createServiceWorkerNetworkProvider( | 778 ServiceWorkerContextClient::createServiceWorkerNetworkProvider( |
| 794 blink::WebDataSource* data_source) { | 779 blink::WebDataSource* data_source) { |
| 795 DCHECK(main_thread_task_runner_->RunsTasksOnCurrentThread()); | 780 DCHECK(main_thread_task_runner_->RunsTasksOnCurrentThread()); |
| 796 | 781 |
| 797 // Create a content::ServiceWorkerNetworkProvider for this data source so | 782 // Create a content::ServiceWorkerNetworkProvider for this data source so |
| 798 // we can observe its requests. | 783 // we can observe its requests. |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 897 blink::WebServiceWorkerContextProxy::LastChanceOption web_last_chance = | 882 blink::WebServiceWorkerContextProxy::LastChanceOption web_last_chance = |
| 898 mojo::ConvertTo<blink::WebServiceWorkerContextProxy::LastChanceOption>( | 883 mojo::ConvertTo<blink::WebServiceWorkerContextProxy::LastChanceOption>( |
| 899 last_chance); | 884 last_chance); |
| 900 | 885 |
| 901 // TODO(jkarlin): Make this blink::WebString::FromUTF8Lenient once | 886 // TODO(jkarlin): Make this blink::WebString::FromUTF8Lenient once |
| 902 // https://crrev.com/1768063002/ lands. | 887 // https://crrev.com/1768063002/ lands. |
| 903 proxy_->dispatchSyncEvent(request_id, blink::WebString::fromUTF8(tag), | 888 proxy_->dispatchSyncEvent(request_id, blink::WebString::fromUTF8(tag), |
| 904 web_last_chance); | 889 web_last_chance); |
| 905 } | 890 } |
| 906 | 891 |
| 892 ServiceWorkerStatusCode ServiceWorkerContextClient::EventResultToStatus( | |
| 893 blink::WebServiceWorkerEventResult result) { | |
|
falken
2017/01/10 06:34:03
This could be a nonmember function in an unnamed n
xiaofengzhang
2017/01/10 07:07:20
Acknowledged.
| |
| 894 switch (result) { | |
| 895 case blink::WebServiceWorkerEventResultCompleted: | |
| 896 return SERVICE_WORKER_OK; | |
| 897 case blink::WebServiceWorkerEventResultRejected: | |
| 898 return SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED; | |
| 899 } | |
| 900 NOTREACHED() << "Got stray result: " << result; | |
|
falken
2017/01/10 06:34:03
"stray result" is a bit weird. "invalid result"
xiaofengzhang
2017/01/10 07:07:20
Acknowledged.
| |
| 901 return SERVICE_WORKER_ERROR_FAILED; | |
| 902 } | |
| 903 | |
| 907 void ServiceWorkerContextClient::Send(IPC::Message* message) { | 904 void ServiceWorkerContextClient::Send(IPC::Message* message) { |
| 908 sender_->Send(message); | 905 sender_->Send(message); |
| 909 } | 906 } |
| 910 | 907 |
| 911 void ServiceWorkerContextClient::SendWorkerStarted() { | 908 void ServiceWorkerContextClient::SendWorkerStarted() { |
| 912 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); | 909 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); |
| 913 TRACE_EVENT_ASYNC_END0("ServiceWorker", | 910 TRACE_EVENT_ASYNC_END0("ServiceWorker", |
| 914 "ServiceWorkerContextClient::StartingWorkerContext", | 911 "ServiceWorkerContextClient::StartingWorkerContext", |
| 915 this); | 912 this); |
| 916 Send(new EmbeddedWorkerHostMsg_WorkerStarted(embedded_worker_id_)); | 913 Send(new EmbeddedWorkerHostMsg_WorkerStarted(embedded_worker_id_)); |
| (...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1280 } | 1277 } |
| 1281 | 1278 |
| 1282 base::WeakPtr<ServiceWorkerContextClient> | 1279 base::WeakPtr<ServiceWorkerContextClient> |
| 1283 ServiceWorkerContextClient::GetWeakPtr() { | 1280 ServiceWorkerContextClient::GetWeakPtr() { |
| 1284 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); | 1281 DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); |
| 1285 DCHECK(context_); | 1282 DCHECK(context_); |
| 1286 return context_->weak_factory.GetWeakPtr(); | 1283 return context_->weak_factory.GetWeakPtr(); |
| 1287 } | 1284 } |
| 1288 | 1285 |
| 1289 } // namespace content | 1286 } // namespace content |
| OLD | NEW |