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

Side by Side Diff: chrome/browser/ui/browser.cc

Issue 6893046: added CTRL+Click and SHIFT+Click handler for context menu, Back and Forward. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: make event_utils::DispositionFromEventFlags not view-specific. Created 9 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "chrome/browser/ui/browser.h" 5 #include "chrome/browser/ui/browser.h"
6 6
7 #if defined(OS_WIN) 7 #if defined(OS_WIN)
8 #include <shellapi.h> 8 #include <shellapi.h>
9 #include <windows.h> 9 #include <windows.h>
10 #endif // OS_WIN 10 #endif // OS_WIN
(...skipping 1159 matching lines...) Expand 10 before | Expand all | Expand 10 after
1170 from_last_session); 1170 from_last_session);
1171 1171
1172 tab_handler_->GetTabStripModel()->ReplaceNavigationControllerAt( 1172 tab_handler_->GetTabStripModel()->ReplaceNavigationControllerAt(
1173 tab_handler_->GetTabStripModel()->active_index(), 1173 tab_handler_->GetTabStripModel()->active_index(),
1174 wrapper); 1174 wrapper);
1175 } 1175 }
1176 1176
1177 bool Browser::CanRestoreTab() { 1177 bool Browser::CanRestoreTab() {
1178 return command_updater_.IsCommandEnabled(IDC_RESTORE_TAB); 1178 return command_updater_.IsCommandEnabled(IDC_RESTORE_TAB);
1179 } 1179 }
1180 1180
Ben Goodger (Google) 2011/05/31 16:00:00 I am beginning to feel like all of this code shoul
shinyak (Google) 2011/06/09 02:29:04 I leave it as is now. I would like to do refactori
1181 bool Browser::NavigateToIndexWithDisposition(int index, 1181 bool Browser::NavigateToIndexWithDisposition(int index,
1182 WindowOpenDisposition disp) { 1182 WindowOpenDisposition disp) {
1183 NavigationController& controller = 1183 TabContentsWrapper* tab = GetOrCloneTabWrapperForDisposition(disp);
1184 GetOrCloneTabForDisposition(disp)->controller(); 1184
1185 NavigationController& controller = tab->controller();
1185 if (index < 0 || index >= controller.entry_count()) 1186 if (index < 0 || index >= controller.entry_count())
1186 return false; 1187 return false;
1187 controller.GoToIndex(index); 1188 controller.GoToIndex(index);
1189
1190 CreateNewBrowserForDisposition(tab, disp);
1191
1188 return true; 1192 return true;
1189 } 1193 }
1190 1194
1191 browser::NavigateParams Browser::GetSingletonTabNavigateParams( 1195 browser::NavigateParams Browser::GetSingletonTabNavigateParams(
1192 const GURL& url) { 1196 const GURL& url) {
1193 browser::NavigateParams params(this, url, PageTransition::AUTO_BOOKMARK); 1197 browser::NavigateParams params(this, url, PageTransition::AUTO_BOOKMARK);
1194 params.disposition = SINGLETON_TAB; 1198 params.disposition = SINGLETON_TAB;
1195 params.window_action = browser::NavigateParams::SHOW_WINDOW; 1199 params.window_action = browser::NavigateParams::SHOW_WINDOW;
1196 params.user_gesture = true; 1200 params.user_gesture = true;
1197 return params; 1201 return params;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1250 command_updater_.UpdateCommandEnabled(IDC_TOGGLE_VERTICAL_TABS, show_main_ui); 1254 command_updater_.UpdateCommandEnabled(IDC_TOGGLE_VERTICAL_TABS, show_main_ui);
1251 command_updater_.UpdateCommandEnabled(IDC_COMPACT_NAVBAR, show_main_ui); 1255 command_updater_.UpdateCommandEnabled(IDC_COMPACT_NAVBAR, show_main_ui);
1252 #if defined (ENABLE_PROFILING) && !defined(NO_TCMALLOC) 1256 #if defined (ENABLE_PROFILING) && !defined(NO_TCMALLOC)
1253 command_updater_.UpdateCommandEnabled(IDC_PROFILING_ENABLED, show_main_ui); 1257 command_updater_.UpdateCommandEnabled(IDC_PROFILING_ENABLED, show_main_ui);
1254 #endif 1258 #endif
1255 } 1259 }
1256 1260
1257 /////////////////////////////////////////////////////////////////////////////// 1261 ///////////////////////////////////////////////////////////////////////////////
1258 // Browser, Assorted browser commands: 1262 // Browser, Assorted browser commands:
1259 1263
1260 bool Browser::ShouldOpenNewTabForWindowDisposition( 1264 bool Browser::ShouldOpenNewTabForDisposition(
1261 WindowOpenDisposition disposition) { 1265 WindowOpenDisposition disposition) {
1262 return (disposition == NEW_FOREGROUND_TAB || 1266 return (disposition == NEW_FOREGROUND_TAB ||
1263 disposition == NEW_BACKGROUND_TAB); 1267 disposition == NEW_BACKGROUND_TAB);
1264 } 1268 }
1265 1269
1266 TabContents* Browser::GetOrCloneTabForDisposition( 1270 TabContents* Browser::GetOrCloneTabForDisposition(
1267 WindowOpenDisposition disposition) { 1271 WindowOpenDisposition disposition) {
1272 return GetOrCloneTabWrapperForDisposition(disposition)->tab_contents();
1273 }
1274
1275 TabContentsWrapper* Browser::GetOrCloneTabWrapperForDisposition(
1276 WindowOpenDisposition disposition)
Ben Goodger (Google) 2011/05/31 16:00:00 nit: curly-brace at the end of this line, not the
shinyak (Google) 2011/06/09 02:29:04 Done.
1277 {
1268 TabContentsWrapper* current_tab = GetSelectedTabContentsWrapper(); 1278 TabContentsWrapper* current_tab = GetSelectedTabContentsWrapper();
1269 if (ShouldOpenNewTabForWindowDisposition(disposition)) { 1279
1270 current_tab = current_tab->Clone(); 1280 if (disposition == NEW_WINDOW)
1281 return current_tab->Clone();
1282
1283 if (ShouldOpenNewTabForDisposition(disposition)) {
1284 TabContentsWrapper* new_tab = current_tab->Clone();
1271 tab_handler_->GetTabStripModel()->AddTabContents( 1285 tab_handler_->GetTabStripModel()->AddTabContents(
1272 current_tab, -1, PageTransition::LINK, 1286 new_tab, -1, PageTransition::LINK,
1273 disposition == NEW_FOREGROUND_TAB ? TabStripModel::ADD_ACTIVE : 1287 disposition == NEW_FOREGROUND_TAB ? TabStripModel::ADD_ACTIVE :
1274 TabStripModel::ADD_NONE); 1288 TabStripModel::ADD_NONE);
1289 return new_tab;
1275 } 1290 }
1276 return current_tab->tab_contents(); 1291
1292 return current_tab;
1293 }
1294
1295 void Browser::CreateNewBrowserForDisposition(TabContentsWrapper* tab_contents,
1296 WindowOpenDisposition disposition)
1297 {
Ben Goodger (Google) 2011/05/31 16:00:00 curly brace to previous line
shinyak (Google) 2011/06/09 02:29:04 Done.
1298 if (disposition == NEW_WINDOW) {
1299 Browser* browser = Create(profile_);
1300 browser->AddTab(tab_contents, PageTransition::LINK);
1301 browser->window()->Show();
1302 }
1277 } 1303 }
1278 1304
1279 void Browser::UpdateTabStripModelInsertionPolicy() { 1305 void Browser::UpdateTabStripModelInsertionPolicy() {
1280 tab_handler_->GetTabStripModel()->SetInsertionPolicy(UseVerticalTabs() ? 1306 tab_handler_->GetTabStripModel()->SetInsertionPolicy(UseVerticalTabs() ?
1281 TabStripModel::INSERT_BEFORE : TabStripModel::INSERT_AFTER); 1307 TabStripModel::INSERT_BEFORE : TabStripModel::INSERT_AFTER);
1282 } 1308 }
1283 1309
1284 void Browser::UseVerticalTabsChanged() { 1310 void Browser::UseVerticalTabsChanged() {
1285 UpdateTabStripModelInsertionPolicy(); 1311 UpdateTabStripModelInsertionPolicy();
1286 window()->ToggleTabStripMode(); 1312 window()->ToggleTabStripMode();
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1333 bool can_close = !watcher || watcher->CanCloseBrowser(this); 1359 bool can_close = !watcher || watcher->CanCloseBrowser(this);
1334 if (!can_close && is_attempting_to_close_browser_) 1360 if (!can_close && is_attempting_to_close_browser_)
1335 CancelWindowClose(); 1361 CancelWindowClose();
1336 return can_close; 1362 return can_close;
1337 } 1363 }
1338 1364
1339 void Browser::GoBack(WindowOpenDisposition disposition) { 1365 void Browser::GoBack(WindowOpenDisposition disposition) {
1340 UserMetrics::RecordAction(UserMetricsAction("Back")); 1366 UserMetrics::RecordAction(UserMetricsAction("Back"));
1341 1367
1342 TabContentsWrapper* current_tab = GetSelectedTabContentsWrapper(); 1368 TabContentsWrapper* current_tab = GetSelectedTabContentsWrapper();
1343 if (current_tab->controller().CanGoBack()) { 1369 if (!current_tab->controller().CanGoBack())
1344 TabContents* new_tab = GetOrCloneTabForDisposition(disposition); 1370 return;
1345 // If we are on an interstitial page and clone the tab, it won't be copied 1371
1346 // to the new tab, so we don't need to go back. 1372 TabContentsWrapper* new_tab = GetOrCloneTabWrapperForDisposition(disposition);
1347 if (current_tab->tab_contents()->showing_interstitial_page() && 1373 if (current_tab->tab_contents()->showing_interstitial_page() &&
1348 (new_tab != current_tab->tab_contents())) 1374 (new_tab != current_tab))
1349 return; 1375 return;
1350 new_tab->controller().GoBack(); 1376
1351 } 1377 new_tab->controller().GoBack();
1378
1379 CreateNewBrowserForDisposition(new_tab, disposition);
1352 } 1380 }
1353 1381
1354 void Browser::GoForward(WindowOpenDisposition disposition) { 1382 void Browser::GoForward(WindowOpenDisposition disposition) {
1355 UserMetrics::RecordAction(UserMetricsAction("Forward")); 1383 UserMetrics::RecordAction(UserMetricsAction("Forward"));
1356 if (GetSelectedTabContentsWrapper()->controller().CanGoForward()) 1384
1357 GetOrCloneTabForDisposition(disposition)->controller().GoForward(); 1385 TabContentsWrapper* current_tab = GetSelectedTabContentsWrapper();
1386 if (!current_tab->controller().CanGoForward())
1387 return;
1388
1389 TabContentsWrapper* new_tab = GetOrCloneTabWrapperForDisposition(disposition);
1390 new_tab->controller().GoForward();
1391
1392 CreateNewBrowserForDisposition(new_tab, disposition);
1358 } 1393 }
1359 1394
1360 void Browser::Reload(WindowOpenDisposition disposition) { 1395 void Browser::Reload(WindowOpenDisposition disposition) {
1361 UserMetrics::RecordAction(UserMetricsAction("Reload")); 1396 UserMetrics::RecordAction(UserMetricsAction("Reload"));
1362 ReloadInternal(disposition, false); 1397 ReloadInternal(disposition, false);
1363 } 1398 }
1364 1399
1365 void Browser::ReloadIgnoringCache(WindowOpenDisposition disposition) { 1400 void Browser::ReloadIgnoringCache(WindowOpenDisposition disposition) {
1366 UserMetrics::RecordAction(UserMetricsAction("ReloadIgnoringCache")); 1401 UserMetrics::RecordAction(UserMetricsAction("ReloadIgnoringCache"));
1367 ReloadInternal(disposition, true); 1402 ReloadInternal(disposition, true);
(...skipping 3274 matching lines...) Expand 10 before | Expand all | Expand 10 after
4642 TabContents* current_tab = GetSelectedTabContents(); 4677 TabContents* current_tab = GetSelectedTabContents();
4643 if (current_tab) { 4678 if (current_tab) {
4644 content_restrictions = current_tab->content_restrictions(); 4679 content_restrictions = current_tab->content_restrictions();
4645 NavigationEntry* active_entry = current_tab->controller().GetActiveEntry(); 4680 NavigationEntry* active_entry = current_tab->controller().GetActiveEntry();
4646 // See comment in UpdateCommandsForTabState about why we call url(). 4681 // See comment in UpdateCommandsForTabState about why we call url().
4647 if (!SavePackage::IsSavableURL(active_entry ? active_entry->url() : GURL())) 4682 if (!SavePackage::IsSavableURL(active_entry ? active_entry->url() : GURL()))
4648 content_restrictions |= CONTENT_RESTRICTION_SAVE; 4683 content_restrictions |= CONTENT_RESTRICTION_SAVE;
4649 } 4684 }
4650 return content_restrictions; 4685 return content_restrictions;
4651 } 4686 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698