Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/browser/service_worker/service_worker_context_wrapper.h" | 5 #include "content/browser/service_worker/service_worker_context_wrapper.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 76 ServiceWorkerStatusCode status, | 76 ServiceWorkerStatusCode status, |
| 77 scoped_refptr<ServiceWorkerRegistration> registration) { | 77 scoped_refptr<ServiceWorkerRegistration> registration) { |
| 78 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 78 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 79 if (status != SERVICE_WORKER_OK || !registration->waiting_version()) | 79 if (status != SERVICE_WORKER_OK || !registration->waiting_version()) |
| 80 return; | 80 return; |
| 81 | 81 |
| 82 registration->waiting_version()->set_skip_waiting(true); | 82 registration->waiting_version()->set_skip_waiting(true); |
| 83 registration->ActivateWaitingVersionWhenReady(); | 83 registration->ActivateWaitingVersionWhenReady(); |
| 84 } | 84 } |
| 85 | 85 |
| 86 void DidStartWorker( | |
| 87 scoped_refptr<ServiceWorkerVersion> active_version, | |
| 88 ServiceWorkerContext::StartActiveWorkerCallback info_callback) { | |
| 89 EmbeddedWorkerInstance* instance = active_version->embedded_worker(); | |
|
falken
2017/06/23 03:45:46
nit: Since this function doesn't care about the ve
lazyboy
2017/06/23 07:44:56
Done.
| |
| 90 std::move(info_callback).Run(instance->process_id(), instance->thread_id()); | |
| 91 } | |
| 92 | |
| 93 void DidFailStartWorker(base::OnceClosure error_callback, | |
| 94 ServiceWorkerStatusCode code) { | |
| 95 std::move(error_callback).Run(); | |
| 96 } | |
| 97 | |
| 98 void FoundReadyRegistrationForStartActiveWorker( | |
| 99 ServiceWorkerContext::StartActiveWorkerCallback info_callback, | |
| 100 base::OnceClosure failure_callback, | |
| 101 ServiceWorkerStatusCode service_worker_status, | |
| 102 scoped_refptr<ServiceWorkerRegistration> service_worker_registration) { | |
| 103 DCHECK_CURRENTLY_ON(BrowserThread::IO); | |
| 104 if (service_worker_status == SERVICE_WORKER_OK) { | |
| 105 // Note: There might be a remote possibility that | |
| 106 // |service_worker_registration|'s active version might change between here | |
| 107 // and OnServiceWorkerStartedForStartActiveWorker, so use |active_version|. | |
|
falken
2017/06/23 03:45:46
This comment is a little confusing because at firs
lazyboy
2017/06/23 07:44:56
Done.
| |
| 108 scoped_refptr<ServiceWorkerVersion> active_version = | |
| 109 service_worker_registration->active_version(); | |
| 110 DCHECK(active_version.get()); | |
| 111 active_version->RunAfterStartWorker( | |
| 112 ServiceWorkerMetrics::EventType::EXTERNAL_REQUEST, | |
| 113 base::Bind(&DidStartWorker, active_version, | |
| 114 base::Passed(&info_callback)), | |
| 115 base::Bind(&DidFailStartWorker, base::Passed(&failure_callback))); | |
| 116 } else { | |
| 117 std::move(failure_callback).Run(); | |
| 118 } | |
| 119 } | |
| 120 | |
| 86 } // namespace | 121 } // namespace |
| 87 | 122 |
| 88 void ServiceWorkerContext::AddExcludedHeadersForFetchEvent( | 123 void ServiceWorkerContext::AddExcludedHeadersForFetchEvent( |
| 89 const std::set<std::string>& header_names) { | 124 const std::set<std::string>& header_names) { |
| 90 // TODO(pkasting): Remove ScopedTracker below once crbug.com/477117 is fixed. | 125 // TODO(pkasting): Remove ScopedTracker below once crbug.com/477117 is fixed. |
| 91 tracked_objects::ScopedTracker tracking_profile( | 126 tracked_objects::ScopedTracker tracking_profile( |
| 92 FROM_HERE_WITH_EXPLICIT_FUNCTION( | 127 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 93 "477117 ServiceWorkerContext::AddExcludedHeadersForFetchEvent")); | 128 "477117 ServiceWorkerContext::AddExcludedHeadersForFetchEvent")); |
| 94 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 129 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 95 g_excluded_header_name_set.Get().insert(header_names.begin(), | 130 g_excluded_header_name_set.Get().insert(header_names.begin(), |
| (...skipping 751 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 847 int64_t service_worker_version_id, | 882 int64_t service_worker_version_id, |
| 848 const std::string& request_uuid) { | 883 const std::string& request_uuid) { |
| 849 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 884 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 850 ServiceWorkerVersion* version = | 885 ServiceWorkerVersion* version = |
| 851 context()->GetLiveVersion(service_worker_version_id); | 886 context()->GetLiveVersion(service_worker_version_id); |
| 852 if (!version) | 887 if (!version) |
| 853 return false; | 888 return false; |
| 854 return version->FinishExternalRequest(request_uuid); | 889 return version->FinishExternalRequest(request_uuid); |
| 855 } | 890 } |
| 856 | 891 |
| 892 void ServiceWorkerContextWrapper::StartActiveWorkerForPattern( | |
| 893 const GURL& pattern, | |
| 894 StartActiveWorkerCallback info_callback, | |
| 895 base::OnceClosure failure_callback) { | |
| 896 DCHECK_CURRENTLY_ON(BrowserThread::IO); | |
| 897 FindReadyRegistrationForPattern( | |
| 898 pattern, base::Bind(&FoundReadyRegistrationForStartActiveWorker, | |
| 899 base::Passed(&info_callback), | |
| 900 base::Passed(&failure_callback))); | |
| 901 } | |
| 902 | |
| 857 void ServiceWorkerContextWrapper::DidDeleteAndStartOver( | 903 void ServiceWorkerContextWrapper::DidDeleteAndStartOver( |
| 858 ServiceWorkerStatusCode status) { | 904 ServiceWorkerStatusCode status) { |
| 859 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 905 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 860 if (status != SERVICE_WORKER_OK) { | 906 if (status != SERVICE_WORKER_OK) { |
| 861 context_core_.reset(); | 907 context_core_.reset(); |
| 862 return; | 908 return; |
| 863 } | 909 } |
| 864 context_core_.reset(new ServiceWorkerContextCore(context_core_.get(), this)); | 910 context_core_.reset(new ServiceWorkerContextCore(context_core_.get(), this)); |
| 865 DVLOG(1) << "Restarted ServiceWorkerContextCore successfully."; | 911 DVLOG(1) << "Restarted ServiceWorkerContextCore successfully."; |
| 866 context_core_->OnStorageWiped(); | 912 context_core_->OnStorageWiped(); |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 972 service_worker_provider_id, | 1018 service_worker_provider_id, |
| 973 std::move(client_ptr_info)); | 1019 std::move(client_ptr_info)); |
| 974 } | 1020 } |
| 975 | 1021 |
| 976 ServiceWorkerContextCore* ServiceWorkerContextWrapper::context() { | 1022 ServiceWorkerContextCore* ServiceWorkerContextWrapper::context() { |
| 977 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 1023 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 978 return context_core_.get(); | 1024 return context_core_.get(); |
| 979 } | 1025 } |
| 980 | 1026 |
| 981 } // namespace content | 1027 } // namespace content |
| OLD | NEW |