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

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

Issue 2894783003: 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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/screens/update_screen.h" 5 #include "chrome/browser/chromeos/login/screens/update_screen.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 } 235 }
236 236
237 switch (status.status) { 237 switch (status.status) {
238 case UpdateEngineClient::UPDATE_STATUS_CHECKING_FOR_UPDATE: 238 case UpdateEngineClient::UPDATE_STATUS_CHECKING_FOR_UPDATE:
239 // Do nothing in these cases, we don't want to notify the user of the 239 // Do nothing in these cases, we don't want to notify the user of the
240 // check unless there is an update. 240 // check unless there is an update.
241 SetHostPairingControllerStatus( 241 SetHostPairingControllerStatus(
242 HostPairingController::UPDATE_STATUS_UPDATING); 242 HostPairingController::UPDATE_STATUS_UPDATING);
243 break; 243 break;
244 case UpdateEngineClient::UPDATE_STATUS_UPDATE_AVAILABLE: 244 case UpdateEngineClient::UPDATE_STATUS_UPDATE_AVAILABLE:
245 ClearUpdateCheckNoUpdateTime();
245 MakeSureScreenIsShown(); 246 MakeSureScreenIsShown();
246 GetContextEditor() 247 GetContextEditor()
247 .SetInteger(kContextKeyProgress, kBeforeDownloadProgress) 248 .SetInteger(kContextKeyProgress, kBeforeDownloadProgress)
248 .SetBoolean(kContextKeyShowEstimatedTimeLeft, false); 249 .SetBoolean(kContextKeyShowEstimatedTimeLeft, false);
249 if (!HasCriticalUpdate()) { 250 if (!HasCriticalUpdate()) {
250 VLOG(1) << "Noncritical update available: " << status.new_version; 251 VLOG(1) << "Noncritical update available: " << status.new_version;
251 ExitUpdate(REASON_UPDATE_NON_CRITICAL); 252 ExitUpdate(REASON_UPDATE_NON_CRITICAL);
252 } else { 253 } else {
253 VLOG(1) << "Critical update available: " << status.new_version; 254 VLOG(1) << "Critical update available: " << status.new_version;
254 GetContextEditor() 255 GetContextEditor()
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 } 548 }
548 549
549 void UpdateScreen::StartUpdateCheck() { 550 void UpdateScreen::StartUpdateCheck() {
550 error_message_timer_.Stop(); 551 error_message_timer_.Stop();
551 GetErrorScreen()->HideCaptivePortal(); 552 GetErrorScreen()->HideCaptivePortal();
552 553
553 network_portal_detector::GetInstance()->RemoveObserver(this); 554 network_portal_detector::GetInstance()->RemoveObserver(this);
554 connect_request_subscription_.reset(); 555 connect_request_subscription_.reset();
555 if (state_ == State::STATE_ERROR) 556 if (state_ == State::STATE_ERROR)
556 HideErrorMessage(); 557 HideErrorMessage();
557 state_ = State::STATE_UPDATE; 558
558 DBusThreadManager::Get()->GetUpdateEngineClient()->AddObserver(this); 559 if (ShouldCheckForUpdate()) {
559 VLOG(1) << "Initiate update check"; 560 state_ = State::STATE_UPDATE;
560 DBusThreadManager::Get()->GetUpdateEngineClient()->RequestUpdateCheck( 561 DBusThreadManager::Get()->GetUpdateEngineClient()->AddObserver(this);
561 base::Bind(StartUpdateCallback, this)); 562 VLOG(1) << "Initiate update check";
563 RecordUpdateCheckWithNoUpdateYet();
564 DBusThreadManager::Get()->GetUpdateEngineClient()->RequestUpdateCheck(
565 base::Bind(StartUpdateCallback, this));
566 } else {
567 LOG(WARNING) << "Skipping update check since one was done recently "
568 "which did not result in an update.";
569 CancelUpdate();
570 }
562 } 571 }
563 572
564 void UpdateScreen::ShowErrorMessage() { 573 void UpdateScreen::ShowErrorMessage() {
565 LOG(WARNING) << "UpdateScreen::ShowErrorMessage()"; 574 LOG(WARNING) << "UpdateScreen::ShowErrorMessage()";
566 575
567 error_message_timer_.Stop(); 576 error_message_timer_.Stop();
568 577
569 state_ = State::STATE_ERROR; 578 state_ = State::STATE_ERROR;
570 connect_request_subscription_ = 579 connect_request_subscription_ =
571 GetErrorScreen()->RegisterConnectRequestCallback(base::Bind( 580 GetErrorScreen()->RegisterConnectRequestCallback(base::Bind(
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 &UpdateScreen::ShowErrorMessage); 631 &UpdateScreen::ShowErrorMessage);
623 } 632 }
624 633
625 void UpdateScreen::OnConnectRequested() { 634 void UpdateScreen::OnConnectRequested() {
626 if (state_ == State::STATE_ERROR) { 635 if (state_ == State::STATE_ERROR) {
627 LOG(WARNING) << "Hiding error message since AP was reselected"; 636 LOG(WARNING) << "Hiding error message since AP was reselected";
628 StartUpdateCheck(); 637 StartUpdateCheck();
629 } 638 }
630 } 639 }
631 640
641 void UpdateScreen::RecordUpdateCheckWithNoUpdateYet() {
642 StartupUtils::SaveTimeOfLastUpdateCheckWithoutUpdate(base::Time::Now());
643 }
644
645 void UpdateScreen::ClearUpdateCheckNoUpdateTime() {
646 StartupUtils::ClearTimeOfLastUpdateCheckWithoutUpdate();
647 }
648
649 bool UpdateScreen::ShouldCheckForUpdate() {
650 // Always run update check for non hands-off enrollment.
651 if (!WizardController::UsingHandsOffEnrollment())
652 return true;
653
654 // If we check for an update and there is no need to perform an update,
655 // this is the time in hours we should wait before checking again.
656 const base::TimeDelta kUpdateCheckRecencyThreshold =
657 base::TimeDelta::FromHours(1);
658
659 base::Time now = base::Time::Now();
660 base::Time last = StartupUtils::GetTimeOfLastUpdateCheckWithoutUpdate();
661
662 // Return false if enough time has not passed since the last update check.
663 // Otherwise, return true.
664 if (now > last) {
665 return (now - last) > kUpdateCheckRecencyThreshold;
666 }
667
668 return true;
669 }
670
632 } // namespace chromeos 671 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/login/screens/update_screen.h ('k') | chrome/browser/chromeos/login/screens/update_screen_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698