summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authormirandac@google.com <mirandac@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-24 17:26:32 +0000
committermirandac@google.com <mirandac@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-24 17:26:32 +0000
commit23df835e53683452ec29dd1cbd5a0081292555c6 (patch)
treeb0d209abbd27c7aa8776e03e8b526894934e2b95 /chrome
parente9c14b5425443a1db134640adf814e2da0ab6144 (diff)
downloadchromium_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.cc4
-rw-r--r--chrome/browser/first_run.h8
-rw-r--r--chrome/browser/first_run_browsertest.cc2
-rw-r--r--chrome/browser/first_run_gtk.cc2
-rw-r--r--chrome/browser/first_run_mac.mm2
-rw-r--r--chrome/browser/first_run_win.cc15
-rw-r--r--chrome/browser/gtk/first_run_dialog.cc2
-rw-r--r--chrome/browser/views/first_run_view_base.cc2
-rw-r--r--chrome/installer/util/master_preferences_constants.cc1
-rw-r--r--chrome/installer/util/master_preferences_constants.h10
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[];
}
}