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

Unified Diff: chrome/browser/ui/login/login_prompt_browsertest.cc

Issue 6321013: Stop login prompt from showing for prefetches (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: fixed constructor for RAII class Created 9 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/renderer_host/resource_dispatcher_host.cc ('k') | chrome/test/data/login/prefetch.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/login/login_prompt_browsertest.cc
diff --git a/chrome/browser/ui/login/login_prompt_browsertest.cc b/chrome/browser/ui/login/login_prompt_browsertest.cc
index 476b3f55a6ac23f47052fc4fbcb5709d55b00c0f..34bd1652d55b016e96a821092c01a6d597873ce2 100644
--- a/chrome/browser/ui/login/login_prompt_browsertest.cc
+++ b/chrome/browser/ui/login/login_prompt_browsertest.cc
@@ -7,6 +7,7 @@
#include <map>
#include "chrome/browser/browser_thread.h"
+#include "chrome/browser/renderer_host/resource_dispatcher_host.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/login/login_prompt.h"
#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
@@ -162,6 +163,8 @@ typedef WindowedNavigationObserver<NotificationType::AUTH_CANCELLED>
typedef WindowedNavigationObserver<NotificationType::AUTH_SUPPLIED>
WindowedAuthSuppliedObserver;
+const char* kPrefetchAuthPage = "files/login/prefetch.html";
+
const char* kMultiRealmTestPage = "files/login/multi_realm.html";
const int kMultiRealmTestRealmCount = 2;
const int kMultiRealmTestResourceCount = 4;
@@ -169,6 +172,49 @@ const int kMultiRealmTestResourceCount = 4;
const char* kSingleRealmTestPage = "files/login/single_realm.html";
const int kSingleRealmTestResourceCount = 6;
+// Confirm that <link rel="prefetch"> targetting an auth required
+// resource does not provide a login dialog. These types of requests
+// should instead just cancel the auth.
+
+// Unfortunately, this test doesn't assert on anything for its
+// correctness. Instead, it relies on the auth dialog blocking the
+// browser, and triggering a timeout to cause failure when the
+// prefetch resource requires authorization.
+IN_PROC_BROWSER_TEST_F(LoginPromptBrowserTest, PrefetchAuthCancels) {
+ ASSERT_TRUE(test_server()->Start());
+
+ GURL test_page = test_server()->GetURL(kPrefetchAuthPage);
+
+ class SetPrefetchForTest {
cbentzel 2011/01/20 19:26:30 Do you also want to enforce that prerender is not
gavinp 2011/01/21 15:14:36 We should be good no matter the prerender setting.
+ public:
+ explicit SetPrefetchForTest(bool prefetch)
+ : old_prefetch_state_(ResourceDispatcherHost::is_prefetch_enabled()) {
+ ResourceDispatcherHost::set_is_prefetch_enabled(prefetch);
+ }
+
+ ~SetPrefetchForTest() {
+ ResourceDispatcherHost::set_is_prefetch_enabled(old_prefetch_state_);
+ }
+ private:
+ bool old_prefetch_state_;
+ } set_prefetch_for_test(true);
cbentzel 2011/01/20 19:26:30 I didn't realize you could do this in C++.
+
+ TabContentsWrapper* contents =
+ browser()->GetSelectedTabContentsWrapper();
+ ASSERT_TRUE(contents);
+ NavigationController* controller = &contents->controller();
+ LoginPromptBrowserTestObserver observer;
+
+ observer.Register(Source<NavigationController>(controller));
+
+ WindowedLoadStopObserver load_stop_waiter(controller);
+ browser()->OpenURL(test_page, GURL(), CURRENT_TAB, PageTransition::TYPED);
+
+ load_stop_waiter.Wait();
+ EXPECT_TRUE(observer.handlers_.empty());
+ EXPECT_TRUE(test_server()->Stop());
+}
+
// Test handling of resources that require authentication even though
// the page they are included on doesn't. In this case we should only
// present the minimal number of prompts necessary for successfully
« no previous file with comments | « chrome/browser/renderer_host/resource_dispatcher_host.cc ('k') | chrome/test/data/login/prefetch.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698