| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/net/network_portal_detector_impl.h" | 5 #include "chrome/browser/chromeos/net/network_portal_detector_impl.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 content::NotificationService::AllSources()); | 91 content::NotificationService::AllSources()); |
| 92 } | 92 } |
| 93 | 93 |
| 94 NetworkPortalDetectorImpl::~NetworkPortalDetectorImpl() { | 94 NetworkPortalDetectorImpl::~NetworkPortalDetectorImpl() { |
| 95 } | 95 } |
| 96 | 96 |
| 97 void NetworkPortalDetectorImpl::Init() { | 97 void NetworkPortalDetectorImpl::Init() { |
| 98 DCHECK(CalledOnValidThread()); | 98 DCHECK(CalledOnValidThread()); |
| 99 | 99 |
| 100 state_ = STATE_IDLE; | 100 state_ = STATE_IDLE; |
| 101 NetworkStateHandler::Get()->AddObserver(this); | 101 NetworkHandler::Get()->network_state_handler()->AddObserver(this); |
| 102 } | 102 } |
| 103 | 103 |
| 104 void NetworkPortalDetectorImpl::Shutdown() { | 104 void NetworkPortalDetectorImpl::Shutdown() { |
| 105 DCHECK(CalledOnValidThread()); | 105 DCHECK(CalledOnValidThread()); |
| 106 | 106 |
| 107 detection_task_.Cancel(); | 107 detection_task_.Cancel(); |
| 108 detection_timeout_.Cancel(); | 108 detection_timeout_.Cancel(); |
| 109 | 109 |
| 110 captive_portal_detector_->Cancel(); | 110 captive_portal_detector_->Cancel(); |
| 111 captive_portal_detector_.reset(); | 111 captive_portal_detector_.reset(); |
| 112 observers_.Clear(); | 112 observers_.Clear(); |
| 113 if (NetworkStateHandler::IsInitialized()) | 113 if (NetworkHandler::IsInitialized()) |
| 114 NetworkStateHandler::Get()->RemoveObserver(this); | 114 NetworkHandler::Get()->network_state_handler()->RemoveObserver(this); |
| 115 } | 115 } |
| 116 | 116 |
| 117 void NetworkPortalDetectorImpl::AddObserver(Observer* observer) { | 117 void NetworkPortalDetectorImpl::AddObserver(Observer* observer) { |
| 118 DCHECK(CalledOnValidThread()); | 118 DCHECK(CalledOnValidThread()); |
| 119 if (!observer || observers_.HasObserver(observer)) | 119 if (!observer || observers_.HasObserver(observer)) |
| 120 return; | 120 return; |
| 121 observers_.AddObserver(observer); | 121 observers_.AddObserver(observer); |
| 122 } | 122 } |
| 123 | 123 |
| 124 void NetworkPortalDetectorImpl::AddAndFireObserver(Observer* observer) { | 124 void NetworkPortalDetectorImpl::AddAndFireObserver(Observer* observer) { |
| 125 DCHECK(CalledOnValidThread()); | 125 DCHECK(CalledOnValidThread()); |
| 126 if (!observer) | 126 if (!observer) |
| 127 return; | 127 return; |
| 128 AddObserver(observer); | 128 AddObserver(observer); |
| 129 const NetworkState* network = NetworkStateHandler::Get()->DefaultNetwork(); | 129 const NetworkState* network = |
| 130 NetworkHandler::Get()->network_state_handler()->DefaultNetwork(); |
| 130 observer->OnPortalDetectionCompleted(network, GetCaptivePortalState(network)); | 131 observer->OnPortalDetectionCompleted(network, GetCaptivePortalState(network)); |
| 131 } | 132 } |
| 132 | 133 |
| 133 void NetworkPortalDetectorImpl::RemoveObserver(Observer* observer) { | 134 void NetworkPortalDetectorImpl::RemoveObserver(Observer* observer) { |
| 134 DCHECK(CalledOnValidThread()); | 135 DCHECK(CalledOnValidThread()); |
| 135 if (observer) | 136 if (observer) |
| 136 observers_.RemoveObserver(observer); | 137 observers_.RemoveObserver(observer); |
| 137 } | 138 } |
| 138 | 139 |
| 139 bool NetworkPortalDetectorImpl::IsEnabled() { | 140 bool NetworkPortalDetectorImpl::IsEnabled() { |
| 140 return enabled_; | 141 return enabled_; |
| 141 } | 142 } |
| 142 | 143 |
| 143 void NetworkPortalDetectorImpl::Enable(bool start_detection) { | 144 void NetworkPortalDetectorImpl::Enable(bool start_detection) { |
| 144 DCHECK(CalledOnValidThread()); | 145 DCHECK(CalledOnValidThread()); |
| 145 if (enabled_) | 146 if (enabled_) |
| 146 return; | 147 return; |
| 147 enabled_ = true; | 148 enabled_ = true; |
| 148 DCHECK(!IsPortalCheckPending()); | 149 DCHECK(!IsPortalCheckPending()); |
| 149 DCHECK(!IsCheckingForPortal()); | 150 DCHECK(!IsCheckingForPortal()); |
| 150 DCHECK(!lazy_detection_enabled()); | 151 DCHECK(!lazy_detection_enabled()); |
| 151 if (!start_detection) | 152 if (!start_detection) |
| 152 return; | 153 return; |
| 153 state_ = STATE_IDLE; | 154 state_ = STATE_IDLE; |
| 154 attempt_count_ = 0; | 155 attempt_count_ = 0; |
| 155 const NetworkState* default_network = | 156 const NetworkState* default_network = |
| 156 NetworkStateHandler::Get()->DefaultNetwork(); | 157 NetworkHandler::Get()->network_state_handler()->DefaultNetwork(); |
| 157 if (!default_network) | 158 if (!default_network) |
| 158 return; | 159 return; |
| 159 portal_state_map_.erase(default_network->path()); | 160 portal_state_map_.erase(default_network->path()); |
| 160 DetectCaptivePortal(base::TimeDelta()); | 161 DetectCaptivePortal(base::TimeDelta()); |
| 161 } | 162 } |
| 162 | 163 |
| 163 NetworkPortalDetectorImpl::CaptivePortalState | 164 NetworkPortalDetectorImpl::CaptivePortalState |
| 164 NetworkPortalDetectorImpl::GetCaptivePortalState(const NetworkState* network) { | 165 NetworkPortalDetectorImpl::GetCaptivePortalState(const NetworkState* network) { |
| 165 DCHECK(CalledOnValidThread()); | 166 DCHECK(CalledOnValidThread()); |
| 166 if (!network) | 167 if (!network) |
| (...skipping 22 matching lines...) Expand all Loading... |
| 189 | 190 |
| 190 void NetworkPortalDetectorImpl::DisableLazyDetection() { | 191 void NetworkPortalDetectorImpl::DisableLazyDetection() { |
| 191 CHECK(lazy_detection_enabled()); | 192 CHECK(lazy_detection_enabled()); |
| 192 lazy_detection_enabled_ = false; | 193 lazy_detection_enabled_ = false; |
| 193 VLOG(1) << "Lazy detection mode disabled."; | 194 VLOG(1) << "Lazy detection mode disabled."; |
| 194 } | 195 } |
| 195 | 196 |
| 196 void NetworkPortalDetectorImpl::NetworkManagerChanged() { | 197 void NetworkPortalDetectorImpl::NetworkManagerChanged() { |
| 197 DCHECK(CalledOnValidThread()); | 198 DCHECK(CalledOnValidThread()); |
| 198 const NetworkState* default_network = | 199 const NetworkState* default_network = |
| 199 NetworkStateHandler::Get()->DefaultNetwork(); | 200 NetworkHandler::Get()->network_state_handler()->DefaultNetwork(); |
| 200 if (!default_network) { | 201 if (!default_network) { |
| 201 default_network_id_.clear(); | 202 default_network_id_.clear(); |
| 202 return; | 203 return; |
| 203 } | 204 } |
| 204 | 205 |
| 205 default_network_id_ = default_network->guid(); | 206 default_network_id_ = default_network->guid(); |
| 206 | 207 |
| 207 bool network_changed = (default_service_path_ != default_network->path()); | 208 bool network_changed = (default_service_path_ != default_network->path()); |
| 208 default_service_path_ = default_network->path(); | 209 default_service_path_ = default_network->path(); |
| 209 | 210 |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 341 VLOG(1) << "Portal detection completed: " | 342 VLOG(1) << "Portal detection completed: " |
| 342 << "network=" << default_network_id_ << ", " | 343 << "network=" << default_network_id_ << ", " |
| 343 << "result=" << CaptivePortalDetector::CaptivePortalResultToString( | 344 << "result=" << CaptivePortalDetector::CaptivePortalResultToString( |
| 344 results.result) << ", " | 345 results.result) << ", " |
| 345 << "response_code=" << results.response_code; | 346 << "response_code=" << results.response_code; |
| 346 | 347 |
| 347 state_ = STATE_IDLE; | 348 state_ = STATE_IDLE; |
| 348 detection_timeout_.Cancel(); | 349 detection_timeout_.Cancel(); |
| 349 | 350 |
| 350 const NetworkState* default_network = | 351 const NetworkState* default_network = |
| 351 NetworkStateHandler::Get()->DefaultNetwork(); | 352 NetworkHandler::Get()->network_state_handler()->DefaultNetwork(); |
| 352 | 353 |
| 353 CaptivePortalState state; | 354 CaptivePortalState state; |
| 354 state.response_code = results.response_code; | 355 state.response_code = results.response_code; |
| 355 switch (results.result) { | 356 switch (results.result) { |
| 356 case captive_portal::RESULT_NO_RESPONSE: | 357 case captive_portal::RESULT_NO_RESPONSE: |
| 357 if (attempt_count_ >= kMaxRequestAttempts) { | 358 if (attempt_count_ >= kMaxRequestAttempts) { |
| 358 if (state.response_code == net::HTTP_PROXY_AUTHENTICATION_REQUIRED) { | 359 if (state.response_code == net::HTTP_PROXY_AUTHENTICATION_REQUIRED) { |
| 359 state.status = CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED; | 360 state.status = CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED; |
| 360 } else if (default_network && (default_network->connection_state() == | 361 } else if (default_network && (default_network->connection_state() == |
| 361 flimflam::kStatePortal)) { | 362 flimflam::kStatePortal)) { |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 460 else | 461 else |
| 461 return time_ticks_for_testing_; | 462 return time_ticks_for_testing_; |
| 462 } | 463 } |
| 463 | 464 |
| 464 bool NetworkPortalDetectorImpl::DetectionTimeoutIsCancelledForTesting() const { | 465 bool NetworkPortalDetectorImpl::DetectionTimeoutIsCancelledForTesting() const { |
| 465 return detection_timeout_.IsCancelled(); | 466 return detection_timeout_.IsCancelled(); |
| 466 } | 467 } |
| 467 | 468 |
| 468 int NetworkPortalDetectorImpl::GetRequestTimeoutSec() const { | 469 int NetworkPortalDetectorImpl::GetRequestTimeoutSec() const { |
| 469 DCHECK_LE(0, attempt_count_); | 470 DCHECK_LE(0, attempt_count_); |
| 470 const NetworkState* network = NetworkStateHandler::Get()->DefaultNetwork(); | 471 const NetworkState* network = |
| 472 NetworkHandler::Get()->network_state_handler()->DefaultNetwork(); |
| 471 if (!network) | 473 if (!network) |
| 472 return kBaseRequestTimeoutSec; | 474 return kBaseRequestTimeoutSec; |
| 473 if (lazy_detection_enabled_) | 475 if (lazy_detection_enabled_) |
| 474 return kLazyRequestTimeoutSec; | 476 return kLazyRequestTimeoutSec; |
| 475 return attempt_count_ * kBaseRequestTimeoutSec; | 477 return attempt_count_ * kBaseRequestTimeoutSec; |
| 476 } | 478 } |
| 477 | 479 |
| 478 } // namespace chromeos | 480 } // namespace chromeos |
| OLD | NEW |