Chromium Code Reviews| Index: chrome/browser/chromeos/net/network_portal_detector.h |
| diff --git a/chrome/browser/chromeos/net/network_portal_detector.h b/chrome/browser/chromeos/net/network_portal_detector.h |
| index 9915de810f23e5d25cc5215c34abc464c41c1424..75c6e06e3107f321041408daf55532ff2a8fd80c 100644 |
| --- a/chrome/browser/chromeos/net/network_portal_detector.h |
| +++ b/chrome/browser/chromeos/net/network_portal_detector.h |
| @@ -7,11 +7,14 @@ |
| #include <string> |
| +#include "base/cancelable_callback.h" |
| #include "base/hash_tables.h" |
| #include "base/memory/ref_counted.h" |
| #include "base/memory/scoped_ptr.h" |
| +#include "base/memory/weak_ptr.h" |
| #include "base/observer_list.h" |
| #include "base/threading/non_thread_safe.h" |
| +#include "base/time.h" |
| #include "chrome/browser/captive_portal/captive_portal_detector.h" |
| #include "chrome/browser/chromeos/cros/network_library.h" |
| #include "googleurl/src/gurl.h" |
| @@ -77,24 +80,31 @@ class NetworkPortalDetector |
| enum State { |
| // No portal check is running. |
| STATE_IDLE, |
| + // Waiting for portal check. |
| + STATE_PORTAL_CHECK_PENDING, |
| // Portal check is in progress. |
| STATE_CHECKING_FOR_PORTAL, |
| - // Portal check is in progress, but other portal detection request |
| - // is pending. |
| - STATE_CHECKING_FOR_PORTAL_NETWORK_CHANGED, |
| }; |
| explicit NetworkPortalDetector( |
| const scoped_refptr<net::URLRequestContextGetter>& request_context); |
| - // Initiates Captive Portal detection. If currently portal detection |
| - // in in progress, then delays portal detection. |
| - void DetectCaptivePortal(); |
| + // Initiates Captive Portal detection after |delay|. |
| + void DetectCaptivePortal(const base::TimeDelta& delay); |
| + |
| + void DetectCaptivePortalTask(); |
| + |
| + void PortalDetectionTimeout(); |
|
Nikita (slow)
2012/11/20 12:58:45
nit: please add short comment describing when this
ygorshenin1
2012/11/21 09:08:06
Done.
|
| + |
| + void CancelPortalDetection(); |
| // Called by CaptivePortalDetector when detection completes. |
| void OnPortalDetectionCompleted( |
| const captive_portal::CaptivePortalDetector::Results& results); |
| + // Returns true if we're waiting for portal check. |
| + bool IsPortalCheckPending() const; |
| + |
| // Returns true if portal check is in progress. |
| bool IsCheckingForPortal() const; |
| @@ -106,18 +116,77 @@ class NetworkPortalDetector |
| void NotifyPortalStateChanged(const Network* network, |
| CaptivePortalState state); |
| + // Returns the current TimeTicks. |
| + base::TimeTicks GetCurrentTimeTicks() const; |
| + |
| State state() { return state_; } |
| + // Returns current number of portal detection attempts. |
| + // Used by unit tests. |
| + int attempt_count_for_testing() { return attempt_count_; } |
| + |
| + // Sets minimum time between consecutive portal checks for the same |
| + // network. Used by unit tests. |
| + void set_min_time_between_attempts_for_testing(const base::TimeDelta& delta) { |
| + min_time_between_attempts_ = delta; |
| + } |
| + |
| + // Sets portal detection timeout. Used by unit tests. |
| + void set_request_timeout_for_testing(const base::TimeDelta& timeout) { |
| + request_timeout_ = timeout; |
| + } |
| + |
| + // Returns delay before next portal check. Used by unit tests. |
| + const base::TimeDelta& next_attempt_delay_for_testing() { |
| + return next_attempt_delay_; |
| + } |
| + |
| + // Sets current test time ticks. Used by unit tests. |
| + void set_time_ticks_for_testing(const base::TimeTicks& time_ticks) { |
| + time_ticks_for_testing_ = time_ticks; |
| + } |
| + |
| + // Advances current test time ticks. Used by unit tests. |
| + void advance_time_ticks_for_testing(const base::TimeDelta& delta) { |
| + time_ticks_for_testing_ += delta; |
| + } |
| + |
| std::string active_network_id_; |
| State state_; |
| CaptivePortalStateMap captive_portal_state_map_; |
| ObserverList<Observer> observers_; |
| + base::CancelableClosure detection_task_; |
| + base::CancelableClosure detection_timeout_; |
| + |
| // URL that returns a 204 response code when connected to the Internet. |
| GURL test_url_; |
| // Detector for checking active network for a portal state. |
| scoped_ptr<captive_portal::CaptivePortalDetector> captive_portal_detector_; |
| + |
| + base::WeakPtrFactory<NetworkPortalDetector> weak_ptr_factory_; |
| + |
| + // Number of portal detection attemps for an active network. |
| + int attempt_count_; |
| + |
| + // Minimum time between consecutive portal checks for the same |
| + // active network. |
| + base::TimeDelta min_time_between_attempts_; |
| + |
| + // Start time of portal detection attempt. |
| + base::TimeTicks attempt_start_time_; |
| + |
| + // Timeout for a portal detection. |
| + base::TimeDelta request_timeout_; |
| + |
| + // Delay before next portal detection. |
| + base::TimeDelta next_attempt_delay_; |
| + |
| + // Test time ticks used by unit tests. |
| + base::TimeTicks time_ticks_for_testing_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(NetworkPortalDetector); |
| }; |
| } // namespace chromeos |