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

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..e16f0b32a028d52f4e5f545ecef432779132ab0f 100644
--- a/chrome/browser/chromeos/login/screens/update_screen.cc
+++ b/chrome/browser/chromeos/login/screens/update_screen.cc
@@ -241,6 +241,7 @@ void UpdateScreen::UpdateStatusChanged(
HostPairingController::UPDATE_STATUS_UPDATING);
break;
case UpdateEngineClient::UPDATE_STATUS_UPDATE_AVAILABLE:
+ RecordUpdateCheckResultingInUpdate();
MakeSureScreenIsShown();
GetContextEditor()
.SetInteger(kContextKeyProgress, kBeforeDownloadProgress)
@@ -552,11 +553,19 @@ 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";
+ RecordUpdateCheckWithNoUpdateYet();
+ 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 +636,34 @@ void UpdateScreen::OnConnectRequested() {
}
}
+void UpdateScreen::RecordUpdateCheckWithNoUpdateYet() {
+ StartupUtils::SaveTimeOfLastUpdateCheckWithoutUpdate(base::Time::Now());
+}
+
+void UpdateScreen::RecordUpdateCheckResultingInUpdate() {
xiyuan 2017/05/15 17:24:22 This name is confusing. How about call it ClearUpd
kumarniranjan 2017/05/15 22:08:21 Done.
+ StartupUtils::SaveTimeOfLastUpdateCheckWithoutUpdate(base::Time::UnixEpoch());
+}
+
+bool UpdateScreen::ShouldCheckForUpdate() {
+ // Always run update check for non hands-off enrollment.
+ if (!WizardController::UsingHandsOffEnrollment())
+ return true;
+
+ // 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 base::TimeDelta kUpdateCheckRecencyThreshold =
+ base::TimeDelta::FromHours(1);
+
+ base::Time now = base::Time::Now();
+ base::Time last = StartupUtils::GetTimeOfLastUpdateCheckWithoutUpdate();
+
+ // Return false if enough time has not passed since the last update check.
+ // Otherwise, return true.
+ if (now > last) {
+ return (now - last) > kUpdateCheckRecencyThreshold;
+ } else {
xiyuan 2017/05/15 17:24:22 nit: get rid of "else"
kumarniranjan 2017/05/15 22:08:21 Done.
+ return true;
+ }
+}
+
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698