Chromium Code Reviews| Index: chrome/browser/ui/webui/extensions/chromeos/kiosk_apps_handler.cc |
| diff --git a/chrome/browser/ui/webui/options/chromeos/kiosk_apps_handler.cc b/chrome/browser/ui/webui/extensions/chromeos/kiosk_apps_handler.cc |
| similarity index 69% |
| rename from chrome/browser/ui/webui/options/chromeos/kiosk_apps_handler.cc |
| rename to chrome/browser/ui/webui/extensions/chromeos/kiosk_apps_handler.cc |
| index 7c7ee913145938c0592e8ed7f6e563755ed436c1..d5ae35d55fc16a4c2167e44cad7b469e241e3946 100644 |
| --- a/chrome/browser/ui/webui/options/chromeos/kiosk_apps_handler.cc |
| +++ b/chrome/browser/ui/webui/extensions/chromeos/kiosk_apps_handler.cc |
| @@ -2,7 +2,7 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -#include "chrome/browser/ui/webui/options/chromeos/kiosk_apps_handler.h" |
| +#include "chrome/browser/ui/webui/extensions/chromeos/kiosk_apps_handler.h" |
| #include <algorithm> |
| #include <set> |
| @@ -10,15 +10,18 @@ |
| #include <vector> |
| #include "base/bind.h" |
| -#include "base/lazy_instance.h" |
| +#include "base/chromeos/chromeos_version.h" |
| +#include "base/command_line.h" |
| #include "base/memory/scoped_ptr.h" |
| -#include "base/observer_list.h" |
| -#include "base/string_util.h" |
| #include "base/values.h" |
| #include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h" |
| +#include "chrome/browser/chromeos/login/user_manager.h" |
| +#include "chrome/browser/chromeos/settings/cros_settings.h" |
| +#include "chrome/browser/chromeos/settings/cros_settings_names.h" |
| #include "chrome/common/extensions/extension.h" |
| -#include "content/public/browser/browser_thread.h" |
| +#include "chromeos/chromeos_switches.h" |
| #include "content/public/browser/web_ui.h" |
| +#include "content/public/browser/web_ui_data_source.h" |
| #include "googleurl/src/gurl.h" |
| #include "grit/chromium_strings.h" |
| #include "grit/generated_resources.h" |
| @@ -26,7 +29,6 @@ |
| #include "ui/webui/web_ui_util.h" |
| namespace chromeos { |
| -namespace options { |
| namespace { |
| @@ -97,8 +99,8 @@ KioskAppsHandler::~KioskAppsHandler() { |
| } |
| void KioskAppsHandler::RegisterMessages() { |
| - web_ui()->RegisterMessageCallback("getKioskApps", |
| - base::Bind(&KioskAppsHandler::HandleGetKioskApps, |
| + web_ui()->RegisterMessageCallback("getKioskAppSettings", |
| + base::Bind(&KioskAppsHandler::HandleGetKioskAppSettings, |
| base::Unretained(this))); |
| web_ui()->RegisterMessageCallback("addKioskApp", |
| base::Bind(&KioskAppsHandler::HandleAddKioskApp, |
| @@ -112,55 +114,66 @@ void KioskAppsHandler::RegisterMessages() { |
| web_ui()->RegisterMessageCallback("disableKioskAutoLaunch", |
| base::Bind(&KioskAppsHandler::HandleDisableKioskAutoLaunch, |
| base::Unretained(this))); |
| + web_ui()->RegisterMessageCallback("setDisableBailoutShortcut", |
| + base::Bind(&KioskAppsHandler::HandleSetDisableBailoutShortcut, |
| + base::Unretained(this))); |
| } |
| -void KioskAppsHandler::GetLocalizedValues( |
| - base::DictionaryValue* localized_strings) { |
| - DCHECK(localized_strings); |
| - |
| - RegisterTitle(localized_strings, |
| - "kioskOverlayTitle", |
| - IDS_OPTIONS_KIOSK_OVERLAY_TITLE); |
| - |
| - localized_strings->SetString( |
| +void KioskAppsHandler::GetLocalizedValues(content::WebUIDataSource* source) { |
| + source->AddBoolean( |
| + "enableKiosk", |
| + !CommandLine::ForCurrentProcess()->HasSwitch( |
|
Dan Beam
2013/05/30 21:14:55
nit: indent off
xiyuan
2013/05/30 23:03:38
Done.
|
| + chromeos::switches::kDisableAppMode) && |
| + (chromeos::UserManager::Get()->IsCurrentUserOwner() || |
| + !base::chromeos::IsRunningOnChromeOS())); |
| + source->AddString( |
| + "addKioskAppButton", |
| + l10n_util::GetStringUTF16(IDS_EXTENSIONS_ADD_KIOSK_APP_BUTTON)); |
| + source->AddString( |
| + "kioskOverlayTitle", |
| + l10n_util::GetStringUTF16(IDS_OPTIONS_KIOSK_OVERLAY_TITLE)); |
| + source->AddString( |
| "addKioskApp", |
| l10n_util::GetStringUTF16(IDS_OPTIONS_KIOSK_ADD_APP)); |
| - localized_strings->SetString( |
| + source->AddString( |
| "kioskAppIdEditHint", |
| l10n_util::GetStringUTF16(IDS_OPTIONS_KIOSK_ADD_APP_HINT)); |
| - localized_strings->SetString( |
| + source->AddString( |
| "enableAutoLaunchButton", |
| l10n_util::GetStringUTF16(IDS_OPTIONS_KIOSK_ENABLE_AUTO_LAUNCH)); |
| - localized_strings->SetString( |
| + source->AddString( |
| "disableAutoLaunchButton", |
| l10n_util::GetStringUTF16(IDS_OPTIONS_KIOSK_DISABLE_AUTO_LAUNCH)); |
| - localized_strings->SetString( |
| + source->AddString( |
| "autoLaunch", |
| l10n_util::GetStringUTF16(IDS_OPTIONS_KIOSK_AUTO_LAUNCH)); |
| - localized_strings->SetString( |
| + source->AddString( |
| "invalidApp", |
| l10n_util::GetStringUTF16(IDS_OPTIONS_KIOSK_INVALID_APP)); |
| - localized_strings->SetString( |
| + source->AddString( |
| "kioskDiableBailoutShortcutLabel", |
| l10n_util::GetStringUTF16( |
| IDS_OPTIONS_KIOSK_DISABLE_BAILOUT_SHORTCUT_LABEL)); |
| - localized_strings->SetString( |
| + source->AddString( |
| "kioskDisableBailoutShortcutWarningBold", |
| l10n_util::GetStringUTF16( |
| IDS_OPTIONS_KIOSK_DISABLE_BAILOUT_SHORTCUT_WARNING_BOLD)); |
| const string16 product_os_name = |
| l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_OS_NAME); |
| - localized_strings->SetString( |
| + source->AddString( |
| "kioskDisableBailoutShortcutWarning", |
| l10n_util::GetStringFUTF16( |
| IDS_OPTIONS_KIOSK_DISABLE_BAILOUT_SHORTCUT_WARNING_FORMAT, |
| product_os_name)); |
| - localized_strings->SetString( |
| + source->AddString( |
| "kioskDisableBailoutShortcutConfirm", |
| l10n_util::GetStringUTF16(IDS_CONFIRM_MESSAGEBOX_YES_BUTTON_LABEL)); |
| - localized_strings->SetString( |
| + source->AddString( |
| "kioskDisableBailoutShortcutCancel", |
| l10n_util::GetStringUTF16(IDS_CONFIRM_MESSAGEBOX_NO_BUTTON_LABEL)); |
| + source->AddString( |
| + "done", |
| + l10n_util::GetStringUTF16(IDS_DONE)); |
|
Dan Beam
2013/05/30 21:14:55
nit: this could probably fit in one line
xiyuan
2013/05/30 23:03:38
Done.
|
| } |
| void KioskAppsHandler::OnKioskAppDataChanged(const std::string& app_id) { |
| @@ -171,39 +184,54 @@ void KioskAppsHandler::OnKioskAppDataChanged(const std::string& app_id) { |
| base::DictionaryValue app_dict; |
| PopulateAppDict(app_data, &app_dict); |
| - web_ui()->CallJavascriptFunction("options.KioskAppsOverlay.updateApp", |
| + web_ui()->CallJavascriptFunction("extensions.KioskAppsOverlay.updateApp", |
| app_dict); |
| } |
| void KioskAppsHandler::OnKioskAppDataLoadFailure(const std::string& app_id) { |
| base::StringValue app_id_value(app_id); |
| - web_ui()->CallJavascriptFunction("options.KioskAppsOverlay.showError", |
| + web_ui()->CallJavascriptFunction("extensions.KioskAppsOverlay.showError", |
| app_id_value); |
| } |
| -void KioskAppsHandler::SendKioskApps() { |
| +void KioskAppsHandler::OnKioskAppsSettingsChanged() { |
| + SendKioskAppSettings(); |
| +} |
| + |
| +void KioskAppsHandler::SendKioskAppSettings() { |
| if (!initialized_) |
| return; |
| + bool enable_bailout_shortcut; |
| + if (!CrosSettings::Get()->GetBoolean( |
| + kAccountsPrefDeviceLocalAccountAutoLoginBailoutEnabled, |
| + &enable_bailout_shortcut)) { |
| + enable_bailout_shortcut = true; |
| + } |
| + |
| + base::DictionaryValue settings; |
| + settings.SetBoolean("disableBailout", !enable_bailout_shortcut); |
| + |
| KioskAppManager::Apps apps; |
| kiosk_app_manager_->GetApps(&apps); |
| - base::ListValue apps_list; |
| + scoped_ptr<base::ListValue> apps_list(new base::ListValue); |
| for (size_t i = 0; i < apps.size(); ++i) { |
| const KioskAppManager::App& app_data = apps[i]; |
| scoped_ptr<base::DictionaryValue> app_info(new base::DictionaryValue); |
| PopulateAppDict(app_data, app_info.get()); |
| - apps_list.Append(app_info.release()); |
| + apps_list->Append(app_info.release()); |
| } |
| + settings.SetWithoutPathExpansion("apps", apps_list.release()); |
| - web_ui()->CallJavascriptFunction("options.KioskAppsOverlay.setApps", |
| - apps_list); |
| + web_ui()->CallJavascriptFunction("extensions.KioskAppsOverlay.setSettings", |
| + settings); |
| } |
| -void KioskAppsHandler::HandleGetKioskApps(const base::ListValue* args) { |
| +void KioskAppsHandler::HandleGetKioskAppSettings(const base::ListValue* args) { |
| initialized_ = true; |
| - SendKioskApps(); |
| + SendKioskAppSettings(); |
| } |
| void KioskAppsHandler::HandleAddKioskApp(const base::ListValue* args) { |
| @@ -246,5 +274,14 @@ void KioskAppsHandler::HandleDisableKioskAutoLaunch( |
| kiosk_app_manager_->SetAutoLaunchApp(""); |
| } |
| -} // namespace options |
| +void KioskAppsHandler::HandleSetDisableBailoutShortcut( |
| + const base::ListValue* args) { |
| + bool disable_bailout_shortcut; |
| + CHECK(args->GetBoolean(0, &disable_bailout_shortcut)); |
| + |
| + CrosSettings::Get()->SetBoolean( |
| + kAccountsPrefDeviceLocalAccountAutoLoginBailoutEnabled, |
| + !disable_bailout_shortcut); |
| +} |
| + |
| } // namespace chromeos |