| 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();
|
| }
|
|
|