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

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

Issue 2941001: Removal of TabContentsDelegate::GetBrowser() interface method. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 4 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/browser.h ('k') | chrome/browser/browser_browsertest.cc » ('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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/browser.h" 5 #include "chrome/browser/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 513 matching lines...) Expand 10 before | Expand all | Expand 10 after
524 browser->SelectTabContentsAt(tab_idx, false); 524 browser->SelectTabContentsAt(tab_idx, false);
525 return tab; 525 return tab;
526 } 526 }
527 } 527 }
528 528
529 // The app is not yet open. Load it. 529 // The app is not yet open. Load it.
530 switch (container) { 530 switch (container) {
531 case Extension::LAUNCH_WINDOW: 531 case Extension::LAUNCH_WINDOW:
532 case Extension::LAUNCH_PANEL: 532 case Extension::LAUNCH_PANEL:
533 tab = Browser::OpenApplicationWindow(profile, extension, container, 533 tab = Browser::OpenApplicationWindow(profile, extension, container,
534 GURL()); 534 GURL(), &browser);
535 break; 535 break;
536 case Extension::LAUNCH_TAB: { 536 case Extension::LAUNCH_TAB: {
537 tab = Browser::OpenApplicationTab(profile, extension); 537 tab = Browser::OpenApplicationTab(profile, extension, &browser);
538 break; 538 break;
539 } 539 }
540 default: 540 default:
541 NOTREACHED(); 541 NOTREACHED();
542 break; 542 break;
543 } 543 }
544 if (tab) { 544 if (tab) {
545 Browser* browser = tab->delegate()->GetBrowser();
546 if (browser && extension && extension->launch_fullscreen()) 545 if (browser && extension && extension->launch_fullscreen())
547 browser->window()->SetFullscreen(true); 546 browser->window()->SetFullscreen(true);
548 } 547 }
549 return tab; 548 return tab;
550 } 549 }
551 550
552 // static 551 // static
553 TabContents* Browser::OpenApplicationWindow( 552 TabContents* Browser::OpenApplicationWindow(
554 Profile* profile, 553 Profile* profile,
555 Extension* extension, 554 Extension* extension,
556 Extension::LaunchContainer container, 555 Extension::LaunchContainer container,
557 const GURL& url_input) { 556 const GURL& url_input,
557 Browser** browser) {
558 GURL url; 558 GURL url;
559 if (!url_input.is_empty()) { 559 if (!url_input.is_empty()) {
560 if (extension) 560 if (extension)
561 DCHECK(extension->web_extent().ContainsURL(url_input)); 561 DCHECK(extension->web_extent().ContainsURL(url_input));
562 url = url_input; 562 url = url_input;
563 } else { 563 } else {
564 DCHECK(extension); 564 DCHECK(extension);
565 url = extension->GetFullLaunchURL(); 565 url = extension->GetFullLaunchURL();
566 } 566 }
567 567
568 // TODO(erikkay) this can't be correct for extensions 568 // TODO(erikkay) this can't be correct for extensions
569 std::wstring app_name = web_app::GenerateApplicationNameFromURL(url); 569 std::wstring app_name = web_app::GenerateApplicationNameFromURL(url);
570 RegisterAppPrefs(app_name); 570 RegisterAppPrefs(app_name);
571 571
572 bool as_panel = extension && (container == Extension::LAUNCH_PANEL); 572 bool as_panel = extension && (container == Extension::LAUNCH_PANEL);
573 Browser* browser = Browser::CreateForApp(app_name, extension, profile, 573 Browser* local_browser = Browser::CreateForApp(app_name, extension, profile,
574 as_panel); 574 as_panel);
575 TabContents* tab_contents = browser->AddTabWithURL( 575 TabContents* tab_contents = local_browser->AddTabWithURL(
576 url, GURL(), PageTransition::START_PAGE, -1, TabStripModel::ADD_SELECTED, 576 url, GURL(), PageTransition::START_PAGE, -1, TabStripModel::ADD_SELECTED,
577 NULL, std::string()); 577 NULL, std::string());
578 578
579 tab_contents->GetMutableRendererPrefs()->can_accept_load_drops = false; 579 tab_contents->GetMutableRendererPrefs()->can_accept_load_drops = false;
580 tab_contents->render_view_host()->SyncRendererPrefs(); 580 tab_contents->render_view_host()->SyncRendererPrefs();
581 browser->window()->Show(); 581 local_browser->window()->Show();
582 582
583 // TODO(jcampan): http://crbug.com/8123 we should not need to set the initial 583 // TODO(jcampan): http://crbug.com/8123 we should not need to set the initial
584 // focus explicitly. 584 // focus explicitly.
585 tab_contents->view()->SetInitialFocus(); 585 tab_contents->view()->SetInitialFocus();
586 586
587 if (!as_panel) { 587 if (!as_panel) {
588 // Set UPDATE_SHORTCUT as the pending web app action. This action is picked 588 // Set UPDATE_SHORTCUT as the pending web app action. This action is picked
589 // up in LoadingStateChanged to schedule a GetApplicationInfo. And when 589 // up in LoadingStateChanged to schedule a GetApplicationInfo. And when
590 // the web app info is available, TabContents notifies Browser via 590 // the web app info is available, TabContents notifies Browser via
591 // OnDidGetApplicationInfo, which calls 591 // OnDidGetApplicationInfo, which calls
592 // web_app::UpdateShortcutForTabContents when it sees UPDATE_SHORTCUT as 592 // web_app::UpdateShortcutForTabContents when it sees UPDATE_SHORTCUT as
593 // pending web app action. 593 // pending web app action.
594 browser->pending_web_app_action_ = UPDATE_SHORTCUT; 594 local_browser->pending_web_app_action_ = UPDATE_SHORTCUT;
595 } 595 }
596 596
597 if (browser)
598 *browser = local_browser;
599
597 return tab_contents; 600 return tab_contents;
598 } 601 }
599 602
600 // static 603 // static
601 TabContents* Browser::OpenApplicationWindow(Profile* profile, 604 TabContents* Browser::OpenApplicationWindow(Profile* profile,
602 GURL& url) { 605 GURL& url, Browser** browser) {
603 return OpenApplicationWindow(profile, NULL, Extension::LAUNCH_WINDOW, url); 606 return OpenApplicationWindow(profile, NULL, Extension::LAUNCH_WINDOW, url,
607 browser);
604 } 608 }
605 609
606 // static 610 // static
607 TabContents* Browser::OpenApplicationTab(Profile* profile, 611 TabContents* Browser::OpenApplicationTab(Profile* profile,
608 Extension* extension) { 612 Extension* extension,
609 Browser* browser = BrowserList::GetLastActiveWithProfile(profile); 613 Browser** browser) {
610 if (!browser || browser->type() != Browser::TYPE_NORMAL) 614 Browser* local_browser = BrowserList::GetLastActiveWithProfile(profile);
615 if (!local_browser || local_browser->type() != Browser::TYPE_NORMAL)
611 return NULL; 616 return NULL;
612 617
613 // TODO(erikkay): This doesn't seem like the right transition in all cases. 618 // TODO(erikkay): This doesn't seem like the right transition in all cases.
614 PageTransition::Type transition = PageTransition::START_PAGE; 619 PageTransition::Type transition = PageTransition::START_PAGE;
615 GURL url = extension->GetFullLaunchURL(); 620 GURL url = extension->GetFullLaunchURL();
616 TabContents* tab_contents = 621 TabContents* tab_contents =
617 browser->CreateTabContentsForURL(url, GURL(), profile, 622 local_browser->CreateTabContentsForURL(url, GURL(), profile,
618 transition, false, NULL); 623 transition, false, NULL);
619 tab_contents->SetExtensionApp(extension); 624 tab_contents->SetExtensionApp(extension);
620 browser->AddTab(tab_contents, transition); 625 local_browser->AddTab(tab_contents, transition);
626
627 if (browser)
628 *browser = local_browser;
629
621 return tab_contents; 630 return tab_contents;
622 } 631 }
623 632
624 // static 633 // static
625 void Browser::OpenBookmarkManagerWindow(Profile* profile) { 634 void Browser::OpenBookmarkManagerWindow(Profile* profile) {
626 Browser* browser = Browser::Create(profile); 635 Browser* browser = Browser::Create(profile);
627 browser->ShowBookmarkManagerTab(); 636 browser->ShowBookmarkManagerTab();
628 browser->window()->Show(); 637 browser->window()->Show();
629 } 638 }
630 639
(...skipping 1736 matching lines...) Expand 10 before | Expand all | Expand 10 after
2367 TabCloseableStateWatcher* watcher = 2376 TabCloseableStateWatcher* watcher =
2368 g_browser_process->tab_closeable_state_watcher(); 2377 g_browser_process->tab_closeable_state_watcher();
2369 return !watcher || watcher->CanCloseTab(this); 2378 return !watcher || watcher->CanCloseTab(this);
2370 } 2379 }
2371 2380
2372 void Browser::ToggleUseVerticalTabs() { 2381 void Browser::ToggleUseVerticalTabs() {
2373 use_vertical_tabs_.SetValue(!UseVerticalTabs()); 2382 use_vertical_tabs_.SetValue(!UseVerticalTabs());
2374 UseVerticalTabsChanged(); 2383 UseVerticalTabsChanged();
2375 } 2384 }
2376 2385
2386 bool Browser::LargeIconsPermitted() const {
2387 // We don't show the big icons in tabs for TYPE_EXTENSION_APP windows because
2388 // for those windows, we already have a big icon in the top-left outside any
2389 // tab. Having big tab icons too looks kinda redonk.
2390 return TYPE_EXTENSION_APP != type();
2391 }
2392
2377 /////////////////////////////////////////////////////////////////////////////// 2393 ///////////////////////////////////////////////////////////////////////////////
2378 // Browser, TabStripModelObserver implementation: 2394 // Browser, TabStripModelObserver implementation:
2379 2395
2380 void Browser::TabInsertedAt(TabContents* contents, 2396 void Browser::TabInsertedAt(TabContents* contents,
2381 int index, 2397 int index,
2382 bool foreground) { 2398 bool foreground) {
2383 contents->set_delegate(this); 2399 contents->set_delegate(this);
2384 contents->controller().SetWindowID(session_id()); 2400 contents->controller().SetWindowID(session_id());
2385 2401
2386 SyncHistoryWithTabs(index); 2402 SyncHistoryWithTabs(index);
(...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after
2918 break; 2934 break;
2919 } 2935 }
2920 default: 2936 default:
2921 NOTREACHED(); 2937 NOTREACHED();
2922 break; 2938 break;
2923 } 2939 }
2924 2940
2925 pending_web_app_action_ = NONE; 2941 pending_web_app_action_ = NONE;
2926 } 2942 }
2927 2943
2928 Browser* Browser::GetBrowser() {
2929 return this;
2930 }
2931
2932 void Browser::ContentTypeChanged(TabContents* source) { 2944 void Browser::ContentTypeChanged(TabContents* source) {
2933 if (source == GetSelectedTabContents()) 2945 if (source == GetSelectedTabContents())
2934 UpdateZoomCommandsForTabState(); 2946 UpdateZoomCommandsForTabState();
2935 } 2947 }
2936 2948
2937 /////////////////////////////////////////////////////////////////////////////// 2949 ///////////////////////////////////////////////////////////////////////////////
2938 // Browser, SelectFileDialog::Listener implementation: 2950 // Browser, SelectFileDialog::Listener implementation:
2939 2951
2940 void Browser::FileSelected(const FilePath& path, int index, void* params) { 2952 void Browser::FileSelected(const FilePath& path, int index, void* params) {
2941 profile_->set_last_selected_directory(path.DirName()); 2953 profile_->set_last_selected_directory(path.DirName());
(...skipping 780 matching lines...) Expand 10 before | Expand all | Expand 10 after
3722 (*iter)->window()->Show(); 3734 (*iter)->window()->Show();
3723 return true; 3735 return true;
3724 } 3736 }
3725 } 3737 }
3726 3738
3727 // If the extension wants to be opened in a window, but there is no 3739 // If the extension wants to be opened in a window, but there is no
3728 // existing window, create one, then open the URL there. 3740 // existing window, create one, then open the URL there.
3729 if (destination_extension->launch_container() == 3741 if (destination_extension->launch_container() ==
3730 Extension::LAUNCH_WINDOW) { 3742 Extension::LAUNCH_WINDOW) {
3731 Browser::OpenApplicationWindow(profile_, destination_extension, 3743 Browser::OpenApplicationWindow(profile_, destination_extension,
3732 Extension::LAUNCH_WINDOW, url); 3744 Extension::LAUNCH_WINDOW, url, NULL);
3733 return true; 3745 return true;
3734 } 3746 }
3735 } 3747 }
3736 3748
3737 // Otherwise, we are opening a normal web page. 3749 // Otherwise, we are opening a normal web page.
3738 // 3750 //
3739 // If our source tab is in an app window, we don't want to open the tab 3751 // If our source tab is in an app window, we don't want to open the tab
3740 // there. Find a normal browser to open it in. 3752 // there. Find a normal browser to open it in.
3741 if (extension_app_) { 3753 if (extension_app_) {
3742 Browser* browser = GetOrCreateTabbedBrowser(profile_); 3754 Browser* browser = GetOrCreateTabbedBrowser(profile_);
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
4069 } 4081 }
4070 4082
4071 bool Browser::IsPinned(TabContents* source) { 4083 bool Browser::IsPinned(TabContents* source) {
4072 int index = tabstrip_model_.GetIndexOfTabContents(source); 4084 int index = tabstrip_model_.GetIndexOfTabContents(source);
4073 if (index == TabStripModel::kNoTab) { 4085 if (index == TabStripModel::kNoTab) {
4074 NOTREACHED() << "IsPinned called for tab not in our strip"; 4086 NOTREACHED() << "IsPinned called for tab not in our strip";
4075 return false; 4087 return false;
4076 } 4088 }
4077 return tabstrip_model_.IsTabPinned(index); 4089 return tabstrip_model_.IsTabPinned(index);
4078 } 4090 }
OLDNEW
« no previous file with comments | « chrome/browser/browser.h ('k') | chrome/browser/browser_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698