| 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..0d7475045efaa0c5c0b4584e743370e5ab4e3a75 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,34 @@ 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();
|
| +
|
| + // Called when portal check is timed out. Cancels portal check and
|
| + // calls OnPortalDetectionCompleted() with RESULT_NO_RESPONSE as
|
| + // a result.
|
| + void PortalDetectionTimeout();
|
| +
|
| + 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 +119,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
|
|
|