diff options
author | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-23 22:39:30 +0000 |
---|---|---|
committer | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-23 22:39:30 +0000 |
commit | d8a80d6e6d787b0f924e54993fd3bb700ea220fb (patch) | |
tree | 73cd31322e244b11fca6e3ffebf76c5eae054ae5 /chrome | |
parent | bbee17e594c08a4baf9379cdb22b4961a113434f (diff) | |
download | chromium_src-d8a80d6e6d787b0f924e54993fd3bb700ea220fb.zip chromium_src-d8a80d6e6d787b0f924e54993fd3bb700ea220fb.tar.gz chromium_src-d8a80d6e6d787b0f924e54993fd3bb700ea220fb.tar.bz2 |
Revert "chrome_paths: refactor and sanitize cache directory handling"
This reverts commit r67160, test failures.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@67171 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/profile_impl.cc | 51 | ||||
-rw-r--r-- | chrome/chrome_tests.gypi | 1 | ||||
-rw-r--r-- | chrome/common/chrome_paths_internal.h | 9 | ||||
-rw-r--r-- | chrome/common/chrome_paths_linux.cc | 27 | ||||
-rw-r--r-- | chrome/common/chrome_paths_mac.mm | 22 | ||||
-rw-r--r-- | chrome/common/chrome_paths_unittest.cc | 44 | ||||
-rw-r--r-- | chrome/common/chrome_paths_win.cc | 5 |
7 files changed, 45 insertions, 114 deletions
diff --git a/chrome/browser/profile_impl.cc b/chrome/browser/profile_impl.cc index c66428d..464c45c 100644 --- a/chrome/browser/profile_impl.cc +++ b/chrome/browser/profile_impl.cc @@ -81,7 +81,6 @@ #include "chrome/browser/webdata/web_data_service.h" #include "chrome/common/chrome_constants.h" #include "chrome/common/chrome_paths.h" -#include "chrome/common/chrome_paths_internal.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/json_pref_store.h" #include "chrome/common/notification_service.h" @@ -173,6 +172,11 @@ FilePath GetMediaCachePath(const FilePath& base) { return base.Append(chrome::kMediaCacheDirname); } +bool HasACacheSubdir(const FilePath &dir) { + return file_util::PathExists(GetCachePath(dir)) || + file_util::PathExists(GetMediaCachePath(dir)); +} + // Simple task to log the size of the current profile. class ProfileSizeTask : public Task { public: @@ -276,11 +280,46 @@ ProfileImpl::ProfileImpl(const FilePath& path) // Convert active labs into switches. Modifies the current command line. about_flags::ConvertFlagsToSwitches(prefs, CommandLine::ForCurrentProcess()); - // It would be nice to use PathService for fetching this directory, but - // the cache directory depends on the profile directory, which isn't available - // to PathService. - chrome::GetUserCacheDirectory(path_, &base_cache_path_); - file_util::CreateDirectory(base_cache_path_); +#if defined(OS_MACOSX) + // If the profile directory doesn't already have a cache directory and it + // is under ~/Library/Application Support, use a suitable cache directory + // under ~/Library/Caches. For example, a profile directory of + // ~/Library/Application Support/Google/Chrome/MyProfileName that doesn't + // have a "Cache" or "MediaCache" subdirectory would use the cache directory + // ~/Library/Caches/Google/Chrome/MyProfileName. + // + // TODO(akalin): Come up with unit tests for this. + if (!HasACacheSubdir(path_)) { + FilePath app_data_path, user_cache_path; + if (PathService::Get(base::DIR_APP_DATA, &app_data_path) && + PathService::Get(base::DIR_USER_CACHE, &user_cache_path) && + app_data_path.AppendRelativePath(path_, &user_cache_path)) { + base_cache_path_ = user_cache_path; + } + } +#elif defined(OS_POSIX) // Posix minus Mac. + // See http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html + // for a spec on where cache files go. The net effect for most systems is we + // use ~/.cache/chromium/ for Chromium and ~/.cache/google-chrome/ for + // official builds. + // If we're using a different user-data-dir, though, fall through + // to the "normal" cache directory (a subdirectory of that). + // TODO(evan): all of this logic belongs in path_service; refactor and remove + // this IsOverriden business. + if (!PathService::IsOverridden(chrome::DIR_USER_DATA)) { +#if defined(GOOGLE_CHROME_BUILD) + const char kCacheDir[] = "google-chrome"; +#else + const char kCacheDir[] = "chromium"; +#endif + PathService::Get(base::DIR_USER_CACHE, &base_cache_path_); + base_cache_path_ = base_cache_path_.Append(kCacheDir); + if (!file_util::PathExists(base_cache_path_)) + file_util::CreateDirectory(base_cache_path_); + } +#endif + if (base_cache_path_.empty()) + base_cache_path_ = path_; // Listen for theme installations from our original profile. registrar_.Add(this, NotificationType::THEME_INSTALLED, diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi index e76aa11..1473c01 100644 --- a/chrome/chrome_tests.gypi +++ b/chrome/chrome_tests.gypi @@ -1550,7 +1550,6 @@ 'browser/wrench_menu_model_unittest.cc', 'common/bzip2_unittest.cc', 'common/child_process_logging_mac_unittest.mm', - 'common/chrome_paths_unittest.cc', 'common/common_param_traits_unittest.cc', 'common/content_settings_helper_unittest.cc', 'common/deprecated/event_sys_unittest.cc', diff --git a/chrome/common/chrome_paths_internal.h b/chrome/common/chrome_paths_internal.h index dfe927d..6671e25 100644 --- a/chrome/common/chrome_paths_internal.h +++ b/chrome/common/chrome_paths_internal.h @@ -21,15 +21,6 @@ bool GetDefaultUserDataDirectory(FilePath* result); // CF and Google Chrome want to share the same binaries. bool GetChromeFrameUserDataDirectory(FilePath* result); -// Get the path to the user's cache directory. This is normally the -// same as the profile directory, but on Linux it can also be -// $XDG_CACHE_HOME and on Mac it can be under ~/Library/Caches. -// Note that the Chrome cache directories are actually subdirectories -// of this directory, with names like "Cache" and "Media Cache". -// This will always fill in |result| with a directory, sometimes -// just |profile_dir|. -void GetUserCacheDirectory(const FilePath& profile_dir, FilePath* result); - // Get the path to the user's documents directory. bool GetUserDocumentsDirectory(FilePath* result); diff --git a/chrome/common/chrome_paths_linux.cc b/chrome/common/chrome_paths_linux.cc index a7fdb07..42c6ae7 100644 --- a/chrome/common/chrome_paths_linux.cc +++ b/chrome/common/chrome_paths_linux.cc @@ -6,7 +6,6 @@ #include "base/environment.h" #include "base/file_util.h" -#include "base/path_service.h" #include "base/scoped_ptr.h" #include "base/nix/xdg_util.h" @@ -29,32 +28,6 @@ bool GetDefaultUserDataDirectory(FilePath* result) { return true; } -void GetUserCacheDirectory(const FilePath& profile_dir, FilePath* result) { - // See http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html - // for a spec on where cache files go. Our rule is: - // - if the user-data-dir in the standard place, - // use same subdirectory of the cache directory. - // (this maps ~/.config/google-chrome to ~/.cache/google-chrome as well - // as the same thing for ~/.config/chromium) - // - otherwise, use the profile dir directly. - - // Default value in cases where any of the following fails. - *result = profile_dir; - - scoped_ptr<base::Environment> env(base::Environment::Create()); - - FilePath cache_dir; - if (!PathService::Get(base::DIR_CACHE, &cache_dir)) - return; - FilePath config_dir( - base::nix::GetXDGDirectory(env.get(), "XDG_CONFIG_HOME", ".config")); - - if (!config_dir.AppendRelativePath(profile_dir, &cache_dir)) - return; - - *result = cache_dir; -} - bool GetChromeFrameUserDataDirectory(FilePath* result) { scoped_ptr<base::Environment> env(base::Environment::Create()); FilePath config_dir( diff --git a/chrome/common/chrome_paths_mac.mm b/chrome/common/chrome_paths_mac.mm index 57ed3bd..b87b397 100644 --- a/chrome/common/chrome_paths_mac.mm +++ b/chrome/common/chrome_paths_mac.mm @@ -48,28 +48,6 @@ bool GetUserDocumentsDirectory(FilePath* result) { return mac_util::GetUserDirectory(NSDocumentDirectory, result); } -void GetUserCacheDirectory(const FilePath& profile_dir, FilePath* result) { - // If the profile directory is under ~/Library/Application Support, - // use a suitable cache directory under ~/Library/Caches. For - // example, a profile directory of ~/Library/Application - // Support/Google/Chrome/MyProfileName would use the cache directory - // ~/Library/Caches/Google/Chrome/MyProfileName. - - // Default value in cases where any of the following fails. - *result = profile_dir; - - FilePath app_data_dir; - if (!PathService::Get(base::DIR_APP_DATA, &app_data_dir)) - return; - FilePath cache_dir; - if (!PathService::Get(base::DIR_CACHE, &cache_dir)) - return; - if (!app_data_dir.AppendRelativePath(profile_dir, &cache_dir)) - return; - - *result = cache_dir; -} - bool GetUserDownloadsDirectory(FilePath* result) { return mac_util::GetUserDirectory(NSDownloadsDirectory, result); } diff --git a/chrome/common/chrome_paths_unittest.cc b/chrome/common/chrome_paths_unittest.cc deleted file mode 100644 index 23bc7d4..0000000 --- a/chrome/common/chrome_paths_unittest.cc +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/common/chrome_paths_internal.h" - -#include <stdlib.h> - -#include "base/file_path.h" -#include "base/file_util.h" -#include "base/path_service.h" -#include "testing/gtest/include/gtest/gtest.h" - -// Test the behavior of chrome::GetUserCacheDirectory. -// See that function's comments for discussion of the subtleties. -TEST(ChromePaths, UserCacheDir) { - FilePath test_profile_dir, cache_dir; -#if defined(OS_MACOSX) - ASSERT_TRUE(PathService::Get(base::DIR_APP_DATA, &test_profile_dir)); - test_profile_dir = test_profile_dir.Append("foobar"); - FilePath expected_cache_dir; - ASSERT_TRUE(PathService::Get(base::DIR_CACHE, &expected_cache_dir)); - expected_cache_dir = expected_cache_dir.Append("foobar"); -#elif(OS_POSIX) - FilePath homedir = file_util::GetHomeDir(); - // Note: we assume XDG_CACHE_HOME/XDG_CONFIG_HOME are at their - // default settings. - test_profile_dir = homedir.Append(".config/foobar"); - FilePath expected_cache_dir = homedir.Append(".cache/foobar"); -#endif - - // Verify that a profile in the special platform-specific source - // location ends up in the special target location. -#if !defined(OS_WIN) // No special behavior on Windows. - chrome::GetUserCacheDirectory(test_profile_dir, &cache_dir); - EXPECT_EQ(expected_cache_dir.value(), cache_dir.value()); -#endif - - // Verify that a profile in some other random directory doesn't use - // the special cache dir. - test_profile_dir = FilePath(FILE_PATH_LITERAL("/some/other/path")); - chrome::GetUserCacheDirectory(test_profile_dir, &cache_dir); - EXPECT_EQ(test_profile_dir.value(), cache_dir.value()); -} diff --git a/chrome/common/chrome_paths_win.cc b/chrome/common/chrome_paths_win.cc index 74a730d..c9fee0f 100644 --- a/chrome/common/chrome_paths_win.cc +++ b/chrome/common/chrome_paths_win.cc @@ -38,11 +38,6 @@ bool GetChromeFrameUserDataDirectory(FilePath* result) { return true; } -void GetUserCacheDirectory(const FilePath& profile_dir, FilePath* result) { - // This function does more complicated things on Mac/Linux. - *result = profile_dir; -} - bool GetUserDocumentsDirectory(FilePath* result) { wchar_t path_buf[MAX_PATH]; if (FAILED(SHGetFolderPath(NULL, CSIDL_MYDOCUMENTS, NULL, |