Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(332)

Side by Side Diff: chrome/browser/ui/webui/chromeos/login/kiosk_app_menu_handler.cc

Issue 2498613003: Add ARC++ kiosk menu items and ability to start kiosk session. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698