1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
// Copyright (c) 2009 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 "chrome/installer/util/master_preferences.h"
#include "base/file_util.h"
#include "base/logging.h"
#include "base/path_service.h"
#include "chrome/common/json_value_serializer.h"
namespace {
const wchar_t* kDistroDict = L"distribution";
}
namespace installer_util {
namespace master_preferences {
const wchar_t kAltFirstRunBubble[] = L"oem_bubble";
const wchar_t kAltShortcutText[] = L"alternate_shortcut_text";
const wchar_t kChromeShortcutIconIndex[] = L"chrome_shortcut_icon_index";
const wchar_t kCreateAllShortcuts[] = L"create_all_shortcuts";
const wchar_t kDistroImportBookmarksPref[] = L"import_bookmarks";
const wchar_t kDistroImportHistoryPref[] = L"import_history";
const wchar_t kDistroImportHomePagePref[] = L"import_home_page";
const wchar_t kDistroImportSearchPref[] = L"import_search_engine";
const wchar_t kDistroPingDelay[] = L"ping_delay";
const wchar_t kDistroShowWelcomePage[] = L"show_welcome_page";
const wchar_t kDistroSkipFirstRunPref[] = L"skip_first_run_ui";
const wchar_t kDoNotCreateShortcuts[] = L"do_not_create_shortcuts";
const wchar_t kDoNotLaunchChrome[] = L"do_not_launch_chrome";
const wchar_t kDoNotRegisterForUpdateLaunch[] =
L"do_not_register_for_update_launch";
const wchar_t kMakeChromeDefault[] = L"make_chrome_default";
const wchar_t kMakeChromeDefaultForUser[] = L"make_chrome_default_for_user";
const wchar_t kRequireEula[] = L"require_eula";
const wchar_t kSystemLevel[] = L"system_level";
const wchar_t kVerboseLogging[] = L"verbose_logging";
}
bool GetDistroBooleanPreference(const DictionaryValue* prefs,
const std::wstring& name,
bool* value) {
if (!prefs || !value)
return false;
DictionaryValue* distro = NULL;
if (!prefs->GetDictionary(kDistroDict, &distro) || !distro)
return false;
if (!distro->GetBoolean(name, value))
return false;
return true;
}
bool GetDistroIntegerPreference(const DictionaryValue* prefs,
const std::wstring& name,
int* value) {
if (!prefs || !value)
return false;
DictionaryValue* distro = NULL;
if (!prefs->GetDictionary(kDistroDict, &distro) || !distro)
return false;
if (!distro->GetInteger(name, value))
return false;
return true;
}
DictionaryValue* ParseDistributionPreferences(
const FilePath& master_prefs_path) {
if (!file_util::PathExists(master_prefs_path)) {
LOG(WARNING) << "Master preferences file not found: "
<< master_prefs_path.value();
return NULL;
}
std::string json_data;
if (!file_util::ReadFileToString(master_prefs_path, &json_data))
return NULL;
JSONStringValueSerializer json(json_data);
scoped_ptr<Value> root(json.Deserialize(NULL));
if (!root.get())
return NULL;
if (!root->IsType(Value::TYPE_DICTIONARY))
return NULL;
return static_cast<DictionaryValue*>(root.release());
}
std::vector<std::wstring> GetFirstRunTabs(const DictionaryValue* prefs) {
std::vector<std::wstring> launch_tabs;
if (!prefs)
return launch_tabs;
ListValue* tabs_list = NULL;
if (!prefs->GetList(L"first_run_tabs", &tabs_list))
return launch_tabs;
for (size_t i = 0; i < tabs_list->GetSize(); ++i) {
Value* entry;
std::wstring tab_entry;
if (!tabs_list->Get(i, &entry) || !entry->GetAsString(&tab_entry)) {
NOTREACHED();
break;
}
launch_tabs.push_back(tab_entry);
}
return launch_tabs;
}
bool SetDistroBooleanPreference(DictionaryValue* prefs,
const std::wstring& name,
bool value) {
if (!prefs || name.empty())
return false;
prefs->SetBoolean(std::wstring(kDistroDict) + L"." + name, value);
return true;
}
} // installer_util
|