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

Unified Diff: chrome/browser/browser.cc

Issue 17428: Issue 358: Can't open a new tab by middle-clicking home button... (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 11 years, 9 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/browser.h ('k') | chrome/browser/location_bar.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/browser.cc
===================================================================
--- chrome/browser/browser.cc (revision 12354)
+++ chrome/browser/browser.cc (working copy)
@@ -552,7 +552,7 @@
///////////////////////////////////////////////////////////////////////////////
// Browser, Assorted browser commands:
-void Browser::GoBack() {
+void Browser::GoBack(WindowOpenDisposition disposition) {
UserMetrics::RecordAction(L"Back", profile_);
// If we are showing an interstitial, just hide it.
@@ -566,14 +566,37 @@
web_contents->interstitial_page()->DontProceed();
return;
}
- if (current_tab->controller()->CanGoBack())
- current_tab->controller()->GoBack();
+
+ if (current_tab->controller()->CanGoBack()) {
+ NavigationController* controller = 0;
+ if (disposition == NEW_FOREGROUND_TAB || disposition == NEW_BACKGROUND_TAB){
+ controller = GetSelectedTabContents()->controller()->Clone();
+ tabstrip_model_.AddTabContents(
+ controller->active_contents(), -1,
+ PageTransition::LINK, disposition == NEW_FOREGROUND_TAB);
+ } else {
+ // Default disposition is CURRENT_TAB.
+ controller = current_tab->controller();
+ }
+ controller->GoBack();
+ }
}
-void Browser::GoForward() {
+void Browser::GoForward(WindowOpenDisposition disp) {
UserMetrics::RecordAction(L"Forward", profile_);
- if (GetSelectedTabContents()->controller()->CanGoForward())
- GetSelectedTabContents()->controller()->GoForward();
+ if (GetSelectedTabContents()->controller()->CanGoForward()) {
+ NavigationController* controller = 0;
+ if (disp == NEW_FOREGROUND_TAB || disp == NEW_BACKGROUND_TAB) {
+ controller = GetSelectedTabContents()->controller()->Clone();
+ tabstrip_model_.AddTabContents(
+ controller->active_contents(), -1,
+ PageTransition::LINK, disp == NEW_FOREGROUND_TAB);
+ } else {
+ // Default disposition is CURRENT_TAB.
+ controller = GetSelectedTabContents()->controller();
+ }
+ controller->GoForward();
+ }
}
void Browser::Reload() {
@@ -598,11 +621,9 @@
}
}
-void Browser::Home() {
+void Browser::Home(WindowOpenDisposition disposition) {
UserMetrics::RecordAction(L"Home", profile_);
- GURL homepage_url = GetHomePage();
- GetSelectedTabContents()->controller()->LoadURL(
- homepage_url, GURL(), PageTransition::AUTO_BOOKMARK);
+ OpenURL(GetHomePage(), GURL(), disposition, PageTransition::AUTO_BOOKMARK);
}
void Browser::OpenCurrentURL() {
@@ -613,9 +634,9 @@
location_bar->GetPageTransition());
}
-void Browser::Go() {
+void Browser::Go(WindowOpenDisposition disposition) {
UserMetrics::RecordAction(L"Go", profile_);
- window_->GetLocationBar()->AcceptInput();
+ window_->GetLocationBar()->AcceptInputWithDisposition(disposition);
}
void Browser::Stop() {
@@ -1103,10 +1124,8 @@
return NULL;
}
-///////////////////////////////////////////////////////////////////////////////
-// Browser, CommandUpdater::CommandUpdaterDelegate implementation:
-
-void Browser::ExecuteCommand(int id) {
+void Browser::ExecuteCommandWithDisposition(
+ int id, WindowOpenDisposition disposition) {
// No commands are enabled if there is not yet any selected tab.
// TODO(pkasting): It seems like we should not need this, because either
// most/all commands should not have been enabled yet anyway or the ones that
@@ -1123,12 +1142,12 @@
// declaration order in browser.h!
switch (id) {
// Navigation commands
- case IDC_BACK: GoBack(); break;
- case IDC_FORWARD: GoForward(); break;
+ case IDC_BACK: GoBack(disposition); break;
+ case IDC_FORWARD: GoForward(disposition); break;
case IDC_RELOAD: Reload(); break;
- case IDC_HOME: Home(); break;
+ case IDC_HOME: Home(disposition); break;
case IDC_OPEN_CURRENT_URL: OpenCurrentURL(); break;
- case IDC_GO: Go(); break;
+ case IDC_GO: Go(disposition); break;
case IDC_STOP: Stop(); break;
// Window management commands
@@ -1283,6 +1302,13 @@
}
///////////////////////////////////////////////////////////////////////////////
+// Browser, CommandUpdater::CommandUpdaterDelegate implementation:
+
+void Browser::ExecuteCommand(int id) {
+ ExecuteCommandWithDisposition(id, CURRENT_TAB);
+}
+
+///////////////////////////////////////////////////////////////////////////////
// Browser, TabStripModelDelegate implementation:
GURL Browser::GetBlankTabURL() const {
« no previous file with comments | « chrome/browser/browser.h ('k') | chrome/browser/location_bar.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698