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

Side by Side Diff: chrome/browser/chromeos/login/update_screen.cc

Issue 3130044: Added browser test for the OOBE update screen.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 4 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/chromeos/login/update_screen.h" 5 #include "chrome/browser/chromeos/login/update_screen.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "chrome/browser/chromeos/cros/cros_library.h" 8 #include "chrome/browser/chromeos/cros/cros_library.h"
9 #include "chrome/browser/chromeos/login/screen_observer.h" 9 #include "chrome/browser/chromeos/login/screen_observer.h"
10 #include "chrome/browser/chromeos/login/update_view.h" 10 #include "chrome/browser/chromeos/login/update_view.h"
11 11
12 namespace { 12 namespace {
13 13
14 // Update window should appear for at least kMinimalUpdateTime seconds.
15 const int kMinimalUpdateTimeSec = 3;
16
17 // Time in seconds that we wait for the device to reboot.
18 // If reboot didn't happen, ask user to reboot device manually.
19 const int kWaitForRebootTimeSec = 3;
20
21 // Progress bar stages. Each represents progress bar value 14 // Progress bar stages. Each represents progress bar value
22 // at the beginning of each stage. 15 // at the beginning of each stage.
23 // TODO(nkostylev): Base stage progress values on approximate time. 16 // TODO(nkostylev): Base stage progress values on approximate time.
24 // TODO(nkostylev): Animate progress during each state. 17 // TODO(nkostylev): Animate progress during each state.
25 const int kBeforeUpdateCheckProgress = 7; 18 const int kBeforeUpdateCheckProgress = 7;
26 const int kBeforeDownloadProgress = 14; 19 const int kBeforeDownloadProgress = 14;
27 const int kBeforeVerifyingProgress = 74; 20 const int kBeforeVerifyingProgress = 74;
28 const int kBeforeFinalizingProgress = 81; 21 const int kBeforeFinalizingProgress = 81;
29 const int kProgressComplete = 100; 22 const int kProgressComplete = 100;
30 23
31 // Defines what part of update progress does download part takes. 24 // Defines what part of update progress does download part takes.
32 const int kDownloadProgressIncrement = 60; 25 const int kDownloadProgressIncrement = 60;
33 26
34 } // anonymous namespace 27 } // anonymous namespace
35 28
36 namespace chromeos { 29 namespace chromeos {
37 30
38 UpdateScreen::UpdateScreen(WizardScreenDelegate* delegate) 31 UpdateScreen::UpdateScreen(WizardScreenDelegate* delegate)
39 : DefaultViewScreen<chromeos::UpdateView>(delegate), 32 : DefaultViewScreen<chromeos::UpdateView>(delegate),
40 proceed_with_oobe_(false), 33 proceed_with_oobe_(false),
41 checking_for_update_(true) { 34 checking_for_update_(true),
35 minimal_update_time_(0),
36 reboot_check_delay_(0) {
42 } 37 }
43 38
44 UpdateScreen::~UpdateScreen() { 39 UpdateScreen::~UpdateScreen() {
45 // Remove pointer to this object from view. 40 // Remove pointer to this object from view.
46 if (view()) 41 if (view())
47 view()->set_controller(NULL); 42 view()->set_controller(NULL);
48 CrosLibrary::Get()->GetUpdateLibrary()->RemoveObserver(this); 43 CrosLibrary::Get()->GetUpdateLibrary()->RemoveObserver(this);
49 } 44 }
50 45
51 void UpdateScreen::UpdateStatusChanged(UpdateLibrary* library) { 46 void UpdateScreen::UpdateStatusChanged(UpdateLibrary* library) {
52 UpdateStatusOperation status = library->status().status; 47 UpdateStatusOperation status = library->status().status;
53 LOG(INFO) << "Update status: " << status;
54 if (checking_for_update_ && status > UPDATE_STATUS_CHECKING_FOR_UPDATE) { 48 if (checking_for_update_ && status > UPDATE_STATUS_CHECKING_FOR_UPDATE) {
55 checking_for_update_ = false; 49 checking_for_update_ = false;
56 } 50 }
57 51
58 switch (status) { 52 switch (status) {
59 case UPDATE_STATUS_CHECKING_FOR_UPDATE: 53 case UPDATE_STATUS_CHECKING_FOR_UPDATE:
60 // Do nothing in these cases, we don't want to notify the user of the 54 // Do nothing in these cases, we don't want to notify the user of the
61 // check unless there is an update. 55 // check unless there is an update.
62 break; 56 break;
63 case UPDATE_STATUS_UPDATE_AVAILABLE: 57 case UPDATE_STATUS_UPDATE_AVAILABLE:
(...skipping 10 matching lines...) Expand all
74 case UPDATE_STATUS_VERIFYING: 68 case UPDATE_STATUS_VERIFYING:
75 view()->SetProgress(kBeforeVerifyingProgress); 69 view()->SetProgress(kBeforeVerifyingProgress);
76 break; 70 break;
77 case UPDATE_STATUS_FINALIZING: 71 case UPDATE_STATUS_FINALIZING:
78 view()->SetProgress(kBeforeFinalizingProgress); 72 view()->SetProgress(kBeforeFinalizingProgress);
79 break; 73 break;
80 case UPDATE_STATUS_UPDATED_NEED_REBOOT: 74 case UPDATE_STATUS_UPDATED_NEED_REBOOT:
81 view()->SetProgress(kProgressComplete); 75 view()->SetProgress(kProgressComplete);
82 CrosLibrary::Get()->GetUpdateLibrary()->RebootAfterUpdate(); 76 CrosLibrary::Get()->GetUpdateLibrary()->RebootAfterUpdate();
83 LOG(INFO) << "Reboot API was called. Waiting for reboot."; 77 LOG(INFO) << "Reboot API was called. Waiting for reboot.";
84 reboot_timer_.Start(base::TimeDelta::FromSeconds(kWaitForRebootTimeSec), 78 reboot_timer_.Start(base::TimeDelta::FromSeconds(reboot_check_delay_),
85 this, 79 this,
86 &UpdateScreen::OnWaitForRebootTimeElapsed); 80 &UpdateScreen::OnWaitForRebootTimeElapsed);
87 break; 81 break;
88 case UPDATE_STATUS_IDLE: 82 case UPDATE_STATUS_IDLE:
89 case UPDATE_STATUS_ERROR: 83 case UPDATE_STATUS_ERROR:
90 case UPDATE_STATUS_REPORTING_ERROR_EVENT: 84 case UPDATE_STATUS_REPORTING_ERROR_EVENT:
91 if (MinimalUpdateTimeElapsed()) { 85 if (MinimalUpdateTimeElapsed()) {
92 ExitUpdate(); 86 ExitUpdate();
93 } 87 }
94 proceed_with_oobe_ = true; 88 proceed_with_oobe_ = true;
95 break; 89 break;
96 default: 90 default:
97 NOTREACHED(); 91 NOTREACHED();
98 break; 92 break;
99 } 93 }
100 } 94 }
101 95
102 void UpdateScreen::StartUpdate() { 96 void UpdateScreen::StartUpdate() {
103 // Reset view. 97 // Reset view.
104 view()->Reset(); 98 view()->Reset();
105 view()->set_controller(this); 99 view()->set_controller(this);
106 100
107 // Start the minimal update time timer. 101 // Start the minimal update time timer.
108 minimal_update_time_timer_.Start( 102 if (minimal_update_time_ > 0) {
109 base::TimeDelta::FromSeconds(kMinimalUpdateTimeSec), 103 minimal_update_time_timer_.Start(
110 this, 104 base::TimeDelta::FromSeconds(minimal_update_time_),
111 &UpdateScreen::OnMinimalUpdateTimeElapsed); 105 this,
106 &UpdateScreen::OnMinimalUpdateTimeElapsed);
107 }
112 108
113 view()->SetProgress(kBeforeUpdateCheckProgress); 109 view()->SetProgress(kBeforeUpdateCheckProgress);
114 110
115 if (!CrosLibrary::Get()->EnsureLoaded()) { 111 if (!CrosLibrary::Get()->EnsureLoaded()) {
116 LOG(ERROR) << "Error loading CrosLibrary"; 112 LOG(ERROR) << "Error loading CrosLibrary";
117 } else { 113 } else {
118 CrosLibrary::Get()->GetUpdateLibrary()->AddObserver(this); 114 CrosLibrary::Get()->GetUpdateLibrary()->AddObserver(this);
119 LOG(INFO) << "Checking for update"; 115 LOG(INFO) << "Checking for update";
120 if (!CrosLibrary::Get()->GetUpdateLibrary()->CheckForUpdate()) { 116 if (!CrosLibrary::Get()->GetUpdateLibrary()->CheckForUpdate()) {
121 ExitUpdate(); 117 ExitUpdate();
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 void UpdateScreen::OnMinimalUpdateTimeElapsed() { 157 void UpdateScreen::OnMinimalUpdateTimeElapsed() {
162 if (proceed_with_oobe_) 158 if (proceed_with_oobe_)
163 ExitUpdate(); 159 ExitUpdate();
164 } 160 }
165 161
166 void UpdateScreen::OnWaitForRebootTimeElapsed() { 162 void UpdateScreen::OnWaitForRebootTimeElapsed() {
167 LOG(ERROR) << "Unable to reboot - asking user for a manual reboot."; 163 LOG(ERROR) << "Unable to reboot - asking user for a manual reboot.";
168 view()->ShowManualRebootInfo(); 164 view()->ShowManualRebootInfo();
169 } 165 }
170 166
167 void UpdateScreen::SetMinimalUpdateTime(int seconds) {
168 if (seconds <= 0)
169 minimal_update_time_timer_.Stop();
170 DCHECK(!minimal_update_time_timer_.IsRunning());
171 minimal_update_time_ = seconds;
172 }
173
174 void UpdateScreen::SetRebootCheckDelay(int seconds) {
175 if (seconds <= 0)
176 reboot_timer_.Stop();
177 DCHECK(!reboot_timer_.IsRunning());
178 reboot_check_delay_ = seconds;
179 }
180
171 } // namespace chromeos 181 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/login/update_screen.h ('k') | chrome/browser/chromeos/login/update_screen_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698