| // 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 CHROME_BROWSER_PREFS_CHROME_COMMAND_LINE_PREF_STORE_H_ |
| #define CHROME_BROWSER_PREFS_CHROME_COMMAND_LINE_PREF_STORE_H_ |
| |
| #include "base/command_line.h" |
| #include "base/macros.h" |
| #include "base/values.h" |
| #include "components/prefs/command_line_pref_store.h" |
| |
| // This PrefStore keeps track of preferences set by command-line switches, |
| // such as proxy settings. |
| class ChromeCommandLinePrefStore : public CommandLinePrefStore { |
| public: |
| explicit ChromeCommandLinePrefStore(const base::CommandLine* command_line); |
| |
| protected: |
| ~ChromeCommandLinePrefStore() override; |
| |
| // Logs a message and returns false if the proxy switches are |
| // self-contradictory. Protected so it can be used in unit testing. |
| // TODO(bauerb): make this method public and remove the subclass, which calls |
| // this method, from the test. |
| bool ValidateProxySwitches(); |
| |
| private: |
| friend class TestCommandLinePrefStore; |
| |
| // Using the string and boolean maps, apply command-line switches to their |
| // corresponding preferences in this pref store. |
| void ApplySimpleSwitches(); |
| |
| // Determines the proxy mode preference from the given proxy switches. |
| void ApplyProxyMode(); |
| |
| // Apply the SSL/TLS preferences from the given switches. |
| void ApplySSLSwitches(); |
| |
| // Determines whether the background mode is force-disabled. |
| void ApplyBackgroundModeSwitches(); |
| |
| // Mappings of command line switches to prefs. |
| static const BooleanSwitchToPreferenceMapEntry boolean_switch_map_[]; |
| static const SwitchToPreferenceMapEntry string_switch_map_[]; |
| static const SwitchToPreferenceMapEntry path_switch_map_[]; |
| static const SwitchToPreferenceMapEntry integer_switch_map_[]; |
| |
| DISALLOW_COPY_AND_ASSIGN(ChromeCommandLinePrefStore); |
| }; |
| |
| #endif // CHROME_BROWSER_PREFS_CHROME_COMMAND_LINE_PREF_STORE_H_ |