Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3250)

Unified Diff: chrome/installer/util/master_preferences.cc

Issue 165382: Merge 22284 - Refactoring of master preferences parsing before adding a new p... (Closed) Base URL: svn://chrome-svn/chrome/branches/195/src/
Patch Set: Created 11 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/installer/util/master_preferences.h ('k') | chrome/installer/util/util_constants.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/installer/util/master_preferences.cc
===================================================================
--- chrome/installer/util/master_preferences.cc (revision 23178)
+++ chrome/installer/util/master_preferences.cc (working copy)
@@ -11,154 +11,92 @@
namespace {
-DictionaryValue* ReadJSONPrefs(const std::string& data) {
- JSONStringValueSerializer json(data);
+const wchar_t* kDistroDict = L"distribution";
+
+DictionaryValue* GetPrefsFromFile(const FilePath& master_prefs_path) {
+ 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());
}
-
-DictionaryValue* GetPrefsFromFile(const std::wstring& master_prefs_path) {
- std::string json_data;
- if (!file_util::ReadFileToString(master_prefs_path, &json_data))
- return NULL;
- return ReadJSONPrefs(json_data);
-}
-
-bool GetBooleanPref(const DictionaryValue* prefs, const std::wstring& name) {
- bool value = false;
- prefs->GetBoolean(name, &value);
- return value;
-}
-
} // namespace
namespace installer_util {
-// All the preferences below are expected to be inside the JSON "distribution"
-// block. See master_preferences.h for an example.
-
-// Boolean pref that triggers skipping the first run dialogs.
-const wchar_t kDistroSkipFirstRunPref[] = L"skip_first_run_ui";
-// Boolean pref that triggers loading the welcome page.
-const wchar_t kDistroShowWelcomePage[] = L"show_welcome_page";
-// Boolean pref that triggers silent import of the default search engine.
-const wchar_t kDistroImportSearchPref[] = L"import_search_engine";
-// Boolean pref that triggers silent import of the default browser history.
-const wchar_t kDistroImportHistoryPref[] = L"import_history";
-// Boolean pref that triggers silent import of the default browser bookmarks.
+namespace master_preferences {
+const wchar_t kAltFirstRunBubble[] = L"oem_bubble";
+const wchar_t kAltShortcutText[] = L"alternate_shortcut_text";
+const wchar_t kCreateAllShortcuts[] = L"create_all_shortcuts";
const wchar_t kDistroImportBookmarksPref[] = L"import_bookmarks";
-// RLZ ping delay in seconds
+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";
-// Register Chrome as default browser for the current user.
-const wchar_t kMakeChromeDefaultForUser[] = L"make_chrome_default_for_user";
-// The following boolean prefs have the same semantics as the corresponding
-// setup command line switches. See chrome/installer/util/util_constants.cc
-// for more info.
-// Create Desktop and QuickLaunch shortcuts.
-const wchar_t kCreateAllShortcuts[] = L"create_all_shortcuts";
-// Prevent installer from launching Chrome after a successful first install.
+const wchar_t kDistroShowWelcomePage[] = L"show_welcome_page";
+const wchar_t kDistroSkipFirstRunPref[] = L"skip_first_run_ui";
const wchar_t kDoNotLaunchChrome[] = L"do_not_launch_chrome";
-// Register Chrome as default browser on the system.
const wchar_t kMakeChromeDefault[] = L"make_chrome_default";
-// Install Chrome to system wise location.
+const wchar_t kMakeChromeDefaultForUser[] = L"make_chrome_default_for_user";
+const wchar_t kRequireEula[] = L"require_eula";
const wchar_t kSystemLevel[] = L"system_level";
-// Run installer in verbose mode.
const wchar_t kVerboseLogging[] = L"verbose_logging";
-// Show EULA dialog and install only if accepted.
-const wchar_t kRequireEula[] = L"require_eula";
-// Use alternate shortcut text for the main shortcut.
-const wchar_t kAltShortcutText[] = L"alternate_shortcut_text";
-// Use alternate smaller first run info bubble.
-const wchar_t kAltFirstRunBubble[] = L"oem_bubble";
-// Boolean pref that triggers silent import of the default browser homepage.
-const wchar_t kDistroImportHomePagePref[] = L"import_home_page";
+}
-bool GetDistributionPingDelay(const FilePath& master_prefs_path,
- int& delay) {
- // 90 seconds is the default that we want to use in case master preferences
- // is missing or corrupt.
- delay = 90;
- FilePath master_prefs = master_prefs_path;
- if (master_prefs.empty()) {
- if (!PathService::Get(base::DIR_EXE, &master_prefs))
- return false;
- master_prefs = master_prefs.Append(installer_util::kDefaultMasterPrefs);
- }
+bool GetDistroBooleanPreference(const DictionaryValue* prefs,
+ const std::wstring& name) {
- if (!file_util::PathExists(master_prefs))
- return false;
+ bool value = false;
+ DictionaryValue* distro = NULL;
+ if (prefs && prefs->GetDictionary(kDistroDict, &distro) && distro)
+ distro->GetBoolean(name, &value);
+ return value;
+}
- scoped_ptr<DictionaryValue> json_root(
- GetPrefsFromFile(master_prefs.ToWStringHack()));
- if (!json_root.get())
+bool GetDistributionPingDelay(const DictionaryValue* prefs,
+ int* ping_delay) {
+ if (!ping_delay)
return false;
+ // 90 seconds is the default that we want to use in case master preferences
+ // is missing or corrupt.
+ *ping_delay = 90;
+
DictionaryValue* distro = NULL;
- if (!json_root->GetDictionary(L"distribution", &distro) ||
- !distro->GetInteger(kDistroPingDelay, &delay))
+ if (!prefs || !prefs->GetDictionary(kDistroDict, &distro) || !distro)
return false;
+ if (!distro->GetInteger(master_preferences::kDistroPingDelay, ping_delay))
+ return false;
+
return true;
}
-int ParseDistributionPreferences(const std::wstring& master_prefs_path) {
- if (!file_util::PathExists(master_prefs_path))
- return MASTER_PROFILE_NOT_FOUND;
- LOG(INFO) << "master profile found";
-
- scoped_ptr<DictionaryValue> json_root(GetPrefsFromFile(master_prefs_path));
- if (!json_root.get())
- return MASTER_PROFILE_ERROR;
-
- int parse_result = 0;
- DictionaryValue* distro = NULL;
- if (json_root->GetDictionary(L"distribution", &distro)) {
- if (GetBooleanPref(distro, kDistroSkipFirstRunPref))
- parse_result |= MASTER_PROFILE_NO_FIRST_RUN_UI;
- if (GetBooleanPref(distro, kDistroShowWelcomePage))
- parse_result |= MASTER_PROFILE_SHOW_WELCOME;
- if (GetBooleanPref(distro, kDistroImportSearchPref))
- parse_result |= MASTER_PROFILE_IMPORT_SEARCH_ENGINE;
- if (GetBooleanPref(distro, kDistroImportHistoryPref))
- parse_result |= MASTER_PROFILE_IMPORT_HISTORY;
- if (GetBooleanPref(distro, kDistroImportBookmarksPref))
- parse_result |= MASTER_PROFILE_IMPORT_BOOKMARKS;
- if (GetBooleanPref(distro, kDistroImportHomePagePref))
- parse_result |= MASTER_PROFILE_IMPORT_HOME_PAGE;
- if (GetBooleanPref(distro, kMakeChromeDefaultForUser))
- parse_result |= MASTER_PROFILE_MAKE_CHROME_DEFAULT_FOR_USER;
- if (GetBooleanPref(distro, kCreateAllShortcuts))
- parse_result |= MASTER_PROFILE_CREATE_ALL_SHORTCUTS;
- if (GetBooleanPref(distro, kDoNotLaunchChrome))
- parse_result |= MASTER_PROFILE_DO_NOT_LAUNCH_CHROME;
- if (GetBooleanPref(distro, kMakeChromeDefault))
- parse_result |= MASTER_PROFILE_MAKE_CHROME_DEFAULT;
- if (GetBooleanPref(distro, kSystemLevel))
- parse_result |= MASTER_PROFILE_SYSTEM_LEVEL;
- if (GetBooleanPref(distro, kVerboseLogging))
- parse_result |= MASTER_PROFILE_VERBOSE_LOGGING;
- if (GetBooleanPref(distro, kRequireEula))
- parse_result |= MASTER_PROFILE_REQUIRE_EULA;
- if (GetBooleanPref(distro, kAltShortcutText))
- parse_result |= MASTER_PROFILE_ALT_SHORTCUT_TXT;
- if (GetBooleanPref(distro, kAltFirstRunBubble))
- parse_result |= MASTER_PROFILE_OEM_FIRST_RUN_BUBBLE;
+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;
}
- return parse_result;
+
+ return GetPrefsFromFile(master_prefs_path);
}
-std::vector<std::wstring> ParseFirstRunTabs(
- const std::wstring& master_prefs_path) {
+std::vector<std::wstring> GetFirstRunTabs(const DictionaryValue* prefs) {
std::vector<std::wstring> launch_tabs;
- scoped_ptr<DictionaryValue> json_root(GetPrefsFromFile(master_prefs_path));
- if (!json_root.get())
+ if (!prefs)
return launch_tabs;
ListValue* tabs_list = NULL;
- if (!json_root->GetList(L"first_run_tabs", &tabs_list))
+ if (!prefs->GetList(L"first_run_tabs", &tabs_list))
return launch_tabs;
for (size_t i = 0; i < tabs_list->GetSize(); ++i) {
Value* entry;
@@ -172,4 +110,18 @@
return launch_tabs;
}
+bool SetDistroBooleanPreference(DictionaryValue* prefs,
+ const std::wstring& name,
+ bool value) {
+
+ bool ret = false;
+ if (prefs && !name.empty()) {
+ std::wstring key(kDistroDict);
+ key.append(L"." + name);
+ if (prefs->SetBoolean(key, value))
+ ret = true;
+ }
+ return ret;
+}
+
} // installer_util
Property changes on: chrome\installer\util\master_preferences.cc
___________________________________________________________________
Added: svn:mergeinfo
Merged /trunk/src/chrome/installer/util/master_preferences.cc:r22284
Merged /branches/chrome_webkit_merge_branch/chrome/installer/util/master_preferences.cc:r69-2775
« no previous file with comments | « chrome/installer/util/master_preferences.h ('k') | chrome/installer/util/util_constants.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698