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

Side by Side Diff: chrome/browser/chromeos/net/network_portal_detector_impl.cc

Issue 59913004: Fixed logging for network portal detector. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/chromeos/net/network_portal_detector_impl.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 21 matching lines...) Expand all
32 // Minimum timeout between consecutive portal checks for the same 32 // Minimum timeout between consecutive portal checks for the same
33 // network. 33 // network.
34 const int kMinTimeBetweenAttemptsSec = 3; 34 const int kMinTimeBetweenAttemptsSec = 3;
35 35
36 // Delay before portal detection caused by changes in proxy settings. 36 // Delay before portal detection caused by changes in proxy settings.
37 const int kProxyChangeDelaySec = 1; 37 const int kProxyChangeDelaySec = 1;
38 38
39 // Delay between consecutive portal checks for a network in lazy mode. 39 // Delay between consecutive portal checks for a network in lazy mode.
40 const int kLazyCheckIntervalSec = 5; 40 const int kLazyCheckIntervalSec = 5;
41 41
42 const char kCaptivePortalStatusUnknown[] = "Unknown";
43 const char kCaptivePortalStatusOffline[] = "Offline";
44 const char kCaptivePortalStatusOnline[] = "Online";
45 const char kCaptivePortalStatusPortal[] = "Portal";
46 const char kCaptivePortalStatusProxyAuthRequired[] =
47 "Proxy authentication required";
48 const char kCaptivePortalStatusUnrecognized[] = "Unrecognized";
49
42 std::string CaptivePortalStatusString( 50 std::string CaptivePortalStatusString(
43 NetworkPortalDetectorImpl::CaptivePortalStatus status) { 51 NetworkPortalDetectorImpl::CaptivePortalStatus status) {
44 switch (status) { 52 switch (status) {
45 case NetworkPortalDetectorImpl::CAPTIVE_PORTAL_STATUS_UNKNOWN: 53 case NetworkPortalDetectorImpl::CAPTIVE_PORTAL_STATUS_UNKNOWN:
46 return l10n_util::GetStringUTF8( 54 return kCaptivePortalStatusUnknown;
47 IDS_CHROMEOS_CAPTIVE_PORTAL_STATUS_UNKNOWN);
48 case NetworkPortalDetectorImpl::CAPTIVE_PORTAL_STATUS_OFFLINE: 55 case NetworkPortalDetectorImpl::CAPTIVE_PORTAL_STATUS_OFFLINE:
49 return l10n_util::GetStringUTF8( 56 return kCaptivePortalStatusOffline;
50 IDS_CHROMEOS_CAPTIVE_PORTAL_STATUS_OFFLINE);
51 case NetworkPortalDetectorImpl::CAPTIVE_PORTAL_STATUS_ONLINE: 57 case NetworkPortalDetectorImpl::CAPTIVE_PORTAL_STATUS_ONLINE:
52 return l10n_util::GetStringUTF8( 58 return kCaptivePortalStatusOnline;
53 IDS_CHROMEOS_CAPTIVE_PORTAL_STATUS_ONLINE);
54 case NetworkPortalDetectorImpl::CAPTIVE_PORTAL_STATUS_PORTAL: 59 case NetworkPortalDetectorImpl::CAPTIVE_PORTAL_STATUS_PORTAL:
55 return l10n_util::GetStringUTF8( 60 return kCaptivePortalStatusPortal;
56 IDS_CHROMEOS_CAPTIVE_PORTAL_STATUS_PORTAL);
57 case NetworkPortalDetectorImpl::CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED: 61 case NetworkPortalDetectorImpl::CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED:
58 return l10n_util::GetStringUTF8( 62 return kCaptivePortalStatusProxyAuthRequired;
59 IDS_CHROMEOS_CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED);
60 case NetworkPortalDetectorImpl::CAPTIVE_PORTAL_STATUS_COUNT: 63 case NetworkPortalDetectorImpl::CAPTIVE_PORTAL_STATUS_COUNT:
61 NOTREACHED(); 64 NOTREACHED();
62 } 65 }
63 return l10n_util::GetStringUTF8( 66 return kCaptivePortalStatusUnrecognized;
64 IDS_CHROMEOS_CAPTIVE_PORTAL_STATUS_UNRECOGNIZED);
65 } 67 }
66 68
67 } // namespace 69 } // namespace
68 70
69 //////////////////////////////////////////////////////////////////////////////// 71 ////////////////////////////////////////////////////////////////////////////////
70 // NetworkPortalDetectorImpl, public: 72 // NetworkPortalDetectorImpl, public:
71 73
72 NetworkPortalDetectorImpl::NetworkPortalDetectorImpl( 74 NetworkPortalDetectorImpl::NetworkPortalDetectorImpl(
73 const scoped_refptr<net::URLRequestContextGetter>& request_context) 75 const scoped_refptr<net::URLRequestContextGetter>& request_context)
74 : state_(STATE_IDLE), 76 : state_(STATE_IDLE),
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 lazy_detection_enabled_ = false; 198 lazy_detection_enabled_ = false;
197 if (attempt_count_ == kMaxRequestAttempts && IsPortalCheckPending()) 199 if (attempt_count_ == kMaxRequestAttempts && IsPortalCheckPending())
198 CancelPortalDetection(); 200 CancelPortalDetection();
199 VLOG(1) << "Lazy detection mode disabled."; 201 VLOG(1) << "Lazy detection mode disabled.";
200 } 202 }
201 203
202 void NetworkPortalDetectorImpl::DefaultNetworkChanged( 204 void NetworkPortalDetectorImpl::DefaultNetworkChanged(
203 const NetworkState* default_network) { 205 const NetworkState* default_network) {
204 DCHECK(CalledOnValidThread()); 206 DCHECK(CalledOnValidThread());
205 if (!default_network) { 207 if (!default_network) {
208 default_network_name_.clear();
206 default_network_id_.clear(); 209 default_network_id_.clear();
207 return; 210 return;
208 } 211 }
209 212
213 default_network_name_ = default_network->name();
210 default_network_id_ = default_network->guid(); 214 default_network_id_ = default_network->guid();
211 215
212 bool network_changed = (default_service_path_ != default_network->path()); 216 bool network_changed = (default_service_path_ != default_network->path());
213 default_service_path_ = default_network->path(); 217 default_service_path_ = default_network->path();
214 218
215 bool connection_state_changed = (default_connection_state_ != 219 bool connection_state_changed = (default_connection_state_ !=
216 default_network->connection_state()); 220 default_network->connection_state());
217 default_connection_state_ = default_network->connection_state(); 221 default_connection_state_ = default_network->connection_state();
218 222
219 if (network_changed || connection_state_changed) { 223 if (network_changed || connection_state_changed) {
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 287
284 void NetworkPortalDetectorImpl::DetectCaptivePortalTask() { 288 void NetworkPortalDetectorImpl::DetectCaptivePortalTask() {
285 DCHECK(IsPortalCheckPending()); 289 DCHECK(IsPortalCheckPending());
286 290
287 state_ = STATE_CHECKING_FOR_PORTAL; 291 state_ = STATE_CHECKING_FOR_PORTAL;
288 attempt_start_time_ = GetCurrentTimeTicks(); 292 attempt_start_time_ = GetCurrentTimeTicks();
289 293
290 if (attempt_count_ < kMaxRequestAttempts) { 294 if (attempt_count_ < kMaxRequestAttempts) {
291 ++attempt_count_; 295 ++attempt_count_;
292 VLOG(1) << "Portal detection started: " 296 VLOG(1) << "Portal detection started: "
293 << "network=" << default_network_id_ << ", " 297 << "name=" << default_network_name_ << ", "
298 << "id=" << default_network_id_ << ", "
294 << "attempt=" << attempt_count_ << " of " << kMaxRequestAttempts; 299 << "attempt=" << attempt_count_ << " of " << kMaxRequestAttempts;
295 } else { 300 } else {
296 DCHECK(lazy_detection_enabled()); 301 DCHECK(lazy_detection_enabled());
297 VLOG(1) << "Lazy portal detection attempt started"; 302 VLOG(1) << "Lazy portal detection attempt started";
298 } 303 }
299 304
300 captive_portal_detector_->DetectCaptivePortal( 305 captive_portal_detector_->DetectCaptivePortal(
301 test_url_, 306 test_url_,
302 base::Bind(&NetworkPortalDetectorImpl::OnPortalDetectionCompleted, 307 base::Bind(&NetworkPortalDetectorImpl::OnPortalDetectionCompleted,
303 weak_ptr_factory_.GetWeakPtr())); 308 weak_ptr_factory_.GetWeakPtr()));
304 detection_timeout_.Reset( 309 detection_timeout_.Reset(
305 base::Bind(&NetworkPortalDetectorImpl::PortalDetectionTimeout, 310 base::Bind(&NetworkPortalDetectorImpl::PortalDetectionTimeout,
306 weak_ptr_factory_.GetWeakPtr())); 311 weak_ptr_factory_.GetWeakPtr()));
307 base::TimeDelta request_timeout; 312 base::TimeDelta request_timeout;
308 313
309 // For easier unit testing check for testing state is performed here 314 // For easier unit testing check for testing state is performed here
310 // and not in the GetRequestTimeoutSec(). 315 // and not in the GetRequestTimeoutSec().
311 if (request_timeout_for_testing_initialized_) 316 if (request_timeout_for_testing_initialized_)
312 request_timeout = request_timeout_for_testing_; 317 request_timeout = request_timeout_for_testing_;
313 else 318 else
314 request_timeout = base::TimeDelta::FromSeconds(GetRequestTimeoutSec()); 319 request_timeout = base::TimeDelta::FromSeconds(GetRequestTimeoutSec());
315 base::MessageLoop::current()->PostDelayedTask( 320 base::MessageLoop::current()->PostDelayedTask(
316 FROM_HERE, detection_timeout_.callback(), request_timeout); 321 FROM_HERE, detection_timeout_.callback(), request_timeout);
317 } 322 }
318 323
319 void NetworkPortalDetectorImpl::PortalDetectionTimeout() { 324 void NetworkPortalDetectorImpl::PortalDetectionTimeout() {
320 DCHECK(CalledOnValidThread()); 325 DCHECK(CalledOnValidThread());
321 DCHECK(IsCheckingForPortal()); 326 DCHECK(IsCheckingForPortal());
322 327
323 VLOG(1) << "Portal detection timeout: network=" << default_network_id_; 328 VLOG(1) << "Portal detection timeout: name=" << default_network_name_ << ", "
329 << "id=" << default_network_id_;
324 330
325 captive_portal_detector_->Cancel(); 331 captive_portal_detector_->Cancel();
326 CaptivePortalDetector::Results results; 332 CaptivePortalDetector::Results results;
327 results.result = captive_portal::RESULT_NO_RESPONSE; 333 results.result = captive_portal::RESULT_NO_RESPONSE;
328 OnPortalDetectionCompleted(results); 334 OnPortalDetectionCompleted(results);
329 } 335 }
330 336
331 void NetworkPortalDetectorImpl::CancelPortalDetection() { 337 void NetworkPortalDetectorImpl::CancelPortalDetection() {
332 if (IsPortalCheckPending()) 338 if (IsPortalCheckPending())
333 detection_task_.Cancel(); 339 detection_task_.Cancel();
(...skipping 10 matching lines...) Expand all
344 350
345 if (shill_stub_helper::IsStubPortalledWifiEnabled(default_service_path_)) { 351 if (shill_stub_helper::IsStubPortalledWifiEnabled(default_service_path_)) {
346 result = captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL; 352 result = captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL;
347 response_code = 200; 353 response_code = 200;
348 } 354 }
349 355
350 DCHECK(CalledOnValidThread()); 356 DCHECK(CalledOnValidThread());
351 DCHECK(IsCheckingForPortal()); 357 DCHECK(IsCheckingForPortal());
352 358
353 VLOG(1) << "Portal detection completed: " 359 VLOG(1) << "Portal detection completed: "
354 << "network=" << default_network_id_ << ", " 360 << "name=" << default_network_name_ << ", "
361 << "id=" << default_network_id_ << ", "
355 << "result=" << CaptivePortalDetector::CaptivePortalResultToString( 362 << "result=" << CaptivePortalDetector::CaptivePortalResultToString(
356 results.result) << ", " 363 results.result) << ", "
357 << "response_code=" << results.response_code; 364 << "response_code=" << results.response_code;
358 365
359 state_ = STATE_IDLE; 366 state_ = STATE_IDLE;
360 detection_timeout_.Cancel(); 367 detection_timeout_.Cancel();
361 368
362 const NetworkState* default_network = 369 const NetworkState* default_network =
363 NetworkHandler::Get()->network_state_handler()->DefaultNetwork(); 370 NetworkHandler::Get()->network_state_handler()->DefaultNetwork();
364 371
365 CaptivePortalState state; 372 CaptivePortalState state;
366 state.response_code = response_code; 373 state.response_code = response_code;
367 switch (result) { 374 switch (result) {
368 case captive_portal::RESULT_NO_RESPONSE: 375 case captive_portal::RESULT_NO_RESPONSE:
369 if (attempt_count_ >= kMaxRequestAttempts) { 376 if (attempt_count_ >= kMaxRequestAttempts) {
370 if (state.response_code == net::HTTP_PROXY_AUTHENTICATION_REQUIRED) { 377 if (state.response_code == net::HTTP_PROXY_AUTHENTICATION_REQUIRED) {
371 state.status = CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED; 378 state.status = CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED;
372 } else if (default_network && (default_network->connection_state() == 379 } else if (default_network && (default_network->connection_state() ==
373 shill::kStatePortal)) { 380 shill::kStatePortal)) {
374 // Take into account shill's detection results. 381 // Take into account shill's detection results.
375 state.status = CAPTIVE_PORTAL_STATUS_PORTAL; 382 state.status = CAPTIVE_PORTAL_STATUS_PORTAL;
376 LOG(WARNING) << "Network " << default_network->guid() << " " 383 LOG(WARNING) << "Network name=" << default_network->name() << ", "
384 << "id=" << default_network->guid() << " "
377 << "is marked as " 385 << "is marked as "
378 << CaptivePortalStatusString(state.status) << " " 386 << CaptivePortalStatusString(state.status) << " "
379 << "despite the fact that CaptivePortalDetector " 387 << "despite the fact that CaptivePortalDetector "
380 << "received no response"; 388 << "received no response";
381 } else { 389 } else {
382 state.status = CAPTIVE_PORTAL_STATUS_OFFLINE; 390 state.status = CAPTIVE_PORTAL_STATUS_OFFLINE;
383 } 391 }
384 SetCaptivePortalState(default_network, state); 392 SetCaptivePortalState(default_network, state);
385 } else { 393 } else {
386 DCHECK(CanPerformDetection()); 394 DCHECK(CanPerformDetection());
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 NotifyPortalDetectionCompleted(network, state); 452 NotifyPortalDetectionCompleted(network, state);
445 return; 453 return;
446 } 454 }
447 455
448 CaptivePortalStateMap::const_iterator it = 456 CaptivePortalStateMap::const_iterator it =
449 portal_state_map_.find(network->path()); 457 portal_state_map_.find(network->path());
450 if (it == portal_state_map_.end() || 458 if (it == portal_state_map_.end() ||
451 it->second.status != state.status || 459 it->second.status != state.status ||
452 it->second.response_code != state.response_code) { 460 it->second.response_code != state.response_code) {
453 VLOG(1) << "Updating Chrome Captive Portal state: " 461 VLOG(1) << "Updating Chrome Captive Portal state: "
454 << "network=" << network->guid() << ", " 462 << "name=" << network->name() << ", "
463 << "id=" << network->guid() << ", "
455 << "status=" << CaptivePortalStatusString(state.status) << ", " 464 << "status=" << CaptivePortalStatusString(state.status) << ", "
456 << "response_code=" << state.response_code; 465 << "response_code=" << state.response_code;
457 portal_state_map_[network->path()] = state; 466 portal_state_map_[network->path()] = state;
458 } 467 }
459 NotifyPortalDetectionCompleted(network, state); 468 NotifyPortalDetectionCompleted(network, state);
460 } 469 }
461 470
462 void NetworkPortalDetectorImpl::NotifyPortalDetectionCompleted( 471 void NetworkPortalDetectorImpl::NotifyPortalDetectionCompleted(
463 const NetworkState* network, 472 const NetworkState* network,
464 const CaptivePortalState& state) { 473 const CaptivePortalState& state) {
(...skipping 16 matching lines...) Expand all
481 const NetworkState* network = 490 const NetworkState* network =
482 NetworkHandler::Get()->network_state_handler()->DefaultNetwork(); 491 NetworkHandler::Get()->network_state_handler()->DefaultNetwork();
483 if (!network) 492 if (!network)
484 return kBaseRequestTimeoutSec; 493 return kBaseRequestTimeoutSec;
485 if (lazy_detection_enabled_) 494 if (lazy_detection_enabled_)
486 return kLazyRequestTimeoutSec; 495 return kLazyRequestTimeoutSec;
487 return attempt_count_ * kBaseRequestTimeoutSec; 496 return attempt_count_ * kBaseRequestTimeoutSec;
488 } 497 }
489 498
490 } // namespace chromeos 499 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/net/network_portal_detector_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698