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

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

Issue 10391158: Moves methods for finding browsers to browser_finder. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Include fixs Created 8 years, 7 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) 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 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 #include "chrome/browser/tab_contents/retargeting_details.h" 95 #include "chrome/browser/tab_contents/retargeting_details.h"
96 #include "chrome/browser/tab_contents/simple_alert_infobar_delegate.h" 96 #include "chrome/browser/tab_contents/simple_alert_infobar_delegate.h"
97 #include "chrome/browser/tab_contents/tab_util.h" 97 #include "chrome/browser/tab_contents/tab_util.h"
98 #include "chrome/browser/themes/theme_service.h" 98 #include "chrome/browser/themes/theme_service.h"
99 #include "chrome/browser/themes/theme_service_factory.h" 99 #include "chrome/browser/themes/theme_service_factory.h"
100 #include "chrome/browser/ui/app_modal_dialogs/message_box_handler.h" 100 #include "chrome/browser/ui/app_modal_dialogs/message_box_handler.h"
101 #include "chrome/browser/ui/blocked_content/blocked_content_tab_helper.h" 101 #include "chrome/browser/ui/blocked_content/blocked_content_tab_helper.h"
102 #include "chrome/browser/ui/bookmarks/bookmark_tab_helper.h" 102 #include "chrome/browser/ui/bookmarks/bookmark_tab_helper.h"
103 #include "chrome/browser/ui/browser_content_setting_bubble_model_delegate.h" 103 #include "chrome/browser/ui/browser_content_setting_bubble_model_delegate.h"
104 #include "chrome/browser/ui/browser_dialogs.h" 104 #include "chrome/browser/ui/browser_dialogs.h"
105 #include "chrome/browser/ui/browser_finder.h"
105 #include "chrome/browser/ui/browser_list.h" 106 #include "chrome/browser/ui/browser_list.h"
106 #include "chrome/browser/ui/browser_navigator.h" 107 #include "chrome/browser/ui/browser_navigator.h"
107 #include "chrome/browser/ui/browser_tab_restore_service_delegate.h" 108 #include "chrome/browser/ui/browser_tab_restore_service_delegate.h"
108 #include "chrome/browser/ui/browser_toolbar_model_delegate.h" 109 #include "chrome/browser/ui/browser_toolbar_model_delegate.h"
109 #include "chrome/browser/ui/browser_window.h" 110 #include "chrome/browser/ui/browser_window.h"
110 #include "chrome/browser/ui/constrained_window_tab_helper.h" 111 #include "chrome/browser/ui/constrained_window_tab_helper.h"
111 #include "chrome/browser/ui/extensions/shell_window.h" 112 #include "chrome/browser/ui/extensions/shell_window.h"
112 #include "chrome/browser/ui/find_bar/find_bar.h" 113 #include "chrome/browser/ui/find_bar/find_bar.h"
113 #include "chrome/browser/ui/find_bar/find_bar_controller.h" 114 #include "chrome/browser/ui/find_bar/find_bar_controller.h"
114 #include "chrome/browser/ui/find_bar/find_tab_helper.h" 115 #include "chrome/browser/ui/find_bar/find_tab_helper.h"
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 SessionServiceFactory::GetForProfile(profile_); 487 SessionServiceFactory::GetForProfile(profile_);
487 if (session_service) 488 if (session_service)
488 session_service->WindowClosed(session_id_); 489 session_service->WindowClosed(session_id_);
489 490
490 TabRestoreService* tab_restore_service = 491 TabRestoreService* tab_restore_service =
491 TabRestoreServiceFactory::GetForProfile(profile()); 492 TabRestoreServiceFactory::GetForProfile(profile());
492 if (tab_restore_service) 493 if (tab_restore_service)
493 tab_restore_service->BrowserClosed(tab_restore_service_delegate()); 494 tab_restore_service->BrowserClosed(tab_restore_service_delegate());
494 495
495 #if !defined(OS_MACOSX) 496 #if !defined(OS_MACOSX)
496 if (!BrowserList::HasBrowserWithProfile(profile_)) { 497 if (!browser::GetBrowserCount(profile_)) {
497 // We're the last browser window with this profile. We need to nuke the 498 // We're the last browser window with this profile. We need to nuke the
498 // TabRestoreService, which will start the shutdown of the 499 // TabRestoreService, which will start the shutdown of the
499 // NavigationControllers and allow for proper shutdown. If we don't do this 500 // NavigationControllers and allow for proper shutdown. If we don't do this
500 // chrome won't shutdown cleanly, and may end up crashing when some 501 // chrome won't shutdown cleanly, and may end up crashing when some
501 // thread tries to use the IO thread (or another thread) that is no longer 502 // thread tries to use the IO thread (or another thread) that is no longer
502 // valid. 503 // valid.
503 // This isn't a valid assumption for Mac OS, as it stays running after 504 // This isn't a valid assumption for Mac OS, as it stays running after
504 // the last browser has closed. The Mac equivalent is in its app 505 // the last browser has closed. The Mac equivalent is in its app
505 // controller. 506 // controller.
506 TabRestoreServiceFactory::ResetForProfile(profile_); 507 TabRestoreServiceFactory::ResetForProfile(profile_);
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
673 674
674 // static 675 // static
675 void Browser::OpenWindowWithRestoredTabs(Profile* profile) { 676 void Browser::OpenWindowWithRestoredTabs(Profile* profile) {
676 TabRestoreService* service = TabRestoreServiceFactory::GetForProfile(profile); 677 TabRestoreService* service = TabRestoreServiceFactory::GetForProfile(profile);
677 if (service) 678 if (service)
678 service->RestoreMostRecentEntry(NULL); 679 service->RestoreMostRecentEntry(NULL);
679 } 680 }
680 681
681 // static 682 // static
682 void Browser::OpenURLOffTheRecord(Profile* profile, const GURL& url) { 683 void Browser::OpenURLOffTheRecord(Profile* profile, const GURL& url) {
683 Browser* browser = GetOrCreateTabbedBrowser( 684 Browser* browser = browser::FindOrCreateTabbedBrowser(
684 profile->GetOffTheRecordProfile()); 685 profile->GetOffTheRecordProfile());
685 browser->AddSelectedTabWithURL(url, content::PAGE_TRANSITION_LINK); 686 browser->AddSelectedTabWithURL(url, content::PAGE_TRANSITION_LINK);
686 browser->window()->Show(); 687 browser->window()->Show();
687 } 688 }
688 689
689 // static 690 // static
690 WebContents* Browser::OpenApplication( 691 WebContents* Browser::OpenApplication(
691 Profile* profile, 692 Profile* profile,
692 const Extension* extension, 693 const Extension* extension,
693 extension_misc::LaunchContainer container, 694 extension_misc::LaunchContainer container,
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
847 app_browser->pending_web_app_action_ = UPDATE_SHORTCUT; 848 app_browser->pending_web_app_action_ = UPDATE_SHORTCUT;
848 } 849 }
849 return tab; 850 return tab;
850 } 851 }
851 852
852 // static 853 // static
853 WebContents* Browser::OpenApplicationTab(Profile* profile, 854 WebContents* Browser::OpenApplicationTab(Profile* profile,
854 const Extension* extension, 855 const Extension* extension,
855 const GURL& override_url, 856 const GURL& override_url,
856 WindowOpenDisposition disposition) { 857 WindowOpenDisposition disposition) {
857 Browser* browser = BrowserList::FindTabbedBrowser(profile, false); 858 Browser* browser = browser::FindTabbedBrowser(profile, false);
858 WebContents* contents = NULL; 859 WebContents* contents = NULL;
859 if (!browser) { 860 if (!browser) {
860 // No browser for this profile, need to open a new one. 861 // No browser for this profile, need to open a new one.
861 browser = Browser::Create(profile); 862 browser = Browser::Create(profile);
862 browser->window()->Show(); 863 browser->window()->Show();
863 // There's no current tab in this browser window, so add a new one. 864 // There's no current tab in this browser window, so add a new one.
864 disposition = NEW_FOREGROUND_TAB; 865 disposition = NEW_FOREGROUND_TAB;
865 } else { 866 } else {
866 // For existing browser, ensure its window is activated. 867 // For existing browser, ensure its window is activated.
867 browser->window()->Activate(); 868 browser->window()->Activate();
(...skipping 805 matching lines...) Expand 10 before | Expand all | Expand 10 after
1673 window_->Close(); 1674 window_->Close();
1674 } 1675 }
1675 1676
1676 void Browser::NewTab() { 1677 void Browser::NewTab() {
1677 content::RecordAction(UserMetricsAction("NewTab")); 1678 content::RecordAction(UserMetricsAction("NewTab"));
1678 1679
1679 if (is_type_tabbed()) { 1680 if (is_type_tabbed()) {
1680 AddBlankTab(true); 1681 AddBlankTab(true);
1681 GetSelectedWebContents()->GetView()->RestoreFocus(); 1682 GetSelectedWebContents()->GetView()->RestoreFocus();
1682 } else { 1683 } else {
1683 Browser* b = GetOrCreateTabbedBrowser(profile_); 1684 Browser* b = browser::FindOrCreateTabbedBrowser(profile_);
1684 b->AddBlankTab(true); 1685 b->AddBlankTab(true);
1685 b->window()->Show(); 1686 b->window()->Show();
1686 // The call to AddBlankTab above did not set the focus to the tab as its 1687 // The call to AddBlankTab above did not set the focus to the tab as its
1687 // window was not active, so we have to do it explicitly. 1688 // window was not active, so we have to do it explicitly.
1688 // See http://crbug.com/6380. 1689 // See http://crbug.com/6380.
1689 b->GetSelectedWebContents()->GetView()->RestoreFocus(); 1690 b->GetSelectedWebContents()->GetView()->RestoreFocus();
1690 } 1691 }
1691 } 1692 }
1692 1693
1693 void Browser::CloseTab() { 1694 void Browser::CloseTab() {
(...skipping 799 matching lines...) Expand 10 before | Expand all | Expand 10 after
2493 // them. Once they have fired, we'll get a message back saying whether 2494 // them. Once they have fired, we'll get a message back saying whether
2494 // to proceed closing the page or not, which sends us back to this method 2495 // to proceed closing the page or not, which sends us back to this method
2495 // with the NeedToFireBeforeUnload bit cleared. 2496 // with the NeedToFireBeforeUnload bit cleared.
2496 contents->GetRenderViewHost()->FirePageBeforeUnload(false); 2497 contents->GetRenderViewHost()->FirePageBeforeUnload(false);
2497 return true; 2498 return true;
2498 } 2499 }
2499 return false; 2500 return false;
2500 } 2501 }
2501 2502
2502 // static 2503 // static
2503 Browser* Browser::GetBrowserForController(
2504 const NavigationController* controller, int* index_result) {
2505 BrowserList::const_iterator it;
2506 for (it = BrowserList::begin(); it != BrowserList::end(); ++it) {
2507 int index = (*it)->GetIndexOfController(controller);
2508 if (index != TabStripModel::kNoTab) {
2509 if (index_result)
2510 *index_result = index;
2511 return *it;
2512 }
2513 }
2514
2515 return NULL;
2516 }
2517
2518 // static
2519 Browser* Browser::GetTabbedBrowser(Profile* profile,
2520 bool match_original_profiles) {
2521 return BrowserList::FindTabbedBrowser(profile, match_original_profiles);
2522 }
2523
2524 // static
2525 Browser* Browser::GetOrCreateTabbedBrowser(Profile* profile) {
2526 Browser* browser = GetTabbedBrowser(profile, false);
2527 if (!browser)
2528 browser = Browser::Create(profile);
2529 return browser;
2530 }
2531
2532 // static
2533 void Browser::RunFileChooserHelper( 2504 void Browser::RunFileChooserHelper(
2534 WebContents* tab, const content::FileChooserParams& params) { 2505 WebContents* tab, const content::FileChooserParams& params) {
2535 Profile* profile = 2506 Profile* profile =
2536 Profile::FromBrowserContext(tab->GetBrowserContext()); 2507 Profile::FromBrowserContext(tab->GetBrowserContext());
2537 // FileSelectHelper adds a reference to itself and only releases it after 2508 // FileSelectHelper adds a reference to itself and only releases it after
2538 // sending the result message. It won't be destroyed when this reference 2509 // sending the result message. It won't be destroyed when this reference
2539 // goes out of scope. 2510 // goes out of scope.
2540 scoped_refptr<FileSelectHelper> file_select_helper( 2511 scoped_refptr<FileSelectHelper> file_select_helper(
2541 new FileSelectHelper(profile)); 2512 new FileSelectHelper(profile));
2542 file_select_helper->RunFileChooser(tab->GetRenderViewHost(), tab, params); 2513 file_select_helper->RunFileChooser(tab->GetRenderViewHost(), tab, params);
(...skipping 2920 matching lines...) Expand 10 before | Expand all | Expand 10 after
5463 if (contents && !allow_js_access) { 5434 if (contents && !allow_js_access) {
5464 contents->web_contents()->GetController().LoadURL( 5435 contents->web_contents()->GetController().LoadURL(
5465 target_url, 5436 target_url,
5466 content::Referrer(), 5437 content::Referrer(),
5467 content::PAGE_TRANSITION_LINK, 5438 content::PAGE_TRANSITION_LINK,
5468 std::string()); // No extra headers. 5439 std::string()); // No extra headers.
5469 } 5440 }
5470 5441
5471 return contents != NULL; 5442 return contents != NULL;
5472 } 5443 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698