| Index: chrome/browser/first_run_win.cc
|
| ===================================================================
|
| --- chrome/browser/first_run_win.cc (revision 53209)
|
| +++ chrome/browser/first_run_win.cc (working copy)
|
| @@ -163,15 +163,15 @@
|
| }
|
|
|
| // Helper class that performs delayed first-run tasks that need more of the
|
| -// chrome infrastructure to be up and running before they can be attempted.
|
| -class FirstRunDelayedTasks : public NotificationObserver {
|
| +// chrome infrastructure to be up an running before they can be attempted.
|
| +class FirsRunDelayedTasks : public NotificationObserver {
|
| public:
|
| enum Tasks {
|
| NO_TASK,
|
| INSTALL_EXTENSIONS
|
| };
|
|
|
| - explicit FirstRunDelayedTasks(Tasks task) {
|
| + explicit FirsRunDelayedTasks(Tasks task) {
|
| if (task == INSTALL_EXTENSIONS) {
|
| registrar_.Add(this, NotificationType::EXTENSIONS_READY,
|
| NotificationService::AllSources());
|
| @@ -192,7 +192,7 @@
|
|
|
| private:
|
| // Private ctor forces it to be created only in the heap.
|
| - ~FirstRunDelayedTasks() {}
|
| + ~FirsRunDelayedTasks() {}
|
|
|
| // The extension work is to basically trigger an extension update check.
|
| // If the extension specified in the master pref is older than the live
|
| @@ -304,26 +304,24 @@
|
| DictionaryValue* extensions = 0;
|
| if (installer_util::HasExtensionsBlock(prefs.get(), &extensions)) {
|
| LOG(INFO) << "Extensions block found in master preferences";
|
| - new FirstRunDelayedTasks(FirstRunDelayedTasks::INSTALL_EXTENSIONS);
|
| + new FirsRunDelayedTasks(FirsRunDelayedTasks::INSTALL_EXTENSIONS);
|
| }
|
|
|
| - // If the search engine dialog is not shown, the search engine is set to
|
| - // Google unless master_preferences specifically turns on search engine
|
| - // import.
|
| + // Add a special exception for import_search_engine preference.
|
| + // Even though we skip all other import_* preferences below, if
|
| + // skip-first-run-ui is not specified, we make exception for this one
|
| + // preference.
|
| int import_items = 0;
|
| if (installer_util::GetDistroBooleanPreference(prefs.get(),
|
| - installer_util::master_preferences::kDistroImportSearchPref, &value)
|
| - && value) {
|
| - import_items |= importer::SEARCH_ENGINES;
|
| - out_prefs->do_import_items |= importer::SEARCH_ENGINES;
|
| + installer_util::master_preferences::kDistroImportSearchPref, &value)) {
|
| + if (value) {
|
| + import_items += importer::SEARCH_ENGINES;
|
| + out_prefs->do_import_items += importer::SEARCH_ENGINES;
|
| + } else {
|
| + out_prefs->dont_import_items += importer::SEARCH_ENGINES;
|
| + }
|
| }
|
|
|
| - // Check to see if search engine logos should be randomized.
|
| - if (installer_util::GetDistroBooleanPreference(prefs.get(),
|
| - installer_util::master_preferences::kSearchEngineExperimentRandomizePref,
|
| - &value) && value)
|
| - out_prefs->randomize_search_engine_experiment = true;
|
| -
|
| // If we're suppressing the first-run bubble, set that preference now.
|
| // Otherwise, wait until the user has completed first run to set it, so the
|
| // user is guaranteed to see the bubble iff he or she has completed the first
|
| @@ -333,42 +331,45 @@
|
| &value) && value)
|
| FirstRun::SetShowFirstRunBubblePref(false);
|
|
|
| + if (InSearchExperimentLocale() &&
|
| + installer_util::GetDistroBooleanPreference(prefs.get(),
|
| + installer_util::master_preferences::kSearchEngineExperimentPref,
|
| + &value) && value) {
|
| + // Set the first run dialog to include the search choice window.
|
| + out_prefs->run_search_engine_experiment = true;
|
| + // Check to see if search engine logos should be randomized.
|
| + if (installer_util::GetDistroBooleanPreference(prefs.get(),
|
| + installer_util::master_preferences::
|
| + kSearchEngineExperimentRandomizePref,
|
| + &value) && value) {
|
| + out_prefs->randomize_search_engine_experiment = true;
|
| + }
|
| + // Set the first run bubble to minimal.
|
| + FirstRun::SetMinimalFirstRunBubblePref();
|
| + }
|
|
|
| + // History is imported automatically, unless turned off in master_prefs.
|
| if (installer_util::GetDistroBooleanPreference(prefs.get(),
|
| - installer_util::master_preferences::kDistroImportHistoryPref, &value)) {
|
| - if (value) {
|
| - import_items |= importer::HISTORY;
|
| - } else {
|
| - // Automatic history import can be turned off in master_prefs.
|
| - out_prefs->dont_import_items |= importer::HISTORY;
|
| - }
|
| + installer_util::master_preferences::kDistroImportHistoryPref, &value)
|
| + && !value) {
|
| + out_prefs->dont_import_items |= importer::HISTORY;
|
| }
|
|
|
| + // Home page is imported automatically only in organic builds, and can be
|
| + // turned off in master_prefs.
|
| if (installer_util::GetDistroBooleanPreference(prefs.get(),
|
| - installer_util::master_preferences::kDistroImportHomePagePref, &value)) {
|
| - if (value) {
|
| - import_items |= importer::HOME_PAGE;
|
| - } else {
|
| - // Automatic home page import can be turned off in master_prefs.
|
| - out_prefs->dont_import_items |= importer::HOME_PAGE;
|
| - }
|
| + installer_util::master_preferences::kDistroImportHomePagePref, &value)
|
| + && !value) {
|
| + out_prefs->dont_import_items |= importer::HOME_PAGE;
|
| }
|
|
|
| // Bookmarks are never imported unless specifically turned on.
|
| if (installer_util::GetDistroBooleanPreference(prefs.get(),
|
| installer_util::master_preferences::kDistroImportBookmarksPref, &value)
|
| && value) {
|
| - import_items |= importer::FAVORITES;
|
| out_prefs->do_import_items |= importer::FAVORITES;
|
| }
|
|
|
| - if (installer_util::GetDistroBooleanPreference(prefs.get(),
|
| - installer_util::master_preferences::kMakeChromeDefaultForUser, &value) &&
|
| - value)
|
| - ShellIntegration::SetAsDefaultBrowser();
|
| -
|
| - // TODO(mirandac): Refactor skip-first-run-ui process into regular first run
|
| - // import process. http://crbug.com/49647
|
| // Note we are skipping all other master preferences if skip-first-run-ui
|
| // is *not* specified. (That is, we continue only if skipping first run ui.)
|
| if (!installer_util::GetDistroBooleanPreference(prefs.get(),
|
| @@ -376,6 +377,10 @@
|
| !value)
|
| return true;
|
|
|
| + // From here on we won't show first run so we need to do the work to show the
|
| + // bubble anyway, unless it's already been explicitly suppressed.
|
| + FirstRun::SetShowFirstRunBubblePref(true);
|
| +
|
| // We need to be able to create the first run sentinel or else we cannot
|
| // proceed because ImportSettings will launch the importer process which
|
| // would end up here if the sentinel is not present.
|
| @@ -403,6 +408,11 @@
|
| }
|
| }
|
|
|
| + if (installer_util::GetDistroBooleanPreference(prefs.get(),
|
| + installer_util::master_preferences::kMakeChromeDefaultForUser, &value) &&
|
| + value)
|
| + ShellIntegration::SetAsDefaultBrowser();
|
| +
|
| return false;
|
| }
|
|
|
| @@ -668,10 +678,6 @@
|
| }
|
| }
|
|
|
| - FirstRun::SetShowFirstRunBubblePref(true);
|
| - // Set the first run bubble to minimal.
|
| - FirstRun::SetMinimalFirstRunBubblePref();
|
| -
|
| process_singleton->Unlock();
|
| FirstRun::CreateSentinel();
|
| }
|
|
|