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

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: 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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698