| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/webui/chromeos/login/kiosk_app_menu_handler.h" | 5 #include "chrome/browser/ui/webui/chromeos/login/kiosk_app_menu_handler.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| 11 #include "base/bind.h" | 11 #include "base/bind.h" |
| 12 #include "base/command_line.h" | 12 #include "base/command_line.h" |
| 13 #include "base/strings/string_number_conversions.h" | 13 #include "base/strings/string_number_conversions.h" |
| 14 #include "base/sys_info.h" | 14 #include "base/sys_info.h" |
| 15 #include "base/values.h" | 15 #include "base/values.h" |
| 16 #include "chrome/browser/browser_process.h" | 16 #include "chrome/browser/browser_process.h" |
| 17 #include "chrome/browser/chrome_notification_types.h" | 17 #include "chrome/browser/chrome_notification_types.h" |
| 18 #include "chrome/browser/chromeos/app_mode/arc/arc_kiosk_app_manager.h" |
| 18 #include "chrome/browser/chromeos/app_mode/kiosk_app_launch_error.h" | 19 #include "chrome/browser/chromeos/app_mode/kiosk_app_launch_error.h" |
| 19 #include "chrome/browser/chromeos/login/existing_user_controller.h" | 20 #include "chrome/browser/chromeos/login/existing_user_controller.h" |
| 20 #include "chrome/browser/chromeos/login/screens/network_error.h" | 21 #include "chrome/browser/chromeos/login/screens/network_error.h" |
| 21 #include "chrome/grit/generated_resources.h" | 22 #include "chrome/grit/generated_resources.h" |
| 22 #include "chromeos/chromeos_switches.h" | 23 #include "chromeos/chromeos_switches.h" |
| 23 #include "content/public/browser/notification_details.h" | 24 #include "content/public/browser/notification_details.h" |
| 24 #include "content/public/browser/notification_service.h" | 25 #include "content/public/browser/notification_service.h" |
| 25 #include "content/public/browser/web_ui.h" | 26 #include "content/public/browser/web_ui.h" |
| 26 #include "extensions/grit/extensions_browser_resources.h" | 27 #include "extensions/grit/extensions_browser_resources.h" |
| 27 #include "ui/base/l10n/l10n_util.h" | 28 #include "ui/base/l10n/l10n_util.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 40 | 41 |
| 41 } // namespace | 42 } // namespace |
| 42 | 43 |
| 43 KioskAppMenuHandler::KioskAppMenuHandler( | 44 KioskAppMenuHandler::KioskAppMenuHandler( |
| 44 const scoped_refptr<NetworkStateInformer>& network_state_informer) | 45 const scoped_refptr<NetworkStateInformer>& network_state_informer) |
| 45 : is_webui_initialized_(false), | 46 : is_webui_initialized_(false), |
| 46 network_state_informer_(network_state_informer), | 47 network_state_informer_(network_state_informer), |
| 47 weak_ptr_factory_(this) { | 48 weak_ptr_factory_(this) { |
| 48 KioskAppManager::Get()->AddObserver(this); | 49 KioskAppManager::Get()->AddObserver(this); |
| 49 network_state_informer_->AddObserver(this); | 50 network_state_informer_->AddObserver(this); |
| 51 ArcKioskAppManager::Get()->AddObserver(this); |
| 50 } | 52 } |
| 51 | 53 |
| 52 KioskAppMenuHandler::~KioskAppMenuHandler() { | 54 KioskAppMenuHandler::~KioskAppMenuHandler() { |
| 53 KioskAppManager::Get()->RemoveObserver(this); | 55 KioskAppManager::Get()->RemoveObserver(this); |
| 54 network_state_informer_->RemoveObserver(this); | 56 network_state_informer_->RemoveObserver(this); |
| 57 ArcKioskAppManager::Get()->RemoveObserver(this); |
| 55 } | 58 } |
| 56 | 59 |
| 57 void KioskAppMenuHandler::GetLocalizedStrings( | 60 void KioskAppMenuHandler::GetLocalizedStrings( |
| 58 base::DictionaryValue* localized_strings) { | 61 base::DictionaryValue* localized_strings) { |
| 59 localized_strings->SetString( | 62 localized_strings->SetString( |
| 60 "showApps", | 63 "showApps", |
| 61 l10n_util::GetStringUTF16(IDS_KIOSK_APPS_BUTTON)); | 64 l10n_util::GetStringUTF16(IDS_KIOSK_APPS_BUTTON)); |
| 62 localized_strings->SetString( | 65 localized_strings->SetString( |
| 63 "confirmKioskAppDiagnosticModeFormat", | 66 "confirmKioskAppDiagnosticModeFormat", |
| 64 l10n_util::GetStringUTF16(IDS_LOGIN_CONFIRM_KIOSK_DIAGNOSTIC_FORMAT)); | 67 l10n_util::GetStringUTF16(IDS_LOGIN_CONFIRM_KIOSK_DIAGNOSTIC_FORMAT)); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 96 if (!is_webui_initialized_) | 99 if (!is_webui_initialized_) |
| 97 return; | 100 return; |
| 98 | 101 |
| 99 KioskAppManager::Apps apps; | 102 KioskAppManager::Apps apps; |
| 100 KioskAppManager::Get()->GetApps(&apps); | 103 KioskAppManager::Get()->GetApps(&apps); |
| 101 | 104 |
| 102 base::ListValue apps_list; | 105 base::ListValue apps_list; |
| 103 for (size_t i = 0; i < apps.size(); ++i) { | 106 for (size_t i = 0; i < apps.size(); ++i) { |
| 104 const KioskAppManager::App& app_data = apps[i]; | 107 const KioskAppManager::App& app_data = apps[i]; |
| 105 | 108 |
| 106 std::unique_ptr<base::DictionaryValue> app_info(new base::DictionaryValue); | 109 std::unique_ptr<base::DictionaryValue> app_info( |
| 110 new base::DictionaryValue()); |
| 107 app_info->SetBoolean("isApp", true); | 111 app_info->SetBoolean("isApp", true); |
| 108 app_info->SetString("id", app_data.app_id); | 112 app_info->SetString("id", app_data.app_id); |
| 113 app_info->SetBoolean("isAndroidApp", false); |
| 114 // Unused for native apps. Added for consistency with Android apps. |
| 115 app_info->SetString("account_email", app_data.account_id.GetUserEmail()); |
| 109 app_info->SetString("label", app_data.name); | 116 app_info->SetString("label", app_data.name); |
| 110 | 117 |
| 111 std::string icon_url; | 118 std::string icon_url; |
| 112 if (app_data.icon.isNull()) { | 119 if (app_data.icon.isNull()) { |
| 113 icon_url = | 120 icon_url = |
| 114 webui::GetBitmapDataUrl(*ResourceBundle::GetSharedInstance() | 121 webui::GetBitmapDataUrl(*ResourceBundle::GetSharedInstance() |
| 115 .GetImageNamed(IDR_APP_DEFAULT_ICON) | 122 .GetImageNamed(IDR_APP_DEFAULT_ICON) |
| 116 .ToSkBitmap()); | 123 .ToSkBitmap()); |
| 117 } else { | 124 } else { |
| 118 icon_url = webui::GetBitmapDataUrl(*app_data.icon.bitmap()); | 125 icon_url = webui::GetBitmapDataUrl(*app_data.icon.bitmap()); |
| 119 } | 126 } |
| 120 app_info->SetString("iconUrl", icon_url); | 127 app_info->SetString("iconUrl", icon_url); |
| 121 | 128 |
| 122 apps_list.Append(std::move(app_info)); | 129 apps_list.Append(std::move(app_info)); |
| 123 } | 130 } |
| 124 | 131 |
| 132 const auto& arc_apps = ArcKioskAppManager::Get()->GetAllApps(); |
| 133 for (size_t i = 0; i < arc_apps.size(); ++i) { |
| 134 std::unique_ptr<base::DictionaryValue> app_info( |
| 135 new base::DictionaryValue()); |
| 136 app_info->SetBoolean("isApp", true); |
| 137 app_info->SetBoolean("isAndroidApp", true); |
| 138 app_info->SetString("id", arc_apps[i].app_info().package_name()); |
| 139 app_info->SetString("account_email", |
| 140 arc_apps[i].account_id().GetUserEmail()); |
| 141 app_info->SetString("label", arc_apps[i].name()); |
| 142 |
| 143 std::string icon_url = |
| 144 webui::GetBitmapDataUrl(*ResourceBundle::GetSharedInstance() |
| 145 .GetImageNamed(IDR_APP_DEFAULT_ICON) |
| 146 .ToSkBitmap()); |
| 147 app_info->SetString("iconUrl", icon_url); |
| 148 |
| 149 apps_list.Append(std::move(app_info)); |
| 150 } |
| 151 |
| 125 web_ui()->CallJavascriptFunctionUnsafe( | 152 web_ui()->CallJavascriptFunctionUnsafe( |
| 126 EnableNewKioskUI() ? kKioskSetAppsNewAPI : kKioskSetAppsOldAPI, | 153 EnableNewKioskUI() ? kKioskSetAppsNewAPI : kKioskSetAppsOldAPI, |
| 127 apps_list); | 154 apps_list); |
| 128 } | 155 } |
| 129 | 156 |
| 130 void KioskAppMenuHandler::HandleInitializeKioskApps( | 157 void KioskAppMenuHandler::HandleInitializeKioskApps( |
| 131 const base::ListValue* args) { | 158 const base::ListValue* args) { |
| 132 is_webui_initialized_ = true; | 159 is_webui_initialized_ = true; |
| 133 SendKioskApps(); | 160 SendKioskApps(); |
| 134 UpdateState(NetworkError::ERROR_REASON_UPDATE); | 161 UpdateState(NetworkError::ERROR_REASON_UPDATE); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 | 193 |
| 167 void KioskAppMenuHandler::OnKioskAppDataLoadFailure(const std::string& app_id) { | 194 void KioskAppMenuHandler::OnKioskAppDataLoadFailure(const std::string& app_id) { |
| 168 SendKioskApps(); | 195 SendKioskApps(); |
| 169 } | 196 } |
| 170 | 197 |
| 171 void KioskAppMenuHandler::UpdateState(NetworkError::ErrorReason reason) { | 198 void KioskAppMenuHandler::UpdateState(NetworkError::ErrorReason reason) { |
| 172 if (network_state_informer_->state() == NetworkStateInformer::ONLINE) | 199 if (network_state_informer_->state() == NetworkStateInformer::ONLINE) |
| 173 KioskAppManager::Get()->RetryFailedAppDataFetch(); | 200 KioskAppManager::Get()->RetryFailedAppDataFetch(); |
| 174 } | 201 } |
| 175 | 202 |
| 203 void KioskAppMenuHandler::OnArcKioskAppsChanged() { |
| 204 SendKioskApps(); |
| 205 } |
| 206 |
| 176 } // namespace chromeos | 207 } // namespace chromeos |
| OLD | NEW |