diff options
author | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-08 13:32:51 +0000 |
---|---|---|
committer | tfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-08 13:32:51 +0000 |
commit | ac7264cf34b514ff94fcce9a9c7dae0704cd4e10 (patch) | |
tree | 0a3a8e68e60c68b892a82d6c3ddbf9ef8902c187 /base | |
parent | ae618ad90c5106ed686eedfde7c8f70f2df79b32 (diff) | |
download | chromium_src-ac7264cf34b514ff94fcce9a9c7dae0704cd4e10.zip chromium_src-ac7264cf34b514ff94fcce9a9c7dae0704cd4e10.tar.gz chromium_src-ac7264cf34b514ff94fcce9a9c7dae0704cd4e10.tar.bz2 |
base: Add SetEnv() to EnvVarGetter class and get rid of the some ifdefs.
(Note: This was a TODO)
BUG=None
TEST=included
Review URL: http://codereview.chromium.org/2843048
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@51840 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r-- | base/env_var.cc | 17 | ||||
-rw-r--r-- | base/env_var.h | 3 | ||||
-rw-r--r-- | base/xdg_util_unittest.cc | 1 |
3 files changed, 19 insertions, 2 deletions
diff --git a/base/env_var.cc b/base/env_var.cc index 3075fda..8d32c02 100644 --- a/base/env_var.cc +++ b/base/env_var.cc @@ -19,8 +19,7 @@ namespace { -class EnvVarGetterImpl - : public base::EnvVarGetter { +class EnvVarGetterImpl : public base::EnvVarGetter { public: virtual bool GetEnv(const char* variable_name, std::string* result) { if (GetEnvImpl(variable_name, result)) @@ -40,6 +39,11 @@ class EnvVarGetterImpl return false; return GetEnvImpl(alternate_case_var.c_str(), result); } + + virtual void SetEnv(const char* variable_name, const std::string& new_value) { + SetEnvImpl(variable_name, new_value); + } + private: bool GetEnvImpl(const char* variable_name, std::string* result) { #if defined(OS_POSIX) @@ -66,6 +70,15 @@ class EnvVarGetterImpl #error need to port #endif } + + void SetEnvImpl(const char* variable_name, const std::string& new_value) { +#if defined(OS_POSIX) + setenv(variable_name, new_value.c_str(), 1); +#elif defined(OS_WIN) + ::SetEnvironmentVariable(ASCIIToWide(variable_name).c_str(), + ASCIIToWide(new_value).c_str()); +#endif + } }; } // namespace diff --git a/base/env_var.h b/base/env_var.h index af1ec79..6888353 100644 --- a/base/env_var.h +++ b/base/env_var.h @@ -24,6 +24,9 @@ class EnvVarGetter { return GetEnv(variable_name, NULL); } + virtual void SetEnv(const char* variable_name, + const std::string& new_value) = 0; + // Create an instance of EnvVarGetter static EnvVarGetter* Create(); }; diff --git a/base/xdg_util_unittest.cc b/base/xdg_util_unittest.cc index d5ddc86..813242b 100644 --- a/base/xdg_util_unittest.cc +++ b/base/xdg_util_unittest.cc @@ -19,6 +19,7 @@ namespace { class MockEnvVarGetter : public base::EnvVarGetter { public: MOCK_METHOD2(GetEnv, bool(const char*, std::string* result)); + MOCK_METHOD2(SetEnv, void(const char*, const std::string& new_value)); }; const char* kGnome = "gnome"; |