| OLD | NEW |
| 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_helper.h" | 5 #include "chrome/browser/captive_portal/captive_portal_tab_helper.h" |
| 6 | 6 |
| 7 #include "base/callback.h" | 7 #include "base/callback.h" |
| 8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
| 9 #include "chrome/browser/captive_portal/captive_portal_service.h" | 9 #include "chrome/browser/captive_portal/captive_portal_service.h" |
| 10 #include "chrome/browser/captive_portal/captive_portal_tab_reloader.h" | 10 #include "chrome/browser/captive_portal/captive_portal_tab_reloader.h" |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 web_contents2_.reset(NULL); | 82 web_contents2_.reset(NULL); |
| 83 web_contents1_.reset(NULL); | 83 web_contents1_.reset(NULL); |
| 84 ChromeRenderViewHostTestHarness::TearDown(); | 84 ChromeRenderViewHostTestHarness::TearDown(); |
| 85 } | 85 } |
| 86 | 86 |
| 87 // Simulates a successful load of |url|. | 87 // Simulates a successful load of |url|. |
| 88 void SimulateSuccess(const GURL& url, | 88 void SimulateSuccess(const GURL& url, |
| 89 content::RenderViewHost* render_view_host) { | 89 content::RenderViewHost* render_view_host) { |
| 90 EXPECT_CALL(mock_reloader(), OnLoadStart(url.SchemeIsSecure())).Times(1); | 90 EXPECT_CALL(mock_reloader(), OnLoadStart(url.SchemeIsSecure())).Times(1); |
| 91 tab_helper().DidStartProvisionalLoadForFrame( | 91 tab_helper().DidStartProvisionalLoadForFrame( |
| 92 1, -1, true, url, false, render_view_host); | 92 1, -1, true, url, false, false, render_view_host); |
| 93 | 93 |
| 94 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::OK)).Times(1); | 94 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::OK)).Times(1); |
| 95 tab_helper().DidCommitProvisionalLoadForFrame( | 95 tab_helper().DidCommitProvisionalLoadForFrame( |
| 96 1, true, url, content::PAGE_TRANSITION_LINK, render_view_host); | 96 1, true, url, content::PAGE_TRANSITION_LINK, render_view_host); |
| 97 } | 97 } |
| 98 | 98 |
| 99 // Simulates a connection timeout while requesting |url|. | 99 // Simulates a connection timeout while requesting |url|. |
| 100 void SimulateTimeout(const GURL& url, | 100 void SimulateTimeout(const GURL& url, |
| 101 content::RenderViewHost* render_view_host) { | 101 content::RenderViewHost* render_view_host) { |
| 102 EXPECT_CALL(mock_reloader(), OnLoadStart(url.SchemeIsSecure())).Times(1); | 102 EXPECT_CALL(mock_reloader(), OnLoadStart(url.SchemeIsSecure())).Times(1); |
| 103 tab_helper().DidStartProvisionalLoadForFrame( | 103 tab_helper().DidStartProvisionalLoadForFrame( |
| 104 1, -1, true, url, false, render_view_host); | 104 1, -1, true, url, false, false, render_view_host); |
| 105 | 105 |
| 106 tab_helper().DidFailProvisionalLoad( | 106 tab_helper().DidFailProvisionalLoad( |
| 107 1, true, url, net::ERR_TIMED_OUT, string16(), render_view_host); | 107 1, true, url, net::ERR_TIMED_OUT, string16(), render_view_host); |
| 108 | 108 |
| 109 // Provisional load starts for the error page. | 109 // Provisional load starts for the error page. |
| 110 tab_helper().DidStartProvisionalLoadForFrame( | 110 tab_helper().DidStartProvisionalLoadForFrame( |
| 111 1, -1, true, GURL(kErrorPageUrl), true, render_view_host); | 111 1, -1, true, GURL(kErrorPageUrl), true, false, render_view_host); |
| 112 | 112 |
| 113 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::ERR_TIMED_OUT)).Times(1); | 113 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::ERR_TIMED_OUT)).Times(1); |
| 114 tab_helper().DidCommitProvisionalLoadForFrame( | 114 tab_helper().DidCommitProvisionalLoadForFrame( |
| 115 1, true, GURL(kErrorPageUrl), content::PAGE_TRANSITION_LINK, | 115 1, true, GURL(kErrorPageUrl), content::PAGE_TRANSITION_LINK, |
| 116 render_view_host); | 116 render_view_host); |
| 117 } | 117 } |
| 118 | 118 |
| 119 // Simulates an abort while requesting |url|. | 119 // Simulates an abort while requesting |url|. |
| 120 void SimulateAbort(const GURL& url, | 120 void SimulateAbort(const GURL& url, |
| 121 content::RenderViewHost* render_view_host, | 121 content::RenderViewHost* render_view_host, |
| 122 NavigationType navigation_type) { | 122 NavigationType navigation_type) { |
| 123 EXPECT_CALL(mock_reloader(), OnLoadStart(url.SchemeIsSecure())).Times(1); | 123 EXPECT_CALL(mock_reloader(), OnLoadStart(url.SchemeIsSecure())).Times(1); |
| 124 tab_helper().DidStartProvisionalLoadForFrame( | 124 tab_helper().DidStartProvisionalLoadForFrame( |
| 125 1, -1, true, url, false, render_view_host); | 125 1, -1, true, url, false, false, render_view_host); |
| 126 | 126 |
| 127 EXPECT_CALL(mock_reloader(), OnAbort()).Times(1); | 127 EXPECT_CALL(mock_reloader(), OnAbort()).Times(1); |
| 128 if (navigation_type == kSameProcess) { | 128 if (navigation_type == kSameProcess) { |
| 129 tab_helper().DidFailProvisionalLoad( | 129 tab_helper().DidFailProvisionalLoad( |
| 130 1, true, url, net::ERR_ABORTED, string16(), render_view_host); | 130 1, true, url, net::ERR_ABORTED, string16(), render_view_host); |
| 131 } else { | 131 } else { |
| 132 // For interrupted provisional cross-process navigations, the | 132 // For interrupted provisional cross-process navigations, the |
| 133 // RenderViewHost is destroyed without sending a DidFailProvisionalLoad | 133 // RenderViewHost is destroyed without sending a DidFailProvisionalLoad |
| 134 // notification. | 134 // notification. |
| 135 tab_helper().Observe( | 135 tab_helper().Observe( |
| 136 content::NOTIFICATION_RENDER_VIEW_HOST_DELETED, | 136 content::NOTIFICATION_RENDER_VIEW_HOST_DELETED, |
| 137 content::Source<content::RenderViewHost>(render_view_host), | 137 content::Source<content::RenderViewHost>(render_view_host), |
| 138 content::NotificationService::NoDetails()); | 138 content::NotificationService::NoDetails()); |
| 139 } | 139 } |
| 140 | 140 |
| 141 // Make sure that above call resulted in abort, for tests that continue | 141 // Make sure that above call resulted in abort, for tests that continue |
| 142 // after the abort. | 142 // after the abort. |
| 143 EXPECT_CALL(mock_reloader(), OnAbort()).Times(0); | 143 EXPECT_CALL(mock_reloader(), OnAbort()).Times(0); |
| 144 } | 144 } |
| 145 | 145 |
| 146 // Simulates an abort while loading an error page. | 146 // Simulates an abort while loading an error page. |
| 147 void SimulateAbortTimeout(const GURL& url, | 147 void SimulateAbortTimeout(const GURL& url, |
| 148 content::RenderViewHost* render_view_host, | 148 content::RenderViewHost* render_view_host, |
| 149 NavigationType navigation_type) { | 149 NavigationType navigation_type) { |
| 150 EXPECT_CALL(mock_reloader(), OnLoadStart(url.SchemeIsSecure())).Times(1); | 150 EXPECT_CALL(mock_reloader(), OnLoadStart(url.SchemeIsSecure())).Times(1); |
| 151 tab_helper().DidStartProvisionalLoadForFrame( | 151 tab_helper().DidStartProvisionalLoadForFrame( |
| 152 1, -1, true, url, false, render_view_host); | 152 1, -1, true, url, false, false, render_view_host); |
| 153 | 153 |
| 154 tab_helper().DidFailProvisionalLoad( | 154 tab_helper().DidFailProvisionalLoad( |
| 155 1, true, url, net::ERR_TIMED_OUT, string16(), render_view_host); | 155 1, true, url, net::ERR_TIMED_OUT, string16(), render_view_host); |
| 156 | 156 |
| 157 // Start event for the error page. | 157 // Start event for the error page. |
| 158 tab_helper().DidStartProvisionalLoadForFrame( | 158 tab_helper().DidStartProvisionalLoadForFrame( |
| 159 1, -1, true, url, true, render_view_host); | 159 1, -1, true, url, true, false, render_view_host); |
| 160 | 160 |
| 161 EXPECT_CALL(mock_reloader(), OnAbort()).Times(1); | 161 EXPECT_CALL(mock_reloader(), OnAbort()).Times(1); |
| 162 if (navigation_type == kSameProcess) { | 162 if (navigation_type == kSameProcess) { |
| 163 tab_helper().DidFailProvisionalLoad( | 163 tab_helper().DidFailProvisionalLoad( |
| 164 1, true, url, net::ERR_ABORTED, string16(), render_view_host); | 164 1, true, url, net::ERR_ABORTED, string16(), render_view_host); |
| 165 } else { | 165 } else { |
| 166 // For interrupted provisional cross-process navigations, the | 166 // For interrupted provisional cross-process navigations, the |
| 167 // RenderViewHost is destroyed without sending a DidFailProvisionalLoad | 167 // RenderViewHost is destroyed without sending a DidFailProvisionalLoad |
| 168 // notification. | 168 // notification. |
| 169 tab_helper().Observe( | 169 tab_helper().Observe( |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 | 243 |
| 244 // Same as above, but simulates what happens when the Link Doctor is enabled, | 244 // Same as above, but simulates what happens when the Link Doctor is enabled, |
| 245 // which adds another provisional load/commit for the error page, after the | 245 // which adds another provisional load/commit for the error page, after the |
| 246 // first two. | 246 // first two. |
| 247 TEST_F(CaptivePortalTabHelperTest, HttpTimeoutLinkDoctor) { | 247 TEST_F(CaptivePortalTabHelperTest, HttpTimeoutLinkDoctor) { |
| 248 SimulateTimeout(GURL(kHttpUrl), render_view_host1()); | 248 SimulateTimeout(GURL(kHttpUrl), render_view_host1()); |
| 249 | 249 |
| 250 EXPECT_CALL(mock_reloader(), OnLoadStart(false)).Times(1); | 250 EXPECT_CALL(mock_reloader(), OnLoadStart(false)).Times(1); |
| 251 // Provisional load starts for the error page. | 251 // Provisional load starts for the error page. |
| 252 tab_helper().DidStartProvisionalLoadForFrame( | 252 tab_helper().DidStartProvisionalLoadForFrame( |
| 253 1, -1, true, GURL(kErrorPageUrl), true, render_view_host1()); | 253 1, -1, true, GURL(kErrorPageUrl), true, false, render_view_host1()); |
| 254 | 254 |
| 255 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::OK)).Times(1); | 255 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::OK)).Times(1); |
| 256 tab_helper().DidCommitProvisionalLoadForFrame( | 256 tab_helper().DidCommitProvisionalLoadForFrame( |
| 257 1, true, GURL(kErrorPageUrl), content::PAGE_TRANSITION_LINK, | 257 1, true, GURL(kErrorPageUrl), content::PAGE_TRANSITION_LINK, |
| 258 render_view_host1()); | 258 render_view_host1()); |
| 259 tab_helper().DidStopLoading(render_view_host1()); | 259 tab_helper().DidStopLoading(render_view_host1()); |
| 260 } | 260 } |
| 261 | 261 |
| 262 TEST_F(CaptivePortalTabHelperTest, HttpsSuccess) { | 262 TEST_F(CaptivePortalTabHelperTest, HttpsSuccess) { |
| 263 SimulateSuccess(GURL(kHttpsUrl), render_view_host1()); | 263 SimulateSuccess(GURL(kHttpsUrl), render_view_host1()); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 317 // A provisional same-site navigation is interrupted by a cross-process | 317 // A provisional same-site navigation is interrupted by a cross-process |
| 318 // navigation without sending an abort first. | 318 // navigation without sending an abort first. |
| 319 TEST_F(CaptivePortalTabHelperTest, UnexpectedProvisionalLoad) { | 319 TEST_F(CaptivePortalTabHelperTest, UnexpectedProvisionalLoad) { |
| 320 GURL same_site_url = GURL(kHttpUrl); | 320 GURL same_site_url = GURL(kHttpUrl); |
| 321 GURL cross_process_url = GURL(kHttpsUrl2); | 321 GURL cross_process_url = GURL(kHttpsUrl2); |
| 322 | 322 |
| 323 // A same-site load for the original RenderViewHost starts. | 323 // A same-site load for the original RenderViewHost starts. |
| 324 EXPECT_CALL(mock_reloader(), | 324 EXPECT_CALL(mock_reloader(), |
| 325 OnLoadStart(same_site_url.SchemeIsSecure())).Times(1); | 325 OnLoadStart(same_site_url.SchemeIsSecure())).Times(1); |
| 326 tab_helper().DidStartProvisionalLoadForFrame( | 326 tab_helper().DidStartProvisionalLoadForFrame( |
| 327 1, -1, true, same_site_url, false, render_view_host1()); | 327 1, -1, true, same_site_url, false, false, render_view_host1()); |
| 328 | 328 |
| 329 // It's unexpectedly interrupted by a cross-process navigation, which starts | 329 // It's unexpectedly interrupted by a cross-process navigation, which starts |
| 330 // navigating before the old navigation cancels. We generate an abort message | 330 // navigating before the old navigation cancels. We generate an abort message |
| 331 // for the old navigation. | 331 // for the old navigation. |
| 332 EXPECT_CALL(mock_reloader(), OnAbort()).Times(1); | 332 EXPECT_CALL(mock_reloader(), OnAbort()).Times(1); |
| 333 EXPECT_CALL(mock_reloader(), | 333 EXPECT_CALL(mock_reloader(), |
| 334 OnLoadStart(cross_process_url.SchemeIsSecure())).Times(1); | 334 OnLoadStart(cross_process_url.SchemeIsSecure())).Times(1); |
| 335 tab_helper().DidStartProvisionalLoadForFrame( | 335 tab_helper().DidStartProvisionalLoadForFrame( |
| 336 1, -1, true, cross_process_url, false, render_view_host2()); | 336 1, -1, true, cross_process_url, false, false, render_view_host2()); |
| 337 | 337 |
| 338 // The cross-process navigation fails. | 338 // The cross-process navigation fails. |
| 339 tab_helper().DidFailProvisionalLoad( | 339 tab_helper().DidFailProvisionalLoad( |
| 340 1, true, cross_process_url, net::ERR_FAILED, string16(), | 340 1, true, cross_process_url, net::ERR_FAILED, string16(), |
| 341 render_view_host2()); | 341 render_view_host2()); |
| 342 | 342 |
| 343 // The same-site navigation finally is aborted. | 343 // The same-site navigation finally is aborted. |
| 344 tab_helper().DidFailProvisionalLoad( | 344 tab_helper().DidFailProvisionalLoad( |
| 345 1, true, same_site_url, net::ERR_ABORTED, string16(), | 345 1, true, same_site_url, net::ERR_ABORTED, string16(), |
| 346 render_view_host1()); | 346 render_view_host1()); |
| 347 | 347 |
| 348 // The provisional load starts for the error page for the cross-process | 348 // The provisional load starts for the error page for the cross-process |
| 349 // navigation. | 349 // navigation. |
| 350 tab_helper().DidStartProvisionalLoadForFrame( | 350 tab_helper().DidStartProvisionalLoadForFrame( |
| 351 1, -1, true, GURL(kErrorPageUrl), true, render_view_host2()); | 351 1, -1, true, GURL(kErrorPageUrl), true, false, render_view_host2()); |
| 352 | 352 |
| 353 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::ERR_FAILED)).Times(1); | 353 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::ERR_FAILED)).Times(1); |
| 354 tab_helper().DidCommitProvisionalLoadForFrame( | 354 tab_helper().DidCommitProvisionalLoadForFrame( |
| 355 1, true, GURL(kErrorPageUrl), content::PAGE_TRANSITION_TYPED, | 355 1, true, GURL(kErrorPageUrl), content::PAGE_TRANSITION_TYPED, |
| 356 render_view_host2()); | 356 render_view_host2()); |
| 357 } | 357 } |
| 358 | 358 |
| 359 // Similar to the above test, except the original RenderViewHost manages to | 359 // Similar to the above test, except the original RenderViewHost manages to |
| 360 // commit before its navigation is aborted. | 360 // commit before its navigation is aborted. |
| 361 TEST_F(CaptivePortalTabHelperTest, UnexpectedCommit) { | 361 TEST_F(CaptivePortalTabHelperTest, UnexpectedCommit) { |
| 362 GURL same_site_url = GURL(kHttpUrl); | 362 GURL same_site_url = GURL(kHttpUrl); |
| 363 GURL cross_process_url = GURL(kHttpsUrl2); | 363 GURL cross_process_url = GURL(kHttpsUrl2); |
| 364 | 364 |
| 365 // A same-site load for the original RenderViewHost starts. | 365 // A same-site load for the original RenderViewHost starts. |
| 366 EXPECT_CALL(mock_reloader(), | 366 EXPECT_CALL(mock_reloader(), |
| 367 OnLoadStart(same_site_url.SchemeIsSecure())).Times(1); | 367 OnLoadStart(same_site_url.SchemeIsSecure())).Times(1); |
| 368 tab_helper().DidStartProvisionalLoadForFrame( | 368 tab_helper().DidStartProvisionalLoadForFrame( |
| 369 1, -1, true, same_site_url, false, render_view_host1()); | 369 1, -1, true, same_site_url, false, false, render_view_host1()); |
| 370 | 370 |
| 371 // It's unexpectedly interrupted by a cross-process navigation, which starts | 371 // It's unexpectedly interrupted by a cross-process navigation, which starts |
| 372 // navigating before the old navigation cancels. We generate an abort message | 372 // navigating before the old navigation cancels. We generate an abort message |
| 373 // for the old navigation. | 373 // for the old navigation. |
| 374 EXPECT_CALL(mock_reloader(), OnAbort()).Times(1); | 374 EXPECT_CALL(mock_reloader(), OnAbort()).Times(1); |
| 375 EXPECT_CALL(mock_reloader(), | 375 EXPECT_CALL(mock_reloader(), |
| 376 OnLoadStart(cross_process_url.SchemeIsSecure())).Times(1); | 376 OnLoadStart(cross_process_url.SchemeIsSecure())).Times(1); |
| 377 tab_helper().DidStartProvisionalLoadForFrame( | 377 tab_helper().DidStartProvisionalLoadForFrame( |
| 378 1, -1, true, cross_process_url, false, render_view_host2()); | 378 1, -1, true, cross_process_url, false, false, render_view_host2()); |
| 379 | 379 |
| 380 // The cross-process navigation fails. | 380 // The cross-process navigation fails. |
| 381 tab_helper().DidFailProvisionalLoad( | 381 tab_helper().DidFailProvisionalLoad( |
| 382 1, true, cross_process_url, net::ERR_FAILED, string16(), | 382 1, true, cross_process_url, net::ERR_FAILED, string16(), |
| 383 render_view_host2()); | 383 render_view_host2()); |
| 384 | 384 |
| 385 // The same-site navigation succeeds. | 385 // The same-site navigation succeeds. |
| 386 EXPECT_CALL(mock_reloader(), OnAbort()).Times(1); | 386 EXPECT_CALL(mock_reloader(), OnAbort()).Times(1); |
| 387 EXPECT_CALL(mock_reloader(), | 387 EXPECT_CALL(mock_reloader(), |
| 388 OnLoadStart(same_site_url.SchemeIsSecure())).Times(1); | 388 OnLoadStart(same_site_url.SchemeIsSecure())).Times(1); |
| 389 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::OK)).Times(1); | 389 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::OK)).Times(1); |
| 390 tab_helper().DidCommitProvisionalLoadForFrame( | 390 tab_helper().DidCommitProvisionalLoadForFrame( |
| 391 1, true, same_site_url, content::PAGE_TRANSITION_LINK, | 391 1, true, same_site_url, content::PAGE_TRANSITION_LINK, |
| 392 render_view_host1()); | 392 render_view_host1()); |
| 393 } | 393 } |
| 394 | 394 |
| 395 // Simulates navigations for a number of subframes, and makes sure no | 395 // Simulates navigations for a number of subframes, and makes sure no |
| 396 // CaptivePortalTabHelper function is called. | 396 // CaptivePortalTabHelper function is called. |
| 397 TEST_F(CaptivePortalTabHelperTest, HttpsSubframe) { | 397 TEST_F(CaptivePortalTabHelperTest, HttpsSubframe) { |
| 398 GURL url = GURL(kHttpsUrl); | 398 GURL url = GURL(kHttpsUrl); |
| 399 // Normal load. | 399 // Normal load. |
| 400 tab_helper().DidStartProvisionalLoadForFrame( | 400 tab_helper().DidStartProvisionalLoadForFrame( |
| 401 1, -1, false, url, false, render_view_host1()); | 401 1, -1, false, url, false, false, render_view_host1()); |
| 402 tab_helper().DidCommitProvisionalLoadForFrame( | 402 tab_helper().DidCommitProvisionalLoadForFrame( |
| 403 1, false, url, content::PAGE_TRANSITION_LINK, render_view_host1()); | 403 1, false, url, content::PAGE_TRANSITION_LINK, render_view_host1()); |
| 404 | 404 |
| 405 // Timeout. | 405 // Timeout. |
| 406 tab_helper().DidStartProvisionalLoadForFrame( | 406 tab_helper().DidStartProvisionalLoadForFrame( |
| 407 2, -1, false, url, false, render_view_host1()); | 407 2, -1, false, url, false, false, render_view_host1()); |
| 408 tab_helper().DidFailProvisionalLoad( | 408 tab_helper().DidFailProvisionalLoad( |
| 409 2, false, url, net::ERR_TIMED_OUT, string16(), render_view_host1()); | 409 2, false, url, net::ERR_TIMED_OUT, string16(), render_view_host1()); |
| 410 tab_helper().DidStartProvisionalLoadForFrame( | 410 tab_helper().DidStartProvisionalLoadForFrame( |
| 411 2, -1, false, url, true, render_view_host1()); | 411 2, -1, false, url, true, false, render_view_host1()); |
| 412 tab_helper().DidFailProvisionalLoad( | 412 tab_helper().DidFailProvisionalLoad( |
| 413 2, false, url, net::ERR_ABORTED, string16(), render_view_host1()); | 413 2, false, url, net::ERR_ABORTED, string16(), render_view_host1()); |
| 414 | 414 |
| 415 // Abort. | 415 // Abort. |
| 416 tab_helper().DidStartProvisionalLoadForFrame( | 416 tab_helper().DidStartProvisionalLoadForFrame( |
| 417 3, -1, false, url, false, render_view_host1()); | 417 3, -1, false, url, false, false, render_view_host1()); |
| 418 tab_helper().DidFailProvisionalLoad( | 418 tab_helper().DidFailProvisionalLoad( |
| 419 3, false, url, net::ERR_ABORTED, string16(), render_view_host1()); | 419 3, false, url, net::ERR_ABORTED, string16(), render_view_host1()); |
| 420 } | 420 } |
| 421 | 421 |
| 422 // Simulates a subframe erroring out at the same time as a provisional load, | 422 // Simulates a subframe erroring out at the same time as a provisional load, |
| 423 // but with a different error code. Make sure the TabHelper sees the correct | 423 // but with a different error code. Make sure the TabHelper sees the correct |
| 424 // error. | 424 // error. |
| 425 TEST_F(CaptivePortalTabHelperTest, HttpsSubframeParallelError) { | 425 TEST_F(CaptivePortalTabHelperTest, HttpsSubframeParallelError) { |
| 426 // URL used by both frames. | 426 // URL used by both frames. |
| 427 GURL url = GURL(kHttpsUrl); | 427 GURL url = GURL(kHttpsUrl); |
| 428 | 428 |
| 429 int frame_id = 2; | 429 int frame_id = 2; |
| 430 int subframe_id = 1; | 430 int subframe_id = 1; |
| 431 | 431 |
| 432 // Loads start. | 432 // Loads start. |
| 433 EXPECT_CALL(mock_reloader(), OnLoadStart(url.SchemeIsSecure())).Times(1); | 433 EXPECT_CALL(mock_reloader(), OnLoadStart(url.SchemeIsSecure())).Times(1); |
| 434 tab_helper().DidStartProvisionalLoadForFrame( | 434 tab_helper().DidStartProvisionalLoadForFrame( |
| 435 frame_id, -1, true, url, false, render_view_host1()); | 435 frame_id, -1, true, url, false, false, render_view_host1()); |
| 436 tab_helper().DidStartProvisionalLoadForFrame( | 436 tab_helper().DidStartProvisionalLoadForFrame( |
| 437 subframe_id, frame_id, false, url, false, render_view_host1()); | 437 subframe_id, frame_id, false, url, false, false, render_view_host1()); |
| 438 | 438 |
| 439 // Loads return errors. | 439 // Loads return errors. |
| 440 tab_helper().DidFailProvisionalLoad( | 440 tab_helper().DidFailProvisionalLoad( |
| 441 frame_id, true, url, net::ERR_UNEXPECTED, string16(), | 441 frame_id, true, url, net::ERR_UNEXPECTED, string16(), |
| 442 render_view_host1()); | 442 render_view_host1()); |
| 443 tab_helper().DidFailProvisionalLoad( | 443 tab_helper().DidFailProvisionalLoad( |
| 444 subframe_id, false, url, net::ERR_TIMED_OUT, string16(), | 444 subframe_id, false, url, net::ERR_TIMED_OUT, string16(), |
| 445 render_view_host1()); | 445 render_view_host1()); |
| 446 | 446 |
| 447 // Provisional load starts for the error pages. | 447 // Provisional load starts for the error pages. |
| 448 tab_helper().DidStartProvisionalLoadForFrame( | 448 tab_helper().DidStartProvisionalLoadForFrame( |
| 449 frame_id, -1, true, url, true, render_view_host1()); | 449 frame_id, -1, true, url, true, false, render_view_host1()); |
| 450 tab_helper().DidStartProvisionalLoadForFrame( | 450 tab_helper().DidStartProvisionalLoadForFrame( |
| 451 subframe_id, frame_id, false, url, true, render_view_host1()); | 451 subframe_id, frame_id, false, url, true, false, render_view_host1()); |
| 452 | 452 |
| 453 // Error page load finishes. | 453 // Error page load finishes. |
| 454 tab_helper().DidCommitProvisionalLoadForFrame( | 454 tab_helper().DidCommitProvisionalLoadForFrame( |
| 455 subframe_id, false, url, content::PAGE_TRANSITION_AUTO_SUBFRAME, | 455 subframe_id, false, url, content::PAGE_TRANSITION_AUTO_SUBFRAME, |
| 456 render_view_host1()); | 456 render_view_host1()); |
| 457 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::ERR_UNEXPECTED)).Times(1); | 457 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::ERR_UNEXPECTED)).Times(1); |
| 458 tab_helper().DidCommitProvisionalLoadForFrame( | 458 tab_helper().DidCommitProvisionalLoadForFrame( |
| 459 frame_id, true, url, content::PAGE_TRANSITION_LINK, | 459 frame_id, true, url, content::PAGE_TRANSITION_LINK, |
| 460 render_view_host1()); | 460 render_view_host1()); |
| 461 } | 461 } |
| 462 | 462 |
| 463 // Simulates an HTTP to HTTPS redirect, which then times out. | 463 // Simulates an HTTP to HTTPS redirect, which then times out. |
| 464 TEST_F(CaptivePortalTabHelperTest, HttpToHttpsRedirectTimeout) { | 464 TEST_F(CaptivePortalTabHelperTest, HttpToHttpsRedirectTimeout) { |
| 465 GURL http_url(kHttpUrl); | 465 GURL http_url(kHttpUrl); |
| 466 EXPECT_CALL(mock_reloader(), OnLoadStart(false)).Times(1); | 466 EXPECT_CALL(mock_reloader(), OnLoadStart(false)).Times(1); |
| 467 tab_helper().DidStartProvisionalLoadForFrame( | 467 tab_helper().DidStartProvisionalLoadForFrame( |
| 468 1, -1, true, http_url, false, render_view_host1()); | 468 1, -1, true, http_url, false, false, render_view_host1()); |
| 469 | 469 |
| 470 GURL https_url(kHttpsUrl); | 470 GURL https_url(kHttpsUrl); |
| 471 EXPECT_CALL(mock_reloader(), OnRedirect(true)).Times(1); | 471 EXPECT_CALL(mock_reloader(), OnRedirect(true)).Times(1); |
| 472 OnRedirect(ResourceType::MAIN_FRAME, https_url, | 472 OnRedirect(ResourceType::MAIN_FRAME, https_url, |
| 473 render_view_host1()->GetProcess()->GetID()); | 473 render_view_host1()->GetProcess()->GetID()); |
| 474 | 474 |
| 475 tab_helper().DidFailProvisionalLoad( | 475 tab_helper().DidFailProvisionalLoad( |
| 476 1, true, https_url, net::ERR_TIMED_OUT, string16(), | 476 1, true, https_url, net::ERR_TIMED_OUT, string16(), |
| 477 render_view_host1()); | 477 render_view_host1()); |
| 478 | 478 |
| 479 // Provisional load starts for the error page. | 479 // Provisional load starts for the error page. |
| 480 tab_helper().DidStartProvisionalLoadForFrame( | 480 tab_helper().DidStartProvisionalLoadForFrame( |
| 481 1, -1, true, GURL(kErrorPageUrl), true, render_view_host1()); | 481 1, -1, true, GURL(kErrorPageUrl), true, false, render_view_host1()); |
| 482 | 482 |
| 483 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::ERR_TIMED_OUT)).Times(1); | 483 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::ERR_TIMED_OUT)).Times(1); |
| 484 tab_helper().DidCommitProvisionalLoadForFrame( | 484 tab_helper().DidCommitProvisionalLoadForFrame( |
| 485 1, true, GURL(kErrorPageUrl), content::PAGE_TRANSITION_LINK, | 485 1, true, GURL(kErrorPageUrl), content::PAGE_TRANSITION_LINK, |
| 486 render_view_host1()); | 486 render_view_host1()); |
| 487 } | 487 } |
| 488 | 488 |
| 489 // Simulates an HTTPS to HTTP redirect. | 489 // Simulates an HTTPS to HTTP redirect. |
| 490 TEST_F(CaptivePortalTabHelperTest, HttpsToHttpRedirect) { | 490 TEST_F(CaptivePortalTabHelperTest, HttpsToHttpRedirect) { |
| 491 GURL https_url(kHttpsUrl); | 491 GURL https_url(kHttpsUrl); |
| 492 EXPECT_CALL(mock_reloader(), | 492 EXPECT_CALL(mock_reloader(), |
| 493 OnLoadStart(https_url.SchemeIsSecure())).Times(1); | 493 OnLoadStart(https_url.SchemeIsSecure())).Times(1); |
| 494 tab_helper().DidStartProvisionalLoadForFrame(1, -1, true, https_url, false, | 494 tab_helper().DidStartProvisionalLoadForFrame(1, -1, true, https_url, false, |
| 495 render_view_host1()); | 495 false, render_view_host1()); |
| 496 | 496 |
| 497 GURL http_url(kHttpUrl); | 497 GURL http_url(kHttpUrl); |
| 498 EXPECT_CALL(mock_reloader(), OnRedirect(http_url.SchemeIsSecure())).Times(1); | 498 EXPECT_CALL(mock_reloader(), OnRedirect(http_url.SchemeIsSecure())).Times(1); |
| 499 OnRedirect(ResourceType::MAIN_FRAME, http_url, | 499 OnRedirect(ResourceType::MAIN_FRAME, http_url, |
| 500 render_view_host1()->GetProcess()->GetID()); | 500 render_view_host1()->GetProcess()->GetID()); |
| 501 | 501 |
| 502 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::OK)).Times(1); | 502 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::OK)).Times(1); |
| 503 tab_helper().DidCommitProvisionalLoadForFrame( | 503 tab_helper().DidCommitProvisionalLoadForFrame( |
| 504 1, true, http_url, content::PAGE_TRANSITION_LINK, | 504 1, true, http_url, content::PAGE_TRANSITION_LINK, |
| 505 render_view_host1()); | 505 render_view_host1()); |
| 506 } | 506 } |
| 507 | 507 |
| 508 // Simulates an HTTPS to HTTPS redirect. | 508 // Simulates an HTTPS to HTTPS redirect. |
| 509 TEST_F(CaptivePortalTabHelperTest, HttpToHttpRedirect) { | 509 TEST_F(CaptivePortalTabHelperTest, HttpToHttpRedirect) { |
| 510 GURL http_url(kHttpUrl); | 510 GURL http_url(kHttpUrl); |
| 511 EXPECT_CALL(mock_reloader(), | 511 EXPECT_CALL(mock_reloader(), |
| 512 OnLoadStart(http_url.SchemeIsSecure())).Times(1); | 512 OnLoadStart(http_url.SchemeIsSecure())).Times(1); |
| 513 tab_helper().DidStartProvisionalLoadForFrame( | 513 tab_helper().DidStartProvisionalLoadForFrame( |
| 514 1, -1, true, http_url, false, render_view_host1()); | 514 1, -1, true, http_url, false, false, render_view_host1()); |
| 515 | 515 |
| 516 EXPECT_CALL(mock_reloader(), OnRedirect(http_url.SchemeIsSecure())).Times(1); | 516 EXPECT_CALL(mock_reloader(), OnRedirect(http_url.SchemeIsSecure())).Times(1); |
| 517 OnRedirect(ResourceType::MAIN_FRAME, http_url, | 517 OnRedirect(ResourceType::MAIN_FRAME, http_url, |
| 518 render_view_host1()->GetProcess()->GetID()); | 518 render_view_host1()->GetProcess()->GetID()); |
| 519 | 519 |
| 520 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::OK)).Times(1); | 520 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::OK)).Times(1); |
| 521 tab_helper().DidCommitProvisionalLoadForFrame( | 521 tab_helper().DidCommitProvisionalLoadForFrame( |
| 522 1, true, http_url, content::PAGE_TRANSITION_LINK, | 522 1, true, http_url, content::PAGE_TRANSITION_LINK, |
| 523 render_view_host1()); | 523 render_view_host1()); |
| 524 } | 524 } |
| 525 | 525 |
| 526 // Simulates redirect of a subframe. | 526 // Simulates redirect of a subframe. |
| 527 TEST_F(CaptivePortalTabHelperTest, SubframeRedirect) { | 527 TEST_F(CaptivePortalTabHelperTest, SubframeRedirect) { |
| 528 GURL http_url(kHttpUrl); | 528 GURL http_url(kHttpUrl); |
| 529 EXPECT_CALL(mock_reloader(), OnLoadStart(false)).Times(1); | 529 EXPECT_CALL(mock_reloader(), OnLoadStart(false)).Times(1); |
| 530 tab_helper().DidStartProvisionalLoadForFrame( | 530 tab_helper().DidStartProvisionalLoadForFrame( |
| 531 1, -1, true, http_url, false, render_view_host1()); | 531 1, -1, true, http_url, false, false, render_view_host1()); |
| 532 | 532 |
| 533 GURL https_url(kHttpsUrl); | 533 GURL https_url(kHttpsUrl); |
| 534 OnRedirect(ResourceType::SUB_FRAME, https_url, | 534 OnRedirect(ResourceType::SUB_FRAME, https_url, |
| 535 render_view_host1()->GetProcess()->GetID()); | 535 render_view_host1()->GetProcess()->GetID()); |
| 536 | 536 |
| 537 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::OK)).Times(1); | 537 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::OK)).Times(1); |
| 538 tab_helper().DidCommitProvisionalLoadForFrame( | 538 tab_helper().DidCommitProvisionalLoadForFrame( |
| 539 1, true, GURL(kErrorPageUrl), content::PAGE_TRANSITION_LINK, | 539 1, true, GURL(kErrorPageUrl), content::PAGE_TRANSITION_LINK, |
| 540 render_view_host1()); | 540 render_view_host1()); |
| 541 } | 541 } |
| 542 | 542 |
| 543 // Simulates a redirect, for another RenderViewHost. | 543 // Simulates a redirect, for another RenderViewHost. |
| 544 TEST_F(CaptivePortalTabHelperTest, OtherRenderViewHostRedirect) { | 544 TEST_F(CaptivePortalTabHelperTest, OtherRenderViewHostRedirect) { |
| 545 GURL http_url(kHttpUrl); | 545 GURL http_url(kHttpUrl); |
| 546 EXPECT_CALL(mock_reloader(), OnLoadStart(false)).Times(1); | 546 EXPECT_CALL(mock_reloader(), OnLoadStart(false)).Times(1); |
| 547 tab_helper().DidStartProvisionalLoadForFrame( | 547 tab_helper().DidStartProvisionalLoadForFrame( |
| 548 1, -1, true, http_url, false, render_view_host1()); | 548 1, -1, true, http_url, false, false, render_view_host1()); |
| 549 | 549 |
| 550 // Another RenderViewHost sees a redirect. None of the reloader's functions | 550 // Another RenderViewHost sees a redirect. None of the reloader's functions |
| 551 // should be called. | 551 // should be called. |
| 552 GURL https_url(kHttpsUrl); | 552 GURL https_url(kHttpsUrl); |
| 553 OnRedirect(ResourceType::MAIN_FRAME, https_url, | 553 OnRedirect(ResourceType::MAIN_FRAME, https_url, |
| 554 render_view_host2()->GetProcess()->GetID()); | 554 render_view_host2()->GetProcess()->GetID()); |
| 555 | 555 |
| 556 tab_helper().DidFailProvisionalLoad( | 556 tab_helper().DidFailProvisionalLoad( |
| 557 1, true, https_url, net::ERR_TIMED_OUT, string16(), | 557 1, true, https_url, net::ERR_TIMED_OUT, string16(), |
| 558 render_view_host1()); | 558 render_view_host1()); |
| 559 | 559 |
| 560 // Provisional load starts for the error page. | 560 // Provisional load starts for the error page. |
| 561 tab_helper().DidStartProvisionalLoadForFrame( | 561 tab_helper().DidStartProvisionalLoadForFrame( |
| 562 1, -1, true, GURL(kErrorPageUrl), true, render_view_host1()); | 562 1, -1, true, GURL(kErrorPageUrl), true, false, render_view_host1()); |
| 563 | 563 |
| 564 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::ERR_TIMED_OUT)).Times(1); | 564 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::ERR_TIMED_OUT)).Times(1); |
| 565 tab_helper().DidCommitProvisionalLoadForFrame( | 565 tab_helper().DidCommitProvisionalLoadForFrame( |
| 566 1, true, GURL(kErrorPageUrl), content::PAGE_TRANSITION_LINK, | 566 1, true, GURL(kErrorPageUrl), content::PAGE_TRANSITION_LINK, |
| 567 render_view_host1()); | 567 render_view_host1()); |
| 568 } | 568 } |
| 569 | 569 |
| 570 TEST_F(CaptivePortalTabHelperTest, LoginTabLogin) { | 570 TEST_F(CaptivePortalTabHelperTest, LoginTabLogin) { |
| 571 EXPECT_FALSE(tab_helper().IsLoginTab()); | 571 EXPECT_FALSE(tab_helper().IsLoginTab()); |
| 572 SetIsLoginTab(); | 572 SetIsLoginTab(); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 610 EXPECT_FALSE(tab_helper().IsLoginTab()); | 610 EXPECT_FALSE(tab_helper().IsLoginTab()); |
| 611 | 611 |
| 612 ObservePortalResult(RESULT_BEHIND_CAPTIVE_PORTAL, RESULT_NO_RESPONSE); | 612 ObservePortalResult(RESULT_BEHIND_CAPTIVE_PORTAL, RESULT_NO_RESPONSE); |
| 613 EXPECT_FALSE(tab_helper().IsLoginTab()); | 613 EXPECT_FALSE(tab_helper().IsLoginTab()); |
| 614 | 614 |
| 615 ObservePortalResult(RESULT_NO_RESPONSE, RESULT_INTERNET_CONNECTED); | 615 ObservePortalResult(RESULT_NO_RESPONSE, RESULT_INTERNET_CONNECTED); |
| 616 EXPECT_FALSE(tab_helper().IsLoginTab()); | 616 EXPECT_FALSE(tab_helper().IsLoginTab()); |
| 617 } | 617 } |
| 618 | 618 |
| 619 } // namespace captive_portal | 619 } // namespace captive_portal |
| OLD | NEW |