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

Side by Side Diff: chrome/browser/profile.cc

Issue 174053: Set OS X cache directory to ~/Library/Caches/[app name]/[profile name] (Closed)
Patch Set: Addressed Mark's comments Created 11 years, 3 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
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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/profile.h" 5 #include "chrome/browser/profile.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/file_path.h" 8 #include "base/file_path.h"
9 #include "base/file_util.h"
9 #include "base/path_service.h" 10 #include "base/path_service.h"
10 #include "base/scoped_ptr.h" 11 #include "base/scoped_ptr.h"
11 #include "base/string_util.h" 12 #include "base/string_util.h"
12 #include "chrome/browser/bookmarks/bookmark_model.h" 13 #include "chrome/browser/bookmarks/bookmark_model.h"
13 #include "chrome/browser/browser_list.h" 14 #include "chrome/browser/browser_list.h"
14 #include "chrome/browser/browser_process.h" 15 #include "chrome/browser/browser_process.h"
15 #include "chrome/browser/browser_theme_provider.h" 16 #include "chrome/browser/browser_theme_provider.h"
16 #include "chrome/browser/download/download_manager.h" 17 #include "chrome/browser/download/download_manager.h"
17 #include "chrome/browser/extensions/extension_devtools_manager.h" 18 #include "chrome/browser/extensions/extension_devtools_manager.h"
18 #include "chrome/browser/extensions/extension_message_service.h" 19 #include "chrome/browser/extensions/extension_message_service.h"
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 98
98 // By default we let the cache determine the right size. 99 // By default we let the cache determine the right size.
99 *max_size = 0; 100 *max_size = 0;
100 if (!StringToInt(value, max_size)) { 101 if (!StringToInt(value, max_size)) {
101 *max_size = 0; 102 *max_size = 0;
102 } else if (max_size < 0) { 103 } else if (max_size < 0) {
103 *max_size = 0; 104 *max_size = 0;
104 } 105 }
105 } 106 }
106 107
108 FilePath GetCachePath(const FilePath& base) {
109 return base.Append(chrome::kCacheDirname);
110 }
111
112 FilePath GetMediaCachePath(const FilePath& base) {
113 return base.Append(chrome::kMediaCacheDirname);
114 }
115
116 bool HasACacheSubdir(const FilePath &dir) {
117 return file_util::PathExists(GetCachePath(dir)) ||
118 file_util::PathExists(GetMediaCachePath(dir));
119 }
120
107 } // namespace 121 } // namespace
108 122
109 // A pointer to the request context for the default profile. See comments on 123 // A pointer to the request context for the default profile. See comments on
110 // Profile::GetDefaultRequestContext. 124 // Profile::GetDefaultRequestContext.
111 URLRequestContext* Profile::default_request_context_; 125 URLRequestContext* Profile::default_request_context_;
112 126
113 static void CleanupRequestContext(ChromeURLRequestContext* context) { 127 static void CleanupRequestContext(ChromeURLRequestContext* context) {
114 if (context) { 128 if (context) {
115 context->CleanupOnUIThread(); 129 context->CleanupOnUIThread();
116 130
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after
578 std::wstring option = CommandLine::ForCurrentProcess()->GetSwitchValue( 592 std::wstring option = CommandLine::ForCurrentProcess()->GetSwitchValue(
579 switches::kPrivacyBlacklist); 593 switches::kPrivacyBlacklist);
580 #if defined(OS_POSIX) 594 #if defined(OS_POSIX)
581 FilePath path(WideToUTF8(option)); 595 FilePath path(WideToUTF8(option));
582 #else 596 #else
583 FilePath path(option); 597 FilePath path(option);
584 #endif 598 #endif
585 blacklist_ = new Blacklist(path); 599 blacklist_ = new Blacklist(path);
586 } 600 }
587 601
602 #if defined(OS_MACOSX)
603 // If the profile directory doesn't already have a cache directory and it
604 // is under ~/Library/Application Support, use a suitable cache directory
605 // under ~/Library/Caches. For example, a profile directory of
606 // ~/Library/Application Support/Google/Chrome/MyProfileName that doesn't
607 // have a "Cache" or "MediaCache" subdirectory would use the cache directory
608 // ~/Library/Caches/Google/Chrome/MyProfileName.
609 //
610 // TODO(akalin): Come up with unit tests for this.
611 // TODO(akalin): Use for Linux, too?
612 if (!HasACacheSubdir(path_)) {
613 FilePath app_data_path, user_cache_path;
614 if (PathService::Get(base::DIR_APP_DATA, &app_data_path) &&
615 PathService::Get(base::DIR_CACHE, &user_cache_path) &&
616 app_data_path.AppendRelativePath(path_, &user_cache_path)) {
617 base_cache_path_ = user_cache_path;
618 }
619 }
620 #else
588 if (!PathService::IsOverridden(chrome::DIR_USER_DATA)) 621 if (!PathService::IsOverridden(chrome::DIR_USER_DATA))
589 PathService::Get(chrome::DIR_USER_CACHE, &base_cache_path_); 622 PathService::Get(chrome::DIR_USER_CACHE, &base_cache_path_);
623 #endif
590 if (base_cache_path_.empty()) 624 if (base_cache_path_.empty())
591 base_cache_path_ = path_; 625 base_cache_path_ = path_;
592 626
593 // Listen for theme installation. 627 // Listen for theme installation.
594 registrar_.Add(this, NotificationType::THEME_INSTALLED, 628 registrar_.Add(this, NotificationType::THEME_INSTALLED,
595 NotificationService::AllSources()); 629 NotificationService::AllSources());
596 630
597 // Listen for bookmark model load, to bootstrap the sync service. 631 // Listen for bookmark model load, to bootstrap the sync service.
598 registrar_.Add(this, NotificationType::BOOKMARK_MODEL_LOADED, 632 registrar_.Add(this, NotificationType::BOOKMARK_MODEL_LOADED,
599 Source<Profile>(this)); 633 Source<Profile>(this));
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
883 } 917 }
884 918
885 URLRequestContext* ProfileImpl::GetRequestContext() { 919 URLRequestContext* ProfileImpl::GetRequestContext() {
886 if (!request_context_) { 920 if (!request_context_) {
887 FilePath cookie_path = GetPath(); 921 FilePath cookie_path = GetPath();
888 cookie_path = cookie_path.Append(chrome::kCookieFilename); 922 cookie_path = cookie_path.Append(chrome::kCookieFilename);
889 FilePath cache_path = base_cache_path_; 923 FilePath cache_path = base_cache_path_;
890 int max_size; 924 int max_size;
891 GetCacheParameters(kNormalContext, &cache_path, &max_size); 925 GetCacheParameters(kNormalContext, &cache_path, &max_size);
892 926
893 cache_path = cache_path.Append(chrome::kCacheDirname); 927 cache_path = GetCachePath(cache_path);
894 request_context_ = ChromeURLRequestContext::CreateOriginal( 928 request_context_ = ChromeURLRequestContext::CreateOriginal(
895 this, cookie_path, cache_path, max_size); 929 this, cookie_path, cache_path, max_size);
896 request_context_->AddRef(); 930 request_context_->AddRef();
897 931
898 // The first request context is always a normal (non-OTR) request context. 932 // The first request context is always a normal (non-OTR) request context.
899 // Even when Chromium is started in OTR mode, a normal profile is always 933 // Even when Chromium is started in OTR mode, a normal profile is always
900 // created first. 934 // created first.
901 if (!default_request_context_) { 935 if (!default_request_context_) {
902 default_request_context_ = request_context_; 936 default_request_context_ = request_context_;
903 NotificationService::current()->Notify( 937 NotificationService::current()->Notify(
(...skipping 10 matching lines...) Expand all
914 948
915 return request_context_; 949 return request_context_;
916 } 950 }
917 951
918 URLRequestContext* ProfileImpl::GetRequestContextForMedia() { 952 URLRequestContext* ProfileImpl::GetRequestContextForMedia() {
919 if (!media_request_context_) { 953 if (!media_request_context_) {
920 FilePath cache_path = base_cache_path_; 954 FilePath cache_path = base_cache_path_;
921 int max_size; 955 int max_size;
922 GetCacheParameters(kMediaContext, &cache_path, &max_size); 956 GetCacheParameters(kMediaContext, &cache_path, &max_size);
923 957
924 cache_path = cache_path.Append(chrome::kMediaCacheDirname); 958 cache_path = GetMediaCachePath(cache_path);
925 media_request_context_ = ChromeURLRequestContext::CreateOriginalForMedia( 959 media_request_context_ = ChromeURLRequestContext::CreateOriginalForMedia(
926 this, cache_path, max_size); 960 this, cache_path, max_size);
927 media_request_context_->AddRef(); 961 media_request_context_->AddRef();
928 962
929 DCHECK(media_request_context_->cookie_store()); 963 DCHECK(media_request_context_->cookie_store());
930 } 964 }
931 965
932 return media_request_context_; 966 return media_request_context_;
933 } 967 }
934 968
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
1336 #endif 1370 #endif
1337 return NULL; 1371 return NULL;
1338 } 1372 }
1339 1373
1340 void ProfileImpl::InitSyncService() { 1374 void ProfileImpl::InitSyncService() {
1341 #ifdef CHROME_PERSONALIZATION 1375 #ifdef CHROME_PERSONALIZATION
1342 sync_service_.reset(new ProfileSyncService(this)); 1376 sync_service_.reset(new ProfileSyncService(this));
1343 sync_service_->Initialize(); 1377 sync_service_->Initialize();
1344 #endif 1378 #endif
1345 } 1379 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698