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

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

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.cc
diff --git a/chrome/browser/chromeos/net/network_portal_detector_strategy.cc b/chrome/browser/chromeos/net/network_portal_detector_strategy.cc
new file mode 100644
index 0000000000000000000000000000000000000000..210dc9b432cab90044e819553a31d19349c75e31
--- /dev/null
+++ b/chrome/browser/chromeos/net/network_portal_detector_strategy.cc
@@ -0,0 +1,168 @@
+// 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.
+
+#include "chrome/browser/chromeos/net/network_portal_detector_strategy.h"
+
+#include "base/logging.h"
+#include "chromeos/network/network_handler.h"
+#include "chromeos/network/network_state.h"
+#include "chromeos/network/network_state_handler.h"
+
+namespace chromeos {
+
+namespace {
+
+const NetworkState* DefaultNetwork() {
+ return NetworkHandler::Get()->network_state_handler()->DefaultNetwork();
+}
+
+std::string DefaultNetworkName() {
+ const NetworkState* network = DefaultNetwork();
+ return network ? network->name() : std::string();
+}
+
+} // namespace
+
+// PortalDetectorStrategy -----------------------------------------------------
+
+// static
+base::TimeDelta PortalDetectorStrategy::request_timeout_for_testing_;
+
+// static
+bool PortalDetectorStrategy::request_timeout_for_testing_initialized_ = false;
+
+// static
+base::TimeDelta PortalDetectorStrategy::min_time_between_attempts_for_testing_;
+
+// static
+bool
+ PortalDetectorStrategy::min_time_between_attempts_for_testing_initialized_ =
+ false;
+
+PortalDetectorStrategy::PortalDetectorStrategy(Delegate* delegate)
+ : delegate_(delegate) {}
+PortalDetectorStrategy::~PortalDetectorStrategy() {}
+
+void PortalDetectorStrategy::Reset() { ResetImpl(); }
+
+bool PortalDetectorStrategy::CanPerformAttempt() {
+ return CanPerformAttemptImpl();
+}
+
+base::TimeDelta PortalDetectorStrategy::GetDelayBeforeCurrentAttempt() {
+ if (min_time_between_attempts_for_testing_initialized_)
+ return min_time_between_attempts_for_testing_;
+ return GetDelayBeforeCurrentAttemptImpl();
+}
+
+base::TimeDelta PortalDetectorStrategy::GetCurrentAttemptTimeout() {
+ if (request_timeout_for_testing_initialized_)
+ return request_timeout_for_testing_;
+ return GetCurrentAttemptTimeoutImpl();
+}
+
+void PortalDetectorStrategy::OnAttemptStarted() {
+ attempt_start_time_ = GetCurrentTimeTicks();
+ OnAttemptStartedImpl();
+}
+
+void PortalDetectorStrategy::OnDetectionCompleted() {
+ return OnDetectionCompletedImpl();
+}
+
+void PortalDetectorStrategy::ResetImpl() {}
+
+bool PortalDetectorStrategy::CanPerformAttemptImpl() { return false; }
+
+base::TimeDelta PortalDetectorStrategy::GetDelayBeforeCurrentAttemptImpl() {
+ return base::TimeDelta();
+}
+
+base::TimeDelta PortalDetectorStrategy::GetCurrentAttemptTimeoutImpl() {
+ return base::TimeDelta();
+}
+
+void PortalDetectorStrategy::OnAttemptStartedImpl() {}
+
+void PortalDetectorStrategy::OnDetectionCompletedImpl() {}
+
+// LoginScreenStrategy ---------------------------------------------------------
+
+LoginScreenStrategy::LoginScreenStrategy(
+ PortalDetectorStrategy::Delegate* delegate)
+ : PortalDetectorStrategy(delegate),
+ attempt_count_(0),
+ detection_completed_(false) {}
+
+LoginScreenStrategy::~LoginScreenStrategy() {}
+
+void LoginScreenStrategy::ResetImpl() {
+ attempt_count_ = 0;
+ detection_completed_ = false;
+}
+
+bool LoginScreenStrategy::CanPerformAttemptImpl() {
+ return !detection_completed_ && attempt_count_ < kMaxRequestAttempts;
+}
+
+base::TimeDelta LoginScreenStrategy::GetDelayBeforeCurrentAttemptImpl() {
+ DCHECK(CanPerformAttempt());
+ if (!attempt_count_)
+ return base::TimeDelta();
+
+ base::TimeTicks now = GetCurrentTimeTicks();
+ base::TimeDelta delay =
+ base::TimeDelta::FromSeconds(kMinTimeBetweenAttemptsSec);
+ base::TimeDelta elapsed;
+ if (now > attempt_start_time_)
+ elapsed = now - attempt_start_time_;
+ if (delay > elapsed)
+ return delay - elapsed;
+ return base::TimeDelta();
+}
+
+base::TimeDelta LoginScreenStrategy::GetCurrentAttemptTimeoutImpl() {
+ int timeout = DefaultNetwork() ? attempt_count_ * kBaseRequestTimeoutSec
+ : kBaseRequestTimeoutSec;
+ return base::TimeDelta::FromSeconds(timeout);
+}
+
+void LoginScreenStrategy::OnAttemptStartedImpl() {
+ ++attempt_count_;
+ VLOG(1) << "Detection attempt on login screen started: "
+ << "name=" << DefaultNetworkName() << ", "
+ << "attempt=" << attempt_count_ << " of " << kMaxRequestAttempts
+ << ".";
+}
+
+void LoginScreenStrategy::OnDetectionCompletedImpl() {
+ detection_completed_ = true;
+}
+
+// ErrorScreenStrategy --------------------------------------------------------
+
+ErrorScreenStrategy::ErrorScreenStrategy(
+ PortalDetectorStrategy::Delegate* delegate)
+ : PortalDetectorStrategy(delegate),
+ delay_between_attempts_(
+ base::TimeDelta::FromSeconds(kMinTimeBetweenAttemptsSec)) {}
+
+ErrorScreenStrategy::~ErrorScreenStrategy() {}
+
+bool ErrorScreenStrategy::CanPerformAttemptImpl() { return true; }
+
+base::TimeDelta ErrorScreenStrategy::GetDelayBeforeCurrentAttemptImpl() {
+ return base::TimeDelta::FromSeconds(kMinTimeBetweenAttemptsSec);
+}
+
+base::TimeDelta ErrorScreenStrategy::GetCurrentAttemptTimeoutImpl() {
+ return base::TimeDelta::FromSeconds(kRequestTimeoutSec);
+}
+
+void ErrorScreenStrategy::OnAttemptStartedImpl() {
+ VLOG(1) << "Detection attempt on error screen started: "
+ << "name=" << DefaultNetworkName();
+}
+
+} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698