diff options
author | mirandac@google.com <mirandac@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-24 17:26:32 +0000 |
---|---|---|
committer | mirandac@google.com <mirandac@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-24 17:26:32 +0000 |
commit | 23df835e53683452ec29dd1cbd5a0081292555c6 (patch) | |
tree | b0d209abbd27c7aa8776e03e8b526894934e2b95 /chrome | |
parent | e9c14b5425443a1db134640adf814e2da0ab6144 (diff) | |
download | chromium_src-23df835e53683452ec29dd1cbd5a0081292555c6.zip chromium_src-23df835e53683452ec29dd1cbd5a0081292555c6.tar.gz chromium_src-23df835e53683452ec29dd1cbd5a0081292555c6.tar.bz2 |
Allow suppression of first run bubble from master preferences.
BUG=18185
TEST= add "suppress_first_run_bubble:true" to distribution section of master_preferences. run as first_run, and watch bubble not appear.
Review URL: http://codereview.chromium.org/2812022
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@50734 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/first_run.cc | 4 | ||||
-rw-r--r-- | chrome/browser/first_run.h | 8 | ||||
-rw-r--r-- | chrome/browser/first_run_browsertest.cc | 2 | ||||
-rw-r--r-- | chrome/browser/first_run_gtk.cc | 2 | ||||
-rw-r--r-- | chrome/browser/first_run_mac.mm | 2 | ||||
-rw-r--r-- | chrome/browser/first_run_win.cc | 15 | ||||
-rw-r--r-- | chrome/browser/gtk/first_run_dialog.cc | 2 | ||||
-rw-r--r-- | chrome/browser/views/first_run_view_base.cc | 2 | ||||
-rw-r--r-- | chrome/installer/util/master_preferences_constants.cc | 1 | ||||
-rw-r--r-- | chrome/installer/util/master_preferences_constants.h | 10 |
10 files changed, 31 insertions, 17 deletions
diff --git a/chrome/browser/first_run.cc b/chrome/browser/first_run.cc index 252686c..5fb2886 100644 --- a/chrome/browser/first_run.cc +++ b/chrome/browser/first_run.cc @@ -81,13 +81,13 @@ bool FirstRun::CreateSentinel() { } // static -bool FirstRun::SetShowFirstRunBubblePref() { +bool FirstRun::SetShowFirstRunBubblePref(bool show_bubble) { PrefService* local_state = g_browser_process->local_state(); if (!local_state) return false; if (!local_state->FindPreference(prefs::kShouldShowFirstRunBubble)) { local_state->RegisterBooleanPref(prefs::kShouldShowFirstRunBubble, false); - local_state->SetBoolean(prefs::kShouldShowFirstRunBubble, true); + local_state->SetBoolean(prefs::kShouldShowFirstRunBubble, show_bubble); } return true; } diff --git a/chrome/browser/first_run.h b/chrome/browser/first_run.h index df5af39..4627dfe 100644 --- a/chrome/browser/first_run.h +++ b/chrome/browser/first_run.h @@ -95,9 +95,11 @@ class FirstRun { gfx::NativeView parent_window); // Sets the kShouldShowFirstRunBubble local state pref so that the browser - // shows the bubble once the main message loop gets going. Returns false if - // the pref could not be set. - static bool SetShowFirstRunBubblePref(); + // shows the bubble once the main message loop gets going (or refrains from + // showing the bubble, if |show_bubble| is false). Returns false if the pref + // could not be set. This function can be called multiple times, but only the + // initial call will actually set the preference. + static bool SetShowFirstRunBubblePref(bool show_bubble); // Sets the kShouldUseOEMFirstRunBubble local state pref so that the // browser shows the OEM first run bubble once the main message loop diff --git a/chrome/browser/first_run_browsertest.cc b/chrome/browser/first_run_browsertest.cc index 3e59aca..24572fc 100644 --- a/chrome/browser/first_run_browsertest.cc +++ b/chrome/browser/first_run_browsertest.cc @@ -14,7 +14,7 @@ typedef InProcessBrowserTest FirstRunBrowserTest; IN_PROC_BROWSER_TEST_F(FirstRunBrowserTest, SetShowFirstRunBubblePref) { EXPECT_FALSE(g_browser_process->local_state()->FindPreference( prefs::kShouldShowFirstRunBubble)); - EXPECT_TRUE(FirstRun::SetShowFirstRunBubblePref()); + EXPECT_TRUE(FirstRun::SetShowFirstRunBubblePref(true)); ASSERT_TRUE(g_browser_process->local_state()->FindPreference( prefs::kShouldShowFirstRunBubble)); EXPECT_TRUE(g_browser_process->local_state()->GetBoolean( diff --git a/chrome/browser/first_run_gtk.cc b/chrome/browser/first_run_gtk.cc index 15ebefe..4b61867 100644 --- a/chrome/browser/first_run_gtk.cc +++ b/chrome/browser/first_run_gtk.cc @@ -86,7 +86,7 @@ bool FirstRun::ProcessMasterPreferences(const FilePath& user_data_dir, // From here on we won't show first run so we need to do the work to set the // required state given that FirstRunView is not going to be called. - FirstRun::SetShowFirstRunBubblePref(); + FirstRun::SetShowFirstRunBubblePref(true); if (installer_util::GetDistroBooleanPreference(prefs.get(), installer_util::master_preferences::kDistroShowWelcomePage, &value) && diff --git a/chrome/browser/first_run_mac.mm b/chrome/browser/first_run_mac.mm index 948e806..4d2d29f 100644 --- a/chrome/browser/first_run_mac.mm +++ b/chrome/browser/first_run_mac.mm @@ -71,7 +71,7 @@ FirstRunController::FirstRunController() void FirstRunController::FirstRunDone() { // Set preference to show first run bubble and welcome page. // TODO(jeremy): Implement - // FirstRun::SetShowFirstRunBubblePref(); + // FirstRun::SetShowFirstRunBubblePref(true); // FirstRun::SetShowWelcomePagePref(); delete this; } diff --git a/chrome/browser/first_run_win.cc b/chrome/browser/first_run_win.cc index 14c1682..079e837 100644 --- a/chrome/browser/first_run_win.cc +++ b/chrome/browser/first_run_win.cc @@ -318,6 +318,15 @@ bool FirstRun::ProcessMasterPreferences(const FilePath& user_data_dir, } } + // 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 + // run process. + if (installer_util::GetDistroBooleanPreference(prefs.get(), + installer_util::master_preferences::kDistroSuppressFirstRunBubble, + &value) && value) + FirstRun::SetShowFirstRunBubblePref(false); + if (InSearchExperimentLocale() && installer_util::GetDistroBooleanPreference(prefs.get(), installer_util::master_preferences::kSearchEngineExperimentPref, @@ -342,9 +351,9 @@ bool FirstRun::ProcessMasterPreferences(const FilePath& user_data_dir, !value) return true; - // From here on we won't show first run so we need to do the work to set the - // required state given that FirstRunView is not going to be called. - FirstRun::SetShowFirstRunBubblePref(); + // 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 diff --git a/chrome/browser/gtk/first_run_dialog.cc b/chrome/browser/gtk/first_run_dialog.cc index ed4dfb9..7c5eae7 100644 --- a/chrome/browser/gtk/first_run_dialog.cc +++ b/chrome/browser/gtk/first_run_dialog.cc @@ -190,7 +190,7 @@ void FirstRunDialog::OnLearnMoreLinkClicked(GtkButton* button) { void FirstRunDialog::FirstRunDone() { // Set preference to show first run bubble and welcome page. - FirstRun::SetShowFirstRunBubblePref(); + FirstRun::SetShowFirstRunBubblePref(true); FirstRun::SetShowWelcomePagePref(); gtk_widget_destroy(dialog_); diff --git a/chrome/browser/views/first_run_view_base.cc b/chrome/browser/views/first_run_view_base.cc index 474c569..2067618 100644 --- a/chrome/browser/views/first_run_view_base.cc +++ b/chrome/browser/views/first_run_view_base.cc @@ -54,7 +54,7 @@ FirstRunViewBase::FirstRunViewBase(Profile* profile, bool homepage_defined, } FirstRunViewBase::~FirstRunViewBase() { - FirstRun::SetShowFirstRunBubblePref(); + FirstRun::SetShowFirstRunBubblePref(true); FirstRun::SetShowWelcomePagePref(); } diff --git a/chrome/installer/util/master_preferences_constants.cc b/chrome/installer/util/master_preferences_constants.cc index 8dd7063..54ff03f 100644 --- a/chrome/installer/util/master_preferences_constants.cc +++ b/chrome/installer/util/master_preferences_constants.cc @@ -20,6 +20,7 @@ namespace master_preferences { 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 kDistroSuppressFirstRunBubble[] = L"suppress_first_run_bubble"; const wchar_t kDoNotCreateShortcuts[] = L"do_not_create_shortcuts"; const wchar_t kDoNotLaunchChrome[] = L"do_not_launch_chrome"; const wchar_t kDoNotRegisterForUpdateLaunch[] = diff --git a/chrome/installer/util/master_preferences_constants.h b/chrome/installer/util/master_preferences_constants.h index ed2fe1f..c125277 100644 --- a/chrome/installer/util/master_preferences_constants.h +++ b/chrome/installer/util/master_preferences_constants.h @@ -42,6 +42,8 @@ extern const wchar_t kDistroPingDelay[]; extern const wchar_t kDistroShowWelcomePage[]; // Boolean pref that triggers skipping the first run dialogs. extern const wchar_t kDistroSkipFirstRunPref[]; +// Boolean. Do not show first run bubble, even if it would otherwise be shown. +extern const wchar_t kDistroSuppressFirstRunBubble[]; // Boolean. Do not create Chrome desktop shortcuts. Cmd line override present. extern const wchar_t kDoNotCreateShortcuts[]; // Boolean. Do not launch Chrome after first install. Cmd line override present. @@ -57,16 +59,16 @@ extern const wchar_t kMakeChromeDefaultForUser[]; extern const wchar_t kMsi[]; // Boolean. Show EULA dialog before install. extern const wchar_t kRequireEula[]; +// Boolean. Use experimental search engine selection dialog. +extern const wchar_t kSearchEngineExperimentPref[]; +// Boolean. Randomize logos in experimental search engine selection dialog. +extern const wchar_t kSearchEngineExperimentRandomizePref[]; // Boolean. Install Chrome to system wise location. Cmd line override present. extern const wchar_t kSystemLevel[]; // Boolean. Run installer in verbose mode. Cmd line override present. extern const wchar_t kVerboseLogging[]; // Name of the block that contains the extensions on the master preferences. extern const wchar_t kExtensionsBlock[]; -// Boolean. Use experimental search engine selection dialog. -extern const wchar_t kSearchEngineExperimentPref[]; -// Boolean. Randomize logos in experimental search engine selection dialog. -extern const wchar_t kSearchEngineExperimentRandomizePref[]; } } |