Chromium Code Reviews| 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..baed641ba830358a99177085f13d93631ad15b41 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( |
| @@ -106,6 +109,9 @@ void KioskAppMenuHandler::SendKioskApps() { |
| 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 +128,25 @@ 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); |
|
Luis Héctor Chávez
2016/11/12 18:03:08
Try to avoid parenthesesless constructors: https:/
Sergey Poromov
2016/11/14 17:23:23
Done.
|
| + 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 +198,8 @@ void KioskAppMenuHandler::UpdateState(NetworkError::ErrorReason reason) { |
| KioskAppManager::Get()->RetryFailedAppDataFetch(); |
| } |
| +void KioskAppMenuHandler::OnArcKioskAppsChanged() { |
| + SendKioskApps(); |
| +} |
| + |
| } // namespace chromeos |