// Copyright (c) 2011 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_COMMAND_LINE_PREF_STORE_H_ #define CHROME_BROWSER_PREFS_COMMAND_LINE_PREF_STORE_H_ #pragma once #include "base/basictypes.h" #include "base/command_line.h" #include "base/memory/scoped_ptr.h" #include "base/values.h" #include "chrome/browser/prefs/value_map_pref_store.h" class DictionaryValue; // This PrefStore keeps track of preferences set by command-line switches, // such as proxy settings. class CommandLinePrefStore : public ValueMapPrefStore { public: explicit CommandLinePrefStore(const CommandLine* command_line); virtual ~CommandLinePrefStore(); protected: // Logs a message and returns false if the proxy switches are // self-contradictory. Protected so it can be used in unit testing. bool ValidateProxySwitches(); private: struct StringSwitchToPreferenceMapEntry { 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; }; static const BooleanSwitchToPreferenceMapEntry boolean_switch_map_[]; // 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(); // Weak reference. const CommandLine* command_line_; static const StringSwitchToPreferenceMapEntry string_switch_map_[]; DISALLOW_COPY_AND_ASSIGN(CommandLinePrefStore); }; #endif // CHROME_BROWSER_PREFS_COMMAND_LINE_PREF_STORE_H_