| 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 1189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1200 | 1200 |
| 1201 bool Browser::ShouldOpenNewTabForWindowDisposition( | 1201 bool Browser::ShouldOpenNewTabForWindowDisposition( |
| 1202 WindowOpenDisposition disposition) { | 1202 WindowOpenDisposition disposition) { |
| 1203 return (disposition == NEW_FOREGROUND_TAB || | 1203 return (disposition == NEW_FOREGROUND_TAB || |
| 1204 disposition == NEW_BACKGROUND_TAB); | 1204 disposition == NEW_BACKGROUND_TAB); |
| 1205 } | 1205 } |
| 1206 | 1206 |
| 1207 TabContents* Browser::GetOrCloneTabForDisposition( | 1207 TabContents* Browser::GetOrCloneTabForDisposition( |
| 1208 WindowOpenDisposition disposition) { | 1208 WindowOpenDisposition disposition) { |
| 1209 TabContentsWrapper* current_tab = GetSelectedTabContentsWrapper(); | 1209 TabContentsWrapper* current_tab = GetSelectedTabContentsWrapper(); |
| 1210 |
| 1210 if (ShouldOpenNewTabForWindowDisposition(disposition)) { | 1211 if (ShouldOpenNewTabForWindowDisposition(disposition)) { |
| 1211 current_tab = current_tab->Clone(); | 1212 current_tab = current_tab->Clone(); |
| 1212 tab_handler_->GetTabStripModel()->AddTabContents( | 1213 tab_handler_->GetTabStripModel()->AddTabContents( |
| 1213 current_tab, -1, PageTransition::LINK, | 1214 current_tab, -1, PageTransition::LINK, |
| 1214 disposition == NEW_FOREGROUND_TAB ? TabStripModel::ADD_ACTIVE : | 1215 disposition == NEW_FOREGROUND_TAB ? TabStripModel::ADD_ACTIVE : |
| 1215 TabStripModel::ADD_NONE); | 1216 TabStripModel::ADD_NONE); |
| 1216 } | 1217 } |
| 1218 |
| 1217 return current_tab->tab_contents(); | 1219 return current_tab->tab_contents(); |
| 1218 } | 1220 } |
| 1219 | 1221 |
| 1220 void Browser::UpdateTabStripModelInsertionPolicy() { | 1222 void Browser::UpdateTabStripModelInsertionPolicy() { |
| 1221 tab_handler_->GetTabStripModel()->SetInsertionPolicy(UseVerticalTabs() ? | 1223 tab_handler_->GetTabStripModel()->SetInsertionPolicy(UseVerticalTabs() ? |
| 1222 TabStripModel::INSERT_BEFORE : TabStripModel::INSERT_AFTER); | 1224 TabStripModel::INSERT_BEFORE : TabStripModel::INSERT_AFTER); |
| 1223 } | 1225 } |
| 1224 | 1226 |
| 1225 void Browser::UseVerticalTabsChanged() { | 1227 void Browser::UseVerticalTabsChanged() { |
| 1226 UpdateTabStripModelInsertionPolicy(); | 1228 UpdateTabStripModelInsertionPolicy(); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1271 bool can_close = !watcher || watcher->CanCloseBrowser(this); | 1273 bool can_close = !watcher || watcher->CanCloseBrowser(this); |
| 1272 if (!can_close && is_attempting_to_close_browser_) | 1274 if (!can_close && is_attempting_to_close_browser_) |
| 1273 CancelWindowClose(); | 1275 CancelWindowClose(); |
| 1274 return can_close; | 1276 return can_close; |
| 1275 } | 1277 } |
| 1276 | 1278 |
| 1277 void Browser::GoBack(WindowOpenDisposition disposition) { | 1279 void Browser::GoBack(WindowOpenDisposition disposition) { |
| 1278 UserMetrics::RecordAction(UserMetricsAction("Back"), profile_); | 1280 UserMetrics::RecordAction(UserMetricsAction("Back"), profile_); |
| 1279 | 1281 |
| 1280 TabContentsWrapper* current_tab = GetSelectedTabContentsWrapper(); | 1282 TabContentsWrapper* current_tab = GetSelectedTabContentsWrapper(); |
| 1281 if (current_tab->controller().CanGoBack()) { | 1283 if (!current_tab->controller().CanGoBack()) |
| 1282 TabContents* new_tab = GetOrCloneTabForDisposition(disposition); | 1284 return; |
| 1285 |
| 1286 if (disposition == NEW_WINDOW) { |
| 1287 TabContentsWrapper* new_wrapper = current_tab->Clone(); |
| 1288 |
| 1283 // If we are on an interstitial page and clone the tab, it won't be copied | 1289 // If we are on an interstitial page and clone the tab, it won't be copied |
| 1284 // to the new tab, so we don't need to go back. | 1290 // to the new tab, so we don't need to go back. |
| 1285 if (current_tab->tab_contents()->showing_interstitial_page() && | 1291 if (current_tab->tab_contents()->showing_interstitial_page() && |
| 1292 (new_wrapper->tab_contents() != current_tab->tab_contents())) |
| 1293 return; |
| 1294 |
| 1295 new_wrapper->tab_contents()->controller().GoBack(); |
| 1296 |
| 1297 // Make a new normal browser window. |
| 1298 Browser* browser = new Browser(Browser::TYPE_NORMAL, profile_); |
| 1299 browser->InitBrowserWindow(); |
| 1300 browser->AddTab(new_wrapper, PageTransition::LINK); |
| 1301 browser->window()->Show(); |
| 1302 } else { |
| 1303 TabContents* new_tab = GetOrCloneTabForDisposition(disposition); |
| 1304 |
| 1305 if (current_tab->tab_contents()->showing_interstitial_page() && |
| 1286 (new_tab != current_tab->tab_contents())) | 1306 (new_tab != current_tab->tab_contents())) |
| 1287 return; | 1307 return; |
| 1308 |
| 1288 new_tab->controller().GoBack(); | 1309 new_tab->controller().GoBack(); |
| 1289 } | 1310 } |
| 1290 } | 1311 } |
| 1291 | 1312 |
| 1292 void Browser::GoForward(WindowOpenDisposition disposition) { | 1313 void Browser::GoForward(WindowOpenDisposition disposition) { |
| 1293 UserMetrics::RecordAction(UserMetricsAction("Forward"), profile_); | 1314 UserMetrics::RecordAction(UserMetricsAction("Forward"), profile_); |
| 1294 if (GetSelectedTabContentsWrapper()->controller().CanGoForward()) | 1315 |
| 1316 TabContentsWrapper* current_tab = GetSelectedTabContentsWrapper(); |
| 1317 if (!current_tab->controller().CanGoForward()) |
| 1318 return; |
| 1319 |
| 1320 if (disposition == NEW_WINDOW) { |
| 1321 TabContentsWrapper* new_wrapper = current_tab->Clone(); |
| 1322 |
| 1323 new_wrapper->tab_contents()->controller().GoForward(); |
| 1324 |
| 1325 // Make a new normal browser window. |
| 1326 Browser* browser = new Browser(Browser::TYPE_NORMAL, profile_); |
| 1327 browser->InitBrowserWindow(); |
| 1328 browser->AddTab(new_wrapper, PageTransition::LINK); |
| 1329 browser->window()->Show(); |
| 1330 } else { |
| 1295 GetOrCloneTabForDisposition(disposition)->controller().GoForward(); | 1331 GetOrCloneTabForDisposition(disposition)->controller().GoForward(); |
| 1332 } |
| 1296 } | 1333 } |
| 1297 | 1334 |
| 1298 void Browser::Reload(WindowOpenDisposition disposition) { | 1335 void Browser::Reload(WindowOpenDisposition disposition) { |
| 1299 UserMetrics::RecordAction(UserMetricsAction("Reload"), profile_); | 1336 UserMetrics::RecordAction(UserMetricsAction("Reload"), profile_); |
| 1300 ReloadInternal(disposition, false); | 1337 ReloadInternal(disposition, false); |
| 1301 } | 1338 } |
| 1302 | 1339 |
| 1303 void Browser::ReloadIgnoringCache(WindowOpenDisposition disposition) { | 1340 void Browser::ReloadIgnoringCache(WindowOpenDisposition disposition) { |
| 1304 UserMetrics::RecordAction(UserMetricsAction("ReloadIgnoringCache"), profile_); | 1341 UserMetrics::RecordAction(UserMetricsAction("ReloadIgnoringCache"), profile_); |
| 1305 ReloadInternal(disposition, true); | 1342 ReloadInternal(disposition, true); |
| (...skipping 3171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4477 TabContents* current_tab = GetSelectedTabContents(); | 4514 TabContents* current_tab = GetSelectedTabContents(); |
| 4478 if (current_tab) { | 4515 if (current_tab) { |
| 4479 content_restrictions = current_tab->content_restrictions(); | 4516 content_restrictions = current_tab->content_restrictions(); |
| 4480 NavigationEntry* active_entry = current_tab->controller().GetActiveEntry(); | 4517 NavigationEntry* active_entry = current_tab->controller().GetActiveEntry(); |
| 4481 // See comment in UpdateCommandsForTabState about why we call url(). | 4518 // See comment in UpdateCommandsForTabState about why we call url(). |
| 4482 if (!SavePackage::IsSavableURL(active_entry ? active_entry->url() : GURL())) | 4519 if (!SavePackage::IsSavableURL(active_entry ? active_entry->url() : GURL())) |
| 4483 content_restrictions |= CONTENT_RESTRICTION_SAVE; | 4520 content_restrictions |= CONTENT_RESTRICTION_SAVE; |
| 4484 } | 4521 } |
| 4485 return content_restrictions; | 4522 return content_restrictions; |
| 4486 } | 4523 } |
| OLD | NEW |