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

Side by Side Diff: chrome/browser/captive_portal/captive_portal_tab_reloader_unittest.cc

Issue 242483003: Move CaptivePortalDetector to src/components/captive_portal (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 6 years, 7 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 #include "chrome/browser/captive_portal/captive_portal_tab_reloader.h" 5 #include "chrome/browser/captive_portal/captive_portal_tab_reloader.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "chrome/browser/captive_portal/captive_portal_service.h" 9 #include "chrome/browser/captive_portal/captive_portal_service.h"
10 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 10 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
11 #include "content/public/browser/interstitial_page.h" 11 #include "content/public/browser/interstitial_page.h"
12 #include "content/public/browser/interstitial_page_delegate.h" 12 #include "content/public/browser/interstitial_page_delegate.h"
13 #include "content/public/browser/web_contents.h" 13 #include "content/public/browser/web_contents.h"
14 #include "net/base/net_errors.h" 14 #include "net/base/net_errors.h"
15 #include "net/cert/cert_status_flags.h" 15 #include "net/cert/cert_status_flags.h"
16 #include "net/ssl/ssl_info.h" 16 #include "net/ssl/ssl_info.h"
17 #include "testing/gmock/include/gmock/gmock.h" 17 #include "testing/gmock/include/gmock/gmock.h"
18 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
19 #include "url/gurl.h" 19 #include "url/gurl.h"
20 20
21 namespace captive_portal { 21 using captive_portal::CaptivePortalResult;
22 22
23 // Used for testing CaptivePortalTabReloader in isolation from the observer. 23 // Used for testing CaptivePortalTabReloader in isolation from the observer.
24 // Exposes a number of private functions and mocks out others. 24 // Exposes a number of private functions and mocks out others.
25 class TestCaptivePortalTabReloader : public CaptivePortalTabReloader { 25 class TestCaptivePortalTabReloader : public CaptivePortalTabReloader {
26 public: 26 public:
27 explicit TestCaptivePortalTabReloader(content::WebContents* web_contents) 27 explicit TestCaptivePortalTabReloader(content::WebContents* web_contents)
28 : CaptivePortalTabReloader(NULL, 28 : CaptivePortalTabReloader(NULL,
29 web_contents, 29 web_contents,
30 base::Callback<void(void)>()) { 30 base::Callback<void(void)>()) {
31 } 31 }
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING, 117 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING,
118 tab_reloader().state()); 118 tab_reloader().state());
119 EXPECT_TRUE(tab_reloader().TimerRunning()); 119 EXPECT_TRUE(tab_reloader().TimerRunning());
120 120
121 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()).Times(1); 121 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()).Times(1);
122 base::MessageLoop::current()->RunUntilIdle(); 122 base::MessageLoop::current()->RunUntilIdle();
123 EXPECT_FALSE(tab_reloader().TimerRunning()); 123 EXPECT_FALSE(tab_reloader().TimerRunning());
124 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL, 124 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL,
125 tab_reloader().state()); 125 tab_reloader().state());
126 126
127 tab_reloader().OnCaptivePortalResults(RESULT_INTERNET_CONNECTED, 127 tab_reloader().OnCaptivePortalResults(
128 RESULT_INTERNET_CONNECTED); 128 captive_portal::RESULT_INTERNET_CONNECTED,
129 captive_portal::RESULT_INTERNET_CONNECTED);
129 130
130 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 131 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
131 EXPECT_FALSE(tab_reloader().TimerRunning()); 132 EXPECT_FALSE(tab_reloader().TimerRunning());
132 133
133 tab_reloader().OnLoadCommitted(net::OK); 134 tab_reloader().OnLoadCommitted(net::OK);
134 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 135 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
135 } 136 }
136 137
137 // Simulates a slow SSL load when the Internet is connected. In this case, 138 // Simulates a slow SSL load when the Internet is connected. In this case,
138 // the timeout error occurs before the timer triggers. Unlikely to happen 139 // the timeout error occurs before the timer triggers. Unlikely to happen
139 // in practice, but best if it still works. 140 // in practice, but best if it still works.
140 TEST_F(CaptivePortalTabReloaderTest, InternetConnectedTimeout) { 141 TEST_F(CaptivePortalTabReloaderTest, InternetConnectedTimeout) {
141 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 142 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
142 143
143 tab_reloader().OnLoadStart(true); 144 tab_reloader().OnLoadStart(true);
144 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING, 145 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING,
145 tab_reloader().state()); 146 tab_reloader().state());
146 EXPECT_TRUE(tab_reloader().TimerRunning()); 147 EXPECT_TRUE(tab_reloader().TimerRunning());
147 148
148 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()).Times(1); 149 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()).Times(1);
149 tab_reloader().OnLoadCommitted(net::ERR_CONNECTION_TIMED_OUT); 150 tab_reloader().OnLoadCommitted(net::ERR_CONNECTION_TIMED_OUT);
150 EXPECT_FALSE(tab_reloader().TimerRunning()); 151 EXPECT_FALSE(tab_reloader().TimerRunning());
151 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL, 152 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL,
152 tab_reloader().state()); 153 tab_reloader().state());
153 154
154 tab_reloader().OnCaptivePortalResults(RESULT_INTERNET_CONNECTED, 155 tab_reloader().OnCaptivePortalResults(
155 RESULT_INTERNET_CONNECTED); 156 captive_portal::RESULT_INTERNET_CONNECTED,
157 captive_portal::RESULT_INTERNET_CONNECTED);
156 158
157 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 159 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
158 } 160 }
159 161
160 // Simulates a slow SSL load when captive portal checks return no response. 162 // Simulates a slow SSL load when captive portal checks return no response.
161 TEST_F(CaptivePortalTabReloaderTest, NoResponse) { 163 TEST_F(CaptivePortalTabReloaderTest, NoResponse) {
162 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 164 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
163 165
164 tab_reloader().OnLoadStart(true); 166 tab_reloader().OnLoadStart(true);
165 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING, 167 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING,
166 tab_reloader().state()); 168 tab_reloader().state());
167 EXPECT_TRUE(tab_reloader().TimerRunning()); 169 EXPECT_TRUE(tab_reloader().TimerRunning());
168 170
169 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()).Times(1); 171 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()).Times(1);
170 base::MessageLoop::current()->RunUntilIdle(); 172 base::MessageLoop::current()->RunUntilIdle();
171 EXPECT_FALSE(tab_reloader().TimerRunning()); 173 EXPECT_FALSE(tab_reloader().TimerRunning());
172 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL, 174 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL,
173 tab_reloader().state()); 175 tab_reloader().state());
174 176
175 tab_reloader().OnCaptivePortalResults(RESULT_NO_RESPONSE, RESULT_NO_RESPONSE); 177 tab_reloader().OnCaptivePortalResults(captive_portal::RESULT_NO_RESPONSE,
178 captive_portal::RESULT_NO_RESPONSE);
176 179
177 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 180 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
178 EXPECT_FALSE(tab_reloader().TimerRunning()); 181 EXPECT_FALSE(tab_reloader().TimerRunning());
179 182
180 tab_reloader().OnLoadCommitted(net::OK); 183 tab_reloader().OnLoadCommitted(net::OK);
181 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 184 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
182 } 185 }
183 186
184 // Simulates a slow HTTP load when behind a captive portal, that eventually. 187 // Simulates a slow HTTP load when behind a captive portal, that eventually.
185 // tiems out. Since it's HTTP, the TabReloader should do nothing. 188 // tiems out. Since it's HTTP, the TabReloader should do nothing.
186 TEST_F(CaptivePortalTabReloaderTest, DoesNothingOnHttp) { 189 TEST_F(CaptivePortalTabReloaderTest, DoesNothingOnHttp) {
187 tab_reloader().OnLoadStart(false); 190 tab_reloader().OnLoadStart(false);
188 EXPECT_FALSE(tab_reloader().TimerRunning()); 191 EXPECT_FALSE(tab_reloader().TimerRunning());
189 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 192 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
190 193
191 tab_reloader().OnCaptivePortalResults(RESULT_INTERNET_CONNECTED, 194 tab_reloader().OnCaptivePortalResults(
192 RESULT_BEHIND_CAPTIVE_PORTAL); 195 captive_portal::RESULT_INTERNET_CONNECTED,
196 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL);
193 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 197 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
194 198
195 // The user logs in. 199 // The user logs in.
196 tab_reloader().OnCaptivePortalResults(RESULT_BEHIND_CAPTIVE_PORTAL, 200 tab_reloader().OnCaptivePortalResults(
197 RESULT_INTERNET_CONNECTED); 201 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL,
202 captive_portal::RESULT_INTERNET_CONNECTED);
198 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 203 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
199 204
200 // The page times out. 205 // The page times out.
201 tab_reloader().OnLoadCommitted(net::ERR_CONNECTION_TIMED_OUT); 206 tab_reloader().OnLoadCommitted(net::ERR_CONNECTION_TIMED_OUT);
202 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 207 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
203 } 208 }
204 209
205 // Simulate the normal login process. The user logs in before the error page 210 // Simulate the normal login process. The user logs in before the error page
206 // in the original tab commits. 211 // in the original tab commits.
207 TEST_F(CaptivePortalTabReloaderTest, Login) { 212 TEST_F(CaptivePortalTabReloaderTest, Login) {
208 tab_reloader().OnLoadStart(true); 213 tab_reloader().OnLoadStart(true);
209 214
210 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()).Times(1); 215 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()).Times(1);
211 base::MessageLoop::current()->RunUntilIdle(); 216 base::MessageLoop::current()->RunUntilIdle();
212 EXPECT_FALSE(tab_reloader().TimerRunning()); 217 EXPECT_FALSE(tab_reloader().TimerRunning());
213 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL, 218 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL,
214 tab_reloader().state()); 219 tab_reloader().state());
215 220
216 // The captive portal service detects a captive portal. The TabReloader 221 // The captive portal service detects a captive portal. The TabReloader
217 // should try and create a new login tab in response. 222 // should try and create a new login tab in response.
218 EXPECT_CALL(tab_reloader(), MaybeOpenCaptivePortalLoginTab()).Times(1); 223 EXPECT_CALL(tab_reloader(), MaybeOpenCaptivePortalLoginTab()).Times(1);
219 tab_reloader().OnCaptivePortalResults(RESULT_INTERNET_CONNECTED, 224 tab_reloader().OnCaptivePortalResults(
220 RESULT_BEHIND_CAPTIVE_PORTAL); 225 captive_portal::RESULT_INTERNET_CONNECTED,
226 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL);
221 EXPECT_EQ(CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL, 227 EXPECT_EQ(CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL,
222 tab_reloader().state()); 228 tab_reloader().state());
223 EXPECT_FALSE(tab_reloader().TimerRunning()); 229 EXPECT_FALSE(tab_reloader().TimerRunning());
224 230
225 // The user logs on from another tab, and a captive portal check is triggered. 231 // The user logs on from another tab, and a captive portal check is triggered.
226 tab_reloader().OnCaptivePortalResults(RESULT_BEHIND_CAPTIVE_PORTAL, 232 tab_reloader().OnCaptivePortalResults(
227 RESULT_INTERNET_CONNECTED); 233 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL,
234 captive_portal::RESULT_INTERNET_CONNECTED);
228 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD, 235 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD,
229 tab_reloader().state()); 236 tab_reloader().state());
230 237
231 // The error page commits, which should start an asynchronous reload. 238 // The error page commits, which should start an asynchronous reload.
232 tab_reloader().OnLoadCommitted(net::ERR_CONNECTION_TIMED_OUT); 239 tab_reloader().OnLoadCommitted(net::ERR_CONNECTION_TIMED_OUT);
233 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD, 240 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD,
234 tab_reloader().state()); 241 tab_reloader().state());
235 242
236 EXPECT_CALL(tab_reloader(), ReloadTab()).Times(1); 243 EXPECT_CALL(tab_reloader(), ReloadTab()).Times(1);
237 base::MessageLoop::current()->RunUntilIdle(); 244 base::MessageLoop::current()->RunUntilIdle();
238 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 245 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
239 } 246 }
240 247
241 // Simulate the normal login process. The user logs in after the tab finishes 248 // Simulate the normal login process. The user logs in after the tab finishes
242 // loading the error page. 249 // loading the error page.
243 TEST_F(CaptivePortalTabReloaderTest, LoginLate) { 250 TEST_F(CaptivePortalTabReloaderTest, LoginLate) {
244 tab_reloader().OnLoadStart(true); 251 tab_reloader().OnLoadStart(true);
245 252
246 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()).Times(1); 253 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()).Times(1);
247 base::MessageLoop::current()->RunUntilIdle(); 254 base::MessageLoop::current()->RunUntilIdle();
248 EXPECT_FALSE(tab_reloader().TimerRunning()); 255 EXPECT_FALSE(tab_reloader().TimerRunning());
249 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL, 256 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL,
250 tab_reloader().state()); 257 tab_reloader().state());
251 258
252 // The captive portal service detects a captive portal. The TabReloader 259 // The captive portal service detects a captive portal. The TabReloader
253 // should try and create a new login tab in response. 260 // should try and create a new login tab in response.
254 EXPECT_CALL(tab_reloader(), MaybeOpenCaptivePortalLoginTab()).Times(1); 261 EXPECT_CALL(tab_reloader(), MaybeOpenCaptivePortalLoginTab()).Times(1);
255 tab_reloader().OnCaptivePortalResults(RESULT_INTERNET_CONNECTED, 262 tab_reloader().OnCaptivePortalResults(
256 RESULT_BEHIND_CAPTIVE_PORTAL); 263 captive_portal::RESULT_INTERNET_CONNECTED,
264 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL);
257 EXPECT_EQ(CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL, 265 EXPECT_EQ(CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL,
258 tab_reloader().state()); 266 tab_reloader().state());
259 EXPECT_FALSE(tab_reloader().TimerRunning()); 267 EXPECT_FALSE(tab_reloader().TimerRunning());
260 268
261 // The error page commits. 269 // The error page commits.
262 tab_reloader().OnLoadCommitted(net::ERR_CONNECTION_TIMED_OUT); 270 tab_reloader().OnLoadCommitted(net::ERR_CONNECTION_TIMED_OUT);
263 EXPECT_EQ(CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL, 271 EXPECT_EQ(CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL,
264 tab_reloader().state()); 272 tab_reloader().state());
265 273
266 // The user logs on from another tab, and a captive portal check is triggered. 274 // The user logs on from another tab, and a captive portal check is triggered.
267 EXPECT_CALL(tab_reloader(), ReloadTab()).Times(1); 275 EXPECT_CALL(tab_reloader(), ReloadTab()).Times(1);
268 tab_reloader().OnCaptivePortalResults(RESULT_BEHIND_CAPTIVE_PORTAL, 276 tab_reloader().OnCaptivePortalResults(
269 RESULT_INTERNET_CONNECTED); 277 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL,
278 captive_portal::RESULT_INTERNET_CONNECTED);
270 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 279 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
271 } 280 }
272 281
273 // Simulate a login after the tab times out unexpectedly quickly. 282 // Simulate a login after the tab times out unexpectedly quickly.
274 TEST_F(CaptivePortalTabReloaderTest, TimeoutFast) { 283 TEST_F(CaptivePortalTabReloaderTest, TimeoutFast) {
275 tab_reloader().OnLoadStart(true); 284 tab_reloader().OnLoadStart(true);
276 285
277 // The error page commits, which should trigger a captive portal check, 286 // The error page commits, which should trigger a captive portal check,
278 // since the timer's still running. 287 // since the timer's still running.
279 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()).Times(1); 288 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()).Times(1);
280 tab_reloader().OnLoadCommitted(net::ERR_CONNECTION_TIMED_OUT); 289 tab_reloader().OnLoadCommitted(net::ERR_CONNECTION_TIMED_OUT);
281 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL, 290 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL,
282 tab_reloader().state()); 291 tab_reloader().state());
283 292
284 // The captive portal service detects a captive portal. The TabReloader 293 // The captive portal service detects a captive portal. The TabReloader
285 // should try and create a new login tab in response. 294 // should try and create a new login tab in response.
286 EXPECT_CALL(tab_reloader(), MaybeOpenCaptivePortalLoginTab()).Times(1); 295 EXPECT_CALL(tab_reloader(), MaybeOpenCaptivePortalLoginTab()).Times(1);
287 tab_reloader().OnCaptivePortalResults(RESULT_INTERNET_CONNECTED, 296 tab_reloader().OnCaptivePortalResults(
288 RESULT_BEHIND_CAPTIVE_PORTAL); 297 captive_portal::RESULT_INTERNET_CONNECTED,
298 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL);
289 EXPECT_EQ(CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL, 299 EXPECT_EQ(CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL,
290 tab_reloader().state()); 300 tab_reloader().state());
291 EXPECT_FALSE(tab_reloader().TimerRunning()); 301 EXPECT_FALSE(tab_reloader().TimerRunning());
292 302
293 // The user logs on from another tab, and a captive portal check is triggered. 303 // The user logs on from another tab, and a captive portal check is triggered.
294 EXPECT_CALL(tab_reloader(), ReloadTab()).Times(1); 304 EXPECT_CALL(tab_reloader(), ReloadTab()).Times(1);
295 tab_reloader().OnCaptivePortalResults(RESULT_BEHIND_CAPTIVE_PORTAL, 305 tab_reloader().OnCaptivePortalResults(
296 RESULT_INTERNET_CONNECTED); 306 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL,
307 captive_portal::RESULT_INTERNET_CONNECTED);
297 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 308 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
298 } 309 }
299 310
300 // An SSL protocol error triggers a captive portal check behind a captive 311 // An SSL protocol error triggers a captive portal check behind a captive
301 // portal. The user then logs in. 312 // portal. The user then logs in.
302 TEST_F(CaptivePortalTabReloaderTest, SSLProtocolError) { 313 TEST_F(CaptivePortalTabReloaderTest, SSLProtocolError) {
303 tab_reloader().OnLoadStart(true); 314 tab_reloader().OnLoadStart(true);
304 315
305 // The error page commits, which should trigger a captive portal check, 316 // The error page commits, which should trigger a captive portal check,
306 // since the timer's still running. 317 // since the timer's still running.
307 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()).Times(1); 318 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()).Times(1);
308 tab_reloader().OnLoadCommitted(net::ERR_SSL_PROTOCOL_ERROR); 319 tab_reloader().OnLoadCommitted(net::ERR_SSL_PROTOCOL_ERROR);
309 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL, 320 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL,
310 tab_reloader().state()); 321 tab_reloader().state());
311 322
312 // The captive portal service detects a captive portal. The TabReloader 323 // The captive portal service detects a captive portal. The TabReloader
313 // should try and create a new login tab in response. 324 // should try and create a new login tab in response.
314 EXPECT_CALL(tab_reloader(), MaybeOpenCaptivePortalLoginTab()).Times(1); 325 EXPECT_CALL(tab_reloader(), MaybeOpenCaptivePortalLoginTab()).Times(1);
315 tab_reloader().OnCaptivePortalResults(RESULT_INTERNET_CONNECTED, 326 tab_reloader().OnCaptivePortalResults(
316 RESULT_BEHIND_CAPTIVE_PORTAL); 327 captive_portal::RESULT_INTERNET_CONNECTED,
328 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL);
317 EXPECT_EQ(CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL, 329 EXPECT_EQ(CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL,
318 tab_reloader().state()); 330 tab_reloader().state());
319 EXPECT_FALSE(tab_reloader().TimerRunning()); 331 EXPECT_FALSE(tab_reloader().TimerRunning());
320 332
321 // The user logs on from another tab, and a captive portal check is triggered. 333 // The user logs on from another tab, and a captive portal check is triggered.
322 EXPECT_CALL(tab_reloader(), ReloadTab()).Times(1); 334 EXPECT_CALL(tab_reloader(), ReloadTab()).Times(1);
323 tab_reloader().OnCaptivePortalResults(RESULT_BEHIND_CAPTIVE_PORTAL, 335 tab_reloader().OnCaptivePortalResults(
324 RESULT_INTERNET_CONNECTED); 336 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL,
337 captive_portal::RESULT_INTERNET_CONNECTED);
325 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 338 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
326 } 339 }
327 340
328 // An SSL protocol error triggers a captive portal check behind a captive 341 // An SSL protocol error triggers a captive portal check behind a captive
329 // portal. The user logs in before the results from the captive portal check 342 // portal. The user logs in before the results from the captive portal check
330 // completes. 343 // completes.
331 TEST_F(CaptivePortalTabReloaderTest, SSLProtocolErrorFastLogin) { 344 TEST_F(CaptivePortalTabReloaderTest, SSLProtocolErrorFastLogin) {
332 tab_reloader().OnLoadStart(true); 345 tab_reloader().OnLoadStart(true);
333 346
334 // The error page commits, which should trigger a captive portal check, 347 // The error page commits, which should trigger a captive portal check,
335 // since the timer's still running. 348 // since the timer's still running.
336 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()).Times(1); 349 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()).Times(1);
337 tab_reloader().OnLoadCommitted(net::ERR_SSL_PROTOCOL_ERROR); 350 tab_reloader().OnLoadCommitted(net::ERR_SSL_PROTOCOL_ERROR);
338 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL, 351 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL,
339 tab_reloader().state()); 352 tab_reloader().state());
340 353
341 // The user has logged in from another tab. The tab automatically reloads. 354 // The user has logged in from another tab. The tab automatically reloads.
342 EXPECT_CALL(tab_reloader(), ReloadTab()).Times(1); 355 EXPECT_CALL(tab_reloader(), ReloadTab()).Times(1);
343 tab_reloader().OnCaptivePortalResults(RESULT_BEHIND_CAPTIVE_PORTAL, 356 tab_reloader().OnCaptivePortalResults(
344 RESULT_INTERNET_CONNECTED); 357 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL,
358 captive_portal::RESULT_INTERNET_CONNECTED);
345 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 359 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
346 } 360 }
347 361
348 // An SSL protocol error triggers a captive portal check behind a captive 362 // An SSL protocol error triggers a captive portal check behind a captive
349 // portal. The user logs in before the results from the captive portal check 363 // portal. The user logs in before the results from the captive portal check
350 // completes. This case is probably not too likely, but should be handled. 364 // completes. This case is probably not too likely, but should be handled.
351 TEST_F(CaptivePortalTabReloaderTest, SSLProtocolErrorAlreadyLoggedIn) { 365 TEST_F(CaptivePortalTabReloaderTest, SSLProtocolErrorAlreadyLoggedIn) {
352 tab_reloader().OnLoadStart(true); 366 tab_reloader().OnLoadStart(true);
353 367
354 // The user logs in from another tab before the tab errors out. 368 // The user logs in from another tab before the tab errors out.
355 tab_reloader().OnCaptivePortalResults(RESULT_BEHIND_CAPTIVE_PORTAL, 369 tab_reloader().OnCaptivePortalResults(
356 RESULT_INTERNET_CONNECTED); 370 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL,
371 captive_portal::RESULT_INTERNET_CONNECTED);
357 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD, 372 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD,
358 tab_reloader().state()); 373 tab_reloader().state());
359 374
360 // The error page commits, which should trigger a reload. 375 // The error page commits, which should trigger a reload.
361 EXPECT_CALL(tab_reloader(), ReloadTab()).Times(1); 376 EXPECT_CALL(tab_reloader(), ReloadTab()).Times(1);
362 tab_reloader().OnLoadCommitted(net::ERR_SSL_PROTOCOL_ERROR); 377 tab_reloader().OnLoadCommitted(net::ERR_SSL_PROTOCOL_ERROR);
363 base::MessageLoop::current()->RunUntilIdle(); 378 base::MessageLoop::current()->RunUntilIdle();
364 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 379 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
365 } 380 }
366 381
367 // Simulate the case that a user has already logged in before the tab receives a 382 // Simulate the case that a user has already logged in before the tab receives a
368 // captive portal result, but a RESULT_BEHIND_CAPTIVE_PORTAL was received 383 // captive portal result, but a RESULT_BEHIND_CAPTIVE_PORTAL was received
369 // before the tab started loading. 384 // before the tab started loading.
370 TEST_F(CaptivePortalTabReloaderTest, AlreadyLoggedIn) { 385 TEST_F(CaptivePortalTabReloaderTest, AlreadyLoggedIn) {
371 tab_reloader().OnLoadStart(true); 386 tab_reloader().OnLoadStart(true);
372 387
373 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()).Times(1); 388 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()).Times(1);
374 base::MessageLoop::current()->RunUntilIdle(); 389 base::MessageLoop::current()->RunUntilIdle();
375 EXPECT_FALSE(tab_reloader().TimerRunning()); 390 EXPECT_FALSE(tab_reloader().TimerRunning());
376 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL, 391 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL,
377 tab_reloader().state()); 392 tab_reloader().state());
378 393
379 // The user has already logged in. Since the last result found a captive 394 // The user has already logged in. Since the last result found a captive
380 // portal, the tab will be reloaded if a timeout is committed. 395 // portal, the tab will be reloaded if a timeout is committed.
381 tab_reloader().OnCaptivePortalResults(RESULT_BEHIND_CAPTIVE_PORTAL, 396 tab_reloader().OnCaptivePortalResults(
382 RESULT_INTERNET_CONNECTED); 397 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL,
398 captive_portal::RESULT_INTERNET_CONNECTED);
383 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD, 399 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD,
384 tab_reloader().state()); 400 tab_reloader().state());
385 401
386 // The error page commits, which should start an asynchronous reload. 402 // The error page commits, which should start an asynchronous reload.
387 tab_reloader().OnLoadCommitted(net::ERR_CONNECTION_TIMED_OUT); 403 tab_reloader().OnLoadCommitted(net::ERR_CONNECTION_TIMED_OUT);
388 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD, 404 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD,
389 tab_reloader().state()); 405 tab_reloader().state());
390 406
391 EXPECT_CALL(tab_reloader(), ReloadTab()).Times(1); 407 EXPECT_CALL(tab_reloader(), ReloadTab()).Times(1);
392 base::MessageLoop::current()->RunUntilIdle(); 408 base::MessageLoop::current()->RunUntilIdle();
393 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 409 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
394 } 410 }
395 411
396 // Same as above, except the result is received even before the timer triggers, 412 // Same as above, except the result is received even before the timer triggers,
397 // due to a captive portal test request from some external source, like a login 413 // due to a captive portal test request from some external source, like a login
398 // tab. 414 // tab.
399 TEST_F(CaptivePortalTabReloaderTest, AlreadyLoggedInBeforeTimerTriggers) { 415 TEST_F(CaptivePortalTabReloaderTest, AlreadyLoggedInBeforeTimerTriggers) {
400 tab_reloader().OnLoadStart(true); 416 tab_reloader().OnLoadStart(true);
401 417
402 // The user has already logged in. Since the last result indicated there is 418 // The user has already logged in. Since the last result indicated there is
403 // a captive portal, the tab will be reloaded if it times out. 419 // a captive portal, the tab will be reloaded if it times out.
404 tab_reloader().OnCaptivePortalResults(RESULT_BEHIND_CAPTIVE_PORTAL, 420 tab_reloader().OnCaptivePortalResults(
405 RESULT_INTERNET_CONNECTED); 421 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL,
422 captive_portal::RESULT_INTERNET_CONNECTED);
406 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD, 423 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD,
407 tab_reloader().state()); 424 tab_reloader().state());
408 EXPECT_FALSE(tab_reloader().TimerRunning()); 425 EXPECT_FALSE(tab_reloader().TimerRunning());
409 426
410 // The error page commits, which should start an asynchronous reload. 427 // The error page commits, which should start an asynchronous reload.
411 tab_reloader().OnLoadCommitted(net::ERR_CONNECTION_TIMED_OUT); 428 tab_reloader().OnLoadCommitted(net::ERR_CONNECTION_TIMED_OUT);
412 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD, 429 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD,
413 tab_reloader().state()); 430 tab_reloader().state());
414 431
415 EXPECT_CALL(tab_reloader(), ReloadTab()).Times(1); 432 EXPECT_CALL(tab_reloader(), ReloadTab()).Times(1);
416 base::MessageLoop::current()->RunUntilIdle(); 433 base::MessageLoop::current()->RunUntilIdle();
417 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 434 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
418 } 435 }
419 436
420 // Simulate the user logging in while the timer is still running. May happen 437 // Simulate the user logging in while the timer is still running. May happen
421 // if the tab is reloaded just before logging in on another tab. 438 // if the tab is reloaded just before logging in on another tab.
422 TEST_F(CaptivePortalTabReloaderTest, LoginWhileTimerRunning) { 439 TEST_F(CaptivePortalTabReloaderTest, LoginWhileTimerRunning) {
423 tab_reloader().OnLoadStart(true); 440 tab_reloader().OnLoadStart(true);
424 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING, 441 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING,
425 tab_reloader().state()); 442 tab_reloader().state());
426 EXPECT_TRUE(tab_reloader().TimerRunning()); 443 EXPECT_TRUE(tab_reloader().TimerRunning());
427 444
428 // The user has already logged in. 445 // The user has already logged in.
429 tab_reloader().OnCaptivePortalResults(RESULT_BEHIND_CAPTIVE_PORTAL, 446 tab_reloader().OnCaptivePortalResults(
430 RESULT_INTERNET_CONNECTED); 447 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL,
448 captive_portal::RESULT_INTERNET_CONNECTED);
431 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD, 449 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD,
432 tab_reloader().state()); 450 tab_reloader().state());
433 451
434 // The error page commits, which should start an asynchronous reload. 452 // The error page commits, which should start an asynchronous reload.
435 tab_reloader().OnLoadCommitted(net::ERR_CONNECTION_TIMED_OUT); 453 tab_reloader().OnLoadCommitted(net::ERR_CONNECTION_TIMED_OUT);
436 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD, 454 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD,
437 tab_reloader().state()); 455 tab_reloader().state());
438 456
439 EXPECT_CALL(tab_reloader(), ReloadTab()).Times(1); 457 EXPECT_CALL(tab_reloader(), ReloadTab()).Times(1);
440 base::MessageLoop::current()->RunUntilIdle(); 458 base::MessageLoop::current()->RunUntilIdle();
441 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 459 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
442 } 460 }
443 461
444 // Simulate a captive portal being detected while the time is still running. 462 // Simulate a captive portal being detected while the time is still running.
445 // The captive portal check triggered by the timer detects the captive portal 463 // The captive portal check triggered by the timer detects the captive portal
446 // again, and then the user logs in. 464 // again, and then the user logs in.
447 TEST_F(CaptivePortalTabReloaderTest, BehindPortalResultWhileTimerRunning) { 465 TEST_F(CaptivePortalTabReloaderTest, BehindPortalResultWhileTimerRunning) {
448 tab_reloader().OnLoadStart(true); 466 tab_reloader().OnLoadStart(true);
449 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING, 467 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING,
450 tab_reloader().state()); 468 tab_reloader().state());
451 EXPECT_TRUE(tab_reloader().TimerRunning()); 469 EXPECT_TRUE(tab_reloader().TimerRunning());
452 470
453 // The user is behind a captive portal, but since the tab hasn't timed out, 471 // The user is behind a captive portal, but since the tab hasn't timed out,
454 // the message is ignored. 472 // the message is ignored.
455 tab_reloader().OnCaptivePortalResults(RESULT_INTERNET_CONNECTED, 473 tab_reloader().OnCaptivePortalResults(
456 RESULT_BEHIND_CAPTIVE_PORTAL); 474 captive_portal::RESULT_INTERNET_CONNECTED,
475 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL);
457 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING, 476 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING,
458 tab_reloader().state()); 477 tab_reloader().state());
459 478
460 // The rest proceeds as normal. 479 // The rest proceeds as normal.
461 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()).Times(1); 480 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()).Times(1);
462 base::MessageLoop::current()->RunUntilIdle(); 481 base::MessageLoop::current()->RunUntilIdle();
463 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL, 482 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL,
464 tab_reloader().state()); 483 tab_reloader().state());
465 484
466 // The captive portal service detects a captive portal, and this time the 485 // The captive portal service detects a captive portal, and this time the
467 // tab tries to create a login tab. 486 // tab tries to create a login tab.
468 EXPECT_CALL(tab_reloader(), MaybeOpenCaptivePortalLoginTab()).Times(1); 487 EXPECT_CALL(tab_reloader(), MaybeOpenCaptivePortalLoginTab()).Times(1);
469 tab_reloader().OnCaptivePortalResults(RESULT_BEHIND_CAPTIVE_PORTAL, 488 tab_reloader().OnCaptivePortalResults(
470 RESULT_BEHIND_CAPTIVE_PORTAL); 489 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL,
490 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL);
471 EXPECT_EQ(CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL, 491 EXPECT_EQ(CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL,
472 tab_reloader().state()); 492 tab_reloader().state());
473 EXPECT_FALSE(tab_reloader().TimerRunning()); 493 EXPECT_FALSE(tab_reloader().TimerRunning());
474 494
475 // The user logs on from another tab, and a captive portal check is triggered. 495 // The user logs on from another tab, and a captive portal check is triggered.
476 tab_reloader().OnCaptivePortalResults(RESULT_BEHIND_CAPTIVE_PORTAL, 496 tab_reloader().OnCaptivePortalResults(
477 RESULT_INTERNET_CONNECTED); 497 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL,
498 captive_portal::RESULT_INTERNET_CONNECTED);
478 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD, 499 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD,
479 tab_reloader().state()); 500 tab_reloader().state());
480 501
481 // The error page commits, which should start an asynchronous reload. 502 // The error page commits, which should start an asynchronous reload.
482 tab_reloader().OnLoadCommitted(net::ERR_CONNECTION_TIMED_OUT); 503 tab_reloader().OnLoadCommitted(net::ERR_CONNECTION_TIMED_OUT);
483 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD, 504 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD,
484 tab_reloader().state()); 505 tab_reloader().state());
485 506
486 EXPECT_CALL(tab_reloader(), ReloadTab()).Times(1); 507 EXPECT_CALL(tab_reloader(), ReloadTab()).Times(1);
487 base::MessageLoop::current()->RunUntilIdle(); 508 base::MessageLoop::current()->RunUntilIdle();
488 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 509 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
489 } 510 }
490 511
491 // The CaptivePortalService detects the user has logged in to a captive portal 512 // The CaptivePortalService detects the user has logged in to a captive portal
492 // while the timer is still running, but the original load succeeds, so no 513 // while the timer is still running, but the original load succeeds, so no
493 // reload is done. 514 // reload is done.
494 TEST_F(CaptivePortalTabReloaderTest, LogInWhileTimerRunningNoError) { 515 TEST_F(CaptivePortalTabReloaderTest, LogInWhileTimerRunningNoError) {
495 tab_reloader().OnLoadStart(true); 516 tab_reloader().OnLoadStart(true);
496 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING, 517 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING,
497 tab_reloader().state()); 518 tab_reloader().state());
498 EXPECT_TRUE(tab_reloader().TimerRunning()); 519 EXPECT_TRUE(tab_reloader().TimerRunning());
499 520
500 // The user has already logged in. 521 // The user has already logged in.
501 tab_reloader().OnCaptivePortalResults(RESULT_BEHIND_CAPTIVE_PORTAL, 522 tab_reloader().OnCaptivePortalResults(
502 RESULT_INTERNET_CONNECTED); 523 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL,
524 captive_portal::RESULT_INTERNET_CONNECTED);
503 EXPECT_FALSE(tab_reloader().TimerRunning()); 525 EXPECT_FALSE(tab_reloader().TimerRunning());
504 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD, 526 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD,
505 tab_reloader().state()); 527 tab_reloader().state());
506 528
507 // The page successfully commits, so no reload is triggered. 529 // The page successfully commits, so no reload is triggered.
508 tab_reloader().OnLoadCommitted(net::OK); 530 tab_reloader().OnLoadCommitted(net::OK);
509 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 531 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
510 } 532 }
511 533
512 // Simulate the login process when there's an SSL certificate error. 534 // Simulate the login process when there's an SSL certificate error.
513 TEST_F(CaptivePortalTabReloaderTest, SSLCertErrorLogin) { 535 TEST_F(CaptivePortalTabReloaderTest, SSLCertErrorLogin) {
514 tab_reloader().OnLoadStart(true); 536 tab_reloader().OnLoadStart(true);
515 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING, 537 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING,
516 tab_reloader().state()); 538 tab_reloader().state());
517 539
518 // The load is interrupted by an interstitial page. The interstitial page 540 // The load is interrupted by an interstitial page. The interstitial page
519 // is created after the TabReloader is notified. 541 // is created after the TabReloader is notified.
520 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()); 542 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal());
521 net::SSLInfo ssl_info; 543 net::SSLInfo ssl_info;
522 ssl_info.SetCertError(net::CERT_STATUS_COMMON_NAME_INVALID); 544 ssl_info.SetCertError(net::CERT_STATUS_COMMON_NAME_INVALID);
523 tab_reloader().OnSSLCertError(ssl_info); 545 tab_reloader().OnSSLCertError(ssl_info);
524 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL, 546 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL,
525 tab_reloader().state()); 547 tab_reloader().state());
526 EXPECT_FALSE(tab_reloader().TimerRunning()); 548 EXPECT_FALSE(tab_reloader().TimerRunning());
527 // The MockInterstitialPageDelegate will cleaned up by the WebContents. 549 // The MockInterstitialPageDelegate will cleaned up by the WebContents.
528 new MockInterstitialPageDelegate(web_contents()); 550 new MockInterstitialPageDelegate(web_contents());
529 551
530 // Captive portal probe finds a captive portal. 552 // Captive portal probe finds a captive portal.
531 EXPECT_CALL(tab_reloader(), MaybeOpenCaptivePortalLoginTab()).Times(1); 553 EXPECT_CALL(tab_reloader(), MaybeOpenCaptivePortalLoginTab()).Times(1);
532 tab_reloader().OnCaptivePortalResults(RESULT_INTERNET_CONNECTED, 554 tab_reloader().OnCaptivePortalResults(
533 RESULT_BEHIND_CAPTIVE_PORTAL); 555 captive_portal::RESULT_INTERNET_CONNECTED,
556 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL);
534 557
535 // The user logs in. Since the interstitial is showing, the page should 558 // The user logs in. Since the interstitial is showing, the page should
536 // be reloaded, despite still having a provisional load. 559 // be reloaded, despite still having a provisional load.
537 EXPECT_CALL(tab_reloader(), ReloadTab()).Times(1); 560 EXPECT_CALL(tab_reloader(), ReloadTab()).Times(1);
538 tab_reloader().OnCaptivePortalResults(RESULT_BEHIND_CAPTIVE_PORTAL, 561 tab_reloader().OnCaptivePortalResults(
539 RESULT_INTERNET_CONNECTED); 562 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL,
563 captive_portal::RESULT_INTERNET_CONNECTED);
540 } 564 }
541 565
542 // Simulate an HTTP redirect to HTTPS, when the Internet is connected. 566 // Simulate an HTTP redirect to HTTPS, when the Internet is connected.
543 TEST_F(CaptivePortalTabReloaderTest, HttpToHttpsRedirectInternetConnected) { 567 TEST_F(CaptivePortalTabReloaderTest, HttpToHttpsRedirectInternetConnected) {
544 tab_reloader().OnLoadStart(false); 568 tab_reloader().OnLoadStart(false);
545 // There should be no captive portal check pending. 569 // There should be no captive portal check pending.
546 base::MessageLoop::current()->RunUntilIdle(); 570 base::MessageLoop::current()->RunUntilIdle();
547 571
548 // HTTP to HTTPS redirect. 572 // HTTP to HTTPS redirect.
549 tab_reloader().OnRedirect(true); 573 tab_reloader().OnRedirect(true);
550 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING, 574 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING,
551 tab_reloader().state()); 575 tab_reloader().state());
552 EXPECT_TRUE(tab_reloader().TimerRunning()); 576 EXPECT_TRUE(tab_reloader().TimerRunning());
553 577
554 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()).Times(1); 578 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()).Times(1);
555 base::MessageLoop::current()->RunUntilIdle(); 579 base::MessageLoop::current()->RunUntilIdle();
556 EXPECT_FALSE(tab_reloader().TimerRunning()); 580 EXPECT_FALSE(tab_reloader().TimerRunning());
557 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL, 581 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL,
558 tab_reloader().state()); 582 tab_reloader().state());
559 583
560 tab_reloader().OnCaptivePortalResults(RESULT_INTERNET_CONNECTED, 584 tab_reloader().OnCaptivePortalResults(
561 RESULT_INTERNET_CONNECTED); 585 captive_portal::RESULT_INTERNET_CONNECTED,
586 captive_portal::RESULT_INTERNET_CONNECTED);
562 587
563 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 588 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
564 EXPECT_FALSE(tab_reloader().TimerRunning()); 589 EXPECT_FALSE(tab_reloader().TimerRunning());
565 590
566 tab_reloader().OnLoadCommitted(net::OK); 591 tab_reloader().OnLoadCommitted(net::OK);
567 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 592 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
568 } 593 }
569 594
570 // Simulate an HTTP redirect to HTTPS and subsequent Login, when the user logs 595 // Simulate an HTTP redirect to HTTPS and subsequent Login, when the user logs
571 // in before the original page commits. 596 // in before the original page commits.
572 TEST_F(CaptivePortalTabReloaderTest, HttpToHttpsRedirectLogin) { 597 TEST_F(CaptivePortalTabReloaderTest, HttpToHttpsRedirectLogin) {
573 tab_reloader().OnLoadStart(false); 598 tab_reloader().OnLoadStart(false);
574 // There should be no captive portal check pending. 599 // There should be no captive portal check pending.
575 base::MessageLoop::current()->RunUntilIdle(); 600 base::MessageLoop::current()->RunUntilIdle();
576 601
577 // HTTP to HTTPS redirect. 602 // HTTP to HTTPS redirect.
578 tab_reloader().OnRedirect(true); 603 tab_reloader().OnRedirect(true);
579 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING, 604 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING,
580 tab_reloader().state()); 605 tab_reloader().state());
581 606
582 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()).Times(1); 607 EXPECT_CALL(tab_reloader(), CheckForCaptivePortal()).Times(1);
583 base::MessageLoop::current()->RunUntilIdle(); 608 base::MessageLoop::current()->RunUntilIdle();
584 EXPECT_FALSE(tab_reloader().TimerRunning()); 609 EXPECT_FALSE(tab_reloader().TimerRunning());
585 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL, 610 EXPECT_EQ(CaptivePortalTabReloader::STATE_MAYBE_BROKEN_BY_PORTAL,
586 tab_reloader().state()); 611 tab_reloader().state());
587 612
588 // The captive portal service detects a captive portal. The TabReloader 613 // The captive portal service detects a captive portal. The TabReloader
589 // should try and create a new login tab in response. 614 // should try and create a new login tab in response.
590 EXPECT_CALL(tab_reloader(), MaybeOpenCaptivePortalLoginTab()).Times(1); 615 EXPECT_CALL(tab_reloader(), MaybeOpenCaptivePortalLoginTab()).Times(1);
591 tab_reloader().OnCaptivePortalResults(RESULT_INTERNET_CONNECTED, 616 tab_reloader().OnCaptivePortalResults(
592 RESULT_BEHIND_CAPTIVE_PORTAL); 617 captive_portal::RESULT_INTERNET_CONNECTED,
618 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL);
593 EXPECT_EQ(CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL, 619 EXPECT_EQ(CaptivePortalTabReloader::STATE_BROKEN_BY_PORTAL,
594 tab_reloader().state()); 620 tab_reloader().state());
595 EXPECT_FALSE(tab_reloader().TimerRunning()); 621 EXPECT_FALSE(tab_reloader().TimerRunning());
596 622
597 // The user logs on from another tab, and a captive portal check is triggered. 623 // The user logs on from another tab, and a captive portal check is triggered.
598 tab_reloader().OnCaptivePortalResults(RESULT_BEHIND_CAPTIVE_PORTAL, 624 tab_reloader().OnCaptivePortalResults(
599 RESULT_INTERNET_CONNECTED); 625 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL,
626 captive_portal::RESULT_INTERNET_CONNECTED);
600 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD, 627 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD,
601 tab_reloader().state()); 628 tab_reloader().state());
602 629
603 // The error page commits, which should start an asynchronous reload. 630 // The error page commits, which should start an asynchronous reload.
604 tab_reloader().OnLoadCommitted(net::ERR_CONNECTION_TIMED_OUT); 631 tab_reloader().OnLoadCommitted(net::ERR_CONNECTION_TIMED_OUT);
605 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD, 632 EXPECT_EQ(CaptivePortalTabReloader::STATE_NEEDS_RELOAD,
606 tab_reloader().state()); 633 tab_reloader().state());
607 634
608 EXPECT_CALL(tab_reloader(), ReloadTab()).Times(1); 635 EXPECT_CALL(tab_reloader(), ReloadTab()).Times(1);
609 base::MessageLoop::current()->RunUntilIdle(); 636 base::MessageLoop::current()->RunUntilIdle();
610 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 637 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
611 } 638 }
612 639
613 // Simulate the case where an HTTPs page redirects to an HTTPS page, before 640 // Simulate the case where an HTTPs page redirects to an HTTPS page, before
614 // the timer triggers. 641 // the timer triggers.
615 TEST_F(CaptivePortalTabReloaderTest, HttpsToHttpRedirect) { 642 TEST_F(CaptivePortalTabReloaderTest, HttpsToHttpRedirect) {
616 tab_reloader().OnLoadStart(true); 643 tab_reloader().OnLoadStart(true);
617 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING, 644 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING,
618 tab_reloader().state()); 645 tab_reloader().state());
619 646
620 tab_reloader().OnRedirect(false); 647 tab_reloader().OnRedirect(false);
621 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 648 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
622 EXPECT_FALSE(tab_reloader().TimerRunning()); 649 EXPECT_FALSE(tab_reloader().TimerRunning());
623 650
624 // There should be no captive portal check pending after the redirect. 651 // There should be no captive portal check pending after the redirect.
625 base::MessageLoop::current()->RunUntilIdle(); 652 base::MessageLoop::current()->RunUntilIdle();
626 653
627 // Logging in shouldn't do anything. 654 // Logging in shouldn't do anything.
628 tab_reloader().OnCaptivePortalResults(RESULT_BEHIND_CAPTIVE_PORTAL, 655 tab_reloader().OnCaptivePortalResults(
629 RESULT_INTERNET_CONNECTED); 656 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL,
657 captive_portal::RESULT_INTERNET_CONNECTED);
630 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 658 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
631 } 659 }
632 660
633 // Check that an HTTPS to HTTPS redirect results in no timer running. 661 // Check that an HTTPS to HTTPS redirect results in no timer running.
634 TEST_F(CaptivePortalTabReloaderTest, HttpsToHttpsRedirect) { 662 TEST_F(CaptivePortalTabReloaderTest, HttpsToHttpsRedirect) {
635 tab_reloader().OnLoadStart(true); 663 tab_reloader().OnLoadStart(true);
636 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING, 664 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING,
637 tab_reloader().state()); 665 tab_reloader().state());
638 666
639 tab_reloader().OnRedirect(true); 667 tab_reloader().OnRedirect(true);
640 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, 668 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
641 tab_reloader().state());
642 EXPECT_FALSE(tab_reloader().TimerRunning()); 669 EXPECT_FALSE(tab_reloader().TimerRunning());
643 // Nothing should happen. 670 // Nothing should happen.
644 base::MessageLoop::current()->RunUntilIdle(); 671 base::MessageLoop::current()->RunUntilIdle();
645 } 672 }
646 673
647 // Check that an HTTPS to HTTP to HTTPS redirect results in no timer running. 674 // Check that an HTTPS to HTTP to HTTPS redirect results in no timer running.
648 TEST_F(CaptivePortalTabReloaderTest, HttpsToHttpToHttpsRedirect) { 675 TEST_F(CaptivePortalTabReloaderTest, HttpsToHttpToHttpsRedirect) {
649 tab_reloader().OnLoadStart(true); 676 tab_reloader().OnLoadStart(true);
650 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING, 677 EXPECT_EQ(CaptivePortalTabReloader::STATE_TIMER_RUNNING,
651 tab_reloader().state()); 678 tab_reloader().state());
652 679
653 tab_reloader().OnRedirect(false); 680 tab_reloader().OnRedirect(false);
654 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 681 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
655 EXPECT_FALSE(tab_reloader().TimerRunning()); 682 EXPECT_FALSE(tab_reloader().TimerRunning());
656 683
657 tab_reloader().OnRedirect(true); 684 tab_reloader().OnRedirect(true);
658 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, 685 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
659 tab_reloader().state());
660 EXPECT_FALSE(tab_reloader().TimerRunning()); 686 EXPECT_FALSE(tab_reloader().TimerRunning());
661 // Nothing should happen. 687 // Nothing should happen.
662 base::MessageLoop::current()->RunUntilIdle(); 688 base::MessageLoop::current()->RunUntilIdle();
663 } 689 }
664 690
665 // Check that an HTTP to HTTP redirect results in the timer not running. 691 // Check that an HTTP to HTTP redirect results in the timer not running.
666 TEST_F(CaptivePortalTabReloaderTest, HttpToHttpRedirect) { 692 TEST_F(CaptivePortalTabReloaderTest, HttpToHttpRedirect) {
667 tab_reloader().OnLoadStart(false); 693 tab_reloader().OnLoadStart(false);
668 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 694 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
669 695
670 tab_reloader().OnRedirect(false); 696 tab_reloader().OnRedirect(false);
671 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 697 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
672 EXPECT_FALSE(tab_reloader().TimerRunning()); 698 EXPECT_FALSE(tab_reloader().TimerRunning());
673 699
674 // There should be no captive portal check pending after the redirect. 700 // There should be no captive portal check pending after the redirect.
675 base::MessageLoop::current()->RunUntilIdle(); 701 base::MessageLoop::current()->RunUntilIdle();
676 702
677 // Logging in shouldn't do anything. 703 // Logging in shouldn't do anything.
678 tab_reloader().OnCaptivePortalResults(RESULT_BEHIND_CAPTIVE_PORTAL, 704 tab_reloader().OnCaptivePortalResults(
679 RESULT_INTERNET_CONNECTED); 705 captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL,
706 captive_portal::RESULT_INTERNET_CONNECTED);
680 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state()); 707 EXPECT_EQ(CaptivePortalTabReloader::STATE_NONE, tab_reloader().state());
681 } 708 }
682
683 } // namespace captive_portal
OLDNEW
« no previous file with comments | « chrome/browser/captive_portal/captive_portal_tab_reloader.cc ('k') | chrome/browser/captive_portal/testing_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698