| Index: chrome/browser/profile.cc
 | 
| diff --git a/chrome/browser/profile.cc b/chrome/browser/profile.cc
 | 
| index 7287f265f579e3e67d3b5b6ecdccb58ad8c6501d..c808574c3dc0443bd5b44b89e2507e6b0f0306a6 100644
 | 
| --- a/chrome/browser/profile.cc
 | 
| +++ b/chrome/browser/profile.cc
 | 
| @@ -130,6 +130,34 @@ bool HasACacheSubdir(const FilePath &dir) {
 | 
|           file_util::PathExists(GetMediaCachePath(dir));
 | 
|  }
 | 
|  
 | 
| +void PostExtensionLoadedToContextGetter(ChromeURLRequestContextGetter* getter,
 | 
| +                                        Extension* extension) {
 | 
| +  if (!getter)
 | 
| +    return;
 | 
| +  // Callee takes ownership of new ExtensionInfo struct.
 | 
| +  ChromeThread::PostTask(
 | 
| +      ChromeThread::IO, FROM_HERE,
 | 
| +      NewRunnableMethod(getter,
 | 
| +                        &ChromeURLRequestContextGetter::OnNewExtensions,
 | 
| +                        extension->id(),
 | 
| +                        new ChromeURLRequestContext::ExtensionInfo(
 | 
| +                        extension->path(),
 | 
| +                        extension->default_locale(),
 | 
| +                        extension->web_extent(),
 | 
| +                        extension->api_permissions())));
 | 
| +}
 | 
| +
 | 
| +void PostExtensionUnloadedToContextGetter(ChromeURLRequestContextGetter* getter,
 | 
| +                                          Extension* extension) {
 | 
| +  if (!getter)
 | 
| +    return;
 | 
| +  ChromeThread::PostTask(
 | 
| +      ChromeThread::IO, FROM_HERE,
 | 
| +      NewRunnableMethod(getter,
 | 
| +                        &ChromeURLRequestContextGetter::OnUnloadedExtension,
 | 
| +                        extension->id()));
 | 
| +}
 | 
| +
 | 
|  }  // namespace
 | 
|  
 | 
|  // A pointer to the request context for the default profile.  See comments on
 | 
| @@ -977,6 +1005,38 @@ URLRequestContextGetter* ProfileImpl::GetRequestContextForExtensions() {
 | 
|    return extensions_request_context_;
 | 
|  }
 | 
|  
 | 
| +void ProfileImpl::RegisterExtensionWithRequestContexts(
 | 
| +    Extension* extension) {
 | 
| +  // Notify the default, extension and media contexts on the IO thread.
 | 
| +  PostExtensionLoadedToContextGetter(
 | 
| +      static_cast<ChromeURLRequestContextGetter*>(GetRequestContext()),
 | 
| +                                                  extension);
 | 
| +  PostExtensionLoadedToContextGetter(
 | 
| +      static_cast<ChromeURLRequestContextGetter*>(
 | 
| +          GetRequestContextForExtensions()),
 | 
| +      extension);
 | 
| +  PostExtensionLoadedToContextGetter(
 | 
| +      static_cast<ChromeURLRequestContextGetter*>(
 | 
| +          GetRequestContextForMedia()),
 | 
| +      extension);
 | 
| +}
 | 
| +
 | 
| +void ProfileImpl::UnregisterExtensionWithRequestContexts(
 | 
| +    Extension* extension) {
 | 
| +  // Notify the default, extension and media contexts on the IO thread.
 | 
| +  PostExtensionUnloadedToContextGetter(
 | 
| +      static_cast<ChromeURLRequestContextGetter*>(GetRequestContext()),
 | 
| +                                                  extension);
 | 
| +  PostExtensionUnloadedToContextGetter(
 | 
| +      static_cast<ChromeURLRequestContextGetter*>(
 | 
| +          GetRequestContextForExtensions()),
 | 
| +      extension);
 | 
| +  PostExtensionUnloadedToContextGetter(
 | 
| +      static_cast<ChromeURLRequestContextGetter*>(
 | 
| +          GetRequestContextForMedia()),
 | 
| +      extension);
 | 
| +}
 | 
| +
 | 
|  net::SSLConfigService* ProfileImpl::GetSSLConfigService() {
 | 
|    return ssl_config_service_manager_->Get();
 | 
|  }
 | 
| 
 |