Index: chrome/browser/ui/webui/chromeos/login/kiosk_app_menu_handler.cc |
diff --git a/chrome/browser/ui/webui/chromeos/login/kiosk_app_menu_handler.cc b/chrome/browser/ui/webui/chromeos/login/kiosk_app_menu_handler.cc |
index cfbd1dacc156e4c457de13ee6ccf3ff34e7e7b83..2b5f0087f910e1388fbb1217bc61c804d0aff181 100644 |
--- a/chrome/browser/ui/webui/chromeos/login/kiosk_app_menu_handler.cc |
+++ b/chrome/browser/ui/webui/chromeos/login/kiosk_app_menu_handler.cc |
@@ -22,8 +22,19 @@ |
namespace chromeos { |
+namespace { |
+ |
+// JS functions that define new and old kiosk UI API. |
+const char kKioskSetAppsNewAPI[] = "login.AccountPickerScreen.setApps"; |
+const char kKioskSetAppsOldAPI[] = "login.AppsMenuButton.setApps"; |
+const char kKioskShowErrorNewAPI[] = "login.AccountPickerScreen.showAppError"; |
+const char kKioskShowErrorOldAPI[] = "login.AppsMenuButton.showError"; |
+ |
+} // namespace |
+ |
KioskAppMenuHandler::KioskAppMenuHandler() |
- : weak_ptr_factory_(this) { |
+ : weak_ptr_factory_(this), |
+ is_webui_initialized_(false) { |
KioskAppManager::Get()->AddObserver(this); |
} |
@@ -60,6 +71,9 @@ void KioskAppMenuHandler::RegisterMessages() { |
} |
void KioskAppMenuHandler::SendKioskApps() { |
+ if (!is_webui_initialized_) |
+ return; |
+ |
KioskAppManager::Apps apps; |
KioskAppManager::Get()->GetApps(&apps); |
@@ -68,6 +82,7 @@ void KioskAppMenuHandler::SendKioskApps() { |
const KioskAppManager::App& app_data = apps[i]; |
scoped_ptr<base::DictionaryValue> app_info(new base::DictionaryValue); |
+ app_info->SetBoolean("isApp", true); |
app_info->SetString("id", app_data.app_id); |
app_info->SetString("label", app_data.name); |
@@ -80,12 +95,16 @@ void KioskAppMenuHandler::SendKioskApps() { |
apps_list.Append(app_info.release()); |
} |
- web_ui()->CallJavascriptFunction("login.AppsMenuButton.setApps", |
- apps_list); |
+ bool new_kiosk_ui = !CommandLine::ForCurrentProcess()-> |
+ HasSwitch(switches::kDisableNewKioskUI); |
+ web_ui()->CallJavascriptFunction(new_kiosk_ui ? |
+ kKioskSetAppsNewAPI : kKioskSetAppsOldAPI, |
+ apps_list); |
} |
void KioskAppMenuHandler::HandleInitializeKioskApps( |
const base::ListValue* args) { |
+ is_webui_initialized_ = true; |
SendKioskApps(); |
} |
@@ -105,8 +124,11 @@ void KioskAppMenuHandler::HandleCheckKioskAppLaunchError( |
KioskAppLaunchError::Clear(); |
const std::string error_message = KioskAppLaunchError::GetErrorMessage(error); |
- web_ui()->CallJavascriptFunction("login.AppsMenuButton.showError", |
- base::StringValue(error_message)); |
+ bool new_kiosk_ui = !CommandLine::ForCurrentProcess()-> |
+ HasSwitch(switches::kDisableNewKioskUI); |
+ web_ui()->CallJavascriptFunction(new_kiosk_ui ? |
+ kKioskShowErrorNewAPI : kKioskShowErrorOldAPI, |
+ base::StringValue(error_message)); |
} |
void KioskAppMenuHandler::OnKioskAppsSettingsChanged() { |