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

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

Issue 6677042: Decouple TabRestoreService from Browser (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Patch Created 9 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/ui/browser.h ('k') | chrome/browser/ui/browser_tab_restore_service_delegate.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 #include "chrome/browser/profiles/profile.h" 62 #include "chrome/browser/profiles/profile.h"
63 #include "chrome/browser/sessions/session_service.h" 63 #include "chrome/browser/sessions/session_service.h"
64 #include "chrome/browser/sessions/session_types.h" 64 #include "chrome/browser/sessions/session_types.h"
65 #include "chrome/browser/sessions/tab_restore_service.h" 65 #include "chrome/browser/sessions/tab_restore_service.h"
66 #include "chrome/browser/sync/profile_sync_service.h" 66 #include "chrome/browser/sync/profile_sync_service.h"
67 #include "chrome/browser/sync/sync_ui_util.h" 67 #include "chrome/browser/sync/sync_ui_util.h"
68 #include "chrome/browser/tab_closeable_state_watcher.h" 68 #include "chrome/browser/tab_closeable_state_watcher.h"
69 #include "chrome/browser/tab_contents/simple_alert_infobar_delegate.h" 69 #include "chrome/browser/tab_contents/simple_alert_infobar_delegate.h"
70 #include "chrome/browser/tabs/tab_finder.h" 70 #include "chrome/browser/tabs/tab_finder.h"
71 #include "chrome/browser/tabs/tab_strip_model.h" 71 #include "chrome/browser/tabs/tab_strip_model.h"
72 #include "chrome/browser/ui/browser_tab_restore_service_delegate.h"
72 #include "chrome/browser/ui/find_bar/find_bar.h" 73 #include "chrome/browser/ui/find_bar/find_bar.h"
73 #include "chrome/browser/ui/find_bar/find_bar_controller.h" 74 #include "chrome/browser/ui/find_bar/find_bar_controller.h"
74 #include "chrome/browser/ui/find_bar/find_tab_helper.h" 75 #include "chrome/browser/ui/find_bar/find_tab_helper.h"
75 #include "chrome/browser/ui/omnibox/location_bar.h" 76 #include "chrome/browser/ui/omnibox/location_bar.h"
76 #include "chrome/browser/ui/options/options_window.h" 77 #include "chrome/browser/ui/options/options_window.h"
77 #include "chrome/browser/ui/search_engines/search_engine_tab_helper.h" 78 #include "chrome/browser/ui/search_engines/search_engine_tab_helper.h"
78 #include "chrome/browser/ui/status_bubble.h" 79 #include "chrome/browser/ui/status_bubble.h"
79 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" 80 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
80 #include "chrome/browser/ui/tabs/dock_info.h" 81 #include "chrome/browser/ui/tabs/dock_info.h"
81 #include "chrome/browser/ui/tabs/tab_menu_model.h" 82 #include "chrome/browser/ui/tabs/tab_menu_model.h"
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 command_updater_(this), 200 command_updater_(this),
200 toolbar_model_(this), 201 toolbar_model_(this),
201 chrome_updater_factory_(this), 202 chrome_updater_factory_(this),
202 is_attempting_to_close_browser_(false), 203 is_attempting_to_close_browser_(false),
203 cancel_download_confirmation_state_(NOT_PROMPTED), 204 cancel_download_confirmation_state_(NOT_PROMPTED),
204 maximized_state_(MAXIMIZED_STATE_DEFAULT), 205 maximized_state_(MAXIMIZED_STATE_DEFAULT),
205 method_factory_(this), 206 method_factory_(this),
206 block_command_execution_(false), 207 block_command_execution_(false),
207 last_blocked_command_id_(-1), 208 last_blocked_command_id_(-1),
208 last_blocked_command_disposition_(CURRENT_TAB), 209 last_blocked_command_disposition_(CURRENT_TAB),
209 pending_web_app_action_(NONE) { 210 pending_web_app_action_(NONE),
211 ALLOW_THIS_IN_INITIALIZER_LIST(
212 tab_restore_service_delegate_(
213 new BrowserTabRestoreServiceDelegate(this))) {
210 registrar_.Add(this, NotificationType::SSL_VISIBLE_STATE_CHANGED, 214 registrar_.Add(this, NotificationType::SSL_VISIBLE_STATE_CHANGED,
211 NotificationService::AllSources()); 215 NotificationService::AllSources());
212 registrar_.Add(this, NotificationType::EXTENSION_UPDATE_DISABLED, 216 registrar_.Add(this, NotificationType::EXTENSION_UPDATE_DISABLED,
213 NotificationService::AllSources()); 217 NotificationService::AllSources());
214 registrar_.Add(this, NotificationType::EXTENSION_LOADED, 218 registrar_.Add(this, NotificationType::EXTENSION_LOADED,
215 NotificationService::AllSources()); 219 NotificationService::AllSources());
216 registrar_.Add(this, NotificationType::EXTENSION_UNLOADED, 220 registrar_.Add(this, NotificationType::EXTENSION_UNLOADED,
217 NotificationService::AllSources()); 221 NotificationService::AllSources());
218 registrar_.Add(this, NotificationType::EXTENSION_UNINSTALLED, 222 registrar_.Add(this, NotificationType::EXTENSION_UNINSTALLED,
219 NotificationService::AllSources()); 223 NotificationService::AllSources());
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 profile_->ResetTabRestoreService(); 296 profile_->ResetTabRestoreService();
293 } 297 }
294 #endif 298 #endif
295 299
296 SessionService* session_service = profile_->GetSessionService(); 300 SessionService* session_service = profile_->GetSessionService();
297 if (session_service) 301 if (session_service)
298 session_service->WindowClosed(session_id_); 302 session_service->WindowClosed(session_id_);
299 303
300 TabRestoreService* tab_restore_service = profile()->GetTabRestoreService(); 304 TabRestoreService* tab_restore_service = profile()->GetTabRestoreService();
301 if (tab_restore_service) 305 if (tab_restore_service)
302 tab_restore_service->BrowserClosed(this); 306 tab_restore_service->BrowserClosed(tab_restore_service_delegate());
303 307
304 encoding_auto_detect_.Destroy(); 308 encoding_auto_detect_.Destroy();
305 printing_enabled_.Destroy(); 309 printing_enabled_.Destroy();
306 dev_tools_disabled_.Destroy(); 310 dev_tools_disabled_.Destroy();
307 incognito_mode_allowed_.Destroy(); 311 incognito_mode_allowed_.Destroy();
308 instant_enabled_.Destroy(); 312 instant_enabled_.Destroy();
309 use_vertical_tabs_.Destroy(); 313 use_vertical_tabs_.Destroy();
310 314
311 if (profile_->IsOffTheRecord() && 315 if (profile_->IsOffTheRecord() &&
312 !BrowserList::IsOffTheRecordSessionActive()) { 316 !BrowserList::IsOffTheRecordSessionActive()) {
(...skipping 581 matching lines...) Expand 10 before | Expand all | Expand 10 after
894 exiting = true; 898 exiting = true;
895 } 899 }
896 900
897 // Don't use HasSessionService here, we want to force creation of the 901 // Don't use HasSessionService here, we want to force creation of the
898 // session service so that user can restore what was open. 902 // session service so that user can restore what was open.
899 SessionService* session_service = profile()->GetSessionService(); 903 SessionService* session_service = profile()->GetSessionService();
900 if (session_service) 904 if (session_service)
901 session_service->WindowClosing(session_id()); 905 session_service->WindowClosing(session_id());
902 906
903 TabRestoreService* tab_restore_service = profile()->GetTabRestoreService(); 907 TabRestoreService* tab_restore_service = profile()->GetTabRestoreService();
904 if (tab_restore_service) 908 if (tab_restore_service && type() == TYPE_NORMAL && tab_count())
905 tab_restore_service->BrowserClosing(this); 909 tab_restore_service->BrowserClosing(tab_restore_service_delegate());
906 910
907 // TODO(sky): convert session/tab restore to use notification. 911 // TODO(sky): convert session/tab restore to use notification.
908 NotificationService::current()->Notify( 912 NotificationService::current()->Notify(
909 NotificationType::BROWSER_CLOSING, 913 NotificationType::BROWSER_CLOSING,
910 Source<Browser>(this), 914 Source<Browser>(this),
911 Details<bool>(&exiting)); 915 Details<bool>(&exiting));
912 916
913 CloseAllTabs(); 917 CloseAllTabs();
914 } 918 }
915 919
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
966 TabContentsWrapper* wrapper = tabstrip_model()->GetTabContentsAt(index); 970 TabContentsWrapper* wrapper = tabstrip_model()->GetTabContentsAt(index);
967 if (wrapper) 971 if (wrapper)
968 return wrapper->tab_contents(); 972 return wrapper->tab_contents();
969 return NULL; 973 return NULL;
970 } 974 }
971 975
972 void Browser::SelectTabContentsAt(int index, bool user_gesture) { 976 void Browser::SelectTabContentsAt(int index, bool user_gesture) {
973 tab_handler_->GetTabStripModel()->SelectTabContentsAt(index, user_gesture); 977 tab_handler_->GetTabStripModel()->SelectTabContentsAt(index, user_gesture);
974 } 978 }
975 979
980 bool Browser::IsTabPinned(int index) const {
981 return tabstrip_model()->IsTabPinned(index);
982 }
983
976 void Browser::CloseAllTabs() { 984 void Browser::CloseAllTabs() {
977 tab_handler_->GetTabStripModel()->CloseAllTabs(); 985 tab_handler_->GetTabStripModel()->CloseAllTabs();
978 } 986 }
979 987
980 //////////////////////////////////////////////////////////////////////////////// 988 ////////////////////////////////////////////////////////////////////////////////
981 // Browser, Tab adding/showing functions: 989 // Browser, Tab adding/showing functions:
982 990
983 bool Browser::IsTabStripEditable() const { 991 bool Browser::IsTabStripEditable() const {
984 return window()->IsTabStripEditable(); 992 return window()->IsTabStripEditable();
985 } 993 }
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after
1459 UserMetrics::RecordAction(UserMetricsAction("Duplicate"), profile_); 1467 UserMetrics::RecordAction(UserMetricsAction("Duplicate"), profile_);
1460 DuplicateContentsAt(selected_index()); 1468 DuplicateContentsAt(selected_index());
1461 } 1469 }
1462 1470
1463 void Browser::RestoreTab() { 1471 void Browser::RestoreTab() {
1464 UserMetrics::RecordAction(UserMetricsAction("RestoreTab"), profile_); 1472 UserMetrics::RecordAction(UserMetricsAction("RestoreTab"), profile_);
1465 TabRestoreService* service = profile_->GetTabRestoreService(); 1473 TabRestoreService* service = profile_->GetTabRestoreService();
1466 if (!service) 1474 if (!service)
1467 return; 1475 return;
1468 1476
1469 service->RestoreMostRecentEntry(this); 1477 service->RestoreMostRecentEntry(tab_restore_service_delegate());
1470 } 1478 }
1471 1479
1472 void Browser::WriteCurrentURLToClipboard() { 1480 void Browser::WriteCurrentURLToClipboard() {
1473 // TODO(ericu): There isn't currently a metric for this. Should there be? 1481 // TODO(ericu): There isn't currently a metric for this. Should there be?
1474 // We don't appear to track the action when it comes from the 1482 // We don't appear to track the action when it comes from the
1475 // RenderContextViewMenu. 1483 // RenderContextViewMenu.
1476 1484
1477 TabContents* contents = GetSelectedTabContents(); 1485 TabContents* contents = GetSelectedTabContents();
1478 if (!contents->ShouldDisplayURL()) 1486 if (!contents->ShouldDisplayURL())
1479 return; 1487 return;
(...skipping 1096 matching lines...) Expand 10 before | Expand all | Expand 10 after
2576 // We don't create historical tabs for incognito windows or windows without 2584 // We don't create historical tabs for incognito windows or windows without
2577 // profiles. 2585 // profiles.
2578 if (!profile() || profile()->IsOffTheRecord() || 2586 if (!profile() || profile()->IsOffTheRecord() ||
2579 !profile()->GetTabRestoreService()) { 2587 !profile()->GetTabRestoreService()) {
2580 return; 2588 return;
2581 } 2589 }
2582 2590
2583 // We only create historical tab entries for tabbed browser windows. 2591 // We only create historical tab entries for tabbed browser windows.
2584 if (CanSupportWindowFeature(FEATURE_TABSTRIP)) { 2592 if (CanSupportWindowFeature(FEATURE_TABSTRIP)) {
2585 profile()->GetTabRestoreService()->CreateHistoricalTab( 2593 profile()->GetTabRestoreService()->CreateHistoricalTab(
2586 &contents->controller()); 2594 &contents->controller(),
2595 tab_handler_->GetTabStripModel()->GetIndexOfTabContents(contents));
2587 } 2596 }
2588 } 2597 }
2589 2598
2590 bool Browser::RunUnloadListenerBeforeClosing(TabContentsWrapper* contents) { 2599 bool Browser::RunUnloadListenerBeforeClosing(TabContentsWrapper* contents) {
2591 return Browser::RunUnloadEventsHelper(contents->tab_contents()); 2600 return Browser::RunUnloadEventsHelper(contents->tab_contents());
2592 } 2601 }
2593 2602
2594 bool Browser::CanReloadContents(TabContents* source) const { 2603 bool Browser::CanReloadContents(TabContents* source) const {
2595 return type() != TYPE_DEVTOOLS; 2604 return type() != TYPE_DEVTOOLS;
2596 } 2605 }
(...skipping 1817 matching lines...) Expand 10 before | Expand all | Expand 10 after
4414 // The page transition below is only for the purpose of inserting the tab. 4423 // The page transition below is only for the purpose of inserting the tab.
4415 browser->AddTab(view_source_contents, PageTransition::LINK); 4424 browser->AddTab(view_source_contents, PageTransition::LINK);
4416 } 4425 }
4417 4426
4418 if (profile_->HasSessionService()) { 4427 if (profile_->HasSessionService()) {
4419 SessionService* session_service = profile_->GetSessionService(); 4428 SessionService* session_service = profile_->GetSessionService();
4420 if (session_service) 4429 if (session_service)
4421 session_service->TabRestored(&view_source_contents->controller(), false); 4430 session_service->TabRestored(&view_source_contents->controller(), false);
4422 } 4431 }
4423 } 4432 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/browser.h ('k') | chrome/browser/ui/browser_tab_restore_service_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698