Fix FullScreen crash in Webapp
[platform/framework/web/chromium-efl.git] / base / scoped_environment_variable_override.cc
1 // Copyright 2017 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/scoped_environment_variable_override.h"
6
7 #include "base/environment.h"
8
9 namespace base {
10
11 ScopedEnvironmentVariableOverride::ScopedEnvironmentVariableOverride(
12     const std::string& variable_name,
13     const std::string& value,
14     bool unset_var)
15     : environment_(Environment::Create()),
16       variable_name_(variable_name),
17       overridden_(false),
18       was_set_(false) {
19   was_set_ = environment_->GetVar(variable_name, &old_value_);
20   if (unset_var)
21     overridden_ = environment_->UnSetVar(variable_name);
22   else
23     overridden_ = environment_->SetVar(variable_name, value);
24 }
25
26 ScopedEnvironmentVariableOverride::ScopedEnvironmentVariableOverride(
27     const std::string& variable_name,
28     const std::string& value)
29     : ScopedEnvironmentVariableOverride(variable_name, value, false) {}
30
31 ScopedEnvironmentVariableOverride::ScopedEnvironmentVariableOverride(
32     const std::string& variable_name)
33     : ScopedEnvironmentVariableOverride(variable_name, "", true) {}
34
35 ScopedEnvironmentVariableOverride::ScopedEnvironmentVariableOverride(
36     ScopedEnvironmentVariableOverride&&) = default;
37
38 ScopedEnvironmentVariableOverride& ScopedEnvironmentVariableOverride::operator=(
39     ScopedEnvironmentVariableOverride&&) = default;
40
41 ScopedEnvironmentVariableOverride::~ScopedEnvironmentVariableOverride() {
42   if (environment_ && overridden_) {
43     if (was_set_)
44       environment_->SetVar(variable_name_, old_value_);
45     else
46       environment_->UnSetVar(variable_name_);
47   }
48 }
49
50 }  // namespace base