summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authortwiz@google.com <twiz@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-02 17:56:11 +0000
committertwiz@google.com <twiz@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-02 17:56:11 +0000
commite8af70c334b4dc4186e26eb54559e9f5384e3d0a (patch)
treee8606ec6aefc556596cc189a0066213f780945da /chrome/browser
parent80f037afb3a22b81dacf80611f5409b7cf0fc07a (diff)
downloadchromium_src-e8af70c334b4dc4186e26eb54559e9f5384e3d0a.zip
chromium_src-e8af70c334b4dc4186e26eb54559e9f5384e3d0a.tar.gz
chromium_src-e8af70c334b4dc4186e26eb54559e9f5384e3d0a.tar.bz2
Change removing method, GetBrowser from TabContentsDelegate, as this was breaking an abstraction layer. This routine was originally added in CL 434046, which required the Browser* to construct extension popup views from within Chrome-Frame instances.
I changed all accesses to Browser instances from usage of the above method, to either iterating the BrowserList using the situation-specific profile as a search key, or modifying the appropriate delegate interfaces to provide the functionality that was previously used directly via the Browser. BUG=None TEST=None Review URL: http://codereview.chromium.org/2941001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@54560 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/autofill/autofill_cc_infobar_delegate.cc13
-rw-r--r--chrome/browser/autofill/autofill_cc_infobar_delegate.h4
-rw-r--r--chrome/browser/autofill/autofill_manager.h3
-rw-r--r--chrome/browser/browser.cc56
-rw-r--r--chrome/browser/browser.h17
-rw-r--r--chrome/browser/browser_browsertest.cc20
-rw-r--r--chrome/browser/browser_init.cc2
-rw-r--r--chrome/browser/cocoa/tab_strip_controller_unittest.mm2
-rw-r--r--chrome/browser/dom_ui/dom_ui.cc2
-rw-r--r--chrome/browser/dom_ui/dom_ui.h2
-rw-r--r--chrome/browser/dom_ui/history2_ui.cc8
-rw-r--r--chrome/browser/dom_ui/history_ui.cc8
-rw-r--r--chrome/browser/extensions/extension_dom_ui.cc9
-rw-r--r--chrome/browser/external_tab_container_win.h2
-rw-r--r--chrome/browser/tab_contents/tab_contents.cc8
-rw-r--r--chrome/browser/tab_contents/tab_contents_delegate.cc4
-rw-r--r--chrome/browser/tab_contents/tab_contents_delegate.h4
-rw-r--r--chrome/browser/tabs/tab_strip_model.h3
-rw-r--r--chrome/browser/tabs/tab_strip_model_unittest.cc1
-rw-r--r--chrome/browser/views/frame/browser_view.cc2
-rw-r--r--chrome/browser/views/tabs/browser_tab_strip_controller.cc21
-rw-r--r--chrome/browser/views/tabs/browser_tab_strip_controller.h6
22 files changed, 106 insertions, 91 deletions
diff --git a/chrome/browser/autofill/autofill_cc_infobar_delegate.cc b/chrome/browser/autofill/autofill_cc_infobar_delegate.cc
index 89c17ba..7953d86 100644
--- a/chrome/browser/autofill/autofill_cc_infobar_delegate.cc
+++ b/chrome/browser/autofill/autofill_cc_infobar_delegate.cc
@@ -9,7 +9,6 @@
#include "base/histogram.h"
#include "chrome/browser/autofill/autofill_cc_infobar.h"
#include "chrome/browser/autofill/autofill_manager.h"
-#include "chrome/browser/browser.h"
#include "chrome/browser/pref_service.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/tab_contents/tab_contents.h"
@@ -23,15 +22,9 @@
AutoFillCCInfoBarDelegate::AutoFillCCInfoBarDelegate(TabContents* tab_contents,
AutoFillManager* host)
: ConfirmInfoBarDelegate(tab_contents),
- browser_(NULL),
host_(host) {
- if (tab_contents) {
- // This is NULL for TestTabContents.
- if (tab_contents->delegate())
- browser_ = tab_contents->delegate()->GetBrowser();
-
+ if (tab_contents)
tab_contents->AddInfoBar(this);
- }
}
AutoFillCCInfoBarDelegate::~AutoFillCCInfoBarDelegate() {
@@ -103,8 +96,8 @@ std::wstring AutoFillCCInfoBarDelegate::GetLinkText() {
}
bool AutoFillCCInfoBarDelegate::LinkClicked(WindowOpenDisposition disposition) {
- browser_->OpenURL(GURL(kAutoFillLearnMoreUrl), GURL(), NEW_FOREGROUND_TAB,
- PageTransition::TYPED);
+ host_->tab_contents()->OpenURL(GURL(kAutoFillLearnMoreUrl), GURL(),
+ NEW_FOREGROUND_TAB, PageTransition::TYPED);
return false;
}
diff --git a/chrome/browser/autofill/autofill_cc_infobar_delegate.h b/chrome/browser/autofill/autofill_cc_infobar_delegate.h
index 32a7c82..6a8091e 100644
--- a/chrome/browser/autofill/autofill_cc_infobar_delegate.h
+++ b/chrome/browser/autofill/autofill_cc_infobar_delegate.h
@@ -11,7 +11,6 @@
#include "chrome/browser/tab_contents/infobar_delegate.h"
class AutoFillManager;
-class Browser;
class SkBitmap;
class TabContents;
@@ -46,9 +45,6 @@ class AutoFillCCInfoBarDelegate : public ConfirmInfoBarDelegate {
}
private:
- // The browser.
- Browser* browser_;
-
// The AutoFillManager that initiated this InfoBar.
AutoFillManager* host_;
diff --git a/chrome/browser/autofill/autofill_manager.h b/chrome/browser/autofill/autofill_manager.h
index 964b8bc..4858a5e 100644
--- a/chrome/browser/autofill/autofill_manager.h
+++ b/chrome/browser/autofill/autofill_manager.h
@@ -45,6 +45,9 @@ class AutoFillManager : public RenderViewHostDelegate::AutoFill,
// Registers our Enable/Disable AutoFill pref.
static void RegisterUserPrefs(PrefService* prefs);
+ // Returns the TabContents hosting this AutoFillManager.
+ TabContents* tab_contents() const { return tab_contents_; }
+
// RenderViewHostDelegate::AutoFill implementation:
virtual void FormSubmitted(const webkit_glue::FormData& form);
virtual void FormsSeen(const std::vector<webkit_glue::FormData>& forms);
diff --git a/chrome/browser/browser.cc b/chrome/browser/browser.cc
index cdd32ae..d5ffa64 100644
--- a/chrome/browser/browser.cc
+++ b/chrome/browser/browser.cc
@@ -531,10 +531,10 @@ TabContents* Browser::OpenApplication(Profile* profile,
case Extension::LAUNCH_WINDOW:
case Extension::LAUNCH_PANEL:
tab = Browser::OpenApplicationWindow(profile, extension, container,
- GURL());
+ GURL(), &browser);
break;
case Extension::LAUNCH_TAB: {
- tab = Browser::OpenApplicationTab(profile, extension);
+ tab = Browser::OpenApplicationTab(profile, extension, &browser);
break;
}
default:
@@ -542,7 +542,6 @@ TabContents* Browser::OpenApplication(Profile* profile,
break;
}
if (tab) {
- Browser* browser = tab->delegate()->GetBrowser();
if (browser && extension && extension->launch_fullscreen())
browser->window()->SetFullscreen(true);
}
@@ -554,7 +553,8 @@ TabContents* Browser::OpenApplicationWindow(
Profile* profile,
Extension* extension,
Extension::LaunchContainer container,
- const GURL& url_input) {
+ const GURL& url_input,
+ Browser** browser) {
GURL url;
if (!url_input.is_empty()) {
if (extension)
@@ -570,15 +570,15 @@ TabContents* Browser::OpenApplicationWindow(
RegisterAppPrefs(app_name);
bool as_panel = extension && (container == Extension::LAUNCH_PANEL);
- Browser* browser = Browser::CreateForApp(app_name, extension, profile,
- as_panel);
- TabContents* tab_contents = browser->AddTabWithURL(
+ Browser* local_browser = Browser::CreateForApp(app_name, extension, profile,
+ as_panel);
+ TabContents* tab_contents = local_browser->AddTabWithURL(
url, GURL(), PageTransition::START_PAGE, -1, TabStripModel::ADD_SELECTED,
NULL, std::string());
tab_contents->GetMutableRendererPrefs()->can_accept_load_drops = false;
tab_contents->render_view_host()->SyncRendererPrefs();
- browser->window()->Show();
+ local_browser->window()->Show();
// TODO(jcampan): http://crbug.com/8123 we should not need to set the initial
// focus explicitly.
@@ -591,33 +591,42 @@ TabContents* Browser::OpenApplicationWindow(
// OnDidGetApplicationInfo, which calls
// web_app::UpdateShortcutForTabContents when it sees UPDATE_SHORTCUT as
// pending web app action.
- browser->pending_web_app_action_ = UPDATE_SHORTCUT;
+ local_browser->pending_web_app_action_ = UPDATE_SHORTCUT;
}
+ if (browser)
+ *browser = local_browser;
+
return tab_contents;
}
// static
TabContents* Browser::OpenApplicationWindow(Profile* profile,
- GURL& url) {
- return OpenApplicationWindow(profile, NULL, Extension::LAUNCH_WINDOW, url);
+ GURL& url, Browser** browser) {
+ return OpenApplicationWindow(profile, NULL, Extension::LAUNCH_WINDOW, url,
+ browser);
}
// static
TabContents* Browser::OpenApplicationTab(Profile* profile,
- Extension* extension) {
- Browser* browser = BrowserList::GetLastActiveWithProfile(profile);
- if (!browser || browser->type() != Browser::TYPE_NORMAL)
+ Extension* extension,
+ Browser** browser) {
+ Browser* local_browser = BrowserList::GetLastActiveWithProfile(profile);
+ if (!local_browser || local_browser->type() != Browser::TYPE_NORMAL)
return NULL;
// TODO(erikkay): This doesn't seem like the right transition in all cases.
PageTransition::Type transition = PageTransition::START_PAGE;
GURL url = extension->GetFullLaunchURL();
TabContents* tab_contents =
- browser->CreateTabContentsForURL(url, GURL(), profile,
- transition, false, NULL);
+ local_browser->CreateTabContentsForURL(url, GURL(), profile,
+ transition, false, NULL);
tab_contents->SetExtensionApp(extension);
- browser->AddTab(tab_contents, transition);
+ local_browser->AddTab(tab_contents, transition);
+
+ if (browser)
+ *browser = local_browser;
+
return tab_contents;
}
@@ -2374,6 +2383,13 @@ void Browser::ToggleUseVerticalTabs() {
UseVerticalTabsChanged();
}
+bool Browser::LargeIconsPermitted() const {
+ // We don't show the big icons in tabs for TYPE_EXTENSION_APP windows because
+ // for those windows, we already have a big icon in the top-left outside any
+ // tab. Having big tab icons too looks kinda redonk.
+ return TYPE_EXTENSION_APP != type();
+}
+
///////////////////////////////////////////////////////////////////////////////
// Browser, TabStripModelObserver implementation:
@@ -2925,10 +2941,6 @@ void Browser::OnDidGetApplicationInfo(TabContents* tab_contents,
pending_web_app_action_ = NONE;
}
-Browser* Browser::GetBrowser() {
- return this;
-}
-
void Browser::ContentTypeChanged(TabContents* source) {
if (source == GetSelectedTabContents())
UpdateZoomCommandsForTabState();
@@ -3729,7 +3741,7 @@ bool Browser::HandleCrossAppNavigation(TabContents* source,
if (destination_extension->launch_container() ==
Extension::LAUNCH_WINDOW) {
Browser::OpenApplicationWindow(profile_, destination_extension,
- Extension::LAUNCH_WINDOW, url);
+ Extension::LAUNCH_WINDOW, url, NULL);
return true;
}
}
diff --git a/chrome/browser/browser.h b/chrome/browser/browser.h
index 87456fb..c990ee2 100644
--- a/chrome/browser/browser.h
+++ b/chrome/browser/browser.h
@@ -227,20 +227,29 @@ class Browser : public TabStripModelDelegate,
// app panel window, otherwise it will be opened as as either
// Browser::Type::APP a.k.a. "thin frame" (if |extension| is NULL) or
// Browser::Type::EXTENSION_APP (if |extension| is non-NULL).
+ // Returns the browser hosting for the TabContents via optional parameter,
+ // |browser|.
static TabContents* OpenApplicationWindow(
Profile* profile,
Extension* extension,
Extension::LaunchContainer container,
- const GURL& url);
+ const GURL& url,
+ Browser** browser);
// Open an application for |extension| in a new application window or panel.
+ // Returns the browser hosting the TabContents via optional parameter,
+ // |browser|.
static TabContents* OpenApplicationWindow(Profile* profile,
- GURL& url);
+ GURL& url,
+ Browser** browser);
// Open an application for |extension| in a new application tab. Returns
// NULL if there are no appropriate existing browser windows for |profile|.
+ // Returns the browser hosting the TabContents via optional parameter,
+ // |browser|.
static TabContents* OpenApplicationTab(Profile* profile,
- Extension* extension);
+ Extension* extension,
+ Browser** browser);
// Opens a new window and opens the bookmark manager.
static void OpenBookmarkManagerWindow(Profile* profile);
@@ -655,6 +664,7 @@ class Browser : public TabStripModelDelegate,
virtual void ToggleUseVerticalTabs();
virtual bool CanRestoreTab();
virtual void RestoreTab();
+ virtual bool LargeIconsPermitted() const;
// Overridden from TabStripModelObserver:
virtual void TabInsertedAt(TabContents* contents,
@@ -734,7 +744,6 @@ class Browser : public TabStripModelDelegate,
virtual bool ShouldAddNavigationsToHistory() const;
virtual void OnDidGetApplicationInfo(TabContents* tab_contents,
int32 page_id);
- virtual Browser* GetBrowser();
virtual void ContentTypeChanged(TabContents* source);
// Overridden from SelectFileDialog::Listener:
diff --git a/chrome/browser/browser_browsertest.cc b/chrome/browser/browser_browsertest.cc
index 528c9e4..68a29d3 100644
--- a/chrome/browser/browser_browsertest.cc
+++ b/chrome/browser/browser_browsertest.cc
@@ -707,7 +707,8 @@ IN_PROC_BROWSER_TEST_F(BrowserAppRefocusTest, MAYBE_OpenTab) {
ASSERT_EQ(NULL, Browser::FindAppTab(browser(), extension_app_));
// Open a tab with the app.
- TabContents* tab = Browser::OpenApplicationTab(profile_, extension_app_);
+ TabContents* tab = Browser::OpenApplicationTab(profile_, extension_app_,
+ NULL);
ASSERT_TRUE(WaitForTab(tab));
ASSERT_EQ(2, browser()->tab_count());
@@ -764,7 +765,7 @@ IN_PROC_BROWSER_TEST_F(BrowserAppRefocusTest, MAYBE_OpenPanel) {
// Open the app in a panel.
Browser::OpenApplicationWindow(profile_, extension_app_,
- Extension::LAUNCH_PANEL, GURL());
+ Extension::LAUNCH_PANEL, GURL(), NULL);
Browser* app_panel = BrowserList::GetLastActive();
ASSERT_TRUE(app_panel);
ASSERT_NE(app_panel, browser()) << "New browser should have opened.";
@@ -797,7 +798,7 @@ IN_PROC_BROWSER_TEST_F(BrowserAppRefocusTest, MAYBE_OpenWindow) {
// Open a window with the app.
Browser::OpenApplicationWindow(profile_, extension_app_,
- Extension::LAUNCH_WINDOW, GURL());
+ Extension::LAUNCH_WINDOW, GURL(), NULL);
Browser* app_window = BrowserList::GetLastActive();
ASSERT_TRUE(app_window);
ASSERT_NE(app_window, browser()) << "New browser should have opened.";
@@ -825,7 +826,7 @@ IN_PROC_BROWSER_TEST_F(BrowserAppRefocusTest, MAYBE_WindowBeforeTab) {
ASSERT_EQ(1, browser()->tab_count());
// Open a tab with the app.
- Browser::OpenApplicationTab(profile_, extension_app_);
+ Browser::OpenApplicationTab(profile_, extension_app_, NULL);
ASSERT_TRUE(ui_test_utils::WaitForNavigationInCurrentTab(browser()));
ASSERT_EQ(2, browser()->tab_count());
int app_tab_index = browser()->selected_index();
@@ -833,7 +834,7 @@ IN_PROC_BROWSER_TEST_F(BrowserAppRefocusTest, MAYBE_WindowBeforeTab) {
// Open a window with the app.
Browser::OpenApplicationWindow(profile_, extension_app_,
- Extension::LAUNCH_WINDOW, GURL());
+ Extension::LAUNCH_WINDOW, GURL(), NULL);
Browser* app_window = BrowserList::GetLastActive();
ASSERT_TRUE(app_window);
ASSERT_NE(app_window, browser()) << "New browser should have opened.";
@@ -854,7 +855,8 @@ IN_PROC_BROWSER_TEST_F(BrowserAppRefocusTest, MAYBE_PanelBeforeTab) {
ASSERT_EQ(1, browser()->tab_count());
// Open a tab with the app.
- TabContents* tab = Browser::OpenApplicationTab(profile_, extension_app_);
+ TabContents* tab = Browser::OpenApplicationTab(profile_, extension_app_,
+ NULL);
ASSERT_TRUE(WaitForTab(tab));
ASSERT_EQ(2, browser()->tab_count());
int app_tab_index = browser()->selected_index();
@@ -862,7 +864,7 @@ IN_PROC_BROWSER_TEST_F(BrowserAppRefocusTest, MAYBE_PanelBeforeTab) {
// Open a panel with the app.
Browser::OpenApplicationWindow(profile_, extension_app_,
- Extension::LAUNCH_PANEL, GURL());
+ Extension::LAUNCH_PANEL, GURL(), NULL);
Browser* app_panel = BrowserList::GetLastActive();
ASSERT_TRUE(app_panel);
ASSERT_NE(app_panel, browser()) << "New browser should have opened.";
@@ -882,7 +884,7 @@ IN_PROC_BROWSER_TEST_F(BrowserAppRefocusTest, MAYBE_TabInFocusedWindow) {
ASSERT_EQ(1, browser()->tab_count());
- Browser::OpenApplicationTab(profile_, extension_app_);
+ Browser::OpenApplicationTab(profile_, extension_app_, NULL);
ASSERT_TRUE(ui_test_utils::WaitForNavigationInCurrentTab(browser()));
ASSERT_EQ(2, browser()->tab_count());
int app_tab_index = browser()->selected_index();
@@ -892,7 +894,7 @@ IN_PROC_BROWSER_TEST_F(BrowserAppRefocusTest, MAYBE_TabInFocusedWindow) {
Browser* extra_browser = CreateBrowser(profile_);
ASSERT_EQ(extra_browser, BrowserList::GetLastActive());
- Browser::OpenApplicationTab(profile_, extension_app_);
+ Browser::OpenApplicationTab(profile_, extension_app_, NULL);
ASSERT_TRUE(ui_test_utils::WaitForNavigationInCurrentTab(extra_browser));
ASSERT_EQ(2, extra_browser->tab_count());
app_tab_index = extra_browser->selected_index();
diff --git a/chrome/browser/browser_init.cc b/chrome/browser/browser_init.cc
index 58615eb..cf06a3c 100644
--- a/chrome/browser/browser_init.cc
+++ b/chrome/browser/browser_init.cc
@@ -632,7 +632,7 @@ bool BrowserInit::LaunchWithProfile::OpenApplicationWindow(Profile* profile) {
ChildProcessSecurityPolicy::GetInstance();
if (policy->IsWebSafeScheme(url.scheme()) ||
url.SchemeIs(chrome::kFileScheme)) {
- Browser::OpenApplicationWindow(profile, url);
+ Browser::OpenApplicationWindow(profile, url, NULL);
return true;
}
}
diff --git a/chrome/browser/cocoa/tab_strip_controller_unittest.mm b/chrome/browser/cocoa/tab_strip_controller_unittest.mm
index 2a161ab..d41a9f0 100644
--- a/chrome/browser/cocoa/tab_strip_controller_unittest.mm
+++ b/chrome/browser/cocoa/tab_strip_controller_unittest.mm
@@ -67,6 +67,8 @@ class TestTabStripDelegate : public TabStripModelDelegate {
virtual bool UseVerticalTabs() const { return false; }
virtual void ToggleUseVerticalTabs() {}
+
+ virtual bool LargeIconsPermitted() const { return true; }
};
class TabStripControllerTest : public CocoaTest {
diff --git a/chrome/browser/dom_ui/dom_ui.cc b/chrome/browser/dom_ui/dom_ui.cc
index 82dcb4b..debe141 100644
--- a/chrome/browser/dom_ui/dom_ui.cc
+++ b/chrome/browser/dom_ui/dom_ui.cc
@@ -86,7 +86,7 @@ void DOMUI::RegisterMessageCallback(const std::string &message,
message_callbacks_.insert(std::make_pair(message, callback));
}
-Profile* DOMUI::GetProfile() {
+Profile* DOMUI::GetProfile() const {
return tab_contents()->profile();
}
diff --git a/chrome/browser/dom_ui/dom_ui.h b/chrome/browser/dom_ui/dom_ui.h
index 1b333a8..d29425d 100644
--- a/chrome/browser/dom_ui/dom_ui.h
+++ b/chrome/browser/dom_ui/dom_ui.h
@@ -116,7 +116,7 @@ class DOMUI {
TabContents* tab_contents() const { return tab_contents_; }
- Profile* GetProfile();
+ Profile* GetProfile() const;
protected:
void AddMessageHandler(DOMMessageHandler* handler);
diff --git a/chrome/browser/dom_ui/history2_ui.cc b/chrome/browser/dom_ui/history2_ui.cc
index 067fec3..2ac33ea 100644
--- a/chrome/browser/dom_ui/history2_ui.cc
+++ b/chrome/browser/dom_ui/history2_ui.cc
@@ -17,6 +17,7 @@
#include "base/values.h"
#include "chrome/browser/bookmarks/bookmark_model.h"
#include "chrome/browser/browser.h"
+#include "chrome/browser/browser_list.h"
#include "chrome/browser/chrome_thread.h"
#include "chrome/browser/dom_ui/dom_ui_favicon_source.h"
#include "chrome/browser/metrics/user_metrics.h"
@@ -235,8 +236,11 @@ void BrowsingHistoryHandler2::HandleRemoveURLsOnOneDay(const Value* value) {
}
void BrowsingHistoryHandler2::HandleClearBrowsingData(const Value* value) {
- dom_ui_->tab_contents()->delegate()->GetBrowser()->
- OpenClearBrowsingDataDialog();
+ // TODO(beng): This is an improper direct dependency on Browser. Route this
+ // through some sort of delegate.
+ Browser* browser = BrowserList::FindBrowserWithProfile(dom_ui_->GetProfile());
+ if (browser)
+ browser->OpenClearBrowsingDataDialog();
}
void BrowsingHistoryHandler2::QueryComplete(
diff --git a/chrome/browser/dom_ui/history_ui.cc b/chrome/browser/dom_ui/history_ui.cc
index fc4fd63..e106c4c 100644
--- a/chrome/browser/dom_ui/history_ui.cc
+++ b/chrome/browser/dom_ui/history_ui.cc
@@ -17,6 +17,7 @@
#include "base/values.h"
#include "chrome/browser/bookmarks/bookmark_model.h"
#include "chrome/browser/browser.h"
+#include "chrome/browser/browser_list.h"
#include "chrome/browser/chrome_thread.h"
#include "chrome/browser/dom_ui/dom_ui_favicon_source.h"
#include "chrome/browser/metrics/user_metrics.h"
@@ -235,8 +236,11 @@ void BrowsingHistoryHandler::HandleRemoveURLsOnOneDay(const Value* value) {
}
void BrowsingHistoryHandler::HandleClearBrowsingData(const Value* value) {
- dom_ui_->tab_contents()->delegate()->GetBrowser()->
- OpenClearBrowsingDataDialog();
+ // TODO(beng): This is an improper direct dependency on Browser. Route this
+ // through some sort of delegate.
+ Browser* browser = BrowserList::FindBrowserWithProfile(dom_ui_->GetProfile());
+ if (browser)
+ browser->OpenClearBrowsingDataDialog();
}
void BrowsingHistoryHandler::QueryComplete(
diff --git a/chrome/browser/extensions/extension_dom_ui.cc b/chrome/browser/extensions/extension_dom_ui.cc
index 7cbe08f..550f45f 100644
--- a/chrome/browser/extensions/extension_dom_ui.cc
+++ b/chrome/browser/extensions/extension_dom_ui.cc
@@ -176,12 +176,9 @@ void ExtensionDOMUI::ProcessDOMUIMessage(const std::string& message,
}
Browser* ExtensionDOMUI::GetBrowser() const {
- Browser* browser = NULL;
- TabContentsDelegate* tab_contents_delegate = tab_contents()->delegate();
- if (tab_contents_delegate)
- browser = tab_contents_delegate->GetBrowser();
-
- return browser;
+ // TODO(beng): This is an improper direct dependency on Browser. Route this
+ // through some sort of delegate.
+ return BrowserList::FindBrowserWithProfile(DOMUI::GetProfile());
}
Profile* ExtensionDOMUI::GetProfile() {
diff --git a/chrome/browser/external_tab_container_win.h b/chrome/browser/external_tab_container_win.h
index 0db6625..031378e 100644
--- a/chrome/browser/external_tab_container_win.h
+++ b/chrome/browser/external_tab_container_win.h
@@ -148,8 +148,6 @@ class ExternalTabContainer : public TabContentsDelegate,
const NavigationEntry::SSLStatus& ssl,
bool show_history);
- virtual Browser* GetBrowser() { return browser_.get(); }
-
// Overriden from TabContentsDelegate::AutomationResourceRoutingDelegate
virtual void RegisterRenderViewHost(RenderViewHost* render_view_host);
virtual void UnregisterRenderViewHost(RenderViewHost* render_view_host);
diff --git a/chrome/browser/tab_contents/tab_contents.cc b/chrome/browser/tab_contents/tab_contents.cc
index 5ab30a2..41e644c 100644
--- a/chrome/browser/tab_contents/tab_contents.cc
+++ b/chrome/browser/tab_contents/tab_contents.cc
@@ -23,7 +23,6 @@
#include "chrome/browser/autofill/autofill_manager.h"
#include "chrome/browser/blocked_popup_container.h"
#include "chrome/browser/bookmarks/bookmark_model.h"
-#include "chrome/browser/browser.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/browser_shutdown.h"
#include "chrome/browser/cert_store.h"
@@ -539,13 +538,6 @@ void TabContents::SetExtensionAppById(const std::string& extension_app_id) {
}
SkBitmap* TabContents::GetExtensionAppIcon() {
- // We don't show the big icons in tabs for TYPE_EXTENSION_APP windows because
- // for those windows, we already have a big icon in the top-left outside any
- // tab. Having big tab icons too looks kinda redonk.
- Browser* browser = delegate_ ? delegate_->GetBrowser() : NULL;
- if (browser && browser->type() == Browser::TYPE_EXTENSION_APP)
- return NULL;
-
if (extension_app_icon_.empty())
return NULL;
diff --git a/chrome/browser/tab_contents/tab_contents_delegate.cc b/chrome/browser/tab_contents/tab_contents_delegate.cc
index 9cf9f88..8a03160 100644
--- a/chrome/browser/tab_contents/tab_contents_delegate.cc
+++ b/chrome/browser/tab_contents/tab_contents_delegate.cc
@@ -139,10 +139,6 @@ void TabContentsDelegate::OnDidGetApplicationInfo(TabContents* tab_contents,
int32 page_id) {
}
-Browser* TabContentsDelegate::GetBrowser() {
- return NULL;
-}
-
gfx::NativeWindow TabContentsDelegate::GetFrameNativeWindow() {
return NULL;
}
diff --git a/chrome/browser/tab_contents/tab_contents_delegate.h b/chrome/browser/tab_contents/tab_contents_delegate.h
index ff1f49b..c97483c 100644
--- a/chrome/browser/tab_contents/tab_contents_delegate.h
+++ b/chrome/browser/tab_contents/tab_contents_delegate.h
@@ -19,7 +19,6 @@
#include "webkit/glue/context_menu.h"
#include "webkit/glue/window_open_disposition.h"
-class Browser;
class DownloadItem;
class ExtensionFunctionDispatcher;
class GURL;
@@ -248,9 +247,6 @@ class TabContentsDelegate : public AutomationResourceRoutingDelegate {
virtual void OnDidGetApplicationInfo(TabContents* tab_contents,
int32 page_id);
- // Returns the browser in which the tab contents is being displayed.
- virtual Browser* GetBrowser();
-
// Returns the native window framing the view containing the tab contents.
virtual gfx::NativeWindow GetFrameNativeWindow();
diff --git a/chrome/browser/tabs/tab_strip_model.h b/chrome/browser/tabs/tab_strip_model.h
index f93bfc5..92cecfd 100644
--- a/chrome/browser/tabs/tab_strip_model.h
+++ b/chrome/browser/tabs/tab_strip_model.h
@@ -241,6 +241,9 @@ class TabStripModelDelegate {
// Toggles the use of the vertical tabstrip.
virtual void ToggleUseVerticalTabs() = 0;
+ // Returns true if the tab strip can use large icons.
+ virtual bool LargeIconsPermitted() const = 0;
+
protected:
virtual ~TabStripModelDelegate() {}
};
diff --git a/chrome/browser/tabs/tab_strip_model_unittest.cc b/chrome/browser/tabs/tab_strip_model_unittest.cc
index c885d5f..6f53630 100644
--- a/chrome/browser/tabs/tab_strip_model_unittest.cc
+++ b/chrome/browser/tabs/tab_strip_model_unittest.cc
@@ -80,6 +80,7 @@ class TabStripDummyDelegate : public TabStripModelDelegate {
virtual void BookmarkAllTabs() {}
virtual bool UseVerticalTabs() const { return false; }
virtual void ToggleUseVerticalTabs() {}
+ virtual bool LargeIconsPermitted() const { return true; }
private:
// A dummy TabContents we give to callers that expect us to actually build a
diff --git a/chrome/browser/views/frame/browser_view.cc b/chrome/browser/views/frame/browser_view.cc
index 0e11eaa..1df704d 100644
--- a/chrome/browser/views/frame/browser_view.cc
+++ b/chrome/browser/views/frame/browser_view.cc
@@ -1701,7 +1701,7 @@ void BrowserView::InitTabStrip(TabStripModel* model) {
}
BrowserTabStripController* tabstrip_controller =
- new BrowserTabStripController(model);
+ new BrowserTabStripController(browser_.get(), model);
if (UseVerticalTabs())
tabstrip_ = new SideTabStrip(tabstrip_controller);
diff --git a/chrome/browser/views/tabs/browser_tab_strip_controller.cc b/chrome/browser/views/tabs/browser_tab_strip_controller.cc
index 1221133..f0422f1 100644
--- a/chrome/browser/views/tabs/browser_tab_strip_controller.cc
+++ b/chrome/browser/views/tabs/browser_tab_strip_controller.cc
@@ -112,9 +112,11 @@ class BrowserTabStripController::TabContextMenuContents
////////////////////////////////////////////////////////////////////////////////
// BrowserTabStripController, public:
-BrowserTabStripController::BrowserTabStripController(TabStripModel* model)
+BrowserTabStripController::BrowserTabStripController(Browser* browser,
+ TabStripModel* model)
: model_(model),
- tabstrip_(NULL) {
+ tabstrip_(NULL),
+ browser_(browser) {
model_->AddObserver(this);
notification_registrar_.Add(this,
@@ -269,12 +271,7 @@ void BrowserTabStripController::CreateNewTab() {
UserMetrics::RecordAction(UserMetricsAction("NewTab_Button"),
model_->profile());
- TabContents* selected_tab = model_->GetSelectedTabContents();
- if (!selected_tab)
- return;
-
- Browser* browser = selected_tab->delegate()->GetBrowser();
- if (browser->OpenAppsPanelAsNewTab())
+ if (browser_ && browser_->OpenAppsPanelAsNewTab())
return;
model_->delegate()->AddBlankTab(true);
@@ -368,7 +365,13 @@ void BrowserTabStripController::SetTabRendererDataFromModel(
TabContents* contents,
int model_index,
TabRendererData* data) {
- SkBitmap* app_icon = contents->GetExtensionAppIcon();
+ SkBitmap* app_icon = NULL;
+
+ // Extension App icons are slightly larger than favicons, so only allow
+ // them if permitted by the model.
+ if (model_->delegate()->LargeIconsPermitted())
+ app_icon = contents->GetExtensionAppIcon();
+
if (app_icon)
data->favicon = *app_icon;
else
diff --git a/chrome/browser/views/tabs/browser_tab_strip_controller.h b/chrome/browser/views/tabs/browser_tab_strip_controller.h
index 662a0c1..e900413 100644
--- a/chrome/browser/views/tabs/browser_tab_strip_controller.h
+++ b/chrome/browser/views/tabs/browser_tab_strip_controller.h
@@ -13,6 +13,7 @@
class BaseTab;
class BaseTabStrip;
+class Browser;
struct TabRendererData;
@@ -22,7 +23,7 @@ class BrowserTabStripController : public TabStripController,
public TabStripModelObserver,
public NotificationObserver {
public:
- explicit BrowserTabStripController(TabStripModel* model);
+ BrowserTabStripController(Browser* browser, TabStripModel* model);
virtual ~BrowserTabStripController();
void InitFromModel(BaseTabStrip* tabstrip);
@@ -104,6 +105,9 @@ class BrowserTabStripController : public TabStripController,
BaseTabStrip* tabstrip_;
+ // Non-owning pointer to the browser which is using this controller.
+ Browser* browser_;
+
// If non-NULL it means we're showing a menu for the tab.
scoped_ptr<TabContextMenuContents> context_menu_contents_;