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

Unified Diff: chrome/browser/chromeos/net/network_portal_detector_strategy.h

Issue 183973029: Refactoring of the NetworkPortalDetector. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 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/net/network_portal_detector_strategy.h
diff --git a/chrome/browser/chromeos/net/network_portal_detector_strategy.h b/chrome/browser/chromeos/net/network_portal_detector_strategy.h
new file mode 100644
index 0000000000000000000000000000000000000000..2928b3747d1de4a9b2829c223940e1229c607733
--- /dev/null
+++ b/chrome/browser/chromeos/net/network_portal_detector_strategy.h
@@ -0,0 +1,146 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_NET_NETWORK_PORTAL_DETECTOR_STRATEGY_H_
+#define CHROME_BROWSER_CHROMEOS_NET_NETWORK_PORTAL_DETECTOR_STRATEGY_H_
+
+#include "base/compiler_specific.h"
+#include "base/macros.h"
+#include "base/time/time.h"
+
+namespace chromeos {
+
+class PortalDetectorStrategy {
+ public:
+ class Delegate {
+ public:
+ virtual ~Delegate() {}
+ virtual base::TimeTicks GetCurrentTimeTicks() = 0;
+ };
+
+ explicit PortalDetectorStrategy(Delegate* delegate);
+ virtual ~PortalDetectorStrategy();
+
+ void Reset();
+ bool CanPerformAttempt();
+ base::TimeDelta GetDelayBeforeCurrentAttempt();
Denis Kuznetsov (DE-MUC) 2014/03/05 16:59:09 GetDelayTillNextAttempt ?
ygorshenin1 2014/03/06 11:59:33 Done.
+ base::TimeDelta GetCurrentAttemptTimeout();
Denis Kuznetsov (DE-MUC) 2014/03/05 16:59:09 comments for methods?
ygorshenin1 2014/03/06 11:59:33 Done.
+ void OnAttemptStarted();
+ void OnDetectionCompleted();
+
+ protected:
+ base::TimeTicks GetCurrentTimeTicks() {
+ return delegate_->GetCurrentTimeTicks();
+ }
+
+ // Interface for subclasses:
+ virtual void ResetImpl();
+ virtual bool CanPerformAttemptImpl();
+ virtual base::TimeDelta GetDelayBeforeCurrentAttemptImpl();
+ virtual base::TimeDelta GetCurrentAttemptTimeoutImpl();
+ virtual void OnAttemptStartedImpl();
+ virtual void OnDetectionCompletedImpl();
+
+ Delegate* delegate_;
+
+ // Start time of portal detection attempt.
+ base::TimeTicks attempt_start_time_;
+
+ private:
+ friend class NetworkPortalDetectorImplTest;
+
+ // Sets portal detection timeout. Used by unit tests.
+ static void set_request_timeout_for_testing(const base::TimeDelta& timeout) {
+ request_timeout_for_testing_ = timeout;
+ request_timeout_for_testing_initialized_ = true;
+ }
+
+ static void reset_request_timeout_for_testing() {
+ request_timeout_for_testing_initialized_ = false;
+ }
+
+ static void set_min_time_between_attempts_for_testing(
+ const base::TimeDelta& timeout) {
+ min_time_between_attempts_for_testing_ = timeout;
+ min_time_between_attempts_for_testing_initialized_ = true;
+ }
+
+ static void reset_min_time_between_attempts_for_testing() {
+ min_time_between_attempts_for_testing_initialized_ = false;
+ }
+
+ // Test timeout for a portal detection used by unit tests.
+ static base::TimeDelta request_timeout_for_testing_;
+
+ // True if |request_timeout_for_testing_| is initialized.
+ static bool request_timeout_for_testing_initialized_;
+
+ static base::TimeDelta min_time_between_attempts_for_testing_;
+ static bool min_time_between_attempts_for_testing_initialized_;
+
+ DISALLOW_COPY_AND_ASSIGN(PortalDetectorStrategy);
+};
+
+class LoginScreenStrategy : public PortalDetectorStrategy {
+ public:
+ static const int kMaxRequestAttempts = 3;
+ static const int kMinTimeBetweenAttemptsSec = 3;
+ static const int kBaseRequestTimeoutSec = 5;
+
+ explicit LoginScreenStrategy(PortalDetectorStrategy::Delegate* delegate);
+ virtual ~LoginScreenStrategy();
+
+ protected:
+ // PortalDetectorStrategy overrides:
+ virtual void ResetImpl() OVERRIDE;
+ virtual bool CanPerformAttemptImpl() OVERRIDE;
+ virtual base::TimeDelta GetDelayBeforeCurrentAttemptImpl() OVERRIDE;
+ virtual base::TimeDelta GetCurrentAttemptTimeoutImpl() OVERRIDE;
+ virtual void OnAttemptStartedImpl() OVERRIDE;
+ virtual void OnDetectionCompletedImpl() OVERRIDE;
+
+ private:
+ friend class NetworkPortalDetectorImplTest;
+
+ int attempt_count_for_testing() const { return attempt_count_; }
+ void set_attempt_count_for_testing(int attempt_count) {
+ attempt_count_ = attempt_count;
+ }
+
+ int attempt_count_;
+ bool detection_completed_;
+
+ DISALLOW_COPY_AND_ASSIGN(LoginScreenStrategy);
+};
+
+class ErrorScreenStrategy : public PortalDetectorStrategy {
+ public:
+ static const int kMinTimeBetweenAttemptsSec = 3;
+ static const int kRequestTimeoutSec = 15;
+
+ explicit ErrorScreenStrategy(PortalDetectorStrategy::Delegate* delegate);
+ virtual ~ErrorScreenStrategy();
+
+ protected:
+ // PortalDetectorStrategy overrides:
+ virtual bool CanPerformAttemptImpl() OVERRIDE;
+ virtual base::TimeDelta GetDelayBeforeCurrentAttemptImpl() OVERRIDE;
+ virtual base::TimeDelta GetCurrentAttemptTimeoutImpl() OVERRIDE;
+ virtual void OnAttemptStartedImpl() OVERRIDE;
+
+ private:
+ friend class NetworkPortalDetectorImplTest;
+
+ void set_delay_between_attempts_for_testing(const base::TimeDelta& delay) {
+ delay_between_attempts_ = delay;
+ }
+
+ base::TimeDelta delay_between_attempts_;
+
+ DISALLOW_COPY_AND_ASSIGN(ErrorScreenStrategy);
+};
+
+} // namespace chromeos
+
+#endif // CHROME_BROWSER_CHROMEOS_NET_NETWORK_PORTAL_DETECTOR_STRATEGY_H_

Powered by Google App Engine
This is Rietveld 408576698