| Index: chrome/common/chrome_paths_linux.cc
|
| ===================================================================
|
| --- chrome/common/chrome_paths_linux.cc (revision 33536)
|
| +++ chrome/common/chrome_paths_linux.cc (working copy)
|
| @@ -4,57 +4,9 @@
|
|
|
| #include "chrome/common/chrome_paths_internal.h"
|
|
|
| -#include <glib.h>
|
| -#include <stdlib.h>
|
| +#include "base/linux_util.h"
|
| +#include "base/scoped_ptr.h"
|
|
|
| -#include "base/file_path.h"
|
| -#include "base/path_service.h"
|
| -#include "chrome/third_party/xdg_user_dirs/xdg_user_dir_lookup.h"
|
| -
|
| -namespace {
|
| -
|
| -FilePath GetHomeDir() {
|
| - const char *home_dir = getenv("HOME");
|
| -
|
| - if (home_dir && home_dir[0])
|
| - return FilePath(home_dir);
|
| -
|
| - home_dir = g_get_home_dir();
|
| - if (home_dir && home_dir[0])
|
| - return FilePath(home_dir);
|
| -
|
| - FilePath rv;
|
| - if (PathService::Get(base::DIR_TEMP, &rv))
|
| - return rv;
|
| -
|
| - /* last resort */
|
| - return FilePath("/tmp/");
|
| -}
|
| -
|
| -// Wrapper around xdg_user_dir_lookup() from
|
| -// src/chrome/third_party/xdg-user-dirs
|
| -FilePath GetXDGUserDirectory(const char* env_name, const char* fallback_dir) {
|
| - char* xdg_dir = xdg_user_dir_lookup(env_name);
|
| - if (xdg_dir) {
|
| - FilePath rv(xdg_dir);
|
| - free(xdg_dir);
|
| - return rv;
|
| - }
|
| - return GetHomeDir().Append(fallback_dir);
|
| -}
|
| -
|
| -// |env_name| is the name of an environment variable that we want to use to get
|
| -// a directory path. |fallback_dir| is the directory relative to $HOME that we
|
| -// use if |env_name| cannot be found or is empty. |fallback_dir| may be NULL.
|
| -FilePath GetXDGDirectory(const char* env_name, const char* fallback_dir) {
|
| - const char* env_value = getenv(env_name);
|
| - if (env_value && env_value[0])
|
| - return FilePath(env_value);
|
| - return GetHomeDir().Append(fallback_dir);
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| namespace chrome {
|
|
|
| // See http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
| @@ -63,7 +15,10 @@
|
| // ~/.config/google-chrome/ for official builds.
|
| // (This also helps us sidestep issues with other apps grabbing ~/.chromium .)
|
| bool GetDefaultUserDataDirectory(FilePath* result) {
|
| - FilePath config_dir(GetXDGDirectory("XDG_CONFIG_HOME", ".config"));
|
| + scoped_ptr<base::EnvironmentVariableGetter> env(
|
| + base::EnvironmentVariableGetter::Create());
|
| + FilePath config_dir(
|
| + base::GetXDGDirectory(env.get(), "XDG_CONFIG_HOME", ".config"));
|
| #if defined(GOOGLE_CHROME_BUILD)
|
| *result = config_dir.Append("google-chrome");
|
| #else
|
| @@ -73,7 +28,10 @@
|
| }
|
|
|
| bool GetChromeFrameUserDataDirectory(FilePath* result) {
|
| - FilePath config_dir(GetXDGDirectory("XDG_CONFIG_HOME", ".config"));
|
| + scoped_ptr<base::EnvironmentVariableGetter> env(
|
| + base::EnvironmentVariableGetter::Create());
|
| + FilePath config_dir(
|
| + base::GetXDGDirectory(env.get(), "XDG_CONFIG_HOME", ".config"));
|
| #if defined(GOOGLE_CHROME_BUILD)
|
| *result = config_dir.Append("google-chrome-frame");
|
| #else
|
| @@ -82,31 +40,21 @@
|
| return true;
|
| }
|
|
|
| -// 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.
|
| -bool GetUserCacheDirectory(FilePath* result) {
|
| - FilePath cache_dir(GetXDGDirectory("XDG_CACHE_HOME", ".cache"));
|
| -#if defined(GOOGLE_CHROME_BUILD)
|
| - *result = cache_dir.Append("google-chrome");
|
| -#else
|
| - *result = cache_dir.Append("chromium");
|
| -#endif
|
| - return true;
|
| -}
|
| -
|
| bool GetUserDocumentsDirectory(FilePath* result) {
|
| - *result = GetXDGUserDirectory("DOCUMENTS", "Documents");
|
| + scoped_ptr<base::EnvironmentVariableGetter> env(
|
| + base::EnvironmentVariableGetter::Create());
|
| + *result = base::GetXDGUserDirectory(env.get(), "DOCUMENTS", "Documents");
|
| return true;
|
| }
|
|
|
| // We respect the user's preferred download location, unless it is
|
| // ~ or their desktop directory, in which case we default to ~/Downloads.
|
| bool GetUserDownloadsDirectory(FilePath* result) {
|
| - *result = GetXDGUserDirectory("DOWNLOAD", "Downloads");
|
| + scoped_ptr<base::EnvironmentVariableGetter> env(
|
| + base::EnvironmentVariableGetter::Create());
|
| + *result = base::GetXDGUserDirectory(env.get(), "DOWNLOAD", "Downloads");
|
|
|
| - FilePath home = GetHomeDir();
|
| + FilePath home = base::GetHomeDir(env.get());
|
| if (*result == home) {
|
| *result = home.Append("Downloads");
|
| return true;
|
| @@ -122,7 +70,9 @@
|
| }
|
|
|
| bool GetUserDesktop(FilePath* result) {
|
| - *result = GetXDGUserDirectory("DESKTOP", "Desktop");
|
| + scoped_ptr<base::EnvironmentVariableGetter> env(
|
| + base::EnvironmentVariableGetter::Create());
|
| + *result = base::GetXDGUserDirectory(env.get(), "DESKTOP", "Desktop");
|
| return true;
|
| }
|
|
|
|
|