#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;
}
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::OnKioskExtensionDownloadFailed(
+ const std::string& app_id) {
+ ShowError(app_id);
+}
void KioskAppsHandler::OnGetConsumerKioskAutoLaunchStatus(
chromeos::KioskAppManager::ConsumerKioskAutoLaunchStatus status) {
initialized_ = true;
- is_kiosk_enabled_ =
- chromeos::UserManager::Get()->IsCurrentUserOwner() ||
- !base::SysInfo::IsRunningOnChromeOS();
+ is_kiosk_enabled_ = user_manager::UserManager::Get()->IsCurrentUserOwner() ||
+ !base::SysInfo::IsRunningOnChromeOS();
is_auto_launch_enabled_ =
status == KioskAppManager::CONSUMER_KIOSK_AUTO_LAUNCH_ENABLED ||
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);
!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