| Index: chrome/browser/ui/webui/options/chromeos/kiosk_apps_handler.cc
|
| diff --git a/chrome/browser/ui/webui/options/chromeos/kiosk_apps_handler.cc b/chrome/browser/ui/webui/options/chromeos/kiosk_apps_handler.cc
|
| deleted file mode 100644
|
| index 7c7ee913145938c0592e8ed7f6e563755ed436c1..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/ui/webui/options/chromeos/kiosk_apps_handler.cc
|
| +++ /dev/null
|
| @@ -1,250 +0,0 @@
|
| -// Copyright 2013 The Chromium Authors. All rights reserved.
|
| -// 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 <algorithm>
|
| -#include <set>
|
| -#include <string>
|
| -#include <vector>
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/lazy_instance.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/common/extensions/extension.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| -#include "content/public/browser/web_ui.h"
|
| -#include "googleurl/src/gurl.h"
|
| -#include "grit/chromium_strings.h"
|
| -#include "grit/generated_resources.h"
|
| -#include "ui/base/l10n/l10n_util.h"
|
| -#include "ui/webui/web_ui_util.h"
|
| -
|
| -namespace chromeos {
|
| -namespace options {
|
| -
|
| -namespace {
|
| -
|
| -// Populates app info dictionary with |app_data|.
|
| -void PopulateAppDict(const KioskAppManager::App& app_data,
|
| - base::DictionaryValue* app_dict) {
|
| - std::string icon_url("chrome://theme/IDR_APP_DEFAULT_ICON");
|
| -
|
| - // TODO(xiyuan): Replace data url with a URLDataSource.
|
| - if (!app_data.icon.isNull())
|
| - icon_url = webui::GetBitmapDataUrl(*app_data.icon.bitmap());
|
| -
|
| - app_dict->SetString("id", app_data.app_id);
|
| - app_dict->SetString("name", app_data.name);
|
| - app_dict->SetString("iconURL", icon_url);
|
| - app_dict->SetBoolean(
|
| - "autoLaunch",
|
| - KioskAppManager::Get()->GetAutoLaunchApp() == app_data.app_id);
|
| - app_dict->SetBoolean("isLoading", app_data.is_loading);
|
| -}
|
| -
|
| -// Sanitize app id input value and extracts app id out of it.
|
| -// Returns false if an app id could not be derived out of the input.
|
| -bool ExtractsAppIdFromInput(const std::string& input,
|
| - std::string* app_id) {
|
| - if (extensions::Extension::IdIsValid(input)) {
|
| - *app_id = input;
|
| - return true;
|
| - }
|
| -
|
| - GURL webstore_url = GURL(input);
|
| - if (!webstore_url.is_valid())
|
| - return false;
|
| -
|
| - GURL webstore_base_url =
|
| - GURL(extension_urls::GetWebstoreItemDetailURLPrefix());
|
| -
|
| - if (webstore_url.scheme() != webstore_base_url.scheme() ||
|
| - webstore_url.host() != webstore_base_url.host() ||
|
| - !StartsWithASCII(
|
| - webstore_url.path(), webstore_base_url.path(), true)) {
|
| - return false;
|
| - }
|
| -
|
| - const std::string path = webstore_url.path();
|
| - const size_t last_slash = path.rfind('/');
|
| - if (last_slash == std::string::npos)
|
| - return false;
|
| -
|
| - const std::string candidate_id = path.substr(last_slash + 1);
|
| - if (!extensions::Extension::IdIsValid(candidate_id))
|
| - return false;
|
| -
|
| - *app_id = candidate_id;
|
| - return true;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -KioskAppsHandler::KioskAppsHandler()
|
| - : kiosk_app_manager_(KioskAppManager::Get()),
|
| - initialized_(false) {
|
| - kiosk_app_manager_->AddObserver(this);
|
| -}
|
| -
|
| -KioskAppsHandler::~KioskAppsHandler() {
|
| - kiosk_app_manager_->RemoveObserver(this);
|
| -}
|
| -
|
| -void KioskAppsHandler::RegisterMessages() {
|
| - web_ui()->RegisterMessageCallback("getKioskApps",
|
| - base::Bind(&KioskAppsHandler::HandleGetKioskApps,
|
| - base::Unretained(this)));
|
| - web_ui()->RegisterMessageCallback("addKioskApp",
|
| - base::Bind(&KioskAppsHandler::HandleAddKioskApp,
|
| - base::Unretained(this)));
|
| - web_ui()->RegisterMessageCallback("removeKioskApp",
|
| - base::Bind(&KioskAppsHandler::HandleRemoveKioskApp,
|
| - base::Unretained(this)));
|
| - web_ui()->RegisterMessageCallback("enableKioskAutoLaunch",
|
| - base::Bind(&KioskAppsHandler::HandleEnableKioskAutoLaunch,
|
| - base::Unretained(this)));
|
| - web_ui()->RegisterMessageCallback("disableKioskAutoLaunch",
|
| - base::Bind(&KioskAppsHandler::HandleDisableKioskAutoLaunch,
|
| - 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(
|
| - "addKioskApp",
|
| - l10n_util::GetStringUTF16(IDS_OPTIONS_KIOSK_ADD_APP));
|
| - localized_strings->SetString(
|
| - "kioskAppIdEditHint",
|
| - l10n_util::GetStringUTF16(IDS_OPTIONS_KIOSK_ADD_APP_HINT));
|
| - localized_strings->SetString(
|
| - "enableAutoLaunchButton",
|
| - l10n_util::GetStringUTF16(IDS_OPTIONS_KIOSK_ENABLE_AUTO_LAUNCH));
|
| - localized_strings->SetString(
|
| - "disableAutoLaunchButton",
|
| - l10n_util::GetStringUTF16(IDS_OPTIONS_KIOSK_DISABLE_AUTO_LAUNCH));
|
| - localized_strings->SetString(
|
| - "autoLaunch",
|
| - l10n_util::GetStringUTF16(IDS_OPTIONS_KIOSK_AUTO_LAUNCH));
|
| - localized_strings->SetString(
|
| - "invalidApp",
|
| - l10n_util::GetStringUTF16(IDS_OPTIONS_KIOSK_INVALID_APP));
|
| - localized_strings->SetString(
|
| - "kioskDiableBailoutShortcutLabel",
|
| - l10n_util::GetStringUTF16(
|
| - IDS_OPTIONS_KIOSK_DISABLE_BAILOUT_SHORTCUT_LABEL));
|
| - localized_strings->SetString(
|
| - "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(
|
| - "kioskDisableBailoutShortcutWarning",
|
| - l10n_util::GetStringFUTF16(
|
| - IDS_OPTIONS_KIOSK_DISABLE_BAILOUT_SHORTCUT_WARNING_FORMAT,
|
| - product_os_name));
|
| - localized_strings->SetString(
|
| - "kioskDisableBailoutShortcutConfirm",
|
| - l10n_util::GetStringUTF16(IDS_CONFIRM_MESSAGEBOX_YES_BUTTON_LABEL));
|
| - localized_strings->SetString(
|
| - "kioskDisableBailoutShortcutCancel",
|
| - l10n_util::GetStringUTF16(IDS_CONFIRM_MESSAGEBOX_NO_BUTTON_LABEL));
|
| -}
|
| -
|
| -void KioskAppsHandler::OnKioskAppDataChanged(const std::string& app_id) {
|
| - KioskAppManager::App app_data;
|
| - if (!kiosk_app_manager_->GetApp(app_id, &app_data))
|
| - return;
|
| -
|
| - base::DictionaryValue app_dict;
|
| - PopulateAppDict(app_data, &app_dict);
|
| -
|
| - web_ui()->CallJavascriptFunction("options.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",
|
| - app_id_value);
|
| -}
|
| -
|
| -void KioskAppsHandler::SendKioskApps() {
|
| - if (!initialized_)
|
| - return;
|
| -
|
| - KioskAppManager::Apps apps;
|
| - kiosk_app_manager_->GetApps(&apps);
|
| -
|
| - base::ListValue apps_list;
|
| - 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());
|
| - }
|
| -
|
| - web_ui()->CallJavascriptFunction("options.KioskAppsOverlay.setApps",
|
| - apps_list);
|
| -}
|
| -
|
| -void KioskAppsHandler::HandleGetKioskApps(const base::ListValue* args) {
|
| - initialized_ = true;
|
| - SendKioskApps();
|
| -}
|
| -
|
| -void KioskAppsHandler::HandleAddKioskApp(const base::ListValue* args) {
|
| - std::string input;
|
| - CHECK(args->GetString(0, &input));
|
| -
|
| - std::string app_id;
|
| - if (!ExtractsAppIdFromInput(input, &app_id)) {
|
| - OnKioskAppDataLoadFailure(input);
|
| - return;
|
| - }
|
| -
|
| - kiosk_app_manager_->AddApp(app_id);
|
| -}
|
| -
|
| -void KioskAppsHandler::HandleRemoveKioskApp(const base::ListValue* args) {
|
| - std::string app_id;
|
| - CHECK(args->GetString(0, &app_id));
|
| -
|
| - kiosk_app_manager_->RemoveApp(app_id);
|
| -}
|
| -
|
| -void KioskAppsHandler::HandleEnableKioskAutoLaunch(
|
| - const base::ListValue* args) {
|
| - std::string app_id;
|
| - CHECK(args->GetString(0, &app_id));
|
| -
|
| - kiosk_app_manager_->SetAutoLaunchApp(app_id);
|
| -}
|
| -
|
| -void KioskAppsHandler::HandleDisableKioskAutoLaunch(
|
| - const base::ListValue* args) {
|
| - std::string app_id;
|
| - CHECK(args->GetString(0, &app_id));
|
| -
|
| - std::string startup_app_id = kiosk_app_manager_->GetAutoLaunchApp();
|
| - if (startup_app_id != app_id)
|
| - return;
|
| -
|
| - kiosk_app_manager_->SetAutoLaunchApp("");
|
| -}
|
| -
|
| -} // namespace options
|
| -} // namespace chromeos
|
|
|