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

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

Issue 2649103006: arc: Add splash screen for ARC++ Kiosk startup (Closed)
Patch Set: achuithb@ comments Created 3 years, 10 months 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
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/webui/chromeos/login/arc_kiosk_splash_screen_handler .h"
6
7 #include <memory>
8
9 #include "base/memory/ptr_util.h"
10 #include "base/values.h"
11 #include "chrome/grit/chrome_unscaled_resources.h"
12 #include "chrome/grit/chromium_strings.h"
13 #include "chrome/grit/generated_resources.h"
14 #include "components/login/localized_values_builder.h"
15 #include "ui/base/l10n/l10n_util.h"
16 #include "ui/base/resource/resource_bundle.h"
17 #include "ui/base/webui/web_ui_util.h"
18 #include "ui/gfx/image/image_skia.h"
19
20 namespace {
21
22 constexpr char kJsScreenPath[] = "login.ArcKioskSplashScreen";
23 }
24
25 namespace chromeos {
26
27 ArcKioskSplashScreenHandler::ArcKioskSplashScreenHandler()
28 : BaseScreenHandler(kJsScreenPath) {}
29
30 ArcKioskSplashScreenHandler::~ArcKioskSplashScreenHandler() = default;
31
32 void ArcKioskSplashScreenHandler::DeclareLocalizedValues(
33 ::login::LocalizedValuesBuilder* builder) {
34 builder->Add("arcKioskStartMessage", IDS_APP_START_APP_WAIT_MESSAGE);
35
36 const base::string16 product_os_name =
37 l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_OS_NAME);
38 builder->Add("arcKioskShortcutInfo",
39 l10n_util::GetStringFUTF16(IDS_APP_START_BAILOUT_SHORTCUT_FORMAT,
40 product_os_name));
41 builder->Add("arcKioskProductName", product_os_name);
42 }
43
44 void ArcKioskSplashScreenHandler::Initialize() {
45 if (!show_on_init_)
46 return;
47 show_on_init_ = false;
48 Show();
49 }
50
51 void ArcKioskSplashScreenHandler::Show() {
52 if (!page_is_ready()) {
53 show_on_init_ = true;
54 return;
55 }
56
57 base::DictionaryValue data;
58 // |data| will take ownership of |app_info|.
59 std::unique_ptr<base::DictionaryValue> app_info =
60 base::MakeUnique<base::DictionaryValue>();
61 PopulateAppInfo(app_info.get());
62 data.Set("appInfo", std::move(app_info));
63 ShowScreenWithData(OobeScreen::SCREEN_ARC_KIOSK_SPLASH, &data);
64 }
65
66 void ArcKioskSplashScreenHandler::RegisterMessages() {
67 AddCallback("cancelArcKioskLaunch",
68 &ArcKioskSplashScreenHandler::HandleCancelArcKioskLaunch);
69 }
70
71 void ArcKioskSplashScreenHandler::UpdateArcKioskState(ArcKioskState state) {
72 if (!page_is_ready())
73 return;
74 SetLaunchText(l10n_util::GetStringUTF8(GetProgressMessageFromState(state)));
75 }
76
77 void ArcKioskSplashScreenHandler::SetDelegate(
78 ArcKioskSplashScreenHandler::Delegate* delegate) {
79 delegate_ = delegate;
80 }
81
82 void ArcKioskSplashScreenHandler::PopulateAppInfo(
83 base::DictionaryValue* out_info) {
84 out_info->SetString("name", l10n_util::GetStringUTF8(IDS_SHORT_PRODUCT_NAME));
85 out_info->SetString(
86 "iconURL",
87 webui::GetBitmapDataUrl(*ResourceBundle::GetSharedInstance()
88 .GetImageSkiaNamed(IDR_PRODUCT_LOGO_128)
89 ->bitmap()));
90 }
91
92 void ArcKioskSplashScreenHandler::SetLaunchText(const std::string& text) {
93 CallJS("updateArcKioskMessage", text);
94 }
95
96 int ArcKioskSplashScreenHandler::GetProgressMessageFromState(
97 ArcKioskState state) {
98 switch (state) {
99 case ArcKioskState::STARTING_SESSION:
100 return IDS_SYNC_SETUP_SPINNER_TITLE;
101 case ArcKioskState::WAITING_APP_LAUNCH:
102 return IDS_APP_START_APP_WAIT_MESSAGE;
103 case ArcKioskState::WAITING_APP_WINDOW:
104 return IDS_APP_START_WAIT_FOR_APP_WINDOW_MESSAGE;
105 default:
106 NOTREACHED();
107 break;
108 }
109 return IDS_SYNC_SETUP_SPINNER_TITLE;
110 }
111
112 void ArcKioskSplashScreenHandler::HandleCancelArcKioskLaunch() {
113 if (!delegate_) {
114 LOG(WARNING) << "No delegate set to handle cancel app launch";
115 return;
116 }
117 delegate_->OnCancelArcKioskLaunch();
118 }
119
120 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698