Chromium Code Reviews| 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 "chrome/browser/browser_thread.h" | 9 #include "chrome/browser/browser_thread.h" |
| 10 #include "chrome/browser/renderer_host/resource_dispatcher_host.h" | |
| 10 #include "chrome/browser/ui/browser.h" | 11 #include "chrome/browser/ui/browser.h" |
| 11 #include "chrome/browser/ui/login/login_prompt.h" | 12 #include "chrome/browser/ui/login/login_prompt.h" |
| 12 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 13 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
| 13 #include "chrome/common/notification_service.h" | 14 #include "chrome/common/notification_service.h" |
| 14 #include "chrome/test/in_process_browser_test.h" | 15 #include "chrome/test/in_process_browser_test.h" |
| 15 #include "chrome/test/ui_test_utils.h" | 16 #include "chrome/test/ui_test_utils.h" |
| 16 #include "net/base/auth.h" | 17 #include "net/base/auth.h" |
| 17 | 18 |
| 18 namespace { | 19 namespace { |
| 19 | 20 |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 155 | 156 |
| 156 typedef WindowedNavigationObserver<NotificationType::AUTH_NEEDED> | 157 typedef WindowedNavigationObserver<NotificationType::AUTH_NEEDED> |
| 157 WindowedAuthNeededObserver; | 158 WindowedAuthNeededObserver; |
| 158 | 159 |
| 159 typedef WindowedNavigationObserver<NotificationType::AUTH_CANCELLED> | 160 typedef WindowedNavigationObserver<NotificationType::AUTH_CANCELLED> |
| 160 WindowedAuthCancelledObserver; | 161 WindowedAuthCancelledObserver; |
| 161 | 162 |
| 162 typedef WindowedNavigationObserver<NotificationType::AUTH_SUPPLIED> | 163 typedef WindowedNavigationObserver<NotificationType::AUTH_SUPPLIED> |
| 163 WindowedAuthSuppliedObserver; | 164 WindowedAuthSuppliedObserver; |
| 164 | 165 |
| 166 const char* kPrefetchAuthPage = "files/login/prefetch.html"; | |
| 167 | |
| 165 const char* kMultiRealmTestPage = "files/login/multi_realm.html"; | 168 const char* kMultiRealmTestPage = "files/login/multi_realm.html"; |
| 166 const int kMultiRealmTestRealmCount = 2; | 169 const int kMultiRealmTestRealmCount = 2; |
| 167 const int kMultiRealmTestResourceCount = 4; | 170 const int kMultiRealmTestResourceCount = 4; |
| 168 | 171 |
| 169 const char* kSingleRealmTestPage = "files/login/single_realm.html"; | 172 const char* kSingleRealmTestPage = "files/login/single_realm.html"; |
| 170 const int kSingleRealmTestResourceCount = 6; | 173 const int kSingleRealmTestResourceCount = 6; |
| 171 | 174 |
| 175 // Confirm that <link rel="prefetch"> targetting an auth required | |
| 176 // resource does not provide a login dialog. These types of requests | |
| 177 // should instead just cancel the auth. | |
| 178 | |
| 179 // Unfortunately, this test doesn't assert on anything for its | |
| 180 // correctness. Instead, it relies on the auth dialog blocking the | |
| 181 // browser, and triggering a timeout to cause failure when the | |
| 182 // prefetch resource requires authorization. | |
| 183 IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest, PrefetchAuthCancels) { | |
|
cbentzel
2011/01/20 17:59:45
Should this test also add a LoginPromptBrowserTest
asanka (google)
2011/01/20 18:16:29
An alternative would be to wait for both AUTH_NEED
cbentzel
2011/01/20 18:19:20
In this case we do not expect an AUTH_NEEDED, so t
gavinp
2011/01/20 18:36:15
Added the assertion for the obvserver handlers bei
| |
| 184 ASSERT_TRUE(test_server()->Start()); | |
| 185 | |
| 186 GURL test_page = test_server()->GetURL(kPrefetchAuthPage); | |
| 187 | |
| 188 const bool was_prefetch_enabled = | |
|
cbentzel
2011/01/20 17:59:45
Would it make sense to add a simple RAII class to
gavinp
2011/01/20 18:36:15
Done.
| |
| 189 ResourceDispatcherHost::is_prefetch_enabled(); | |
| 190 ResourceDispatcherHost::set_is_prefetch_enabled(true); | |
| 191 | |
| 192 TabContentsWrapper* contents = | |
| 193 browser()->GetSelectedTabContentsWrapper(); | |
| 194 ASSERT_TRUE(contents); | |
| 195 NavigationController* controller = &contents->controller(); | |
| 196 | |
| 197 WindowedLoadStopObserver load_stop_waiter(controller); | |
| 198 browser()->OpenURL(test_page, GURL(), CURRENT_TAB, PageTransition::TYPED); | |
| 199 | |
| 200 load_stop_waiter.Wait(); | |
| 201 | |
| 202 ResourceDispatcherHost::set_is_prefetch_enabled(was_prefetch_enabled); | |
| 203 EXPECT_TRUE(test_server()->Stop()); | |
| 204 } | |
| 205 | |
| 172 // Test handling of resources that require authentication even though | 206 // Test handling of resources that require authentication even though |
| 173 // the page they are included on doesn't. In this case we should only | 207 // the page they are included on doesn't. In this case we should only |
| 174 // present the minimal number of prompts necessary for successfully | 208 // present the minimal number of prompts necessary for successfully |
| 175 // displaying the page. First we check whether cancelling works as | 209 // displaying the page. First we check whether cancelling works as |
| 176 // expected. | 210 // expected. |
| 177 IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest, MultipleRealmCancellation) { | 211 IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest, MultipleRealmCancellation) { |
| 178 ASSERT_TRUE(test_server()->Start()); | 212 ASSERT_TRUE(test_server()->Start()); |
| 179 GURL test_page = test_server()->GetURL(kMultiRealmTestPage); | 213 GURL test_page = test_server()->GetURL(kMultiRealmTestPage); |
| 180 | 214 |
| 181 TabContentsWrapper* contents = | 215 TabContentsWrapper* contents = |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 349 EXPECT_EQ(1, n_handlers); | 383 EXPECT_EQ(1, n_handlers); |
| 350 EXPECT_LT(0, observer.auth_needed_count_); | 384 EXPECT_LT(0, observer.auth_needed_count_); |
| 351 EXPECT_EQ(0, observer.auth_cancelled_count_); | 385 EXPECT_EQ(0, observer.auth_cancelled_count_); |
| 352 EXPECT_EQ(observer.auth_needed_count_, observer.auth_supplied_count_); | 386 EXPECT_EQ(observer.auth_needed_count_, observer.auth_supplied_count_); |
| 353 LOG(INFO) << "Waiting for LOAD_STOP"; | 387 LOG(INFO) << "Waiting for LOAD_STOP"; |
| 354 load_stop_waiter.Wait(); | 388 load_stop_waiter.Wait(); |
| 355 EXPECT_TRUE(test_server()->Stop()); | 389 EXPECT_TRUE(test_server()->Stop()); |
| 356 LOG(INFO) << "Done with test"; | 390 LOG(INFO) << "Done with test"; |
| 357 } | 391 } |
| 358 } // namespace | 392 } // namespace |
| OLD | NEW |