OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 } |
OLD | NEW |