Index: chrome/browser/profiles/profile_impl.cc |
diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc |
index 22e3911ff890380575f3a058670c883ba2d9f6bf..de8f9d52f6aec582e3665c4d6e55202054179ba4 100644 |
--- a/chrome/browser/profiles/profile_impl.cc |
+++ b/chrome/browser/profiles/profile_impl.cc |
@@ -816,6 +816,17 @@ URLRequestContextGetter* ProfileImpl::GetRequestContext() { |
return request_context; |
} |
+URLRequestContextGetter* ProfileImpl::GetRequestContextForPossibleApp( |
+ const Extension* installed_app) { |
+ if (CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kEnableExperimentalAppManifests) && |
+ installed_app != NULL && |
+ installed_app->is_storage_isolated()) |
+ return GetRequestContextForIsolatedApp(installed_app); |
+ |
+ return GetRequestContext(); |
+} |
+ |
URLRequestContextGetter* ProfileImpl::GetRequestContextForMedia() { |
return io_data_.GetMediaRequestContextGetter(); |
} |
@@ -833,6 +844,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); |
willchan no longer on Chromium
2011/03/03 18:16:59
How about add app_path as a parameter to the Handl
Charlie Reis
2011/03/04 22:34:53
Fixed. Much cleaner.
|
+ 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, |
Matt Perry
2011/03/03 22:59:21
Are these paths accessed only on the file thread?
Charlie Reis
2011/03/04 22:34:53
I was under the impression all file I/O had to be
Charlie Reis
2011/03/04 23:49:41
Hmm, looks like you may be right, Matt:
http://bui
Matt Perry
2011/03/04 23:53:53
I think you might just have to do it earlier in st
Charlie Reis
2011/03/08 00:56:48
I'm uneasy about creating the path when the app is
Charlie Reis
2011/03/08 02:34:04
Ugh. It's a known issue and isn't likely to be fi
Charlie Reis
2011/03/08 20:44:41
Chatted with rdsmith@, and we agreed that the dire
|
+ app_path, |
+ cache_path)); |
+ |
+ // Initialize the app context IO data on demand. |
+ // TODO(creis): Determine the correct cache 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 |