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 #ifndef CHROME_BROWSER_CHROMEOS_NET_NETWORK_PORTAL_DETECTOR_IMPL_H_ | 5 #ifndef CHROME_BROWSER_CHROMEOS_NET_NETWORK_PORTAL_DETECTOR_IMPL_H_ |
6 #define CHROME_BROWSER_CHROMEOS_NET_NETWORK_PORTAL_DETECTOR_IMPL_H_ | 6 #define CHROME_BROWSER_CHROMEOS_NET_NETWORK_PORTAL_DETECTOR_IMPL_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 const std::string& guid) OVERRIDE; | 75 const std::string& guid) OVERRIDE; |
76 virtual bool IsEnabled() OVERRIDE; | 76 virtual bool IsEnabled() OVERRIDE; |
77 virtual void Enable(bool start_detection) OVERRIDE; | 77 virtual void Enable(bool start_detection) OVERRIDE; |
78 virtual bool StartDetectionIfIdle() OVERRIDE; | 78 virtual bool StartDetectionIfIdle() OVERRIDE; |
79 virtual void SetStrategy(PortalDetectorStrategy::StrategyId id) OVERRIDE; | 79 virtual void SetStrategy(PortalDetectorStrategy::StrategyId id) OVERRIDE; |
80 | 80 |
81 // NetworkStateHandlerObserver implementation: | 81 // NetworkStateHandlerObserver implementation: |
82 virtual void DefaultNetworkChanged(const NetworkState* network) OVERRIDE; | 82 virtual void DefaultNetworkChanged(const NetworkState* network) OVERRIDE; |
83 | 83 |
84 // PortalDetectorStrategy::Delegate implementation: | 84 // PortalDetectorStrategy::Delegate implementation: |
85 virtual int AttemptCount() OVERRIDE; | 85 virtual int NoResponseResultCount() OVERRIDE; |
86 virtual base::TimeTicks AttemptStartTime() OVERRIDE; | 86 virtual base::TimeTicks AttemptStartTime() OVERRIDE; |
87 virtual base::TimeTicks GetCurrentTimeTicks() OVERRIDE; | 87 virtual base::TimeTicks GetCurrentTimeTicks() OVERRIDE; |
88 | 88 |
89 private: | 89 private: |
90 friend class NetworkPortalDetectorImplTest; | 90 friend class NetworkPortalDetectorImplTest; |
91 friend class NetworkPortalDetectorImplBrowserTest; | 91 friend class NetworkPortalDetectorImplBrowserTest; |
92 | 92 |
93 struct DetectionAttemptCompletedReport { | 93 struct DetectionAttemptCompletedReport { |
94 DetectionAttemptCompletedReport(); | 94 DetectionAttemptCompletedReport(); |
95 | 95 |
(...skipping 23 matching lines...) Expand all Loading... |
119 // Portal check is in progress. | 119 // Portal check is in progress. |
120 STATE_CHECKING_FOR_PORTAL, | 120 STATE_CHECKING_FOR_PORTAL, |
121 }; | 121 }; |
122 | 122 |
123 // Starts detection process. | 123 // Starts detection process. |
124 void StartDetection(); | 124 void StartDetection(); |
125 | 125 |
126 // Stops whole detection process. | 126 // Stops whole detection process. |
127 void StopDetection(); | 127 void StopDetection(); |
128 | 128 |
129 // Internal predicate which describes set of states from which | |
130 // DetectCaptivePortal() can be called. | |
131 bool CanPerformAttempt() const; | |
132 | |
133 // Initiates Captive Portal detection attempt after |delay|. | 129 // Initiates Captive Portal detection attempt after |delay|. |
134 // You should check CanPerformAttempt() before calling this method. | |
135 void ScheduleAttempt(const base::TimeDelta& delay); | 130 void ScheduleAttempt(const base::TimeDelta& delay); |
136 | 131 |
137 // Starts detection attempt. | 132 // Starts detection attempt. |
138 void StartAttempt(); | 133 void StartAttempt(); |
139 | 134 |
140 // Called when portal check is timed out. Cancels portal check and calls | 135 // Called when portal check is timed out. Cancels portal check and calls |
141 // OnPortalDetectionCompleted() with RESULT_NO_RESPONSE as a result. | 136 // OnPortalDetectionCompleted() with RESULT_NO_RESPONSE as a result. |
142 void OnAttemptTimeout(); | 137 void OnAttemptTimeout(); |
143 | 138 |
144 // Called by CaptivePortalDetector when detection attempt completes. | 139 // Called by CaptivePortalDetector when detection attempt completes. |
(...skipping 18 matching lines...) Expand all Loading... |
163 bool is_idle() const { | 158 bool is_idle() const { |
164 return state_ == STATE_IDLE; | 159 return state_ == STATE_IDLE; |
165 } | 160 } |
166 bool is_portal_check_pending() const { | 161 bool is_portal_check_pending() const { |
167 return state_ == STATE_PORTAL_CHECK_PENDING; | 162 return state_ == STATE_PORTAL_CHECK_PENDING; |
168 } | 163 } |
169 bool is_checking_for_portal() const { | 164 bool is_checking_for_portal() const { |
170 return state_ == STATE_CHECKING_FOR_PORTAL; | 165 return state_ == STATE_CHECKING_FOR_PORTAL; |
171 } | 166 } |
172 | 167 |
173 int attempt_count_for_testing() { | 168 int same_detection_result_count_for_testing() const { |
174 return attempt_count_; | 169 return same_detection_result_count_; |
175 } | 170 } |
176 | 171 |
177 void set_attempt_count_for_testing(int attempt_count) { | 172 int no_response_result_count_for_testing() const { |
178 attempt_count_ = attempt_count; | 173 return no_response_result_count_; |
| 174 } |
| 175 |
| 176 void set_no_response_result_count_for_testing(int count) { |
| 177 no_response_result_count_ = count; |
179 } | 178 } |
180 | 179 |
181 // Returns delay before next portal check. Used by unit tests. | 180 // Returns delay before next portal check. Used by unit tests. |
182 const base::TimeDelta& next_attempt_delay_for_testing() const { | 181 const base::TimeDelta& next_attempt_delay_for_testing() const { |
183 return next_attempt_delay_; | 182 return next_attempt_delay_; |
184 } | 183 } |
185 | 184 |
186 // Returns true if attempt timeout callback isn't fired or | 185 // Returns true if attempt timeout callback isn't fired or |
187 // cancelled. | 186 // cancelled. |
188 bool AttemptTimeoutIsCancelledForTesting() const; | 187 bool AttemptTimeoutIsCancelledForTesting() const; |
189 | 188 |
190 // Record detection stats such as detection duration and detection | 189 // Record detection stats such as detection duration and detection |
191 // result in UMA. | 190 // result in UMA. |
192 void RecordDetectionStats(const NetworkState* network, | 191 void RecordDetectionStats(const NetworkState* network, |
193 CaptivePortalStatus status); | 192 CaptivePortalStatus status); |
194 | 193 |
| 194 // Resets strategy and all counters used in computations of |
| 195 // timeouts. |
| 196 void ResetStrategyAndCounters(); |
| 197 |
195 // Sets current test time ticks. Used by unit tests. | 198 // Sets current test time ticks. Used by unit tests. |
196 void set_time_ticks_for_testing(const base::TimeTicks& time_ticks) { | 199 void set_time_ticks_for_testing(const base::TimeTicks& time_ticks) { |
197 time_ticks_for_testing_ = time_ticks; | 200 time_ticks_for_testing_ = time_ticks; |
198 } | 201 } |
199 | 202 |
200 // Advances current test time ticks. Used by unit tests. | 203 // Advances current test time ticks. Used by unit tests. |
201 void advance_time_ticks_for_testing(const base::TimeDelta& delta) { | 204 void advance_time_ticks_for_testing(const base::TimeDelta& delta) { |
202 time_ticks_for_testing_ += delta; | 205 time_ticks_for_testing_ += delta; |
203 } | 206 } |
204 | 207 |
(...skipping 21 matching lines...) Expand all Loading... |
226 | 229 |
227 // True if the NetworkPortalDetector is enabled. | 230 // True if the NetworkPortalDetector is enabled. |
228 bool enabled_; | 231 bool enabled_; |
229 | 232 |
230 // Start time of portal detection. | 233 // Start time of portal detection. |
231 base::TimeTicks detection_start_time_; | 234 base::TimeTicks detection_start_time_; |
232 | 235 |
233 // Start time of detection attempt. | 236 // Start time of detection attempt. |
234 base::TimeTicks attempt_start_time_; | 237 base::TimeTicks attempt_start_time_; |
235 | 238 |
236 // Number of already performed detection attempts. | |
237 int attempt_count_; | |
238 | |
239 // Delay before next portal detection. | 239 // Delay before next portal detection. |
240 base::TimeDelta next_attempt_delay_; | 240 base::TimeDelta next_attempt_delay_; |
241 | 241 |
242 // Current detection strategy. | 242 // Current detection strategy. |
243 scoped_ptr<PortalDetectorStrategy> strategy_; | 243 scoped_ptr<PortalDetectorStrategy> strategy_; |
244 | 244 |
| 245 // Last received result from captive portal detector. |
| 246 CaptivePortalStatus last_detection_result_; |
| 247 |
| 248 // Number of detection attempts with same result in a row. |
| 249 int same_detection_result_count_; |
| 250 |
| 251 // Number of detection attempts in a row with NO RESPONSE result. |
| 252 int no_response_result_count_; |
| 253 |
245 // UI notification controller about captive portal state. | 254 // UI notification controller about captive portal state. |
246 NetworkPortalNotificationController notification_controller_; | 255 NetworkPortalNotificationController notification_controller_; |
247 | 256 |
248 content::NotificationRegistrar registrar_; | 257 content::NotificationRegistrar registrar_; |
249 | 258 |
250 // Test time ticks used by unit tests. | 259 // Test time ticks used by unit tests. |
251 base::TimeTicks time_ticks_for_testing_; | 260 base::TimeTicks time_ticks_for_testing_; |
252 | 261 |
253 // Contents of a last log message about completed detection attempt. | 262 // Contents of a last log message about completed detection attempt. |
254 DetectionAttemptCompletedReport attempt_completed_report_; | 263 DetectionAttemptCompletedReport attempt_completed_report_; |
255 | 264 |
256 base::WeakPtrFactory<NetworkPortalDetectorImpl> weak_factory_; | 265 base::WeakPtrFactory<NetworkPortalDetectorImpl> weak_factory_; |
257 | 266 |
258 DISALLOW_COPY_AND_ASSIGN(NetworkPortalDetectorImpl); | 267 DISALLOW_COPY_AND_ASSIGN(NetworkPortalDetectorImpl); |
259 }; | 268 }; |
260 | 269 |
261 } // namespace chromeos | 270 } // namespace chromeos |
262 | 271 |
263 #endif // CHROME_BROWSER_CHROMEOS_NET_NETWORK_PORTAL_DETECTOR_IMPL_H_ | 272 #endif // CHROME_BROWSER_CHROMEOS_NET_NETWORK_PORTAL_DETECTOR_IMPL_H_ |
OLD | NEW |