Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <windows.h> | 8 #include <windows.h> |
| 9 #include <shellapi.h> | 9 #include <shellapi.h> |
| 10 #endif // OS_WIN | 10 #endif // OS_WIN |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 123 #include "chrome/browser/ui/panels/panel.h" | 123 #include "chrome/browser/ui/panels/panel.h" |
| 124 #include "chrome/browser/ui/panels/panel_manager.h" | 124 #include "chrome/browser/ui/panels/panel_manager.h" |
| 125 #include "chrome/browser/ui/search_engines/search_engine_tab_helper.h" | 125 #include "chrome/browser/ui/search_engines/search_engine_tab_helper.h" |
| 126 #include "chrome/browser/ui/status_bubble.h" | 126 #include "chrome/browser/ui/status_bubble.h" |
| 127 #include "chrome/browser/ui/sync/browser_synced_window_delegate.h" | 127 #include "chrome/browser/ui/sync/browser_synced_window_delegate.h" |
| 128 #include "chrome/browser/ui/tab_contents/core_tab_helper.h" | 128 #include "chrome/browser/ui/tab_contents/core_tab_helper.h" |
| 129 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 129 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
| 130 #include "chrome/browser/ui/tabs/dock_info.h" | 130 #include "chrome/browser/ui/tabs/dock_info.h" |
| 131 #include "chrome/browser/ui/tabs/tab_finder.h" | 131 #include "chrome/browser/ui/tabs/tab_finder.h" |
| 132 #include "chrome/browser/ui/tabs/tab_menu_model.h" | 132 #include "chrome/browser/ui/tabs/tab_menu_model.h" |
| 133 #include "chrome/browser/ui/tabs/tab_mru_list_manager.h" | |
| 133 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 134 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 134 #include "chrome/browser/ui/web_applications/web_app_ui.h" | 135 #include "chrome/browser/ui/web_applications/web_app_ui.h" |
| 135 #include "chrome/browser/ui/webui/feedback_ui.h" | 136 #include "chrome/browser/ui/webui/feedback_ui.h" |
| 136 #include "chrome/browser/ui/webui/ntp/app_launcher_handler.h" | 137 #include "chrome/browser/ui/webui/ntp/app_launcher_handler.h" |
| 137 #include "chrome/browser/ui/webui/ntp/new_tab_page_handler.h" | 138 #include "chrome/browser/ui/webui/ntp/new_tab_page_handler.h" |
| 138 #include "chrome/browser/ui/webui/options2/content_settings_handler2.h" | 139 #include "chrome/browser/ui/webui/options2/content_settings_handler2.h" |
| 139 #include "chrome/browser/ui/webui/signin/login_ui_service.h" | 140 #include "chrome/browser/ui/webui/signin/login_ui_service.h" |
| 140 #include "chrome/browser/ui/webui/signin/login_ui_service_factory.h" | 141 #include "chrome/browser/ui/webui/signin/login_ui_service_factory.h" |
| 141 #include "chrome/browser/ui/window_sizer.h" | 142 #include "chrome/browser/ui/window_sizer.h" |
| 142 #include "chrome/browser/upgrade_detector.h" | 143 #include "chrome/browser/upgrade_detector.h" |
| (...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 340 | 341 |
| 341 /////////////////////////////////////////////////////////////////////////////// | 342 /////////////////////////////////////////////////////////////////////////////// |
| 342 // Browser, Constructors, Creation, Showing: | 343 // Browser, Constructors, Creation, Showing: |
| 343 | 344 |
| 344 Browser::Browser(Type type, Profile* profile) | 345 Browser::Browser(Type type, Profile* profile) |
| 345 : type_(type), | 346 : type_(type), |
| 346 profile_(profile), | 347 profile_(profile), |
| 347 window_(NULL), | 348 window_(NULL), |
| 348 ALLOW_THIS_IN_INITIALIZER_LIST( | 349 ALLOW_THIS_IN_INITIALIZER_LIST( |
| 349 tab_strip_model_(new TabStripModel(this, profile))), | 350 tab_strip_model_(new TabStripModel(this, profile))), |
| 351 ALLOW_THIS_IN_INITIALIZER_LIST( | |
|
sky
2012/05/29 19:48:27
No need for ALLOW_THIS_IN_INITIALIAZER_LIST here.
NaveenBobbili (Motorola)
2012/06/05 05:34:16
Done.
| |
| 352 tab_mru_list_manager_(new TabMRUListManager())), | |
| 350 command_updater_(this), | 353 command_updater_(this), |
| 351 app_type_(APP_TYPE_HOST), | 354 app_type_(APP_TYPE_HOST), |
| 352 chrome_updater_factory_(this), | 355 chrome_updater_factory_(this), |
| 353 is_attempting_to_close_browser_(false), | 356 is_attempting_to_close_browser_(false), |
| 354 cancel_download_confirmation_state_(NOT_PROMPTED), | 357 cancel_download_confirmation_state_(NOT_PROMPTED), |
| 355 show_state_(ui::SHOW_STATE_DEFAULT), | 358 show_state_(ui::SHOW_STATE_DEFAULT), |
| 356 is_session_restore_(false), | 359 is_session_restore_(false), |
| 357 weak_factory_(this), | 360 weak_factory_(this), |
| 358 block_command_execution_(false), | 361 block_command_execution_(false), |
| 359 last_blocked_command_id_(-1), | 362 last_blocked_command_id_(-1), |
| 360 last_blocked_command_disposition_(CURRENT_TAB), | 363 last_blocked_command_disposition_(CURRENT_TAB), |
| 361 pending_web_app_action_(NONE), | 364 pending_web_app_action_(NONE), |
| 362 ALLOW_THIS_IN_INITIALIZER_LIST( | 365 ALLOW_THIS_IN_INITIALIZER_LIST( |
| 363 content_setting_bubble_model_delegate_( | 366 content_setting_bubble_model_delegate_( |
| 364 new BrowserContentSettingBubbleModelDelegate(this))), | 367 new BrowserContentSettingBubbleModelDelegate(this))), |
| 365 ALLOW_THIS_IN_INITIALIZER_LIST( | 368 ALLOW_THIS_IN_INITIALIZER_LIST( |
| 366 toolbar_model_delegate_( | 369 toolbar_model_delegate_( |
| 367 new BrowserToolbarModelDelegate(this))), | 370 new BrowserToolbarModelDelegate(this))), |
| 368 ALLOW_THIS_IN_INITIALIZER_LIST( | 371 ALLOW_THIS_IN_INITIALIZER_LIST( |
| 369 tab_restore_service_delegate_( | 372 tab_restore_service_delegate_( |
| 370 new BrowserTabRestoreServiceDelegate(this))), | 373 new BrowserTabRestoreServiceDelegate(this))), |
| 371 ALLOW_THIS_IN_INITIALIZER_LIST( | 374 ALLOW_THIS_IN_INITIALIZER_LIST( |
| 372 synced_window_delegate_( | 375 synced_window_delegate_( |
| 373 new BrowserSyncedWindowDelegate(this))), | 376 new BrowserSyncedWindowDelegate(this))), |
| 374 bookmark_bar_state_(BookmarkBar::HIDDEN), | 377 bookmark_bar_state_(BookmarkBar::HIDDEN), |
| 375 window_has_shown_(false) { | 378 window_has_shown_(false) { |
| 376 tab_strip_model_->AddObserver(this); | 379 tab_strip_model_->AddObserver(this); |
| 380 tab_strip_model_->AddObserver(tab_mru_list_manager_.get()); | |
|
sky
2012/05/29 19:48:28
TabMRUListManager should take care of adding/remov
NaveenBobbili (Motorola)
2012/06/05 05:34:16
Done.
| |
| 377 | 381 |
| 378 toolbar_model_.reset(new ToolbarModel(toolbar_model_delegate_.get())); | 382 toolbar_model_.reset(new ToolbarModel(toolbar_model_delegate_.get())); |
| 379 | 383 |
| 380 registrar_.Add(this, content::NOTIFICATION_SSL_VISIBLE_STATE_CHANGED, | 384 registrar_.Add(this, content::NOTIFICATION_SSL_VISIBLE_STATE_CHANGED, |
| 381 content::NotificationService::AllSources()); | 385 content::NotificationService::AllSources()); |
| 382 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED, | 386 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED, |
| 383 content::Source<Profile>(profile_->GetOriginalProfile())); | 387 content::Source<Profile>(profile_->GetOriginalProfile())); |
| 384 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED, | 388 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED, |
| 385 content::Source<Profile>(profile_->GetOriginalProfile())); | 389 content::Source<Profile>(profile_->GetOriginalProfile())); |
| 386 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNINSTALLED, | 390 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNINSTALLED, |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 446 Browser::~Browser() { | 450 Browser::~Browser() { |
| 447 ProfileSyncService* service = | 451 ProfileSyncService* service = |
| 448 ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile_); | 452 ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile_); |
| 449 if (service) | 453 if (service) |
| 450 service->RemoveObserver(this); | 454 service->RemoveObserver(this); |
| 451 | 455 |
| 452 // The tab strip should not have any tabs at this point. | 456 // The tab strip should not have any tabs at this point. |
| 453 if (!browser_shutdown::ShuttingDownWithoutClosingBrowsers()) | 457 if (!browser_shutdown::ShuttingDownWithoutClosingBrowsers()) |
| 454 DCHECK(tab_strip_model_->empty()); | 458 DCHECK(tab_strip_model_->empty()); |
| 455 tab_strip_model_->RemoveObserver(this); | 459 tab_strip_model_->RemoveObserver(this); |
| 460 tab_strip_model_->RemoveObserver(tab_mru_list_manager_.get()); | |
| 456 | 461 |
| 457 BrowserList::RemoveBrowser(this); | 462 BrowserList::RemoveBrowser(this); |
| 458 | 463 |
| 459 SessionService* session_service = | 464 SessionService* session_service = |
| 460 SessionServiceFactory::GetForProfile(profile_); | 465 SessionServiceFactory::GetForProfile(profile_); |
| 461 if (session_service) | 466 if (session_service) |
| 462 session_service->WindowClosed(session_id_); | 467 session_service->WindowClosed(session_id_); |
| 463 | 468 |
| 464 TabRestoreService* tab_restore_service = | 469 TabRestoreService* tab_restore_service = |
| 465 TabRestoreServiceFactory::GetForProfile(profile()); | 470 TabRestoreServiceFactory::GetForProfile(profile()); |
| (...skipping 944 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1410 } | 1415 } |
| 1411 | 1416 |
| 1412 void Browser::CloseTab() { | 1417 void Browser::CloseTab() { |
| 1413 content::RecordAction(UserMetricsAction("CloseTab_Accelerator")); | 1418 content::RecordAction(UserMetricsAction("CloseTab_Accelerator")); |
| 1414 if (CanCloseTab()) | 1419 if (CanCloseTab()) |
| 1415 tab_strip_model_->CloseSelectedTabs(); | 1420 tab_strip_model_->CloseSelectedTabs(); |
| 1416 } | 1421 } |
| 1417 | 1422 |
| 1418 void Browser::SelectNextTab() { | 1423 void Browser::SelectNextTab() { |
| 1419 content::RecordAction(UserMetricsAction("SelectNextTab")); | 1424 content::RecordAction(UserMetricsAction("SelectNextTab")); |
| 1420 tab_strip_model_->SelectNextTab(); | 1425 TabContentsWrapper* contents = tab_mru_list_manager_->GetNextMRUTab(); |
|
sky
2012/05/29 19:48:28
Don't change selectnexttab.
NaveenBobbili (Motorola)
2012/06/05 05:34:16
This creeped in by mistake.Done
| |
| 1426 if (contents) | |
| 1427 tab_strip_model_->SelectNextTab(); | |
| 1421 } | 1428 } |
| 1422 | 1429 |
| 1423 void Browser::SelectPreviousTab() { | 1430 void Browser::SelectPreviousTab() { |
| 1424 content::RecordAction(UserMetricsAction("SelectPrevTab")); | 1431 content::RecordAction(UserMetricsAction("SelectPrevTab")); |
| 1425 tab_strip_model_->SelectPreviousTab(); | 1432 tab_strip_model_->SelectPreviousTab(); |
| 1426 } | 1433 } |
| 1427 | 1434 |
| 1428 void Browser::OpenTabpose() { | 1435 void Browser::OpenTabpose() { |
| 1429 #if defined(OS_MACOSX) | 1436 #if defined(OS_MACOSX) |
| 1430 if (!CommandLine::ForCurrentProcess()->HasSwitch( | 1437 if (!CommandLine::ForCurrentProcess()->HasSwitch( |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 1454 content::RecordAction(UserMetricsAction("SelectNumberedTab")); | 1461 content::RecordAction(UserMetricsAction("SelectNumberedTab")); |
| 1455 ActivateTabAt(index, true); | 1462 ActivateTabAt(index, true); |
| 1456 } | 1463 } |
| 1457 } | 1464 } |
| 1458 | 1465 |
| 1459 void Browser::SelectLastTab() { | 1466 void Browser::SelectLastTab() { |
| 1460 content::RecordAction(UserMetricsAction("SelectLastTab")); | 1467 content::RecordAction(UserMetricsAction("SelectLastTab")); |
| 1461 tab_strip_model_->SelectLastTab(); | 1468 tab_strip_model_->SelectLastTab(); |
| 1462 } | 1469 } |
| 1463 | 1470 |
| 1471 void Browser::SelectNextMRUTab() { | |
| 1472 content::RecordAction(UserMetricsAction("SelectNextMRUTab")); | |
| 1473 TabContentsWrapper* contents = tab_mru_list_manager_->GetNextMRUTab(); | |
| 1474 if (contents) | |
| 1475 ActivateTabAt(tab_strip_model_->GetIndexOfTabContents(contents), true); | |
| 1476 } | |
| 1477 | |
| 1464 void Browser::DuplicateTab() { | 1478 void Browser::DuplicateTab() { |
| 1465 content::RecordAction(UserMetricsAction("Duplicate")); | 1479 content::RecordAction(UserMetricsAction("Duplicate")); |
| 1466 DuplicateContentsAt(active_index()); | 1480 DuplicateContentsAt(active_index()); |
| 1467 } | 1481 } |
| 1468 | 1482 |
| 1469 void Browser::WriteCurrentURLToClipboard() { | 1483 void Browser::WriteCurrentURLToClipboard() { |
| 1470 // TODO(ericu): There isn't currently a metric for this. Should there be? | 1484 // TODO(ericu): There isn't currently a metric for this. Should there be? |
| 1471 // We don't appear to track the action when it comes from the | 1485 // We don't appear to track the action when it comes from the |
| 1472 // RenderContextViewMenu. | 1486 // RenderContextViewMenu. |
| 1473 | 1487 |
| (...skipping 1093 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2567 case IDC_VIEW_PASSWORDS: OpenPasswordManager(); break; | 2581 case IDC_VIEW_PASSWORDS: OpenPasswordManager(); break; |
| 2568 case IDC_CLEAR_BROWSING_DATA: OpenClearBrowsingDataDialog(); break; | 2582 case IDC_CLEAR_BROWSING_DATA: OpenClearBrowsingDataDialog(); break; |
| 2569 case IDC_IMPORT_SETTINGS: OpenImportSettingsDialog(); break; | 2583 case IDC_IMPORT_SETTINGS: OpenImportSettingsDialog(); break; |
| 2570 case IDC_ABOUT: OpenAboutChromeDialog(); break; | 2584 case IDC_ABOUT: OpenAboutChromeDialog(); break; |
| 2571 case IDC_UPGRADE_DIALOG: OpenUpdateChromeDialog(); break; | 2585 case IDC_UPGRADE_DIALOG: OpenUpdateChromeDialog(); break; |
| 2572 case IDC_VIEW_INCOMPATIBILITIES: ShowAboutConflictsTab(); break; | 2586 case IDC_VIEW_INCOMPATIBILITIES: ShowAboutConflictsTab(); break; |
| 2573 case IDC_HELP_PAGE: ShowHelpTab(); break; | 2587 case IDC_HELP_PAGE: ShowHelpTab(); break; |
| 2574 case IDC_SHOW_SYNC_SETUP: ShowSyncSetup(SyncPromoUI::SOURCE_MENU); | 2588 case IDC_SHOW_SYNC_SETUP: ShowSyncSetup(SyncPromoUI::SOURCE_MENU); |
| 2575 break; | 2589 break; |
| 2576 case IDC_TOGGLE_SPEECH_INPUT: ToggleSpeechInput(); break; | 2590 case IDC_TOGGLE_SPEECH_INPUT: ToggleSpeechInput(); break; |
| 2591 case IDC_SELECT_NEXT_MRU_TAB: SelectNextMRUTab(); break; | |
| 2577 | 2592 |
| 2578 default: | 2593 default: |
| 2579 LOG(WARNING) << "Received Unimplemented Command: " << id; | 2594 LOG(WARNING) << "Received Unimplemented Command: " << id; |
| 2580 break; | 2595 break; |
| 2581 } | 2596 } |
| 2582 } | 2597 } |
| 2583 | 2598 |
| 2584 //////////////////////////////////////////////////////////////////////////////// | 2599 //////////////////////////////////////////////////////////////////////////////// |
| 2585 // Browser, TabRestoreServiceObserver: | 2600 // Browser, TabRestoreServiceObserver: |
| 2586 | 2601 |
| (...skipping 1485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4072 // Navigation commands | 4087 // Navigation commands |
| 4073 command_updater_.UpdateCommandEnabled(IDC_HOME, normal_window); | 4088 command_updater_.UpdateCommandEnabled(IDC_HOME, normal_window); |
| 4074 | 4089 |
| 4075 // Window management commands | 4090 // Window management commands |
| 4076 // TODO(rohitrao): Disable fullscreen on non-Lion? | 4091 // TODO(rohitrao): Disable fullscreen on non-Lion? |
| 4077 command_updater_.UpdateCommandEnabled(IDC_FULLSCREEN, | 4092 command_updater_.UpdateCommandEnabled(IDC_FULLSCREEN, |
| 4078 !(is_type_panel() && is_app())); | 4093 !(is_type_panel() && is_app())); |
| 4079 command_updater_.UpdateCommandEnabled(IDC_SELECT_NEXT_TAB, normal_window); | 4094 command_updater_.UpdateCommandEnabled(IDC_SELECT_NEXT_TAB, normal_window); |
| 4080 command_updater_.UpdateCommandEnabled(IDC_SELECT_PREVIOUS_TAB, | 4095 command_updater_.UpdateCommandEnabled(IDC_SELECT_PREVIOUS_TAB, |
| 4081 normal_window); | 4096 normal_window); |
| 4097 command_updater_.UpdateCommandEnabled(IDC_SELECT_NEXT_MRU_TAB, | |
|
sky
2012/05/29 19:48:28
Only enable if enabled in about:flags.
NaveenBobbili (Motorola)
2012/06/05 05:34:16
Done.
| |
| 4098 normal_window); | |
| 4082 command_updater_.UpdateCommandEnabled(IDC_MOVE_TAB_NEXT, normal_window); | 4099 command_updater_.UpdateCommandEnabled(IDC_MOVE_TAB_NEXT, normal_window); |
| 4083 command_updater_.UpdateCommandEnabled(IDC_MOVE_TAB_PREVIOUS, normal_window); | 4100 command_updater_.UpdateCommandEnabled(IDC_MOVE_TAB_PREVIOUS, normal_window); |
| 4084 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_0, normal_window); | 4101 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_0, normal_window); |
| 4085 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_1, normal_window); | 4102 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_1, normal_window); |
| 4086 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_2, normal_window); | 4103 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_2, normal_window); |
| 4087 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_3, normal_window); | 4104 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_3, normal_window); |
| 4088 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_4, normal_window); | 4105 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_4, normal_window); |
| 4089 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_5, normal_window); | 4106 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_5, normal_window); |
| 4090 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_6, normal_window); | 4107 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_6, normal_window); |
| 4091 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_7, normal_window); | 4108 command_updater_.UpdateCommandEnabled(IDC_SELECT_TAB_7, normal_window); |
| (...skipping 1017 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5109 if (contents && !allow_js_access) { | 5126 if (contents && !allow_js_access) { |
| 5110 contents->web_contents()->GetController().LoadURL( | 5127 contents->web_contents()->GetController().LoadURL( |
| 5111 target_url, | 5128 target_url, |
| 5112 content::Referrer(), | 5129 content::Referrer(), |
| 5113 content::PAGE_TRANSITION_LINK, | 5130 content::PAGE_TRANSITION_LINK, |
| 5114 std::string()); // No extra headers. | 5131 std::string()); // No extra headers. |
| 5115 } | 5132 } |
| 5116 | 5133 |
| 5117 return contents != NULL; | 5134 return contents != NULL; |
| 5118 } | 5135 } |
| OLD | NEW |