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

Side by Side Diff: content/browser/resource_context_impl.cc

Issue 10916132: AppCache and StoragePartition'ing (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 3 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/resource_context_impl.h" 5 #include "content/browser/resource_context_impl.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "content/browser/appcache/chrome_appcache_service.h" 8 #include "content/browser/appcache/chrome_appcache_service.h"
9 #include "content/browser/fileapi/browser_file_system_helper.h" 9 #include "content/browser/fileapi/browser_file_system_helper.h"
10 #include "content/browser/fileapi/chrome_blob_storage_context.h" 10 #include "content/browser/fileapi/chrome_blob_storage_context.h"
(...skipping 13 matching lines...) Expand all
24 #include "net/url_request/url_request_context.h" 24 #include "net/url_request/url_request_context.h"
25 #include "net/url_request/url_request_context_getter.h" 25 #include "net/url_request/url_request_context_getter.h"
26 #include "webkit/appcache/appcache_service.h" 26 #include "webkit/appcache/appcache_service.h"
27 #include "webkit/appcache/view_appcache_internals_job.h" 27 #include "webkit/appcache/view_appcache_internals_job.h"
28 #include "webkit/blob/blob_data.h" 28 #include "webkit/blob/blob_data.h"
29 #include "webkit/blob/blob_url_request_job_factory.h" 29 #include "webkit/blob/blob_url_request_job_factory.h"
30 #include "webkit/database/database_tracker.h" 30 #include "webkit/database/database_tracker.h"
31 #include "webkit/fileapi/file_system_url_request_job_factory.h" 31 #include "webkit/fileapi/file_system_url_request_job_factory.h"
32 32
33 // Key names on ResourceContext. 33 // Key names on ResourceContext.
34 static const char* kAppCacheServiceKeyName = "content_appcache_service_tracker";
35 static const char* kBlobStorageContextKeyName = "content_blob_storage_context"; 34 static const char* kBlobStorageContextKeyName = "content_blob_storage_context";
36 static const char* kDatabaseTrackerKeyName = "content_database_tracker";
37 static const char* kFileSystemContextKeyName = "content_file_system_context";
38 static const char* kIndexedDBContextKeyName = "content_indexed_db_context";
39 static const char* kHostZoomMapKeyName = "content_host_zoom_map"; 35 static const char* kHostZoomMapKeyName = "content_host_zoom_map";
40 36
41 using appcache::AppCacheService; 37 using appcache::AppCacheService;
42 using base::UserDataAdapter; 38 using base::UserDataAdapter;
43 using content::BrowserThread; 39 using content::BrowserThread;
44 using fileapi::FileSystemContext; 40 using fileapi::FileSystemContext;
45 using webkit_blob::BlobStorageController; 41 using webkit_blob::BlobStorageController;
46 using webkit_database::DatabaseTracker; 42 using webkit_database::DatabaseTracker;
47 43
48 namespace content { 44 namespace content {
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 177
182 job_factory->AddInterceptor( 178 job_factory->AddInterceptor(
183 new DeveloperProtocolHandler(appcache_service, 179 new DeveloperProtocolHandler(appcache_service,
184 blob_storage_context->controller())); 180 blob_storage_context->controller()));
185 181
186 // TODO(jam): Add the ProtocolHandlerRegistryIntercepter here! 182 // TODO(jam): Add the ProtocolHandlerRegistryIntercepter here!
187 } 183 }
188 184
189 } // namespace 185 } // namespace
190 186
191 AppCacheService* ResourceContext::GetAppCacheService(ResourceContext* context) {
192 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
193 return UserDataAdapter<ChromeAppCacheService>::Get(
194 context, kAppCacheServiceKeyName);
195 }
196 187
197 ResourceContext::ResourceContext() { 188 ResourceContext::ResourceContext() {
198 if (ResourceDispatcherHostImpl::Get()) 189 if (ResourceDispatcherHostImpl::Get())
199 ResourceDispatcherHostImpl::Get()->AddResourceContext(this); 190 ResourceDispatcherHostImpl::Get()->AddResourceContext(this);
200 } 191 }
201 192
202 ResourceContext::~ResourceContext() { 193 ResourceContext::~ResourceContext() {
203 ResourceDispatcherHostImpl* rdhi = ResourceDispatcherHostImpl::Get(); 194 ResourceDispatcherHostImpl* rdhi = ResourceDispatcherHostImpl::Get();
204 if (rdhi) { 195 if (rdhi) {
205 rdhi->CancelRequestsForContext(this); 196 rdhi->CancelRequestsForContext(this);
206 rdhi->RemoveResourceContext(this); 197 rdhi->RemoveResourceContext(this);
207 } 198 }
208 } 199 }
209 200
210 BlobStorageController* GetBlobStorageControllerForResourceContext(
211 ResourceContext* resource_context) {
212 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
213 return GetChromeBlobStorageContextForResourceContext(resource_context)->
214 controller();
215 }
216
217 DatabaseTracker* GetDatabaseTrackerForResourceContext(
218 ResourceContext* resource_context) {
219 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
220 return UserDataAdapter<DatabaseTracker>::Get(
221 resource_context, kDatabaseTrackerKeyName);
222 }
223
224 FileSystemContext* GetFileSystemContextForResourceContext(
225 ResourceContext* resource_context) {
226 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
227 return UserDataAdapter<FileSystemContext>::Get(
228 resource_context, kFileSystemContextKeyName);
229 }
230
231 IndexedDBContextImpl* GetIndexedDBContextForResourceContext(
232 ResourceContext* resource_context) {
233 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
234 return UserDataAdapter<IndexedDBContextImpl>::Get(
235 resource_context, kIndexedDBContextKeyName);
236 }
237
238 ChromeBlobStorageContext* GetChromeBlobStorageContextForResourceContext( 201 ChromeBlobStorageContext* GetChromeBlobStorageContextForResourceContext(
239 ResourceContext* resource_context) { 202 ResourceContext* resource_context) {
240 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 203 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
241 return UserDataAdapter<ChromeBlobStorageContext>::Get( 204 return UserDataAdapter<ChromeBlobStorageContext>::Get(
242 resource_context, kBlobStorageContextKeyName); 205 resource_context, kBlobStorageContextKeyName);
243 } 206 }
244 207
245 HostZoomMap* GetHostZoomMapForResourceContext(ResourceContext* context) { 208 HostZoomMap* GetHostZoomMapForResourceContext(ResourceContext* context) {
246 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 209 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
247 return static_cast<NonOwningZoomData*>( 210 return static_cast<NonOwningZoomData*>(
248 context->GetUserData(kHostZoomMapKeyName))->host_zoom_map(); 211 context->GetUserData(kHostZoomMapKeyName))->host_zoom_map();
249 } 212 }
250 213
251 void InitializeResourceContext(BrowserContext* browser_context) { 214 void InitializeResourceContext(BrowserContext* browser_context) {
252 ResourceContext* resource_context = browser_context->GetResourceContext(); 215 ResourceContext* resource_context = browser_context->GetResourceContext();
253 DCHECK(!resource_context->GetUserData(kIndexedDBContextKeyName)); 216 DCHECK(!resource_context->GetUserData(kBlobStorageContextKeyName));
254 217
255 resource_context->SetUserData( 218 StoragePartition* storage_partition =
256 kIndexedDBContextKeyName, 219 BrowserContext::GetDefaultStoragePartition(browser_context);
257 new UserDataAdapter<IndexedDBContextImpl>( 220
258 static_cast<IndexedDBContextImpl*>(
259 BrowserContext::GetIndexedDBContext(browser_context))));
260 resource_context->SetUserData(
261 kDatabaseTrackerKeyName,
262 new UserDataAdapter<webkit_database::DatabaseTracker>(
263 BrowserContext::GetDefaultStoragePartition(browser_context)->
264 GetDatabaseTracker()));
265 resource_context->SetUserData(
266 kAppCacheServiceKeyName,
267 new UserDataAdapter<ChromeAppCacheService>(
268 static_cast<ChromeAppCacheService*>(
269 BrowserContext::GetAppCacheService(browser_context))));
270 resource_context->SetUserData(
271 kFileSystemContextKeyName,
272 new UserDataAdapter<FileSystemContext>(
273 BrowserContext::GetFileSystemContext(browser_context)));
274 resource_context->SetUserData( 221 resource_context->SetUserData(
275 kBlobStorageContextKeyName, 222 kBlobStorageContextKeyName,
276 new UserDataAdapter<ChromeBlobStorageContext>( 223 new UserDataAdapter<ChromeBlobStorageContext>(
277 ChromeBlobStorageContext::GetFor(browser_context))); 224 ChromeBlobStorageContext::GetFor(browser_context)));
278 225
279 // This object is owned by the BrowserContext and not ResourceContext, so 226 // This object is owned by the BrowserContext and not ResourceContext, so
280 // store a non-owning pointer here. 227 // store a non-owning pointer here.
281 resource_context->SetUserData( 228 resource_context->SetUserData(
282 kHostZoomMapKeyName, 229 kHostZoomMapKeyName,
283 new NonOwningZoomData( 230 new NonOwningZoomData(
(...skipping 11 matching lines...) Expand all
295 // our isolated URLRequestContext getters will do the wrong thing for blobs, 242 // our isolated URLRequestContext getters will do the wrong thing for blobs,
296 // and FileSystemContext. 243 // and FileSystemContext.
297 // 244 //
298 // http://crbug.com/85121 245 // http://crbug.com/85121
299 246
300 BrowserThread::PostTask( 247 BrowserThread::PostTask(
301 BrowserThread::IO, FROM_HERE, 248 BrowserThread::IO, FROM_HERE,
302 base::Bind( 249 base::Bind(
303 &InitializeRequestContext, 250 &InitializeRequestContext,
304 make_scoped_refptr(browser_context->GetRequestContext()), 251 make_scoped_refptr(browser_context->GetRequestContext()),
305 BrowserContext::GetAppCacheService(browser_context), 252 storage_partition->GetAppCacheService(),
306 make_scoped_refptr( 253 make_scoped_refptr(
307 BrowserContext::GetFileSystemContext(browser_context)), 254 storage_partition->GetFileSystemContext()),
308 make_scoped_refptr( 255 make_scoped_refptr(
309 ChromeBlobStorageContext::GetFor(browser_context)))); 256 ChromeBlobStorageContext::GetFor(browser_context))));
310 BrowserThread::PostTask( 257 BrowserThread::PostTask(
311 BrowserThread::IO, FROM_HERE, 258 BrowserThread::IO, FROM_HERE,
312 base::Bind( 259 base::Bind(
313 &InitializeRequestContext, 260 &InitializeRequestContext,
314 make_scoped_refptr(browser_context->GetMediaRequestContext()), 261 make_scoped_refptr(browser_context->GetMediaRequestContext()),
315 BrowserContext::GetAppCacheService(browser_context), 262 storage_partition->GetAppCacheService(),
316 make_scoped_refptr( 263 make_scoped_refptr(
317 BrowserContext::GetFileSystemContext(browser_context)), 264 storage_partition->GetFileSystemContext()),
318 make_scoped_refptr( 265 make_scoped_refptr(
319 ChromeBlobStorageContext::GetFor(browser_context)))); 266 ChromeBlobStorageContext::GetFor(browser_context))));
320 } 267 }
321 } 268 }
322 269
323 } // namespace content 270 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698