Index: chrome/browser/chromeos/login/enrollment/enrollment_screen.h |
diff --git a/chrome/browser/chromeos/login/enrollment/enrollment_screen.h b/chrome/browser/chromeos/login/enrollment/enrollment_screen.h |
index 6ccefec99d23346a24fbbc348a6d843afc5ca77c..613402726cb737926904a178822d521a9c8c18f3 100644 |
--- a/chrome/browser/chromeos/login/enrollment/enrollment_screen.h |
+++ b/chrome/browser/chromeos/login/enrollment/enrollment_screen.h |
@@ -9,6 +9,7 @@ |
#include <string> |
#include "base/callback_forward.h" |
+#include "base/cancelable_callback.h" |
#include "base/compiler_specific.h" |
#include "base/gtest_prod_util.h" |
#include "base/macros.h" |
@@ -19,6 +20,7 @@ |
#include "chrome/browser/chromeos/policy/enrollment_config.h" |
#include "components/policy/core/common/cloud/cloud_policy_constants.h" |
#include "components/policy/core/common/cloud/enterprise_metrics.h" |
+#include "net/base/backoff_entry.h" |
namespace base { |
class ElapsedTimer; |
@@ -81,6 +83,7 @@ class EnrollmentScreen |
} |
private: |
+ friend class EnterpriseEnrollmentHelperMock; |
FRIEND_TEST_ALL_PREFIXES(EnrollmentScreenTest, TestSuccess); |
FRIEND_TEST_ALL_PREFIXES(AttestationAuthEnrollmentScreenTest, TestCancel); |
FRIEND_TEST_ALL_PREFIXES(ForcedAttestationAuthEnrollmentScreenTest, |
@@ -93,6 +96,9 @@ class EnrollmentScreen |
FRIEND_TEST_ALL_PREFIXES(EnterpriseEnrollmentTest, |
TestAuthCodeGetsProperlyReceivedFromGaia); |
FRIEND_TEST_ALL_PREFIXES(HandsOffNetworkScreenTest, RequiresNoInput); |
+ FRIEND_TEST_ALL_PREFIXES(EnrollmentScreenUnitTest, Retries); |
+ FRIEND_TEST_ALL_PREFIXES(EnrollmentScreenUnitTest, DoesNotRetryOnTopOfUser); |
+ FRIEND_TEST_ALL_PREFIXES(EnrollmentScreenUnitTest, DoesNotRetryAfterSuccess); |
// The authentication mechanisms that this class can use. |
enum Auth { |
@@ -144,6 +150,14 @@ class EnrollmentScreen |
// Advance to the next authentication mechanism if possible. |
bool AdvanceToNextAuth(); |
+ // Similar to OnRetry(), but responds to a timer instead of the user |
+ // pressing the Retry button. |
+ void AutomaticRetry(); |
+ |
+ // Processes a request to retry enrollment. |
+ // Called by OnRetry() and AutomaticRetry(). |
+ void ProcessRetry(); |
+ |
pairing_chromeos::ControllerPairingController* shark_controller_ = nullptr; |
EnrollmentScreenActor* actor_; |
@@ -155,6 +169,10 @@ class EnrollmentScreen |
std::string enrolling_user_domain_; |
std::string auth_code_; |
std::unique_ptr<base::ElapsedTimer> elapsed_timer_; |
+ net::BackoffEntry::Policy retry_policy_; |
+ std::unique_ptr<net::BackoffEntry> retry_backoff_; |
+ base::CancelableClosure retry_task_; |
+ int num_retries_ = 0; |
std::unique_ptr<EnterpriseEnrollmentHelper> enrollment_helper_; |
base::WeakPtrFactory<EnrollmentScreen> weak_ptr_factory_; |