| // Copyright (c) 2016 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 COMPONENTS_PREFS_COMMAND_LINE_PREF_STORE_H_ | |
| #define COMPONENTS_PREFS_COMMAND_LINE_PREF_STORE_H_ | |
| #include "base/command_line.h" | |
| #include "base/macros.h" | |
| #include "base/values.h" | |
| #include "components/prefs/value_map_pref_store.h" | |
| // Base class for a PrefStore that maps command line switches to preferences. | |
| // The Apply...Switches() methods can be called by subclasses with their own | |
| // maps, or delegated to other code. | |
| class COMPONENTS_PREFS_EXPORT CommandLinePrefStore : public ValueMapPrefStore { | |
| public: | |
| struct SwitchToPreferenceMapEntry { | |
| const char* switch_name; | |
| const char* preference_path; | |
| }; | |
| // |set_value| indicates what the preference should be set to if the switch | |
| // is present. | |
| struct BooleanSwitchToPreferenceMapEntry { | |
| const char* switch_name; | |
| const char* preference_path; | |
| bool set_value; | |
| }; | |
| // Apply command-line switches to the corresponding preferences of the switch | |
| // map, where the value associated with the switch is a string. | |
| void ApplyStringSwitches(const SwitchToPreferenceMapEntry string_switch_map[], | |
| size_t size); | |
| // Apply command-line switches to the corresponding preferences of the switch | |
| // map, where the value associated with the switch is a path. | |
| void ApplyPathSwitches(const SwitchToPreferenceMapEntry path_switch_map[], | |
| size_t size); | |
| // Apply command-line switches to the corresponding preferences of the switch | |
| // map, where the value associated with the switch is an integer. | |
| void ApplyIntegerSwitches( | |
| const SwitchToPreferenceMapEntry integer_switch_map[], | |
| size_t size); | |
| // Apply command-line switches to the corresponding preferences of the | |
| // boolean switch map. | |
| void ApplyBooleanSwitches( | |
| const BooleanSwitchToPreferenceMapEntry boolean_switch_map[], | |
| size_t size); | |
| protected: | |
| explicit CommandLinePrefStore(const base::CommandLine* command_line); | |
| ~CommandLinePrefStore() override; | |
| const base::CommandLine* command_line() { return command_line_; } | |
| private: | |
| // Weak reference. | |
| const base::CommandLine* command_line_; | |
| DISALLOW_COPY_AND_ASSIGN(CommandLinePrefStore); | |
| }; | |
| #endif // COMPONENTS_PREFS_COMMAND_LINE_PREF_STORE_H_ |