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

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

Issue 410373003: Fix cross origin check when deciding to show the HTTP auth interstitial. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Change test name Created 6 years, 4 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/net/websocket_browsertest.cc ('k') | chrome/browser/ui/login/login_prompt_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/login/login_prompt.cc
diff --git a/chrome/browser/ui/login/login_prompt.cc b/chrome/browser/ui/login/login_prompt.cc
index 53f68a7b4a8f518502bdf7c005e1aaa274b15769..d2d6e101ba676afb3514008f7d687e73b64c0371 100644
--- a/chrome/browser/ui/login/login_prompt.cc
+++ b/chrome/browser/ui/login/login_prompt.cc
@@ -509,8 +509,17 @@ void LoginDialogCallback(const GURL& request_url,
return;
}
+ // Check if the request is cross origin. There are two different ways the
+ // navigation can occur:
+ // 1- The user enters the resource URL in the omnibox.
+ // 2- The page redirects to the resource.
+ // In both cases, the last committed URL is different than the resource URL,
+ // so checking it is sufficient.
+ // Note that (1) will not be true once site isolation is enabled, as any
+ // navigation could cause a cross-process swap, including link clicks.
if (is_main_frame &&
- parent_contents->GetVisibleURL().GetOrigin() != request_url.GetOrigin()) {
+ parent_contents->GetLastCommittedURL().GetOrigin() !=
+ request_url.GetOrigin()) {
// Show a blank interstitial for main-frame, cross origin requests
// so that the correct URL is shown in the omnibox.
base::Closure callback = base::Bind(&ShowLoginPrompt,
« no previous file with comments | « chrome/browser/net/websocket_browsertest.cc ('k') | chrome/browser/ui/login/login_prompt_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698