summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/browser.cc14
-rw-r--r--chrome/browser/browser_unittest.cc9
2 files changed, 21 insertions, 2 deletions
diff --git a/chrome/browser/browser.cc b/chrome/browser/browser.cc
index c9802bd..5ac9d2c 100644
--- a/chrome/browser/browser.cc
+++ b/chrome/browser/browser.cc
@@ -1233,6 +1233,17 @@ void Browser::OpenCurrentURL() {
CloseTabContents(selected_contents);
return;
}
+
+ if (selected_contents) {
+ // For the purposes of changing the window open disposition, the referrer
+ // is the current tab's URL.
+ open_disposition = AdjustWindowOpenDispositionForTab(
+ IsPinned(selected_contents),
+ url,
+ selected_contents->GetURL(),
+ location_bar->GetPageTransition(),
+ open_disposition);
+ }
}
OpenURLAtIndex(NULL, url, GURL(),
@@ -3635,7 +3646,8 @@ WindowOpenDisposition Browser::AdjustWindowOpenDispositionForTab(
if (!is_pinned ||
original_disposition != CURRENT_TAB ||
(transition != PageTransition::AUTO_BOOKMARK &&
- transition != PageTransition::LINK)) {
+ transition != PageTransition::LINK &&
+ transition != PageTransition::TYPED)) {
return original_disposition;
}
diff --git a/chrome/browser/browser_unittest.cc b/chrome/browser/browser_unittest.cc
index ad179ce..e6a530e 100644
--- a/chrome/browser/browser_unittest.cc
+++ b/chrome/browser/browser_unittest.cc
@@ -29,6 +29,13 @@ const struct NavigationScenario {
PageTransition::AUTO_BOOKMARK,
CURRENT_TAB,
NEW_FOREGROUND_TAB },
+ // Also works with TYPED.
+ { true,
+ "http://www.example.com",
+ "http://www.google.com",
+ PageTransition::TYPED,
+ CURRENT_TAB,
+ NEW_FOREGROUND_TAB },
// Also happens if the schemes differ.
{ true,
"ftp://www.example.com",
@@ -61,7 +68,7 @@ const struct NavigationScenario {
{ true,
"http://www.example.com",
"http://www.google.com",
- PageTransition::TYPED,
+ PageTransition::RELOAD,
CURRENT_TAB,
CURRENT_TAB },
// Same domain and scheme - no change.