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 9f361ed23a29c2150950721ab2a2bc6b3ee6f01e..d0136b20d2ba960dfdf1088a68ff9607bcfebf68 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 |
@@ -15,6 +15,7 @@ |
#include "base/values.h" |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/chrome_notification_types.h" |
+#include "chrome/browser/chromeos/app_mode/arc/arc_kiosk_app_manager.h" |
#include "chrome/browser/chromeos/app_mode/kiosk_app_launch_error.h" |
#include "chrome/browser/chromeos/login/existing_user_controller.h" |
#include "chrome/browser/chromeos/login/screens/network_error.h" |
@@ -47,11 +48,13 @@ KioskAppMenuHandler::KioskAppMenuHandler( |
weak_ptr_factory_(this) { |
KioskAppManager::Get()->AddObserver(this); |
network_state_informer_->AddObserver(this); |
+ ArcKioskAppManager::Get()->AddObserver(this); |
} |
KioskAppMenuHandler::~KioskAppMenuHandler() { |
KioskAppManager::Get()->RemoveObserver(this); |
network_state_informer_->RemoveObserver(this); |
+ ArcKioskAppManager::Get()->RemoveObserver(this); |
} |
void KioskAppMenuHandler::GetLocalizedStrings( |
@@ -103,9 +106,13 @@ void KioskAppMenuHandler::SendKioskApps() { |
for (size_t i = 0; i < apps.size(); ++i) { |
const KioskAppManager::App& app_data = apps[i]; |
- std::unique_ptr<base::DictionaryValue> app_info(new base::DictionaryValue); |
+ std::unique_ptr<base::DictionaryValue> app_info( |
+ new base::DictionaryValue()); |
app_info->SetBoolean("isApp", true); |
app_info->SetString("id", app_data.app_id); |
+ app_info->SetBoolean("isAndroidApp", false); |
+ // Unused for native apps. Added for consistency with Android apps. |
+ app_info->SetString("account_email", app_data.account_id.GetUserEmail()); |
app_info->SetString("label", app_data.name); |
std::string icon_url; |
@@ -122,6 +129,26 @@ void KioskAppMenuHandler::SendKioskApps() { |
apps_list.Append(std::move(app_info)); |
} |
+ const auto& arc_apps = ArcKioskAppManager::Get()->GetAllApps(); |
+ for (size_t i = 0; i < arc_apps.size(); ++i) { |
+ std::unique_ptr<base::DictionaryValue> app_info( |
+ new base::DictionaryValue()); |
+ app_info->SetBoolean("isApp", true); |
+ app_info->SetBoolean("isAndroidApp", true); |
+ app_info->SetString("id", arc_apps[i].app_info().package_name()); |
+ app_info->SetString("account_email", |
+ arc_apps[i].account_id().GetUserEmail()); |
+ app_info->SetString("label", arc_apps[i].name()); |
+ |
+ std::string icon_url = |
+ webui::GetBitmapDataUrl(*ResourceBundle::GetSharedInstance() |
+ .GetImageNamed(IDR_APP_DEFAULT_ICON) |
+ .ToSkBitmap()); |
+ app_info->SetString("iconUrl", icon_url); |
+ |
+ apps_list.Append(std::move(app_info)); |
+ } |
+ |
web_ui()->CallJavascriptFunctionUnsafe( |
EnableNewKioskUI() ? kKioskSetAppsNewAPI : kKioskSetAppsOldAPI, |
apps_list); |
@@ -173,4 +200,8 @@ void KioskAppMenuHandler::UpdateState(NetworkError::ErrorReason reason) { |
KioskAppManager::Get()->RetryFailedAppDataFetch(); |
} |
+void KioskAppMenuHandler::OnArcKioskAppsChanged() { |
+ SendKioskApps(); |
+} |
+ |
} // namespace chromeos |