blob: eb4b94f539ea3bc87b8a0bb6c82cee6f5df53495 [file] [log] [blame]
// 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.
#include "base/basictypes.h"
#include "base/command_line.h"
#include "base/prefs/value_map_pref_store.h"
#include "base/values.h"
// This PrefStore keeps track of preferences set by command-line switches,
// such as proxy settings.
class CommandLinePrefStore : public ValueMapPrefStore {
explicit CommandLinePrefStore(const base::CommandLine* command_line);
virtual ~CommandLinePrefStore();
// Logs a message and returns false if the proxy switches are
// self-contradictory. Protected so it can be used in unit testing.
bool ValidateProxySwitches();
friend class TestCommandLinePrefStore;
struct StringSwitchToPreferenceMapEntry {
const char* switch_name;
const char* preference_path;
struct IntegerSwitchToPreferenceMapEntry {
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;
// 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();
// Weak reference.
const base::CommandLine* command_line_;
// Mappings of command line switches to prefs.
static const BooleanSwitchToPreferenceMapEntry boolean_switch_map_[];
static const StringSwitchToPreferenceMapEntry string_switch_map_[];
static const IntegerSwitchToPreferenceMapEntry integer_switch_map_[];