Home | History | Annotate | Download | only in prefs
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_PREFS_COMMAND_LINE_PREF_STORE_H_
      6 #define CHROME_BROWSER_PREFS_COMMAND_LINE_PREF_STORE_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "base/command_line.h"
     10 #include "base/prefs/value_map_pref_store.h"
     11 #include "base/values.h"
     12 
     13 // This PrefStore keeps track of preferences set by command-line switches,
     14 // such as proxy settings.
     15 class CommandLinePrefStore : public ValueMapPrefStore {
     16  public:
     17   explicit CommandLinePrefStore(const CommandLine* command_line);
     18 
     19  protected:
     20   virtual ~CommandLinePrefStore();
     21 
     22   // Logs a message and returns false if the proxy switches are
     23   // self-contradictory. Protected so it can be used in unit testing.
     24   bool ValidateProxySwitches();
     25 
     26  private:
     27   friend class TestCommandLinePrefStore;
     28 
     29   struct StringSwitchToPreferenceMapEntry {
     30     const char* switch_name;
     31     const char* preference_path;
     32   };
     33 
     34   struct IntegerSwitchToPreferenceMapEntry {
     35     const char* switch_name;
     36     const char* preference_path;
     37   };
     38 
     39   // |set_value| indicates what the preference should be set to if the switch
     40   // is present.
     41   struct BooleanSwitchToPreferenceMapEntry {
     42     const char* switch_name;
     43     const char* preference_path;
     44     bool set_value;
     45   };
     46 
     47   // Using the string and boolean maps, apply command-line switches to their
     48   // corresponding preferences in this pref store.
     49   void ApplySimpleSwitches();
     50 
     51   // Determines the proxy mode preference from the given proxy switches.
     52   void ApplyProxyMode();
     53 
     54   // Apply the SSL/TLS preferences from the given switches.
     55   void ApplySSLSwitches();
     56 
     57   // Determines whether the background mode is force-disabled.
     58   void ApplyBackgroundModeSwitches();
     59 
     60   // Weak reference.
     61   const CommandLine* command_line_;
     62 
     63   // Mappings of command line switches to prefs.
     64   static const BooleanSwitchToPreferenceMapEntry boolean_switch_map_[];
     65   static const StringSwitchToPreferenceMapEntry string_switch_map_[];
     66   static const IntegerSwitchToPreferenceMapEntry integer_switch_map_[];
     67 
     68   DISALLOW_COPY_AND_ASSIGN(CommandLinePrefStore);
     69 };
     70 
     71 #endif  // CHROME_BROWSER_PREFS_COMMAND_LINE_PREF_STORE_H_
     72