Chromium Code Reviews| Index: chrome/common/extensions/feature_switch.h |
| diff --git a/chrome/common/extensions/feature_switch.h b/chrome/common/extensions/feature_switch.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..b668b77f1211f17cf9c5bcd41800e3c16985b349 |
| --- /dev/null |
| +++ b/chrome/common/extensions/feature_switch.h |
| @@ -0,0 +1,62 @@ |
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef CHROME_COMMON_EXTENSIONS_FEATURE_SWITCH_H_ |
| +#define CHROME_COMMON_EXTENSIONS_FEATURE_SWITCH_H_ |
| + |
| +#include "base/basictypes.h" |
| + |
| +class CommandLine; |
| + |
| +namespace extensions { |
| + |
| +// A switch that can turn a feature on or off. Typically controlled via |
| +// command-line switches but can be overridden, e.g., for testing. |
| +class FeatureSwitch { |
| + public: |
| + static FeatureSwitch* GetScriptBubble(); |
| + |
| + // A temporary override for the switch value. |
| + class ScopedOverride { |
| + public: |
| + ScopedOverride(FeatureSwitch* feature, bool override_value); |
| + ~ScopedOverride(); |
| + private: |
| + friend FeatureSwitch; |
|
Jeffrey Yasskin
2012/10/02 01:45:51
And now I think you can get rid of this friend sta
|
| + FeatureSwitch* feature_; |
| + bool previous_value_; |
| + DISALLOW_COPY_AND_ASSIGN(ScopedOverride); |
| + }; |
| + |
| + enum DefaultValue { |
| + DEFAULT_ENABLED, |
| + DEFAULT_DISABLED |
| + }; |
| + |
| + FeatureSwitch(const CommandLine* command_line, |
| + const char* switch_name, |
| + DefaultValue default_value); |
| + |
| + bool IsEnabled() const; |
| + |
| + private: |
| + enum OverrideValue { |
| + OVERRIDE_NONE, |
| + OVERRIDE_ENABLED, |
| + OVERRIDE_DISABLED |
| + }; |
| + |
| + void SetOverrideValue(OverrideValue value); |
| + |
| + const CommandLine* command_line_; |
| + const char* switch_name_; |
| + bool default_value_; |
| + OverrideValue override_value_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(FeatureSwitch); |
| +}; |
| + |
| +} // namespace extensions |
| + |
| +#endif // CHROME_COMMON_EXTENSIONS_FEATURE_SWITCH_H_ |