summaryrefslogtreecommitdiffstats
path: root/base
diff options
context:
space:
mode:
authortfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-08 13:32:51 +0000
committertfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-08 13:32:51 +0000
commitac7264cf34b514ff94fcce9a9c7dae0704cd4e10 (patch)
tree0a3a8e68e60c68b892a82d6c3ddbf9ef8902c187 /base
parentae618ad90c5106ed686eedfde7c8f70f2df79b32 (diff)
downloadchromium_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.cc17
-rw-r--r--base/env_var.h3
-rw-r--r--base/xdg_util_unittest.cc1
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";