diff options
-rw-r--r-- | base/env_var.cc | 14 | ||||
-rw-r--r-- | base/env_var.h | 3 | ||||
-rw-r--r-- | base/env_var_unittest.cc | 2 | ||||
-rw-r--r-- | base/xdg_util_unittest.cc | 2 | ||||
-rw-r--r-- | chrome/browser/shell_integration_unittest.cc | 3 | ||||
-rw-r--r-- | net/proxy/proxy_config_service_linux_unittest.cc | 4 |
6 files changed, 17 insertions, 11 deletions
diff --git a/base/env_var.cc b/base/env_var.cc index bcdadb9..086191e 100644 --- a/base/env_var.cc +++ b/base/env_var.cc @@ -40,8 +40,8 @@ class EnvVarGetterImpl : public base::EnvVarGetter { 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); + virtual bool SetEnv(const char* variable_name, const std::string& new_value) { + return SetEnvImpl(variable_name, new_value); } private: @@ -71,12 +71,14 @@ class EnvVarGetterImpl : public base::EnvVarGetter { #endif } - void SetEnvImpl(const char* variable_name, const std::string& new_value) { + bool SetEnvImpl(const char* variable_name, const std::string& new_value) { #if defined(OS_POSIX) - setenv(variable_name, new_value.c_str(), 1); + // On success, zero is returned. + return setenv(variable_name, new_value.c_str(), 1) == 0; #elif defined(OS_WIN) - ::SetEnvironmentVariable(ASCIIToWide(variable_name).c_str(), - ASCIIToWide(new_value).c_str()); + // On success, a nonzero is returned. + return ::SetEnvironmentVariable(ASCIIToWide(variable_name).c_str(), + ASCIIToWide(new_value).c_str()) != 0; #endif } }; diff --git a/base/env_var.h b/base/env_var.h index 3cc2399..f0fe81f 100644 --- a/base/env_var.h +++ b/base/env_var.h @@ -23,7 +23,8 @@ class EnvVarGetter { // Syntactic sugar for GetEnv(variable_name, NULL); virtual bool HasEnv(const char* variable_name); - virtual void SetEnv(const char* variable_name, + // Returns true on success, otherwise returns false. + virtual bool SetEnv(const char* variable_name, const std::string& new_value) = 0; // Create an instance of EnvVarGetter diff --git a/base/env_var_unittest.cc b/base/env_var_unittest.cc index 5587878..d80d997 100644 --- a/base/env_var_unittest.cc +++ b/base/env_var_unittest.cc @@ -27,7 +27,7 @@ TEST_F(EnvVarTest, SetEnvVar) { const char kFooUpper[] = "FOO"; const char kFooLower[] = "foo"; scoped_ptr<base::EnvVarGetter> env(base::EnvVarGetter::Create()); - env->SetEnv(kFooUpper, kFooLower); + EXPECT_TRUE(env->SetEnv(kFooUpper, kFooLower)); // Now verify that the environment has the new variable. EXPECT_TRUE(env->HasEnv(kFooUpper)); diff --git a/base/xdg_util_unittest.cc b/base/xdg_util_unittest.cc index 813242b..b821921 100644 --- a/base/xdg_util_unittest.cc +++ b/base/xdg_util_unittest.cc @@ -19,7 +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)); + MOCK_METHOD2(SetEnv, bool(const char*, const std::string& new_value)); }; const char* kGnome = "gnome"; diff --git a/chrome/browser/shell_integration_unittest.cc b/chrome/browser/shell_integration_unittest.cc index f0c1473..0514781 100644 --- a/chrome/browser/shell_integration_unittest.cc +++ b/chrome/browser/shell_integration_unittest.cc @@ -48,8 +48,9 @@ class MockEnvVarGetter : public base::EnvVarGetter { return false; } - virtual void SetEnv(const char* variable_name, const std::string& new_value) { + virtual bool SetEnv(const char* variable_name, const std::string& new_value) { NOTIMPLEMENTED(); + return false; } private: diff --git a/net/proxy/proxy_config_service_linux_unittest.cc b/net/proxy/proxy_config_service_linux_unittest.cc index ca9835b..0a84548 100644 --- a/net/proxy/proxy_config_service_linux_unittest.cc +++ b/net/proxy/proxy_config_service_linux_unittest.cc @@ -114,9 +114,11 @@ class MockEnvVarGetter : public base::EnvVarGetter { return false; } - virtual void SetEnv(const char* variable_name, const std::string& new_value) { + virtual bool SetEnv(const char* variable_name, const std::string& new_value) { NOTIMPLEMENTED(); + return false; } + // Intentionally public, for convenience when setting up a test. EnvVarValues values; |