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