#include "base/bind.h"
#include "base/command_line.h"
#include "base/memory/scoped_ptr.h"
+#include "base/strings/string_util.h"
#include "base/sys_info.h"
#include "base/values.h"
-#include "chrome/browser/chromeos/login/user_manager.h"
#include "chrome/browser/chromeos/settings/cros_settings.h"
-#include "chrome/common/extensions/extension_constants.h"
+#include "chrome/grit/chromium_strings.h"
+#include "chrome/grit/generated_resources.h"
#include "chromeos/chromeos_switches.h"
#include "chromeos/settings/cros_settings_names.h"
+#include "components/crx_file/id_util.h"
+#include "components/user_manager/user_manager.h"
#include "content/public/browser/web_ui.h"
#include "content/public/browser/web_ui_data_source.h"
-#include "extensions/common/extension.h"
-#include "grit/chromium_strings.h"
-#include "grit/generated_resources.h"
+#include "extensions/common/extension_urls.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/webui/web_ui_util.h"
#include "url/gurl.h"
if (!app_data.icon.isNull())
icon_url = webui::GetBitmapDataUrl(*app_data.icon.bitmap());
+ // The items which are to be written into app_dict are also described in
+ // chrome/browser/resources/extensions/chromeos/kiosk_app_list.js in @typedef
+ // for AppDict. Please update it whenever you add or remove any keys here.
app_dict->SetString("id", app_data.app_id);
app_dict->SetString("name", app_data.name);
app_dict->SetString("iconURL", icon_url);
// 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)) {
+ if (crx_file::id_util::IdIsValid(input)) {
*app_id = input;
return true;
}
return false;
const std::string candidate_id = path.substr(last_slash + 1);
- if (!extensions::Extension::IdIsValid(candidate_id))
+ if (!crx_file::id_util::IdIsValid(candidate_id))
return false;
*app_id = candidate_id;
: kiosk_app_manager_(KioskAppManager::Get()),
initialized_(false),
is_kiosk_enabled_(false),
+ is_auto_launch_enabled_(false),
weak_ptr_factory_(this) {
kiosk_app_manager_->AddObserver(this);
}
}
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("extensions.KioskAppsOverlay.updateApp",
- app_dict);
+ UpdateApp(app_id);
}
void KioskAppsHandler::OnKioskAppDataLoadFailure(const std::string& app_id) {
- base::StringValue app_id_value(app_id);
- web_ui()->CallJavascriptFunction("extensions.KioskAppsOverlay.showError",
- app_id_value);
+ ShowError(app_id);
}
+void KioskAppsHandler::OnKioskExtensionLoadedInCache(
+ const std::string& app_id) {
+ UpdateApp(app_id);
+}
-void KioskAppsHandler::OnGetConsumerKioskModeStatus(
- chromeos::KioskAppManager::ConsumerKioskModeStatus status) {
+void KioskAppsHandler::OnKioskExtensionDownloadFailed(
+ const std::string& app_id) {
+ ShowError(app_id);
+}
+
+void KioskAppsHandler::OnGetConsumerKioskAutoLaunchStatus(
+ chromeos::KioskAppManager::ConsumerKioskAutoLaunchStatus status) {
initialized_ = true;
- is_kiosk_enabled_ =
- ((status == KioskAppManager::CONSUMER_KIOSK_MODE_ENABLED) &&
- chromeos::UserManager::Get()->IsCurrentUserOwner()) ||
+ is_kiosk_enabled_ = user_manager::UserManager::Get()->IsCurrentUserOwner() ||
+ !base::SysInfo::IsRunningOnChromeOS();
+
+ is_auto_launch_enabled_ =
+ status == KioskAppManager::CONSUMER_KIOSK_AUTO_LAUNCH_ENABLED ||
!base::SysInfo::IsRunningOnChromeOS();
if (is_kiosk_enabled_) {
- base::FundamentalValue enabled(is_kiosk_enabled_);
+ base::DictionaryValue kiosk_params;
+ kiosk_params.SetBoolean("kioskEnabled", is_kiosk_enabled_);
+ kiosk_params.SetBoolean("autoLaunchEnabled", is_auto_launch_enabled_);
web_ui()->CallJavascriptFunction("extensions.KioskAppsOverlay.enableKiosk",
- enabled);
+ kiosk_params);
}
}
base::DictionaryValue settings;
settings.SetBoolean("disableBailout", !enable_bailout_shortcut);
+ settings.SetBoolean("hasAutoLaunchApp",
+ !kiosk_app_manager_->GetAutoLaunchApp().empty());
KioskAppManager::Apps apps;
kiosk_app_manager_->GetApps(&apps);
void KioskAppsHandler::HandleInitializeKioskAppSettings(
const base::ListValue* args) {
- KioskAppManager::Get()->GetConsumerKioskModeStatus(
- base::Bind(&KioskAppsHandler::OnGetConsumerKioskModeStatus,
+ KioskAppManager::Get()->GetConsumerKioskAutoLaunchStatus(
+ base::Bind(&KioskAppsHandler::OnGetConsumerKioskAutoLaunchStatus,
weak_ptr_factory_.GetWeakPtr()));
}
void KioskAppsHandler::HandleEnableKioskAutoLaunch(
const base::ListValue* args) {
- if (!initialized_ || !is_kiosk_enabled_)
+ if (!initialized_ || !is_kiosk_enabled_ || !is_auto_launch_enabled_)
return;
std::string app_id;
void KioskAppsHandler::HandleDisableKioskAutoLaunch(
const base::ListValue* args) {
- if (!initialized_ || !is_kiosk_enabled_)
+ if (!initialized_ || !is_kiosk_enabled_ || !is_auto_launch_enabled_)
return;
std::string app_id;
!disable_bailout_shortcut);
}
+void KioskAppsHandler::UpdateApp(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("extensions.KioskAppsOverlay.updateApp",
+ app_dict);
+}
+
+void KioskAppsHandler::ShowError(const std::string& app_id) {
+ base::StringValue app_id_value(app_id);
+ web_ui()->CallJavascriptFunction("extensions.KioskAppsOverlay.showError",
+ app_id_value);
+
+ kiosk_app_manager_->RemoveApp(app_id);
+}
+
} // namespace chromeos