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

Side by Side Diff: chrome/browser/chromeos/net/network_portal_detector.h

Issue 12260003: Implemented lazy portal detection. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #ifndef CHROME_BROWSER_CHROMEOS_NET_NETWORK_PORTAL_DETECTOR_H_ 5 #ifndef CHROME_BROWSER_CHROMEOS_NET_NETWORK_PORTAL_DETECTOR_H_
6 #define CHROME_BROWSER_CHROMEOS_NET_NETWORK_PORTAL_DETECTOR_H_ 6 #define CHROME_BROWSER_CHROMEOS_NET_NETWORK_PORTAL_DETECTOR_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 // Returns Captive Portal state for a given |network|. 79 // Returns Captive Portal state for a given |network|.
80 CaptivePortalState GetCaptivePortalState(const chromeos::Network* network); 80 CaptivePortalState GetCaptivePortalState(const chromeos::Network* network);
81 81
82 // NetworkLibrary::NetworkManagerObserver implementation: 82 // NetworkLibrary::NetworkManagerObserver implementation:
83 virtual void OnNetworkManagerChanged(chromeos::NetworkLibrary* cros) OVERRIDE; 83 virtual void OnNetworkManagerChanged(chromeos::NetworkLibrary* cros) OVERRIDE;
84 84
85 // NetworkLibrary::NetworkObserver implementation: 85 // NetworkLibrary::NetworkObserver implementation:
86 virtual void OnNetworkChanged(chromeos::NetworkLibrary* cros, 86 virtual void OnNetworkChanged(chromeos::NetworkLibrary* cros,
87 const chromeos::Network* network) OVERRIDE; 87 const chromeos::Network* network) OVERRIDE;
88 88
89 // Enables lazy detection mode. In this mode portal detection after
90 // first 3 consecutive attemps will be performed once in 30 seconds.
91 void EnableLazyDetection();
92
93 // Dizables lazy detection mode.
94 void DisableLazyDetection();
95
89 // Creates an instance of the NetworkPortalDetector. 96 // Creates an instance of the NetworkPortalDetector.
90 static NetworkPortalDetector* CreateInstance(); 97 static NetworkPortalDetector* CreateInstance();
91 98
92 // Gets the instance of the NetworkPortalDetector. 99 // Gets the instance of the NetworkPortalDetector.
93 static NetworkPortalDetector* GetInstance(); 100 static NetworkPortalDetector* GetInstance();
94 101
95 // Returns true is NetworkPortalDetector service is enabled. 102 // Returns true is NetworkPortalDetector service is enabled.
96 static bool IsEnabled(); 103 static bool IsEnabled();
97 104
98 private: 105 private:
(...skipping 23 matching lines...) Expand all
122 // calls OnPortalDetectionCompleted() with RESULT_NO_RESPONSE as 129 // calls OnPortalDetectionCompleted() with RESULT_NO_RESPONSE as
123 // a result. 130 // a result.
124 void PortalDetectionTimeout(); 131 void PortalDetectionTimeout();
125 132
126 void CancelPortalDetection(); 133 void CancelPortalDetection();
127 134
128 // Called by CaptivePortalDetector when detection completes. 135 // Called by CaptivePortalDetector when detection completes.
129 void OnPortalDetectionCompleted( 136 void OnPortalDetectionCompleted(
130 const captive_portal::CaptivePortalDetector::Results& results); 137 const captive_portal::CaptivePortalDetector::Results& results);
131 138
139 // Tries to perform portal detection in "lazy" mode. Does nothing in
140 // the case of already pending/processing detection request.
141 void TryLazyDetection();
142
132 // content::NotificationObserver implementation: 143 // content::NotificationObserver implementation:
133 virtual void Observe(int type, 144 virtual void Observe(int type,
134 const content::NotificationSource& source, 145 const content::NotificationSource& source,
135 const content::NotificationDetails& details) OVERRIDE; 146 const content::NotificationDetails& details) OVERRIDE;
136 147
137 // Returns true if we're waiting for portal check. 148 // Returns true if we're waiting for portal check.
138 bool IsPortalCheckPending() const; 149 bool IsPortalCheckPending() const;
139 150
140 // Returns true if portal check is in progress. 151 // Returns true if portal check is in progress.
141 bool IsCheckingForPortal() const; 152 bool IsCheckingForPortal() const;
(...skipping 14 matching lines...) Expand all
156 // Returns current number of portal detection attempts. 167 // Returns current number of portal detection attempts.
157 // Used by unit tests. 168 // Used by unit tests.
158 int attempt_count_for_testing() { return attempt_count_; } 169 int attempt_count_for_testing() { return attempt_count_; }
159 170
160 // Sets minimum time between consecutive portal checks for the same 171 // Sets minimum time between consecutive portal checks for the same
161 // network. Used by unit tests. 172 // network. Used by unit tests.
162 void set_min_time_between_attempts_for_testing(const base::TimeDelta& delta) { 173 void set_min_time_between_attempts_for_testing(const base::TimeDelta& delta) {
163 min_time_between_attempts_ = delta; 174 min_time_between_attempts_ = delta;
164 } 175 }
165 176
177 // Sets default interval between consecutive portal checks for a
178 // network in portal state. Used by unit tests.
179 void set_lazy_check_interval_for_testing(const base::TimeDelta& delta) {
180 lazy_check_interval_ = delta;
181 }
182
166 // Sets portal detection timeout. Used by unit tests. 183 // Sets portal detection timeout. Used by unit tests.
167 void set_request_timeout_for_testing(const base::TimeDelta& timeout) { 184 void set_request_timeout_for_testing(const base::TimeDelta& timeout) {
168 request_timeout_ = timeout; 185 request_timeout_ = timeout;
169 } 186 }
170 187
171 // Returns delay before next portal check. Used by unit tests. 188 // Returns delay before next portal check. Used by unit tests.
172 const base::TimeDelta& next_attempt_delay_for_testing() { 189 const base::TimeDelta& next_attempt_delay_for_testing() {
173 return next_attempt_delay_; 190 return next_attempt_delay_;
174 } 191 }
175 192
(...skipping 27 matching lines...) Expand all
203 GURL test_url_; 220 GURL test_url_;
204 221
205 // Detector for checking active network for a portal state. 222 // Detector for checking active network for a portal state.
206 scoped_ptr<captive_portal::CaptivePortalDetector> captive_portal_detector_; 223 scoped_ptr<captive_portal::CaptivePortalDetector> captive_portal_detector_;
207 224
208 base::WeakPtrFactory<NetworkPortalDetector> weak_ptr_factory_; 225 base::WeakPtrFactory<NetworkPortalDetector> weak_ptr_factory_;
209 226
210 // Number of portal detection attemps for an active network. 227 // Number of portal detection attemps for an active network.
211 int attempt_count_; 228 int attempt_count_;
212 229
230 // True if lazy detection is enabled.
231 bool lazy_detection_enabled_;
232
233 // Time between consecutive portal checks for a network in lazy
234 // mode.
235 base::TimeDelta lazy_check_interval_;
236
213 // Minimum time between consecutive portal checks for the same 237 // Minimum time between consecutive portal checks for the same
214 // active network. 238 // active network.
215 base::TimeDelta min_time_between_attempts_; 239 base::TimeDelta min_time_between_attempts_;
216 240
217 // Start time of portal detection. 241 // Start time of portal detection.
218 base::TimeTicks detection_start_time_; 242 base::TimeTicks detection_start_time_;
219 243
220 // Start time of portal detection attempt. 244 // Start time of portal detection attempt.
221 base::TimeTicks attempt_start_time_; 245 base::TimeTicks attempt_start_time_;
222 246
223 // Timeout for a portal detection. 247 // Timeout for a portal detection.
224 base::TimeDelta request_timeout_; 248 base::TimeDelta request_timeout_;
225 249
226 // Delay before next portal detection. 250 // Delay before next portal detection.
227 base::TimeDelta next_attempt_delay_; 251 base::TimeDelta next_attempt_delay_;
228 252
229 // Test time ticks used by unit tests. 253 // Test time ticks used by unit tests.
230 base::TimeTicks time_ticks_for_testing_; 254 base::TimeTicks time_ticks_for_testing_;
231 255
232 content::NotificationRegistrar registrar_; 256 content::NotificationRegistrar registrar_;
233 257
234 DISALLOW_COPY_AND_ASSIGN(NetworkPortalDetector); 258 DISALLOW_COPY_AND_ASSIGN(NetworkPortalDetector);
235 }; 259 };
236 260
237 } // namespace chromeos 261 } // namespace chromeos
238 262
239 #endif // CHROME_BROWSER_CHROMEOS_NET_NETWORK_PORTAL_DETECTOR_H_ 263 #endif // CHROME_BROWSER_CHROMEOS_NET_NETWORK_PORTAL_DETECTOR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698