15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/webui/chromeos/login/update_screen_handler.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/values.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/grit/chromium_strings.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/grit/generated_resources.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 14a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)namespace { 15a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 16a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)const char kJsScreenPath[] = "login.UpdateScreen"; 17a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 18a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} // namespace 19a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)UpdateScreenHandler::UpdateScreenHandler() 23a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) : BaseScreenHandler(kJsScreenPath), 24a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) screen_(NULL), 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) show_on_init_(false) { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)UpdateScreenHandler::~UpdateScreenHandler() { 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (screen_) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) screen_->OnActorDestroyed(this); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void UpdateScreenHandler::DeclareLocalizedValues( 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) LocalizedValuesBuilder* builder) { 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch builder->Add("checkingForUpdatesMsg", IDS_CHECKING_FOR_UPDATE_MSG); 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch builder->Add("installingUpdateDesc", IDS_UPDATE_MSG); 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("updateScreenTitle", IDS_UPDATE_SCREEN_TITLE); 38effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch builder->Add("updateScreenAccessibleTitle", 39effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch IDS_UPDATE_SCREEN_ACCESSIBLE_TITLE); 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("checkingForUpdates", IDS_CHECKING_FOR_UPDATES); 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("downloading", IDS_DOWNLOADING); 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("downloadingTimeLeftLong", IDS_DOWNLOADING_TIME_LEFT_LONG); 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("downloadingTimeLeftStatusOneHour", 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) IDS_DOWNLOADING_TIME_LEFT_STATUS_ONE_HOUR); 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("downloadingTimeLeftStatusMinutes", 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) IDS_DOWNLOADING_TIME_LEFT_STATUS_MINUTES); 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("downloadingTimeLeftSmall", IDS_DOWNLOADING_TIME_LEFT_SMALL); 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OFFICIAL_BUILD) 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("cancelUpdateHint", IDS_UPDATE_CANCEL); 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("cancelledUpdateMessage", IDS_UPDATE_CANCELLED); 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("cancelUpdateHint", IDS_EMPTY_STRING); 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("cancelledUpdateMessage", IDS_EMPTY_STRING); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UpdateScreenHandler::Initialize() { 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (show_on_init_) { 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Show(); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) show_on_init_ = false; 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UpdateScreenHandler::SetDelegate(UpdateScreenActor::Delegate* screen) { 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) screen_ = screen; 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UpdateScreenHandler::Show() { 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!page_is_ready()) { 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) show_on_init_ = true; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ShowScreen(OobeUI::kScreenOobeUpdate, NULL); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OFFICIAL_BUILD) 76c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch CallJS("enableUpdateCancel"); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UpdateScreenHandler::Hide() { 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UpdateScreenHandler::PrepareToShow() { 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UpdateScreenHandler::ShowManualRebootInfo() { 87c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch CallJS("setUpdateMessage", l10n_util::GetStringUTF16(IDS_UPDATE_COMPLETED)); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UpdateScreenHandler::SetProgress(int progress) { 91c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch CallJS("setUpdateProgress", progress); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UpdateScreenHandler::ShowEstimatedTimeLeft(bool visible) { 95c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch CallJS("showEstimatedTimeLeft", visible); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UpdateScreenHandler::SetEstimatedTimeLeft(const base::TimeDelta& time) { 99c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch CallJS("setEstimatedTimeLeft", time.InSecondsF()); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UpdateScreenHandler::ShowProgressMessage(bool visible) { 103c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch CallJS("showProgressMessage", visible); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UpdateScreenHandler::SetProgressMessage(ProgressMessage message) { 107116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int ids = 0; 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (message) { 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case PROGRESS_MESSAGE_UPDATE_AVAILABLE: 110116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ids = IDS_UPDATE_AVAILABLE; 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case PROGRESS_MESSAGE_INSTALLING_UPDATE: 113116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ids = IDS_INSTALLING_UPDATE; 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case PROGRESS_MESSAGE_VERIFYING: 116116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ids = IDS_UPDATE_VERIFYING; 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case PROGRESS_MESSAGE_FINALIZING: 119116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ids = IDS_UPDATE_FINALIZING; 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTREACHED(); 123116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return; 124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 125116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 126116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch CallJS("setProgressMessage", l10n_util::GetStringUTF16(ids)); 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UpdateScreenHandler::ShowCurtain(bool visible) { 130c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch CallJS("showUpdateCurtain", visible); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void UpdateScreenHandler::RegisterMessages() { 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OFFICIAL_BUILD) 135c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AddCallback("cancelUpdate", &UpdateScreenHandler::HandleUpdateCancel); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 139116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid UpdateScreenHandler::OnConnectToNetworkRequested() { 1402385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch if (screen_) 141116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch screen_->OnConnectToNetworkRequested(); 1422385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch} 1432385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OFFICIAL_BUILD) 145c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void UpdateScreenHandler::HandleUpdateCancel() { 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) screen_->CancelUpdate(); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chromeos 151