| Index: chrome/browser/profiles/profile_impl.cc
|
| diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc
|
| index 3c05a6ab491da611587bf1e3756ca233de67b896..c3c0677a4ecb49a31fdcbc2c3b0bb3a440385b06 100644
|
| --- a/chrome/browser/profiles/profile_impl.cc
|
| +++ b/chrome/browser/profiles/profile_impl.cc
|
| @@ -815,6 +815,17 @@ URLRequestContextGetter* ProfileImpl::GetRequestContext() {
|
| return request_context;
|
| }
|
|
|
| +URLRequestContextGetter* ProfileImpl::GetRequestContextForPossibleApp(
|
| + const Extension* app) {
|
| + if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| + switches::kEnableExperimentalAppManifests) &&
|
| + app != NULL &&
|
| + app->is_storage_isolated())
|
| + return GetRequestContextForIsolatedApp(app);
|
| +
|
| + return GetRequestContext();
|
| +}
|
| +
|
| URLRequestContextGetter* ProfileImpl::GetRequestContextForMedia() {
|
| return io_data_.GetMediaRequestContextGetter();
|
| }
|
| @@ -832,6 +843,35 @@ URLRequestContextGetter* ProfileImpl::GetRequestContextForExtensions() {
|
| return io_data_.GetExtensionsRequestContextGetter();
|
| }
|
|
|
| +URLRequestContextGetter* ProfileImpl::GetRequestContextForIsolatedApp(
|
| + const Extension* installed_app) {
|
| + // Create a request context specific to this app on demand.
|
| + FilePath app_path = GetPath().Append(chrome::kIsolatedAppStateDirname);
|
| + app_path = app_path.AppendASCII(installed_app->id());
|
| + FilePath cookie_path = app_path.Append(chrome::kCookieFilename);
|
| + FilePath cache_path = app_path.Append(chrome::kCacheDirname);
|
| +
|
| + // Create the paths if they don't yet exist.
|
| + BrowserThread::PostTask(
|
| + BrowserThread::FILE, FROM_HERE,
|
| + NewRunnableFunction(&ProfileImpl::CreateIsolatedAppPaths,
|
| + app_path,
|
| + cache_path));
|
| +
|
| + // Initialize the app context IO data on demand.
|
| + // TODO(creis): Determine the correct cache path and size.
|
| + io_data_.InitIsolatedApp(installed_app, cookie_path, cache_path, 0);
|
| +
|
| + return io_data_.GetIsolatedAppRequestContextGetter(installed_app);
|
| +}
|
| +
|
| +void ProfileImpl::CreateIsolatedAppPaths(const FilePath& app_path,
|
| + const FilePath& cache_path) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
|
| + file_util::CreateDirectory(app_path);
|
| + file_util::CreateDirectory(cache_path);
|
| +}
|
| +
|
| void ProfileImpl::RegisterExtensionWithRequestContexts(
|
| const Extension* extension) {
|
| // AddRef to ensure the data lives until the other thread gets it. Balanced in
|
|
|