1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- // Copyright 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.
- #include "components/prefs/command_line_pref_store.h"
- #include <memory>
- #include <string>
- #include "base/files/file_path.h"
- #include "base/logging.h"
- #include "base/strings/string_number_conversions.h"
- #include "base/strings/string_util.h"
- #include "base/values.h"
- CommandLinePrefStore::CommandLinePrefStore(
- const base::CommandLine* command_line)
- : command_line_(command_line) {}
- CommandLinePrefStore::~CommandLinePrefStore() {}
- void CommandLinePrefStore::ApplyStringSwitches(
- const CommandLinePrefStore::SwitchToPreferenceMapEntry string_switch[],
- size_t size) {
- for (size_t i = 0; i < size; ++i) {
- if (command_line_->HasSwitch(string_switch[i].switch_name)) {
- SetValue(string_switch[i].preference_path,
- std::make_unique<base::Value>(command_line_->GetSwitchValueASCII(
- string_switch[i].switch_name)),
- WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
- }
- }
- }
- void CommandLinePrefStore::ApplyPathSwitches(
- const CommandLinePrefStore::SwitchToPreferenceMapEntry path_switch[],
- size_t size) {
- for (size_t i = 0; i < size; ++i) {
- if (command_line_->HasSwitch(path_switch[i].switch_name)) {
- SetValue(path_switch[i].preference_path,
- std::make_unique<base::Value>(
- command_line_->GetSwitchValuePath(path_switch[i].switch_name)
- .AsUTF8Unsafe()),
- WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
- }
- }
- }
- void CommandLinePrefStore::ApplyIntegerSwitches(
- const CommandLinePrefStore::SwitchToPreferenceMapEntry integer_switch[],
- size_t size) {
- for (size_t i = 0; i < size; ++i) {
- if (command_line_->HasSwitch(integer_switch[i].switch_name)) {
- std::string str_value = command_line_->GetSwitchValueASCII(
- integer_switch[i].switch_name);
- int int_value = 0;
- if (!base::StringToInt(str_value, &int_value)) {
- LOG(ERROR) << "The value " << str_value << " of "
- << integer_switch[i].switch_name
- << " can not be converted to integer, ignoring!";
- continue;
- }
- SetValue(integer_switch[i].preference_path,
- std::make_unique<base::Value>(int_value),
- WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
- }
- }
- }
- void CommandLinePrefStore::ApplyBooleanSwitches(
- const CommandLinePrefStore::BooleanSwitchToPreferenceMapEntry
- boolean_switch_map[], size_t size) {
- for (size_t i = 0; i < size; ++i) {
- if (command_line_->HasSwitch(boolean_switch_map[i].switch_name)) {
- SetValue(boolean_switch_map[i].preference_path,
- std::make_unique<base::Value>(boolean_switch_map[i].set_value),
- WriteablePrefStore::DEFAULT_PREF_WRITE_FLAGS);
- }
- }
- }
|