• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 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/update_screen_handler.h"
6 
7 #include "base/memory/scoped_ptr.h"
8 #include "base/values.h"
9 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
10 #include "grit/chromium_strings.h"
11 #include "grit/generated_resources.h"
12 #include "ui/base/l10n/l10n_util.h"
13 
14 namespace {
15 
16 const char kJsScreenPath[] = "login.UpdateScreen";
17 
18 }  // namespace
19 
20 namespace chromeos {
21 
UpdateScreenHandler()22 UpdateScreenHandler::UpdateScreenHandler()
23     : BaseScreenHandler(kJsScreenPath),
24       screen_(NULL),
25       show_on_init_(false) {
26 }
27 
~UpdateScreenHandler()28 UpdateScreenHandler::~UpdateScreenHandler() {
29   if (screen_)
30     screen_->OnActorDestroyed(this);
31 }
32 
DeclareLocalizedValues(LocalizedValuesBuilder * builder)33 void UpdateScreenHandler::DeclareLocalizedValues(
34     LocalizedValuesBuilder* builder) {
35   builder->AddF("checkingForUpdatesMsg",
36                 IDS_CHECKING_FOR_UPDATE_MSG, IDS_SHORT_PRODUCT_NAME);
37   builder->AddF("installingUpdateDesc",
38                 IDS_UPDATE_MSG, IDS_SHORT_PRODUCT_NAME);
39 
40   builder->Add("updateScreenTitle", IDS_UPDATE_SCREEN_TITLE);
41   builder->Add("updateScreenAccessibleTitle",
42                IDS_UPDATE_SCREEN_ACCESSIBLE_TITLE);
43   builder->Add("checkingForUpdates", IDS_CHECKING_FOR_UPDATES);
44   builder->Add("downloading", IDS_DOWNLOADING);
45   builder->Add("downloadingTimeLeftLong", IDS_DOWNLOADING_TIME_LEFT_LONG);
46   builder->Add("downloadingTimeLeftStatusOneHour",
47                IDS_DOWNLOADING_TIME_LEFT_STATUS_ONE_HOUR);
48   builder->Add("downloadingTimeLeftStatusMinutes",
49                IDS_DOWNLOADING_TIME_LEFT_STATUS_MINUTES);
50   builder->Add("downloadingTimeLeftSmall", IDS_DOWNLOADING_TIME_LEFT_SMALL);
51 
52 #if !defined(OFFICIAL_BUILD)
53   builder->Add("cancelUpdateHint", IDS_UPDATE_CANCEL);
54   builder->Add("cancelledUpdateMessage", IDS_UPDATE_CANCELLED);
55 #else
56   builder->Add("cancelUpdateHint", IDS_EMPTY_STRING);
57   builder->Add("cancelledUpdateMessage", IDS_EMPTY_STRING);
58 #endif
59 }
60 
Initialize()61 void UpdateScreenHandler::Initialize() {
62   if (show_on_init_) {
63     Show();
64     show_on_init_ = false;
65   }
66 }
67 
SetDelegate(UpdateScreenActor::Delegate * screen)68 void UpdateScreenHandler::SetDelegate(UpdateScreenActor::Delegate* screen) {
69   screen_ = screen;
70 }
71 
Show()72 void UpdateScreenHandler::Show() {
73   if (!page_is_ready()) {
74     show_on_init_ = true;
75     return;
76   }
77   ShowScreen(OobeUI::kScreenOobeUpdate, NULL);
78 #if !defined(OFFICIAL_BUILD)
79   CallJS("enableUpdateCancel");
80 #endif
81 }
82 
Hide()83 void UpdateScreenHandler::Hide() {
84 }
85 
PrepareToShow()86 void UpdateScreenHandler::PrepareToShow() {
87 }
88 
ShowManualRebootInfo()89 void UpdateScreenHandler::ShowManualRebootInfo() {
90   CallJS("setUpdateMessage", l10n_util::GetStringUTF16(IDS_UPDATE_COMPLETED));
91 }
92 
SetProgress(int progress)93 void UpdateScreenHandler::SetProgress(int progress) {
94   CallJS("setUpdateProgress", progress);
95 }
96 
ShowEstimatedTimeLeft(bool visible)97 void UpdateScreenHandler::ShowEstimatedTimeLeft(bool visible) {
98   CallJS("showEstimatedTimeLeft", visible);
99 }
100 
SetEstimatedTimeLeft(const base::TimeDelta & time)101 void UpdateScreenHandler::SetEstimatedTimeLeft(const base::TimeDelta& time) {
102   CallJS("setEstimatedTimeLeft", time.InSecondsF());
103 }
104 
ShowProgressMessage(bool visible)105 void UpdateScreenHandler::ShowProgressMessage(bool visible) {
106   CallJS("showProgressMessage", visible);
107 }
108 
SetProgressMessage(ProgressMessage message)109 void UpdateScreenHandler::SetProgressMessage(ProgressMessage message) {
110   scoped_ptr<base::StringValue> progress_message;
111   switch (message) {
112     case PROGRESS_MESSAGE_UPDATE_AVAILABLE:
113       progress_message.reset(base::Value::CreateStringValue(
114           l10n_util::GetStringUTF16(IDS_UPDATE_AVAILABLE)));
115       break;
116     case PROGRESS_MESSAGE_INSTALLING_UPDATE:
117       progress_message.reset(base::Value::CreateStringValue(
118           l10n_util::GetStringFUTF16(IDS_INSTALLING_UPDATE,
119             l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME))));
120       break;
121     case PROGRESS_MESSAGE_VERIFYING:
122       progress_message.reset(base::Value::CreateStringValue(
123           l10n_util::GetStringUTF16(IDS_UPDATE_VERIFYING)));
124       break;
125     case PROGRESS_MESSAGE_FINALIZING:
126       progress_message.reset(base::Value::CreateStringValue(
127           l10n_util::GetStringUTF16(IDS_UPDATE_FINALIZING)));
128       break;
129     default:
130       NOTREACHED();
131   };
132   if (progress_message.get())
133     CallJS("setProgressMessage", *progress_message);
134 }
135 
ShowCurtain(bool visible)136 void UpdateScreenHandler::ShowCurtain(bool visible) {
137   CallJS("showUpdateCurtain", visible);
138 }
139 
RegisterMessages()140 void UpdateScreenHandler::RegisterMessages() {
141 #if !defined(OFFICIAL_BUILD)
142   AddCallback("cancelUpdate", &UpdateScreenHandler::HandleUpdateCancel);
143 #endif
144 }
145 
OnConnectToNetworkRequested(const std::string & service_path)146 void UpdateScreenHandler::OnConnectToNetworkRequested(
147     const std::string& service_path) {
148   if (screen_)
149     screen_->OnConnectToNetworkRequested(service_path);
150 }
151 
152 #if !defined(OFFICIAL_BUILD)
HandleUpdateCancel()153 void UpdateScreenHandler::HandleUpdateCancel() {
154   screen_->CancelUpdate();
155 }
156 #endif
157 
158 }  // namespace chromeos
159