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

Side by Side Diff: content/browser/service_worker/service_worker_context_wrapper.cc

Issue 2943463002: Implement dumb URLLoader{Factory} for ServiceWorker script loading (Closed)
Patch Set: . Created 3 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 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 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 // Explicitly remove this object as an observer to avoid use-after-frees in 141 // Explicitly remove this object as an observer to avoid use-after-frees in
142 // tests where this object is not guaranteed to outlive the 142 // tests where this object is not guaranteed to outlive the
143 // ServiceWorkerContextCore it wraps. 143 // ServiceWorkerContextCore it wraps.
144 core_observer_list_->RemoveObserver(this); 144 core_observer_list_->RemoveObserver(this);
145 DCHECK(!resource_context_); 145 DCHECK(!resource_context_);
146 } 146 }
147 147
148 void ServiceWorkerContextWrapper::Init( 148 void ServiceWorkerContextWrapper::Init(
149 const base::FilePath& user_data_directory, 149 const base::FilePath& user_data_directory,
150 storage::QuotaManagerProxy* quota_manager_proxy, 150 storage::QuotaManagerProxy* quota_manager_proxy,
151 storage::SpecialStoragePolicy* special_storage_policy) { 151 storage::SpecialStoragePolicy* special_storage_policy,
152 ChromeBlobStorageContext* blob_context,
153 URLLoaderFactoryGetter* loader_factory_getter) {
152 DCHECK_CURRENTLY_ON(BrowserThread::UI); 154 DCHECK_CURRENTLY_ON(BrowserThread::UI);
153 155
154 is_incognito_ = user_data_directory.empty(); 156 is_incognito_ = user_data_directory.empty();
155 base::SequencedWorkerPool* pool = BrowserThread::GetBlockingPool(); 157 base::SequencedWorkerPool* pool = BrowserThread::GetBlockingPool();
156 std::unique_ptr<ServiceWorkerDatabaseTaskManager> database_task_manager( 158 std::unique_ptr<ServiceWorkerDatabaseTaskManager> database_task_manager(
157 new ServiceWorkerDatabaseTaskManagerImpl(pool)); 159 new ServiceWorkerDatabaseTaskManagerImpl(pool));
158 scoped_refptr<base::SingleThreadTaskRunner> disk_cache_thread = 160 scoped_refptr<base::SingleThreadTaskRunner> disk_cache_thread =
159 BrowserThread::GetTaskRunnerForThread(BrowserThread::CACHE); 161 BrowserThread::GetTaskRunnerForThread(BrowserThread::CACHE);
160 InitInternal(user_data_directory, std::move(database_task_manager), 162 InitInternal(user_data_directory, std::move(database_task_manager),
161 disk_cache_thread, quota_manager_proxy, special_storage_policy); 163 disk_cache_thread, quota_manager_proxy, special_storage_policy,
164 blob_context, loader_factory_getter);
162 } 165 }
163 166
164 void ServiceWorkerContextWrapper::Shutdown() { 167 void ServiceWorkerContextWrapper::Shutdown() {
165 DCHECK_CURRENTLY_ON(BrowserThread::UI); 168 DCHECK_CURRENTLY_ON(BrowserThread::UI);
166 169
167 storage_partition_ = nullptr; 170 storage_partition_ = nullptr;
168 process_manager_->Shutdown(); 171 process_manager_->Shutdown();
169 BrowserThread::PostTask( 172 BrowserThread::PostTask(
170 BrowserThread::IO, 173 BrowserThread::IO,
171 FROM_HERE, 174 FROM_HERE,
(...skipping 610 matching lines...) Expand 10 before | Expand all | Expand 10 after
782 if (!context_core_) 785 if (!context_core_)
783 return false; 786 return false;
784 return context_core_->storage()->OriginHasForeignFetchRegistrations(origin); 787 return context_core_->storage()->OriginHasForeignFetchRegistrations(origin);
785 } 788 }
786 789
787 void ServiceWorkerContextWrapper::InitInternal( 790 void ServiceWorkerContextWrapper::InitInternal(
788 const base::FilePath& user_data_directory, 791 const base::FilePath& user_data_directory,
789 std::unique_ptr<ServiceWorkerDatabaseTaskManager> database_task_manager, 792 std::unique_ptr<ServiceWorkerDatabaseTaskManager> database_task_manager,
790 const scoped_refptr<base::SingleThreadTaskRunner>& disk_cache_thread, 793 const scoped_refptr<base::SingleThreadTaskRunner>& disk_cache_thread,
791 storage::QuotaManagerProxy* quota_manager_proxy, 794 storage::QuotaManagerProxy* quota_manager_proxy,
792 storage::SpecialStoragePolicy* special_storage_policy) { 795 storage::SpecialStoragePolicy* special_storage_policy,
796 ChromeBlobStorageContext* blob_context,
797 URLLoaderFactoryGetter* loader_factory_getter) {
793 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { 798 if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
794 BrowserThread::PostTask( 799 BrowserThread::PostTask(
795 BrowserThread::IO, FROM_HERE, 800 BrowserThread::IO, FROM_HERE,
796 base::Bind(&ServiceWorkerContextWrapper::InitInternal, this, 801 base::Bind(&ServiceWorkerContextWrapper::InitInternal, this,
797 user_data_directory, base::Passed(&database_task_manager), 802 user_data_directory, base::Passed(&database_task_manager),
798 disk_cache_thread, base::RetainedRef(quota_manager_proxy), 803 disk_cache_thread, base::RetainedRef(quota_manager_proxy),
799 base::RetainedRef(special_storage_policy))); 804 base::RetainedRef(special_storage_policy),
805 base::RetainedRef(blob_context),
806 base::RetainedRef(loader_factory_getter)));
800 return; 807 return;
801 } 808 }
802 // TODO(pkasting): Remove ScopedTracker below once crbug.com/477117 is fixed. 809 // TODO(pkasting): Remove ScopedTracker below once crbug.com/477117 is fixed.
803 tracked_objects::ScopedTracker tracking_profile( 810 tracked_objects::ScopedTracker tracking_profile(
804 FROM_HERE_WITH_EXPLICIT_FUNCTION( 811 FROM_HERE_WITH_EXPLICIT_FUNCTION(
805 "477117 ServiceWorkerContextWrapper::InitInternal")); 812 "477117 ServiceWorkerContextWrapper::InitInternal"));
806 DCHECK(!context_core_); 813 DCHECK(!context_core_);
807 if (quota_manager_proxy) { 814 if (quota_manager_proxy) {
808 quota_manager_proxy->RegisterClient(new ServiceWorkerQuotaClient(this)); 815 quota_manager_proxy->RegisterClient(new ServiceWorkerQuotaClient(this));
809 } 816 }
810 context_core_.reset(new ServiceWorkerContextCore( 817 context_core_.reset(new ServiceWorkerContextCore(
811 user_data_directory, std::move(database_task_manager), disk_cache_thread, 818 user_data_directory, std::move(database_task_manager), disk_cache_thread,
812 quota_manager_proxy, special_storage_policy, core_observer_list_.get(), 819 quota_manager_proxy, special_storage_policy, blob_context,
813 this)); 820 loader_factory_getter, core_observer_list_.get(), this));
814 } 821 }
815 822
816 void ServiceWorkerContextWrapper::ShutdownOnIO() { 823 void ServiceWorkerContextWrapper::ShutdownOnIO() {
817 DCHECK_CURRENTLY_ON(BrowserThread::IO); 824 DCHECK_CURRENTLY_ON(BrowserThread::IO);
818 resource_context_ = nullptr; 825 resource_context_ = nullptr;
819 context_core_.reset(); 826 context_core_.reset();
820 } 827 }
821 828
822 bool ServiceWorkerContextWrapper::StartingExternalRequest( 829 bool ServiceWorkerContextWrapper::StartingExternalRequest(
823 int64_t service_worker_version_id, 830 int64_t service_worker_version_id,
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
959 service_worker_provider_id, 966 service_worker_provider_id,
960 std::move(client_ptr_info)); 967 std::move(client_ptr_info));
961 } 968 }
962 969
963 ServiceWorkerContextCore* ServiceWorkerContextWrapper::context() { 970 ServiceWorkerContextCore* ServiceWorkerContextWrapper::context() {
964 DCHECK_CURRENTLY_ON(BrowserThread::IO); 971 DCHECK_CURRENTLY_ON(BrowserThread::IO);
965 return context_core_.get(); 972 return context_core_.get();
966 } 973 }
967 974
968 } // namespace content 975 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698