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

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

Issue 183973029: Refactoring of the NetworkPortalDetector. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixes. Created 6 years, 9 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_impl.cc
diff --git a/chrome/browser/chromeos/net/network_portal_detector_impl.cc b/chrome/browser/chromeos/net/network_portal_detector_impl.cc
index a79246a5262b11d7f42c7dea09e3b7846bc7003c..2ba76ba92534bfafdd30bba78667ba1334cfccd0 100644
--- a/chrome/browser/chromeos/net/network_portal_detector_impl.cc
+++ b/chrome/browser/chromeos/net/network_portal_detector_impl.cc
@@ -4,6 +4,8 @@
#include "chrome/browser/chromeos/net/network_portal_detector_impl.h"
+#include <algorithm>
+
#include "base/bind.h"
#include "base/command_line.h"
#include "base/logging.h"
@@ -26,19 +28,12 @@ namespace chromeos {
namespace {
-// Maximum number of portal detections for the same default network
-// after network change.
-const int kMaxRequestAttempts = 3;
-
-// Minimum timeout between consecutive portal checks for the same
-// network.
-const int kMinTimeBetweenAttemptsSec = 3;
-
// Delay before portal detection caused by changes in proxy settings.
const int kProxyChangeDelaySec = 1;
-// Delay between consecutive portal checks for a network in lazy mode.
-const int kLazyCheckIntervalSec = 5;
+const NetworkState* DefaultNetwork() {
+ return NetworkHandler::Get()->network_state_handler()->DefaultNetwork();
+}
void RecordDiscrepancyWithShill(
const NetworkState* network,
@@ -67,29 +62,27 @@ void RecordDiscrepancyWithShill(
// NetworkPortalDetectorImpl, public:
const char NetworkPortalDetectorImpl::kDetectionResultHistogram[] =
- "CaptivePortal.OOBE.DetectionResult";
+ "CaptivePortal.OOBE.DetectionResult";
const char NetworkPortalDetectorImpl::kDetectionDurationHistogram[] =
- "CaptivePortal.OOBE.DetectionDuration";
+ "CaptivePortal.OOBE.DetectionDuration";
const char NetworkPortalDetectorImpl::kShillOnlineHistogram[] =
- "CaptivePortal.OOBE.DiscrepancyWithShill_Online";
+ "CaptivePortal.OOBE.DiscrepancyWithShill_Online";
const char NetworkPortalDetectorImpl::kShillPortalHistogram[] =
- "CaptivePortal.OOBE.DiscrepancyWithShill_RestrictedPool";
+ "CaptivePortal.OOBE.DiscrepancyWithShill_RestrictedPool";
const char NetworkPortalDetectorImpl::kShillOfflineHistogram[] =
- "CaptivePortal.OOBE.DiscrepancyWithShill_Offline";
+ "CaptivePortal.OOBE.DiscrepancyWithShill_Offline";
NetworkPortalDetectorImpl::NetworkPortalDetectorImpl(
const scoped_refptr<net::URLRequestContextGetter>& request_context)
: state_(STATE_IDLE),
test_url_(CaptivePortalDetector::kDefaultURL),
enabled_(false),
- weak_ptr_factory_(this),
+ weak_factory_(this),
attempt_count_(0),
- lazy_detection_enabled_(false),
- lazy_check_interval_(base::TimeDelta::FromSeconds(kLazyCheckIntervalSec)),
- min_time_between_attempts_(
- base::TimeDelta::FromSeconds(kMinTimeBetweenAttemptsSec)),
- request_timeout_for_testing_initialized_(false) {
+ strategy_(PortalDetectorStrategy::CreateById(
+ PortalDetectorStrategy::STRATEGY_ID_LOGIN_SCREEN)) {
captive_portal_detector_.reset(new CaptivePortalDetector(request_context));
+ strategy_->set_delegate(this);
registrar_.Add(this,
chrome::NOTIFICATION_LOGIN_PROXY_CHANGED,
@@ -101,30 +94,28 @@ NetworkPortalDetectorImpl::NetworkPortalDetectorImpl(
chrome::NOTIFICATION_AUTH_CANCELLED,
content::NotificationService::AllSources());
- NetworkHandler::Get()->network_state_handler()->AddObserver(
- this, FROM_HERE);
+ NetworkHandler::Get()->network_state_handler()->AddObserver(this, FROM_HERE);
}
NetworkPortalDetectorImpl::~NetworkPortalDetectorImpl() {
DCHECK(CalledOnValidThread());
- detection_task_.Cancel();
- detection_timeout_.Cancel();
+ attempt_task_.Cancel();
+ attempt_timeout_.Cancel();
captive_portal_detector_->Cancel();
captive_portal_detector_.reset();
observers_.Clear();
if (NetworkHandler::IsInitialized()) {
- NetworkHandler::Get()->network_state_handler()->RemoveObserver(
- this, FROM_HERE);
+ NetworkHandler::Get()->network_state_handler()->RemoveObserver(this,
+ FROM_HERE);
}
}
void NetworkPortalDetectorImpl::AddObserver(Observer* observer) {
DCHECK(CalledOnValidThread());
- if (!observer || observers_.HasObserver(observer))
- return;
- observers_.AddObserver(observer);
+ if (observer && !observers_.HasObserver(observer))
+ observers_.AddObserver(observer);
}
void NetworkPortalDetectorImpl::AddAndFireObserver(Observer* observer) {
@@ -133,8 +124,7 @@ void NetworkPortalDetectorImpl::AddAndFireObserver(Observer* observer) {
return;
AddObserver(observer);
CaptivePortalState portal_state;
- const NetworkState* network =
- NetworkHandler::Get()->network_state_handler()->DefaultNetwork();
+ const NetworkState* network = DefaultNetwork();
if (network)
portal_state = GetCaptivePortalState(network->path());
observer->OnPortalDetectionCompleted(network, portal_state);
@@ -146,29 +136,21 @@ void NetworkPortalDetectorImpl::RemoveObserver(Observer* observer) {
observers_.RemoveObserver(observer);
}
-bool NetworkPortalDetectorImpl::IsEnabled() {
- return enabled_;
-}
+bool NetworkPortalDetectorImpl::IsEnabled() { return enabled_; }
void NetworkPortalDetectorImpl::Enable(bool start_detection) {
DCHECK(CalledOnValidThread());
if (enabled_)
return;
+
+ DCHECK(is_idle());
enabled_ = true;
- DCHECK(!IsPortalCheckPending());
- DCHECK(!IsCheckingForPortal());
- DCHECK(!lazy_detection_enabled());
- if (!start_detection)
- return;
- state_ = STATE_IDLE;
- attempt_count_ = 0;
- const NetworkState* default_network =
- NetworkHandler::Get()->network_state_handler()->DefaultNetwork();
- if (!default_network)
+
+ const NetworkState* network = DefaultNetwork();
+ if (!start_detection || !network)
return;
- portal_state_map_.erase(default_network->path());
- DCHECK(CanPerformDetection());
- DetectCaptivePortal(base::TimeDelta());
+ portal_state_map_.erase(network->path());
+ StartDetection();
}
NetworkPortalDetectorImpl::CaptivePortalState
@@ -183,30 +165,30 @@ NetworkPortalDetectorImpl::GetCaptivePortalState(
}
bool NetworkPortalDetectorImpl::StartDetectionIfIdle() {
- if (IsPortalCheckPending() || IsCheckingForPortal())
+ if (!is_idle())
return false;
- if (!CanPerformDetection())
- attempt_count_ = 0;
- DCHECK(CanPerformDetection());
- DetectCaptivePortal(base::TimeDelta());
+ StartDetection();
return true;
}
-void NetworkPortalDetectorImpl::EnableLazyDetection() {
- if (lazy_detection_enabled())
+void NetworkPortalDetectorImpl::EnableErrorScreenStrategy() {
+ if (strategy_->Id() == PortalDetectorStrategy::STRATEGY_ID_ERROR_SCREEN)
return;
- lazy_detection_enabled_ = true;
- VLOG(1) << "Lazy detection mode enabled.";
+ VLOG(1) << "Error screen detection strategy enabled.";
+ strategy_ = PortalDetectorStrategy::CreateById(
+ PortalDetectorStrategy::STRATEGY_ID_ERROR_SCREEN);
+ strategy_->set_delegate(this);
StartDetectionIfIdle();
}
-void NetworkPortalDetectorImpl::DisableLazyDetection() {
- if (!lazy_detection_enabled())
+void NetworkPortalDetectorImpl::DisableErrorScreenStrategy() {
+ if (strategy_->Id() != PortalDetectorStrategy::STRATEGY_ID_ERROR_SCREEN)
return;
- lazy_detection_enabled_ = false;
- if (attempt_count_ == kMaxRequestAttempts && IsPortalCheckPending())
- CancelPortalDetection();
- VLOG(1) << "Lazy detection mode disabled.";
+ VLOG(1) << "Error screen detection strategy disabled.";
+ strategy_ = PortalDetectorStrategy::CreateById(
+ PortalDetectorStrategy::STRATEGY_ID_LOGIN_SCREEN);
+ strategy_->set_delegate(this);
+ StopDetection();
}
void NetworkPortalDetectorImpl::DefaultNetworkChanged(
@@ -217,11 +199,11 @@ void NetworkPortalDetectorImpl::DefaultNetworkChanged(
default_network_name_.clear();
default_network_id_.clear();
- CancelPortalDetection();
+ StopDetection();
CaptivePortalState state;
state.status = CAPTIVE_PORTAL_STATUS_OFFLINE;
- SetCaptivePortalState(NULL, state);
+ OnDetectionCompleted(NULL, state);
return;
}
@@ -231,16 +213,14 @@ void NetworkPortalDetectorImpl::DefaultNetworkChanged(
bool network_changed = (default_service_path_ != default_network->path());
default_service_path_ = default_network->path();
- bool connection_state_changed = (default_connection_state_ !=
- default_network->connection_state());
+ bool connection_state_changed =
+ (default_connection_state_ != default_network->connection_state());
default_connection_state_ = default_network->connection_state();
- if (network_changed || connection_state_changed) {
- attempt_count_ = 0;
- CancelPortalDetection();
- }
+ if (network_changed || connection_state_changed)
+ StopDetection();
- if (CanPerformDetection() &&
+ if (CanPerformAttempt() &&
NetworkState::StateIsConnected(default_connection_state_)) {
// Initiate Captive Portal detection if network's captive
// portal state is unknown (e.g. for freshly created networks),
@@ -249,96 +229,85 @@ void NetworkPortalDetectorImpl::DefaultNetworkChanged(
if (state.status == CAPTIVE_PORTAL_STATUS_UNKNOWN ||
state.status == CAPTIVE_PORTAL_STATUS_OFFLINE ||
(!network_changed && connection_state_changed)) {
- DetectCaptivePortal(base::TimeDelta());
+ ScheduleAttempt(base::TimeDelta());
}
}
}
+int NetworkPortalDetectorImpl::AttemptCount() { return attempt_count_; }
+
+base::TimeTicks NetworkPortalDetectorImpl::AttemptStartTime() {
+ return attempt_start_time_;
+}
+
+base::TimeTicks NetworkPortalDetectorImpl::GetCurrentTimeTicks() {
+ if (time_ticks_for_testing_.is_null())
+ return base::TimeTicks::Now();
+ return time_ticks_for_testing_;
+}
+
////////////////////////////////////////////////////////////////////////////////
// NetworkPortalDetectorImpl, private:
-bool NetworkPortalDetectorImpl::CanPerformDetection() const {
- if (IsPortalCheckPending() || IsCheckingForPortal())
- return false;
- return attempt_count_ < kMaxRequestAttempts || lazy_detection_enabled();
+void NetworkPortalDetectorImpl::StartDetection() {
+ attempt_count_ = 0;
+ DCHECK(CanPerformAttempt());
+ detection_start_time_ = GetCurrentTimeTicks();
+ ScheduleAttempt(base::TimeDelta());
}
-void NetworkPortalDetectorImpl::DetectCaptivePortal(
- const base::TimeDelta& delay) {
- DCHECK(CanPerformDetection());
+void NetworkPortalDetectorImpl::StopDetection() {
+ attempt_task_.Cancel();
+ attempt_timeout_.Cancel();
+ captive_portal_detector_->Cancel();
+ state_ = STATE_IDLE;
+ attempt_count_ = 0;
+}
+
+bool NetworkPortalDetectorImpl::CanPerformAttempt() const {
+ return is_idle() && strategy_->CanPerformAttempt();
+}
+
+void NetworkPortalDetectorImpl::ScheduleAttempt(const base::TimeDelta& delay) {
+ DCHECK(CanPerformAttempt());
if (!IsEnabled())
return;
- detection_task_.Cancel();
- detection_timeout_.Cancel();
+ attempt_task_.Cancel();
+ attempt_timeout_.Cancel();
state_ = STATE_PORTAL_CHECK_PENDING;
- next_attempt_delay_ = delay;
- if (attempt_count_ > 0) {
- base::TimeTicks now = GetCurrentTimeTicks();
- base::TimeDelta elapsed_time;
-
- base::TimeDelta delay_between_attempts = min_time_between_attempts_;
- if (attempt_count_ == kMaxRequestAttempts) {
- DCHECK(lazy_detection_enabled());
- delay_between_attempts = lazy_check_interval_;
- }
- if (now > attempt_start_time_)
- elapsed_time = now - attempt_start_time_;
- if (elapsed_time < delay_between_attempts &&
- delay_between_attempts - elapsed_time > next_attempt_delay_) {
- next_attempt_delay_ = delay_between_attempts - elapsed_time;
- }
- } else {
- detection_start_time_ = GetCurrentTimeTicks();
- }
- detection_task_.Reset(
- base::Bind(&NetworkPortalDetectorImpl::DetectCaptivePortalTask,
- weak_ptr_factory_.GetWeakPtr()));
+ next_attempt_delay_ = std::max(delay, strategy_->GetDelayTillNextAttempt());
+ attempt_task_.Reset(base::Bind(&NetworkPortalDetectorImpl::StartAttempt,
+ weak_factory_.GetWeakPtr()));
base::MessageLoop::current()->PostDelayedTask(
- FROM_HERE, detection_task_.callback(), next_attempt_delay_);
+ FROM_HERE, attempt_task_.callback(), next_attempt_delay_);
}
-void NetworkPortalDetectorImpl::DetectCaptivePortalTask() {
- DCHECK(IsPortalCheckPending());
+void NetworkPortalDetectorImpl::StartAttempt() {
+ DCHECK(is_portal_check_pending());
state_ = STATE_CHECKING_FOR_PORTAL;
attempt_start_time_ = GetCurrentTimeTicks();
- if (attempt_count_ < kMaxRequestAttempts) {
- ++attempt_count_;
- VLOG(1) << "Portal detection started: "
- << "name=" << default_network_name_ << ", "
- << "id=" << default_network_id_ << ", "
- << "attempt=" << attempt_count_ << " of " << kMaxRequestAttempts;
- } else {
- DCHECK(lazy_detection_enabled());
- VLOG(1) << "Lazy portal detection attempt started";
- }
-
captive_portal_detector_->DetectCaptivePortal(
test_url_,
- base::Bind(&NetworkPortalDetectorImpl::OnPortalDetectionCompleted,
- weak_ptr_factory_.GetWeakPtr()));
- detection_timeout_.Reset(
- base::Bind(&NetworkPortalDetectorImpl::PortalDetectionTimeout,
- weak_ptr_factory_.GetWeakPtr()));
- base::TimeDelta request_timeout;
-
- // For easier unit testing check for testing state is performed here
- // and not in the GetRequestTimeoutSec().
- if (request_timeout_for_testing_initialized_)
- request_timeout = request_timeout_for_testing_;
- else
- request_timeout = base::TimeDelta::FromSeconds(GetRequestTimeoutSec());
+ base::Bind(&NetworkPortalDetectorImpl::OnAttemptCompleted,
+ weak_factory_.GetWeakPtr()));
+ attempt_timeout_.Reset(
+ base::Bind(&NetworkPortalDetectorImpl::OnAttemptTimeout,
+ weak_factory_.GetWeakPtr()));
+
base::MessageLoop::current()->PostDelayedTask(
- FROM_HERE, detection_timeout_.callback(), request_timeout);
+ FROM_HERE,
+ attempt_timeout_.callback(),
+ strategy_->GetNextAttemptTimeout());
}
-void NetworkPortalDetectorImpl::PortalDetectionTimeout() {
+void NetworkPortalDetectorImpl::OnAttemptTimeout() {
DCHECK(CalledOnValidThread());
- DCHECK(IsCheckingForPortal());
+ DCHECK(is_checking_for_portal());
VLOG(1) << "Portal detection timeout: name=" << default_network_name_ << ", "
<< "id=" << default_network_id_;
@@ -346,27 +315,18 @@ void NetworkPortalDetectorImpl::PortalDetectionTimeout() {
captive_portal_detector_->Cancel();
CaptivePortalDetector::Results results;
results.result = captive_portal::RESULT_NO_RESPONSE;
- OnPortalDetectionCompleted(results);
+ OnAttemptCompleted(results);
}
-void NetworkPortalDetectorImpl::CancelPortalDetection() {
- if (IsPortalCheckPending())
- detection_task_.Cancel();
- else if (IsCheckingForPortal())
- captive_portal_detector_->Cancel();
- detection_timeout_.Cancel();
- state_ = STATE_IDLE;
-}
-
-void NetworkPortalDetectorImpl::OnPortalDetectionCompleted(
+void NetworkPortalDetectorImpl::OnAttemptCompleted(
const CaptivePortalDetector::Results& results) {
captive_portal::Result result = results.result;
int response_code = results.response_code;
DCHECK(CalledOnValidThread());
- DCHECK(IsCheckingForPortal());
+ DCHECK(is_checking_for_portal());
- VLOG(1) << "Portal detection completed: "
+ VLOG(1) << "Detection attempt completed: "
<< "name=" << default_network_name_ << ", "
<< "id=" << default_network_id_ << ", "
<< "result="
@@ -375,17 +335,16 @@ void NetworkPortalDetectorImpl::OnPortalDetectionCompleted(
<< "response_code=" << results.response_code;
state_ = STATE_IDLE;
- detection_timeout_.Cancel();
+ attempt_timeout_.Cancel();
+ ++attempt_count_;
- const NetworkState* default_network =
- NetworkHandler::Get()->network_state_handler()->DefaultNetwork();
+ const NetworkState* network = DefaultNetwork();
// If using a fake profile client, also fake being behind a captive portal
// if the default network is in portal state.
if (result != captive_portal::RESULT_NO_RESPONSE &&
DBusThreadManager::Get()->GetShillProfileClient()->GetTestInterface() &&
- default_network &&
- default_network->connection_state() == shill::kStatePortal) {
+ network && network->connection_state() == shill::kStatePortal) {
result = captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL;
response_code = 200;
}
@@ -396,45 +355,36 @@ void NetworkPortalDetectorImpl::OnPortalDetectionCompleted(
case captive_portal::RESULT_NO_RESPONSE:
if (state.response_code == net::HTTP_PROXY_AUTHENTICATION_REQUIRED) {
state.status = CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED;
- SetCaptivePortalState(default_network, state);
- } else if (attempt_count_ >= kMaxRequestAttempts) {
- if (default_network &&
- (default_network->connection_state() == shill::kStatePortal)) {
- // Take into account shill's detection results.
- state.status = CAPTIVE_PORTAL_STATUS_PORTAL;
- LOG(WARNING) << "Network name=" << default_network->name() << ", "
- << "id=" << default_network->guid() << " "
- << "is marked as "
- << CaptivePortalStatusString(state.status) << " "
- << "despite the fact that CaptivePortalDetector "
- << "received no response";
- } else {
- state.status = CAPTIVE_PORTAL_STATUS_OFFLINE;
- }
- SetCaptivePortalState(default_network, state);
+ } else if (CanPerformAttempt()) {
+ ScheduleAttempt(results.retry_after_delta);
+ return;
+ } else if (network &&
+ (network->connection_state() == shill::kStatePortal)) {
+ // Take into account shill's detection results.
+ state.status = CAPTIVE_PORTAL_STATUS_PORTAL;
+ LOG(WARNING) << "Network name=" << network->name() << ", "
+ << "id=" << network->guid() << " "
+ << "is marked as "
+ << CaptivePortalStatusString(state.status) << " "
+ << "despite the fact that CaptivePortalDetector "
+ << "received no response";
} else {
- DCHECK(CanPerformDetection());
- DetectCaptivePortal(results.retry_after_delta);
+ state.status = CAPTIVE_PORTAL_STATUS_OFFLINE;
}
break;
case captive_portal::RESULT_INTERNET_CONNECTED:
state.status = CAPTIVE_PORTAL_STATUS_ONLINE;
- SetCaptivePortalState(default_network, state);
break;
case captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL:
state.status = CAPTIVE_PORTAL_STATUS_PORTAL;
- SetCaptivePortalState(default_network, state);
break;
default:
break;
}
- TryLazyDetection();
-}
-
-void NetworkPortalDetectorImpl::TryLazyDetection() {
- if (lazy_detection_enabled() && CanPerformDetection())
- DetectCaptivePortal(base::TimeDelta());
+ OnDetectionCompleted(network, state);
+ if (CanPerformAttempt() && strategy_->CanPerformAttemptAfterDetection())
+ ScheduleAttempt(base::TimeDelta());
}
void NetworkPortalDetectorImpl::Observe(
@@ -446,34 +396,24 @@ void NetworkPortalDetectorImpl::Observe(
type == chrome::NOTIFICATION_AUTH_CANCELLED) {
VLOG(1) << "Restarting portal detection due to proxy change.";
attempt_count_ = 0;
- if (IsPortalCheckPending())
+ if (is_portal_check_pending())
return;
- CancelPortalDetection();
- DCHECK(CanPerformDetection());
- DetectCaptivePortal(base::TimeDelta::FromSeconds(kProxyChangeDelaySec));
+ StopDetection();
+ ScheduleAttempt(base::TimeDelta::FromSeconds(kProxyChangeDelaySec));
}
}
-bool NetworkPortalDetectorImpl::IsPortalCheckPending() const {
- return state_ == STATE_PORTAL_CHECK_PENDING;
-}
-
-bool NetworkPortalDetectorImpl::IsCheckingForPortal() const {
- return state_ == STATE_CHECKING_FOR_PORTAL;
-}
-
-void NetworkPortalDetectorImpl::SetCaptivePortalState(
+void NetworkPortalDetectorImpl::OnDetectionCompleted(
const NetworkState* network,
const CaptivePortalState& state) {
if (!network) {
- NotifyPortalDetectionCompleted(network, state);
+ NotifyDetectionCompleted(network, state);
return;
}
CaptivePortalStateMap::const_iterator it =
portal_state_map_.find(network->path());
- if (it == portal_state_map_.end() ||
- it->second.status != state.status ||
+ if (it == portal_state_map_.end() || it->second.status != state.status ||
it->second.response_code != state.response_code) {
VLOG(1) << "Updating Chrome Captive Portal state: "
<< "name=" << network->name() << ", "
@@ -488,36 +428,19 @@ void NetworkPortalDetectorImpl::SetCaptivePortalState(
portal_state_map_[network->path()] = state;
}
- NotifyPortalDetectionCompleted(network, state);
+ NotifyDetectionCompleted(network, state);
}
-void NetworkPortalDetectorImpl::NotifyPortalDetectionCompleted(
+void NetworkPortalDetectorImpl::NotifyDetectionCompleted(
const NetworkState* network,
const CaptivePortalState& state) {
- FOR_EACH_OBSERVER(Observer, observers_,
- OnPortalDetectionCompleted(network, state));
+ FOR_EACH_OBSERVER(
+ Observer, observers_, OnPortalDetectionCompleted(network, state));
notification_controller_.OnPortalDetectionCompleted(network, state);
}
-base::TimeTicks NetworkPortalDetectorImpl::GetCurrentTimeTicks() const {
- if (time_ticks_for_testing_.is_null())
- return base::TimeTicks::Now();
- return time_ticks_for_testing_;
-}
-
-bool NetworkPortalDetectorImpl::DetectionTimeoutIsCancelledForTesting() const {
- return detection_timeout_.IsCancelled();
-}
-
-int NetworkPortalDetectorImpl::GetRequestTimeoutSec() const {
- DCHECK_LE(0, attempt_count_);
- const NetworkState* network =
- NetworkHandler::Get()->network_state_handler()->DefaultNetwork();
- if (!network)
- return kBaseRequestTimeoutSec;
- if (lazy_detection_enabled_)
- return kLazyRequestTimeoutSec;
- return attempt_count_ * kBaseRequestTimeoutSec;
+bool NetworkPortalDetectorImpl::AttemptTimeoutIsCancelledForTesting() const {
+ return attempt_timeout_.IsCancelled();
}
void NetworkPortalDetectorImpl::RecordDetectionStats(

Powered by Google App Engine
This is Rietveld 408576698