| Index: chrome/browser/first_run/first_run.cc
|
| diff --git a/chrome/browser/first_run/first_run.cc b/chrome/browser/first_run/first_run.cc
|
| index 1dfad253e5dc08b502b683a2cf7c3ef027896c4c..42388fcaf9b0f7d97e39a454a92050f0de21a5bd 100644
|
| --- a/chrome/browser/first_run/first_run.cc
|
| +++ b/chrome/browser/first_run/first_run.cc
|
| @@ -57,6 +57,56 @@ FilePath GetDefaultPrefFilePath(bool create_profile_dir,
|
| return ProfileManager::GetProfilePrefsPath(default_pref_dir);
|
| }
|
|
|
| +// Sets the |items| bitfield according to whether the import data specified by
|
| +// |import_type| should be be auto imported or not.
|
| +void SetImportItem(PrefService* user_prefs,
|
| + const char* pref_path,
|
| + int import_items,
|
| + int dont_import_items,
|
| + importer::ImportItem import_type,
|
| + int& items) {
|
| + // Work out whether an item is to be imported according to what is specified
|
| + // in master preferences.
|
| + bool should_import = false;
|
| + bool master_pref_set =
|
| + ((import_items | dont_import_items) & import_type) != 0;
|
| + bool master_pref = ((import_items & ~dont_import_items) & import_type) != 0;
|
| +
|
| + if (import_type == importer::HISTORY ||
|
| + ((import_type != importer::FAVORITES) &&
|
| + FirstRun::IsOrganicFirstRun())) {
|
| + // History is always imported unless turned off in master_preferences.
|
| + // Search engines are only imported in certain builds unless overridden
|
| + // in master_preferences.Home page is imported in organic builds only unless
|
| + // turned off in master_preferences.
|
| + should_import = !master_pref_set || master_pref;
|
| + } else {
|
| + // Bookmarks are never imported, unless turned on in master_preferences.
|
| + // Search engine and home page import behaviour is similar in non organic
|
| + // builds.
|
| + should_import = master_pref_set && master_pref;
|
| + }
|
| +
|
| + // If an import policy is set, import items according to policy. If no master
|
| + // preference is set, but a corresponding recommended policy is set, import
|
| + // item according to recommended policy. If both a master preference and a
|
| + // recommended policy is set, the master preference wins. If neither
|
| + // recommended nor managed policies are set, import item according to what we
|
| + // worked out above.
|
| + if (master_pref_set)
|
| + user_prefs->SetBoolean(pref_path, should_import);
|
| +
|
| + if (!user_prefs->FindPreference(pref_path)->IsDefaultValue()) {
|
| + if (user_prefs->GetBoolean(pref_path))
|
| + items |= import_type;
|
| + } else { // no policy (recommended or managed) is set
|
| + if (should_import)
|
| + items |= import_type;
|
| + }
|
| +
|
| + user_prefs->ClearPref(pref_path);
|
| +}
|
| +
|
| } // namespace
|
|
|
| // FirstRun -------------------------------------------------------------------
|
| @@ -105,7 +155,6 @@ bool FirstRun::ProcessMasterPreferences(const FilePath& user_data_dir,
|
| if (!PathService::Get(base::DIR_EXE, &master_prefs))
|
| return true;
|
| master_prefs = master_prefs.AppendASCII(installer::kDefaultMasterPrefs);
|
| -
|
| installer::MasterPreferences prefs(master_prefs);
|
| if (!prefs.read_from_file())
|
| return true;
|
| @@ -227,8 +276,11 @@ bool FirstRun::ProcessMasterPreferences(const FilePath& user_data_dir,
|
| // Bookmarks are never imported unless specifically turned on.
|
| if (prefs.GetBool(
|
| installer::master_preferences::kDistroImportBookmarksPref,
|
| - &value) && value) {
|
| - out_prefs->do_import_items |= importer::FAVORITES;
|
| + &value)) {
|
| + if (value)
|
| + out_prefs->do_import_items |= importer::FAVORITES;
|
| + else
|
| + out_prefs->dont_import_items |= importer::FAVORITES;
|
| }
|
|
|
| if (prefs.GetBool(
|
| @@ -523,33 +575,49 @@ void FirstRun::AutoImport(
|
| importer_host->set_headless();
|
| int items = 0;
|
|
|
| - // History is always imported unless turned off in master_preferences.
|
| - if (!(dont_import_items & importer::HISTORY))
|
| - items = items | importer::HISTORY;
|
| - // Home page is imported in organic builds only unless turned off or
|
| - // defined in master_preferences.
|
| - if (IsOrganicFirstRun()) {
|
| - if (!(dont_import_items & importer::HOME_PAGE) && !homepage_defined)
|
| - items = items | importer::HOME_PAGE;
|
| - } else {
|
| - if (import_items & importer::HOME_PAGE)
|
| - items = items | importer::HOME_PAGE;
|
| - }
|
| - // Search engines are only imported in certain builds unless overridden
|
| - // in master_preferences. Search engines are not imported automatically
|
| - // if the user already has a user preferences directory.
|
| if (IsOrganicFirstRun()) {
|
| - if (!(dont_import_items & importer::SEARCH_ENGINES) &&
|
| - !local_state_file_exists) {
|
| - items = items | importer::SEARCH_ENGINES;
|
| + // Home page is imported in organic builds only unless turned off or
|
| + // defined in master_preferences.
|
| + if (homepage_defined) {
|
| + dont_import_items |= importer::HOME_PAGE;
|
| + if (import_items & importer::HOME_PAGE)
|
| + import_items &= ~importer::HOME_PAGE;
|
| + }
|
| + // Search engines are not imported automatically in organic builds if the
|
| + // user already has a user preferences directory.
|
| + if (local_state_file_exists) {
|
| + dont_import_items |= importer::SEARCH_ENGINES;
|
| + if (import_items & importer::SEARCH_ENGINES)
|
| + import_items &= ~importer::SEARCH_ENGINES;
|
| }
|
| - } else if (import_items & importer::SEARCH_ENGINES) {
|
| - items = items | importer::SEARCH_ENGINES;
|
| }
|
|
|
| - // Bookmarks are never imported, unless turned on in master_preferences.
|
| - if (import_items & importer::FAVORITES)
|
| - items = items | importer::FAVORITES;
|
| + PrefService* user_prefs = profile->GetPrefs();
|
| +
|
| + SetImportItem(user_prefs,
|
| + prefs::kImportHistory,
|
| + import_items,
|
| + dont_import_items,
|
| + importer::HISTORY,
|
| + items);
|
| + SetImportItem(user_prefs,
|
| + prefs::kImportHomepage,
|
| + import_items,
|
| + dont_import_items,
|
| + importer::HOME_PAGE,
|
| + items);
|
| + SetImportItem(user_prefs,
|
| + prefs::kImportSearchEngine,
|
| + import_items,
|
| + dont_import_items,
|
| + importer::SEARCH_ENGINES,
|
| + items);
|
| + SetImportItem(user_prefs,
|
| + prefs::kImportBookmarks,
|
| + import_items,
|
| + dont_import_items,
|
| + importer::FAVORITES,
|
| + items);
|
|
|
| ImportSettings(profile, importer_host, importer_list, items);
|
| }
|
|
|