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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
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(new base::DictionaryValue); |
107 app_info->SetBoolean("isApp", true); | 110 app_info->SetBoolean("isApp", true); |
108 app_info->SetString("id", app_data.app_id); | 111 app_info->SetString("id", app_data.app_id); |
112 app_info->SetBoolean("isAndroidApp", false); | |
113 // Unused for native apps. Added for consistency with Android apps. | |
114 app_info->SetString("account_email", app_data.account_id.GetUserEmail()); | |
109 app_info->SetString("label", app_data.name); | 115 app_info->SetString("label", app_data.name); |
110 | 116 |
111 std::string icon_url; | 117 std::string icon_url; |
112 if (app_data.icon.isNull()) { | 118 if (app_data.icon.isNull()) { |
113 icon_url = | 119 icon_url = |
114 webui::GetBitmapDataUrl(*ResourceBundle::GetSharedInstance() | 120 webui::GetBitmapDataUrl(*ResourceBundle::GetSharedInstance() |
115 .GetImageNamed(IDR_APP_DEFAULT_ICON) | 121 .GetImageNamed(IDR_APP_DEFAULT_ICON) |
116 .ToSkBitmap()); | 122 .ToSkBitmap()); |
117 } else { | 123 } else { |
118 icon_url = webui::GetBitmapDataUrl(*app_data.icon.bitmap()); | 124 icon_url = webui::GetBitmapDataUrl(*app_data.icon.bitmap()); |
119 } | 125 } |
120 app_info->SetString("iconUrl", icon_url); | 126 app_info->SetString("iconUrl", icon_url); |
121 | 127 |
122 apps_list.Append(std::move(app_info)); | 128 apps_list.Append(std::move(app_info)); |
123 } | 129 } |
124 | 130 |
131 const auto& arc_apps = ArcKioskAppManager::Get()->GetAllApps(); | |
132 for (size_t i = 0; i < arc_apps.size(); ++i) { | |
133 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.
| |
134 app_info->SetBoolean("isApp", true); | |
135 app_info->SetBoolean("isAndroidApp", true); | |
136 app_info->SetString("id", arc_apps[i].app_info().package_name()); | |
137 app_info->SetString("account_email", | |
138 arc_apps[i].account_id().GetUserEmail()); | |
139 app_info->SetString("label", arc_apps[i].name()); | |
140 | |
141 std::string icon_url = | |
142 webui::GetBitmapDataUrl(*ResourceBundle::GetSharedInstance() | |
143 .GetImageNamed(IDR_APP_DEFAULT_ICON) | |
144 .ToSkBitmap()); | |
145 app_info->SetString("iconUrl", icon_url); | |
146 | |
147 apps_list.Append(std::move(app_info)); | |
148 } | |
149 | |
125 web_ui()->CallJavascriptFunctionUnsafe( | 150 web_ui()->CallJavascriptFunctionUnsafe( |
126 EnableNewKioskUI() ? kKioskSetAppsNewAPI : kKioskSetAppsOldAPI, | 151 EnableNewKioskUI() ? kKioskSetAppsNewAPI : kKioskSetAppsOldAPI, |
127 apps_list); | 152 apps_list); |
128 } | 153 } |
129 | 154 |
130 void KioskAppMenuHandler::HandleInitializeKioskApps( | 155 void KioskAppMenuHandler::HandleInitializeKioskApps( |
131 const base::ListValue* args) { | 156 const base::ListValue* args) { |
132 is_webui_initialized_ = true; | 157 is_webui_initialized_ = true; |
133 SendKioskApps(); | 158 SendKioskApps(); |
134 UpdateState(NetworkError::ERROR_REASON_UPDATE); | 159 UpdateState(NetworkError::ERROR_REASON_UPDATE); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
166 | 191 |
167 void KioskAppMenuHandler::OnKioskAppDataLoadFailure(const std::string& app_id) { | 192 void KioskAppMenuHandler::OnKioskAppDataLoadFailure(const std::string& app_id) { |
168 SendKioskApps(); | 193 SendKioskApps(); |
169 } | 194 } |
170 | 195 |
171 void KioskAppMenuHandler::UpdateState(NetworkError::ErrorReason reason) { | 196 void KioskAppMenuHandler::UpdateState(NetworkError::ErrorReason reason) { |
172 if (network_state_informer_->state() == NetworkStateInformer::ONLINE) | 197 if (network_state_informer_->state() == NetworkStateInformer::ONLINE) |
173 KioskAppManager::Get()->RetryFailedAppDataFetch(); | 198 KioskAppManager::Get()->RetryFailedAppDataFetch(); |
174 } | 199 } |
175 | 200 |
201 void KioskAppMenuHandler::OnArcKioskAppsChanged() { | |
202 SendKioskApps(); | |
203 } | |
204 | |
176 } // namespace chromeos | 205 } // namespace chromeos |
OLD | NEW |