| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 <algorithm> | 5 #include <algorithm> |
| 6 #include <list> | 6 #include <list> |
| 7 #include <map> | 7 #include <map> |
| 8 | 8 |
| 9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
| 10 #include "chrome/browser/prerender/prerender_manager.h" | 10 #include "chrome/browser/prerender/prerender_manager.h" |
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 213 | 213 |
| 214 TabContentsWrapper* contents = | 214 TabContentsWrapper* contents = |
| 215 browser()->GetSelectedTabContentsWrapper(); | 215 browser()->GetSelectedTabContentsWrapper(); |
| 216 ASSERT_TRUE(contents); | 216 ASSERT_TRUE(contents); |
| 217 NavigationController* controller = &contents->controller(); | 217 NavigationController* controller = &contents->controller(); |
| 218 LoginPromptBrowserTestObserver observer; | 218 LoginPromptBrowserTestObserver observer; |
| 219 | 219 |
| 220 observer.Register(Source<NavigationController>(controller)); | 220 observer.Register(Source<NavigationController>(controller)); |
| 221 | 221 |
| 222 WindowedLoadStopObserver load_stop_waiter(controller); | 222 WindowedLoadStopObserver load_stop_waiter(controller); |
| 223 browser()->OpenURL(test_page, GURL(), CURRENT_TAB, PageTransition::TYPED); | 223 browser()->OpenURL( |
| 224 test_page, GURL(), CURRENT_TAB, content::PAGE_TRANSITION_TYPED); |
| 224 | 225 |
| 225 load_stop_waiter.Wait(); | 226 load_stop_waiter.Wait(); |
| 226 EXPECT_TRUE(observer.handlers_.empty()); | 227 EXPECT_TRUE(observer.handlers_.empty()); |
| 227 EXPECT_TRUE(test_server()->Stop()); | 228 EXPECT_TRUE(test_server()->Stop()); |
| 228 } | 229 } |
| 229 | 230 |
| 230 // Test handling of resources that require authentication even though | 231 // Test handling of resources that require authentication even though |
| 231 // the page they are included on doesn't. In this case we should only | 232 // the page they are included on doesn't. In this case we should only |
| 232 // present the minimal number of prompts necessary for successfully | 233 // present the minimal number of prompts necessary for successfully |
| 233 // displaying the page. First we check whether cancelling works as | 234 // displaying the page. First we check whether cancelling works as |
| 234 // expected. | 235 // expected. |
| 235 IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest, MultipleRealmCancellation) { | 236 IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest, MultipleRealmCancellation) { |
| 236 ASSERT_TRUE(test_server()->Start()); | 237 ASSERT_TRUE(test_server()->Start()); |
| 237 GURL test_page = test_server()->GetURL(kMultiRealmTestPage); | 238 GURL test_page = test_server()->GetURL(kMultiRealmTestPage); |
| 238 | 239 |
| 239 TabContentsWrapper* contents = | 240 TabContentsWrapper* contents = |
| 240 browser()->GetSelectedTabContentsWrapper(); | 241 browser()->GetSelectedTabContentsWrapper(); |
| 241 ASSERT_TRUE(contents); | 242 ASSERT_TRUE(contents); |
| 242 | 243 |
| 243 NavigationController* controller = &contents->controller(); | 244 NavigationController* controller = &contents->controller(); |
| 244 LoginPromptBrowserTestObserver observer; | 245 LoginPromptBrowserTestObserver observer; |
| 245 | 246 |
| 246 observer.Register(Source<NavigationController>(controller)); | 247 observer.Register(Source<NavigationController>(controller)); |
| 247 | 248 |
| 248 WindowedLoadStopObserver load_stop_waiter(controller); | 249 WindowedLoadStopObserver load_stop_waiter(controller); |
| 249 | 250 |
| 250 { | 251 { |
| 251 WindowedAuthNeededObserver auth_needed_waiter(controller); | 252 WindowedAuthNeededObserver auth_needed_waiter(controller); |
| 252 browser()->OpenURL(test_page, GURL(), CURRENT_TAB, PageTransition::TYPED); | 253 browser()->OpenURL( |
| 254 test_page, GURL(), CURRENT_TAB, content::PAGE_TRANSITION_TYPED); |
| 253 auth_needed_waiter.Wait(); | 255 auth_needed_waiter.Wait(); |
| 254 } | 256 } |
| 255 | 257 |
| 256 int n_handlers = 0; | 258 int n_handlers = 0; |
| 257 | 259 |
| 258 while (n_handlers < kMultiRealmTestRealmCount) { | 260 while (n_handlers < kMultiRealmTestRealmCount) { |
| 259 WindowedAuthNeededObserver auth_needed_waiter(controller); | 261 WindowedAuthNeededObserver auth_needed_waiter(controller); |
| 260 | 262 |
| 261 while (!observer.handlers_.empty()) { | 263 while (!observer.handlers_.empty()) { |
| 262 WindowedAuthCancelledObserver auth_cancelled_waiter(controller); | 264 WindowedAuthCancelledObserver auth_cancelled_waiter(controller); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 302 LoginPromptBrowserTestObserver observer; | 304 LoginPromptBrowserTestObserver observer; |
| 303 | 305 |
| 304 observer.Register(Source<NavigationController>(controller)); | 306 observer.Register(Source<NavigationController>(controller)); |
| 305 | 307 |
| 306 WindowedLoadStopObserver load_stop_waiter(controller); | 308 WindowedLoadStopObserver load_stop_waiter(controller); |
| 307 int n_handlers = 0; | 309 int n_handlers = 0; |
| 308 | 310 |
| 309 { | 311 { |
| 310 WindowedAuthNeededObserver auth_needed_waiter(controller); | 312 WindowedAuthNeededObserver auth_needed_waiter(controller); |
| 311 | 313 |
| 312 browser()->OpenURL(test_page, GURL(), CURRENT_TAB, PageTransition::TYPED); | 314 browser()->OpenURL( |
| 315 test_page, GURL(), CURRENT_TAB, content::PAGE_TRANSITION_TYPED); |
| 313 auth_needed_waiter.Wait(); | 316 auth_needed_waiter.Wait(); |
| 314 } | 317 } |
| 315 | 318 |
| 316 while (n_handlers < kMultiRealmTestRealmCount) { | 319 while (n_handlers < kMultiRealmTestRealmCount) { |
| 317 WindowedAuthNeededObserver auth_needed_waiter(controller); | 320 WindowedAuthNeededObserver auth_needed_waiter(controller); |
| 318 | 321 |
| 319 while (!observer.handlers_.empty()) { | 322 while (!observer.handlers_.empty()) { |
| 320 WindowedAuthSuppliedObserver auth_supplied_waiter(controller); | 323 WindowedAuthSuppliedObserver auth_supplied_waiter(controller); |
| 321 LoginHandler* handler = *observer.handlers_.begin(); | 324 LoginHandler* handler = *observer.handlers_.begin(); |
| 322 | 325 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 349 browser()->GetSelectedTabContentsWrapper(); | 352 browser()->GetSelectedTabContentsWrapper(); |
| 350 ASSERT_TRUE(contents); | 353 ASSERT_TRUE(contents); |
| 351 | 354 |
| 352 NavigationController* controller = &contents->controller(); | 355 NavigationController* controller = &contents->controller(); |
| 353 LoginPromptBrowserTestObserver observer; | 356 LoginPromptBrowserTestObserver observer; |
| 354 | 357 |
| 355 observer.Register(Source<NavigationController>(controller)); | 358 observer.Register(Source<NavigationController>(controller)); |
| 356 | 359 |
| 357 { | 360 { |
| 358 WindowedAuthNeededObserver auth_needed_waiter(controller); | 361 WindowedAuthNeededObserver auth_needed_waiter(controller); |
| 359 browser()->OpenURL(test_page, GURL(), CURRENT_TAB, PageTransition::TYPED); | 362 browser()->OpenURL( |
| 363 test_page, GURL(), CURRENT_TAB, content::PAGE_TRANSITION_TYPED); |
| 360 auth_needed_waiter.Wait(); | 364 auth_needed_waiter.Wait(); |
| 361 } | 365 } |
| 362 | 366 |
| 363 EXPECT_FALSE(observer.handlers_.empty()); | 367 EXPECT_FALSE(observer.handlers_.empty()); |
| 364 | 368 |
| 365 if (!observer.handlers_.empty()) { | 369 if (!observer.handlers_.empty()) { |
| 366 WindowedAuthNeededObserver auth_needed_waiter(controller); | 370 WindowedAuthNeededObserver auth_needed_waiter(controller); |
| 367 WindowedAuthSuppliedObserver auth_supplied_waiter(controller); | 371 WindowedAuthSuppliedObserver auth_supplied_waiter(controller); |
| 368 LoginHandler* handler = *observer.handlers_.begin(); | 372 LoginHandler* handler = *observer.handlers_.begin(); |
| 369 | 373 |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 422 NavigationController* controller = &contents->controller(); | 426 NavigationController* controller = &contents->controller(); |
| 423 LoginPromptBrowserTestObserver observer; | 427 LoginPromptBrowserTestObserver observer; |
| 424 | 428 |
| 425 observer.Register(Source<NavigationController>(controller)); | 429 observer.Register(Source<NavigationController>(controller)); |
| 426 | 430 |
| 427 // First load a page that has a favicon that requires | 431 // First load a page that has a favicon that requires |
| 428 // authentication. There should be no login prompt. | 432 // authentication. There should be no login prompt. |
| 429 { | 433 { |
| 430 GURL test_page = test_server()->GetURL(kFaviconTestPage); | 434 GURL test_page = test_server()->GetURL(kFaviconTestPage); |
| 431 WindowedLoadStopObserver load_stop_waiter(controller); | 435 WindowedLoadStopObserver load_stop_waiter(controller); |
| 432 browser()->OpenURL(test_page, GURL(), CURRENT_TAB, PageTransition::TYPED); | 436 browser()->OpenURL( |
| 437 test_page, GURL(), CURRENT_TAB, content::PAGE_TRANSITION_TYPED); |
| 433 load_stop_waiter.Wait(); | 438 load_stop_waiter.Wait(); |
| 434 } | 439 } |
| 435 | 440 |
| 436 // Now request the same favicon, but directly as the document. | 441 // Now request the same favicon, but directly as the document. |
| 437 // There should be one login prompt. | 442 // There should be one login prompt. |
| 438 { | 443 { |
| 439 GURL test_page = test_server()->GetURL(kFaviconResource); | 444 GURL test_page = test_server()->GetURL(kFaviconResource); |
| 440 WindowedLoadStopObserver load_stop_waiter(controller); | 445 WindowedLoadStopObserver load_stop_waiter(controller); |
| 441 WindowedAuthNeededObserver auth_needed_waiter(controller); | 446 WindowedAuthNeededObserver auth_needed_waiter(controller); |
| 442 browser()->OpenURL(test_page, GURL(), CURRENT_TAB, PageTransition::TYPED); | 447 browser()->OpenURL( |
| 448 test_page, GURL(), CURRENT_TAB, content::PAGE_TRANSITION_TYPED); |
| 443 auth_needed_waiter.Wait(); | 449 auth_needed_waiter.Wait(); |
| 444 ASSERT_EQ(1u, observer.handlers_.size()); | 450 ASSERT_EQ(1u, observer.handlers_.size()); |
| 445 | 451 |
| 446 while (!observer.handlers_.empty()) { | 452 while (!observer.handlers_.empty()) { |
| 447 WindowedAuthCancelledObserver auth_cancelled_waiter(controller); | 453 WindowedAuthCancelledObserver auth_cancelled_waiter(controller); |
| 448 LoginHandler* handler = *observer.handlers_.begin(); | 454 LoginHandler* handler = *observer.handlers_.begin(); |
| 449 | 455 |
| 450 ASSERT_TRUE(handler); | 456 ASSERT_TRUE(handler); |
| 451 handler->CancelAuth(); | 457 handler->CancelAuth(); |
| 452 auth_cancelled_waiter.Wait(); | 458 auth_cancelled_waiter.Wait(); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 483 ASSERT_EQ("127.0.0.1", test_page.host()); | 489 ASSERT_EQ("127.0.0.1", test_page.host()); |
| 484 | 490 |
| 485 // Change the host from 127.0.0.1 to www.a.com so that when the | 491 // Change the host from 127.0.0.1 to www.a.com so that when the |
| 486 // page tries to load from b, it will be cross-origin. | 492 // page tries to load from b, it will be cross-origin. |
| 487 std::string new_host("www.a.com"); | 493 std::string new_host("www.a.com"); |
| 488 GURL::Replacements replacements; | 494 GURL::Replacements replacements; |
| 489 replacements.SetHostStr(new_host); | 495 replacements.SetHostStr(new_host); |
| 490 test_page = test_page.ReplaceComponents(replacements); | 496 test_page = test_page.ReplaceComponents(replacements); |
| 491 | 497 |
| 492 WindowedLoadStopObserver load_stop_waiter(controller); | 498 WindowedLoadStopObserver load_stop_waiter(controller); |
| 493 browser()->OpenURL(test_page, GURL(), CURRENT_TAB, PageTransition::TYPED); | 499 browser()->OpenURL( |
| 500 test_page, GURL(), CURRENT_TAB, content::PAGE_TRANSITION_TYPED); |
| 494 load_stop_waiter.Wait(); | 501 load_stop_waiter.Wait(); |
| 495 } | 502 } |
| 496 | 503 |
| 497 EXPECT_EQ(0, observer.auth_needed_count_); | 504 EXPECT_EQ(0, observer.auth_needed_count_); |
| 498 | 505 |
| 499 // Now request the same page, but from the same origin. | 506 // Now request the same page, but from the same origin. |
| 500 // There should be one login prompt. | 507 // There should be one login prompt. |
| 501 { | 508 { |
| 502 GURL test_page = test_server()->GetURL(kTestPage); | 509 GURL test_page = test_server()->GetURL(kTestPage); |
| 503 ASSERT_EQ("127.0.0.1", test_page.host()); | 510 ASSERT_EQ("127.0.0.1", test_page.host()); |
| 504 | 511 |
| 505 // Change the host from 127.0.0.1 to www.b.com so that when the | 512 // Change the host from 127.0.0.1 to www.b.com so that when the |
| 506 // page tries to load from b, it will be same-origin. | 513 // page tries to load from b, it will be same-origin. |
| 507 std::string new_host("www.b.com"); | 514 std::string new_host("www.b.com"); |
| 508 GURL::Replacements replacements; | 515 GURL::Replacements replacements; |
| 509 replacements.SetHostStr(new_host); | 516 replacements.SetHostStr(new_host); |
| 510 test_page = test_page.ReplaceComponents(replacements); | 517 test_page = test_page.ReplaceComponents(replacements); |
| 511 | 518 |
| 512 WindowedAuthNeededObserver auth_needed_waiter(controller); | 519 WindowedAuthNeededObserver auth_needed_waiter(controller); |
| 513 browser()->OpenURL(test_page, GURL(), CURRENT_TAB, PageTransition::TYPED); | 520 browser()->OpenURL( |
| 521 test_page, GURL(), CURRENT_TAB, content::PAGE_TRANSITION_TYPED); |
| 514 auth_needed_waiter.Wait(); | 522 auth_needed_waiter.Wait(); |
| 515 ASSERT_EQ(1u, observer.handlers_.size()); | 523 ASSERT_EQ(1u, observer.handlers_.size()); |
| 516 | 524 |
| 517 while (!observer.handlers_.empty()) { | 525 while (!observer.handlers_.empty()) { |
| 518 WindowedAuthCancelledObserver auth_cancelled_waiter(controller); | 526 WindowedAuthCancelledObserver auth_cancelled_waiter(controller); |
| 519 LoginHandler* handler = *observer.handlers_.begin(); | 527 LoginHandler* handler = *observer.handlers_.begin(); |
| 520 | 528 |
| 521 ASSERT_TRUE(handler); | 529 ASSERT_TRUE(handler); |
| 522 handler->CancelAuth(); | 530 handler->CancelAuth(); |
| 523 auth_cancelled_waiter.Wait(); | 531 auth_cancelled_waiter.Wait(); |
| 524 } | 532 } |
| 525 } | 533 } |
| 526 | 534 |
| 527 EXPECT_EQ(1, observer.auth_needed_count_); | 535 EXPECT_EQ(1, observer.auth_needed_count_); |
| 528 EXPECT_TRUE(test_server()->Stop()); | 536 EXPECT_TRUE(test_server()->Stop()); |
| 529 } | 537 } |
| 530 | 538 |
| 531 } // namespace | 539 } // namespace |
| OLD | NEW |