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

Side by Side Diff: chrome/browser/profiles/profile_impl.cc

Issue 6201005: Initial support for partitioning cookies for isolated apps. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Refactor and address comments. Created 9 years, 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/profiles/profile_impl.h" 5 #include "chrome/browser/profiles/profile_impl.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/environment.h" 9 #include "base/environment.h"
10 #include "base/file_path.h" 10 #include "base/file_path.h"
(...skipping 797 matching lines...) Expand 10 before | Expand all | Expand 10 after
808 // TODO(eroman): this isn't terribly useful anymore now that the 808 // TODO(eroman): this isn't terribly useful anymore now that the
809 // net::URLRequestContext is constructed by the IO thread... 809 // net::URLRequestContext is constructed by the IO thread...
810 NotificationService::current()->Notify( 810 NotificationService::current()->Notify(
811 NotificationType::DEFAULT_REQUEST_CONTEXT_AVAILABLE, 811 NotificationType::DEFAULT_REQUEST_CONTEXT_AVAILABLE,
812 NotificationService::AllSources(), NotificationService::NoDetails()); 812 NotificationService::AllSources(), NotificationService::NoDetails());
813 } 813 }
814 814
815 return request_context; 815 return request_context;
816 } 816 }
817 817
818 URLRequestContextGetter* ProfileImpl::GetRequestContextForPossibleApp(
819 const Extension* app) {
820 if (CommandLine::ForCurrentProcess()->HasSwitch(
821 switches::kEnableExperimentalAppManifests) &&
822 app != NULL &&
823 app->is_storage_isolated())
824 return GetRequestContextForIsolatedApp(app);
825
826 return GetRequestContext();
827 }
828
818 URLRequestContextGetter* ProfileImpl::GetRequestContextForMedia() { 829 URLRequestContextGetter* ProfileImpl::GetRequestContextForMedia() {
819 return io_data_.GetMediaRequestContextGetter(); 830 return io_data_.GetMediaRequestContextGetter();
820 } 831 }
821 832
822 FaviconService* ProfileImpl::GetFaviconService(ServiceAccessType sat) { 833 FaviconService* ProfileImpl::GetFaviconService(ServiceAccessType sat) {
823 if (!favicon_service_created_) { 834 if (!favicon_service_created_) {
824 favicon_service_created_ = true; 835 favicon_service_created_ = true;
825 scoped_refptr<FaviconService> service(new FaviconService(this)); 836 scoped_refptr<FaviconService> service(new FaviconService(this));
826 favicon_service_.swap(service); 837 favicon_service_.swap(service);
827 } 838 }
828 return favicon_service_.get(); 839 return favicon_service_.get();
829 } 840 }
830 841
831 URLRequestContextGetter* ProfileImpl::GetRequestContextForExtensions() { 842 URLRequestContextGetter* ProfileImpl::GetRequestContextForExtensions() {
832 return io_data_.GetExtensionsRequestContextGetter(); 843 return io_data_.GetExtensionsRequestContextGetter();
833 } 844 }
834 845
846 URLRequestContextGetter* ProfileImpl::GetRequestContextForIsolatedApp(
847 const Extension* installed_app) {
848 // Create a request context specific to this app on demand.
849 FilePath app_path = GetPath().Append(chrome::kIsolatedAppStateDirname);
850 app_path = app_path.AppendASCII(installed_app->id());
851 FilePath cookie_path = app_path.Append(chrome::kCookieFilename);
852 FilePath cache_path = app_path.Append(chrome::kCacheDirname);
853
854 // Create the paths if they don't yet exist.
855 BrowserThread::PostTask(
856 BrowserThread::FILE, FROM_HERE,
857 NewRunnableFunction(&ProfileImpl::CreateIsolatedAppPaths,
858 app_path,
859 cache_path));
860
861 // Initialize the app context IO data on demand.
862 // TODO(creis): Determine the correct cache path and size.
863 io_data_.InitIsolatedApp(installed_app, cookie_path, cache_path, 0);
864
865 return io_data_.GetIsolatedAppRequestContextGetter(installed_app);
866 }
867
868 void ProfileImpl::CreateIsolatedAppPaths(const FilePath& app_path,
869 const FilePath& cache_path) {
870 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
871 file_util::CreateDirectory(app_path);
872 file_util::CreateDirectory(cache_path);
873 }
874
835 void ProfileImpl::RegisterExtensionWithRequestContexts( 875 void ProfileImpl::RegisterExtensionWithRequestContexts(
836 const Extension* extension) { 876 const Extension* extension) {
837 // AddRef to ensure the data lives until the other thread gets it. Balanced in 877 // AddRef to ensure the data lives until the other thread gets it. Balanced in
838 // OnNewExtensions. 878 // OnNewExtensions.
839 extension->AddRef(); 879 extension->AddRef();
840 BrowserThread::PostTask( 880 BrowserThread::PostTask(
841 BrowserThread::IO, FROM_HERE, 881 BrowserThread::IO, FROM_HERE,
842 NewRunnableMethod(extension_info_map_.get(), 882 NewRunnableMethod(extension_info_map_.get(),
843 &ExtensionInfoMap::AddExtension, 883 &ExtensionInfoMap::AddExtension,
844 extension)); 884 extension));
(...skipping 683 matching lines...) Expand 10 before | Expand all | Expand 10 after
1528 return pref_proxy_config_tracker_; 1568 return pref_proxy_config_tracker_;
1529 } 1569 }
1530 1570
1531 prerender::PrerenderManager* ProfileImpl::GetPrerenderManager() { 1571 prerender::PrerenderManager* ProfileImpl::GetPrerenderManager() {
1532 if (!prerender::PrerenderManager::IsPrerenderingEnabled()) 1572 if (!prerender::PrerenderManager::IsPrerenderingEnabled())
1533 return NULL; 1573 return NULL;
1534 if (!prerender_manager_) 1574 if (!prerender_manager_)
1535 prerender_manager_ = new prerender::PrerenderManager(this); 1575 prerender_manager_ = new prerender::PrerenderManager(this);
1536 return prerender_manager_; 1576 return prerender_manager_;
1537 } 1577 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698