Index: chrome/browser/ui/webui/ntp/app_launcher_handler.cc |
diff --git a/chrome/browser/ui/webui/ntp/app_launcher_handler.cc b/chrome/browser/ui/webui/ntp/app_launcher_handler.cc |
index c969580c3b68d496f0c173720affe6a78798c5ef..e6856f9a2c730446a26edb7e90f657b72aa5cd00 100644 |
--- a/chrome/browser/ui/webui/ntp/app_launcher_handler.cc |
+++ b/chrome/browser/ui/webui/ntp/app_launcher_handler.cc |
@@ -6,6 +6,7 @@ |
#include <vector> |
+#include "apps/pref_names.h" |
#include "base/auto_reset.h" |
#include "base/bind.h" |
#include "base/bind_helpers.h" |
@@ -15,6 +16,7 @@ |
#include "base/prefs/pref_service.h" |
#include "base/utf_string_conversions.h" |
#include "base/values.h" |
+#include "chrome/browser/browser_process.h" |
#include "chrome/browser/extensions/crx_installer.h" |
#include "chrome/browser/extensions/extension_prefs.h" |
#include "chrome/browser/extensions/extension_service.h" |
@@ -164,6 +166,14 @@ void AppLauncherHandler::RegisterMessages() { |
registrar_.Add(this, chrome::NOTIFICATION_APP_INSTALLED_TO_NTP, |
content::Source<WebContents>(web_ui()->GetWebContents())); |
+ // Some tests don't have a local state. |
+ if (g_browser_process->local_state()) { |
+ local_state_pref_change_registrar_.Init(g_browser_process->local_state()); |
+ local_state_pref_change_registrar_.Add( |
+ apps::prefs::kShowAppLauncherPromo, |
+ base::Bind(&AppLauncherHandler::OnLocalStatePreferenceChanged, |
+ base::Unretained(this))); |
+ } |
web_ui()->RegisterMessageCallback("getApps", |
base::Bind(&AppLauncherHandler::HandleGetApps, |
base::Unretained(this))); |
@@ -194,6 +204,9 @@ void AppLauncherHandler::RegisterMessages() { |
web_ui()->RegisterMessageCallback("recordAppLaunchByURL", |
base::Bind(&AppLauncherHandler::HandleRecordAppLaunchByUrl, |
base::Unretained(this))); |
+ web_ui()->RegisterMessageCallback("stopShowingAppLauncherPromo", |
+ base::Bind(&AppLauncherHandler::StopShowingAppLauncherPromo, |
+ base::Unretained(this))); |
} |
void AppLauncherHandler::Observe(int type, |
@@ -391,12 +404,13 @@ void AppLauncherHandler::HandleGetApps(const ListValue* args) { |
// the apps as they change. |
if (!has_loaded_apps_) { |
base::Closure callback = base::Bind( |
- &AppLauncherHandler::OnPreferenceChanged, |
+ &AppLauncherHandler::OnExtensionPreferenceChanged, |
base::Unretained(this)); |
- pref_change_registrar_.Init( |
+ extension_pref_change_registrar_.Init( |
extension_service_->extension_prefs()->pref_service()); |
- pref_change_registrar_.Add(ExtensionPrefs::kExtensionsPref, callback); |
- pref_change_registrar_.Add(prefs::kNtpAppPageNames, callback); |
+ extension_pref_change_registrar_.Add(ExtensionPrefs::kExtensionsPref, |
+ callback); |
+ extension_pref_change_registrar_.Add(prefs::kNtpAppPageNames, callback); |
registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED, |
content::Source<Profile>(profile)); |
@@ -662,6 +676,12 @@ void AppLauncherHandler::HandleRecordAppLaunchByUrl( |
RecordAppLaunchByUrl(Profile::FromWebUI(web_ui()), url, bucket); |
} |
+void AppLauncherHandler::StopShowingAppLauncherPromo( |
+ const base::ListValue* args) { |
+ g_browser_process->local_state()->SetBoolean( |
+ apps::prefs::kShowAppLauncherPromo, false); |
+} |
+ |
void AppLauncherHandler::OnFaviconForApp( |
scoped_ptr<AppInstallInfo> install_info, |
const history::FaviconImageResult& image_result) { |
@@ -696,12 +716,19 @@ void AppLauncherHandler::SetAppToBeHighlighted() { |
highlight_app_id_.clear(); |
} |
-void AppLauncherHandler::OnPreferenceChanged() { |
+void AppLauncherHandler::OnExtensionPreferenceChanged() { |
DictionaryValue dictionary; |
FillAppDictionary(&dictionary); |
web_ui()->CallJavascriptFunction("ntp.appsPrefChangeCallback", dictionary); |
} |
+void AppLauncherHandler::OnLocalStatePreferenceChanged() { |
+ web_ui()->CallJavascriptFunction( |
+ "ntp.appLauncherPromoPrefChangeCallback", |
+ base::FundamentalValue(g_browser_process->local_state()->GetBoolean( |
+ apps::prefs::kShowAppLauncherPromo))); |
+} |
+ |
// static |
void AppLauncherHandler::RegisterUserPrefs(PrefRegistrySyncable* registry) { |
registry->RegisterListPref(prefs::kNtpAppPageNames, |