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

Unified Diff: content/browser/storage_partition_impl_map.cc

Issue 10969017: Create a new URLRequestJobFactory for isolated request contexts. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comment fixes. 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/storage_partition_impl_map.cc
diff --git a/content/browser/storage_partition_impl_map.cc b/content/browser/storage_partition_impl_map.cc
index 742242faa9c7407471766d43fe7ae205dc3565d3..49ffb07222df028a3cd07271a9c8f2a907db3fd8 100644
--- a/content/browser/storage_partition_impl_map.cc
+++ b/content/browser/storage_partition_impl_map.cc
@@ -144,11 +144,24 @@ void InitializeURLRequestContext(
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
if (!context_getter)
return; // tests.
+
+ // This code only modifies the URLRequestJobFactory on the context
+ // to handle blob: URLs, filesystem: URLs, and to let AppCache intercept
+ // the appropriate requests. This is in addition to the slew of other
+ // initializtion is done in during creation of the URLRequestContext.
Charlie Reis 2012/09/20 22:57:46 nit: that is
awong 2012/09/20 23:16:46 Done.
+ // We cannot yet centralize this code because URLRequestContext needs
+ // to be created before the StoragePartition context.
+ //
+ // TODO(ajwong): Fix the ordering so all the initialization is in one spot.
net::URLRequestContext* context = context_getter->GetURLRequestContext();
net::URLRequestJobFactory* job_factory =
const_cast<net::URLRequestJobFactory*>(context->job_factory());
+
+ // Note: if this is called twice with 2 request contexts that share one job
+ // factory (as is the case with a media request context and its related
+ // normal request context) then this will early exit.
if (job_factory->IsHandledProtocol(chrome::kBlobScheme))
- return; // Already initialized this RequestContext.
+ return; // Already initialized this JobFactory.
bool set_protocol = job_factory->SetProtocolHandler(
chrome::kBlobScheme,
@@ -253,15 +266,12 @@ void StoragePartitionImplMap::PostCreateInitialization(
make_scoped_refptr(partition->GetFileSystemContext()),
make_scoped_refptr(
ChromeBlobStorageContext::GetFor(browser_context_))));
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- base::Bind(
- &InitializeURLRequestContext,
- make_scoped_refptr(partition->GetMediaURLRequestContext()),
- make_scoped_refptr(partition->GetAppCacheService()),
- make_scoped_refptr(partition->GetFileSystemContext()),
- make_scoped_refptr(
- ChromeBlobStorageContext::GetFor(browser_context_))));
+
+ // We do not call InitializeURLRequestContext() for media contexts because,
+ // other than the HTTP cache, the media contexts share the same backing
+ // objects as their associated "normal" request context. Thus, the previous
+ // call serves to initialize the media request context for this storage
+ // partition as well.
}
}

Powered by Google App Engine
This is Rietveld 408576698