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

Unified Diff: chrome/browser/chromeos/login/screens/update_screen.cc

Issue 2870203003: Make Hands-Off Zero-Touch Enrollment compatibile with tests (Closed)
Patch Set: Make Hands-Off Zero-Touch Enrollment compatibile with tests Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/login/screens/update_screen.cc
diff --git a/chrome/browser/chromeos/login/screens/update_screen.cc b/chrome/browser/chromeos/login/screens/update_screen.cc
index 96a797ed24a134e20f9afe24d7822205b133bc7b..a5abc13d7a82e278733bba1ecfb059fb3a847b70 100644
--- a/chrome/browser/chromeos/login/screens/update_screen.cc
+++ b/chrome/browser/chromeos/login/screens/update_screen.cc
@@ -201,6 +201,9 @@ void UpdateScreen::ExitUpdate(UpdateScreen::ExitReason reason) {
// Noncritical update, just exit screen as if there is no update.
// no break
case UpdateEngineClient::UPDATE_STATUS_IDLE:
+ // At this point, there is either no update available, or there is
+ // a noncritical update available. No need to update during OOBE.
xiyuan 2017/05/10 16:29:19 nit: "No need to update during OOBE." -> "Record t
kumarniranjan 2017/05/13 04:42:36 Done.
+ RecordUpdateCheckWithoutUpdate();
Finish(ScreenExitCode::UPDATE_NOUPDATE);
break;
case UpdateEngineClient::UPDATE_STATUS_ERROR:
@@ -552,11 +555,18 @@ void UpdateScreen::StartUpdateCheck() {
connect_request_subscription_.reset();
if (state_ == State::STATE_ERROR)
HideErrorMessage();
- state_ = State::STATE_UPDATE;
- DBusThreadManager::Get()->GetUpdateEngineClient()->AddObserver(this);
- VLOG(1) << "Initiate update check";
- DBusThreadManager::Get()->GetUpdateEngineClient()->RequestUpdateCheck(
- base::Bind(StartUpdateCallback, this));
+
+ if (ShouldCheckForUpdate()) {
+ state_ = State::STATE_UPDATE;
+ DBusThreadManager::Get()->GetUpdateEngineClient()->AddObserver(this);
+ VLOG(1) << "Initiate update check";
+ DBusThreadManager::Get()->GetUpdateEngineClient()->RequestUpdateCheck(
+ base::Bind(StartUpdateCallback, this));
+ } else {
+ LOG(WARNING) << "Skipping update check since one was done recently "
+ "which did not result in an update.";
+ CancelUpdate();
+ }
}
void UpdateScreen::ShowErrorMessage() {
@@ -627,4 +637,28 @@ void UpdateScreen::OnConnectRequested() {
}
}
+void UpdateScreen::RecordUpdateCheckWithoutUpdate() {
+ StartupUtils::SaveTimeOfLastUpdateCheckWithoutUpdate(base::Time::Now());
+}
+
+bool UpdateScreen::ShouldCheckForUpdate() {
+ // If we check for an update and there is no need to perform an update,
+ // this is the time in hours we should wait before checking again.
+ const int kUpdateCheckRecencyThresholdInHours = 1;
xiyuan 2017/05/10 16:29:19 nit: since we are in a function scoped, we can use
kumarniranjan 2017/05/13 04:42:35 Done.
+
+ base::Time now = base::Time::Now();
+ base::Time last = StartupUtils::GetTimeOfLastUpdateCheckWithoutUpdate();
+
+ if (WizardController::UsingHandsOffEnrollment()) {
+ if (now > last) {
+ return (now - last) >
+ base::TimeDelta::FromHours(kUpdateCheckRecencyThresholdInHours);
+ } else {
+ return false;
xiyuan 2017/05/10 16:29:19 I think we should "return true" to allow update ch
kumarniranjan 2017/05/13 04:42:35 Done.
+ }
+ } else {
+ return true;
xiyuan 2017/05/10 16:29:20 nit: move this to the beginning of the function an
kumarniranjan 2017/05/13 04:42:35 Done.
+ }
+}
+
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698