From a4fe67013ea54ca4f550d8c27b55b180fe0c4a70 Mon Sep 17 00:00:00 2001 From: "ben@chromium.org" Date: Wed, 25 Jul 2012 20:14:29 +0000 Subject: Consolidate Browser Creation. . Make all instantiators use a single ctor that takes CreateParams. . Get rid of InitBrowserWindow() and make CreateBrowserWindow() a anonymous namespace function in browser.cc http://crbug.com/133576 TEST=none Review URL: https://chromiumcodereview.appspot.com/10692195 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@148396 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/test/base/browser_with_test_window_test.cc | 7 ++-- chrome/test/base/in_process_browser_test.cc | 12 +++--- chrome/test/base/test_browser_window.cc | 47 ++++++++++++++++++++++- chrome/test/base/test_browser_window.h | 11 +++++- 4 files changed, 66 insertions(+), 11 deletions(-) (limited to 'chrome/test') diff --git a/chrome/test/base/browser_with_test_window_test.cc b/chrome/test/base/browser_with_test_window_test.cc index 8c3fcb4..85c5895 100644 --- a/chrome/test/base/browser_with_test_window_test.cc +++ b/chrome/test/base/browser_with_test_window_test.cc @@ -41,9 +41,10 @@ void BrowserWithTestWindowTest::SetUp() { testing::Test::SetUp(); set_profile(CreateProfile()); - browser_.reset(new Browser(Browser::TYPE_TABBED, profile())); - window_.reset(new TestBrowserWindow(browser())); - browser_->SetWindowForTesting(window_.get()); + window_.reset(new TestBrowserWindow); + Browser::CreateParams params(profile()); + params.window = window_.get(); + browser_.reset(new Browser(params)); #if defined(USE_AURA) aura_test_helper_.reset(new aura::test::AuraTestHelper(&ui_loop_)); aura_test_helper_->SetUp(); diff --git a/chrome/test/base/in_process_browser_test.cc b/chrome/test/base/in_process_browser_test.cc index f3fa9a5..f493a3a 100644 --- a/chrome/test/base/in_process_browser_test.cc +++ b/chrome/test/base/in_process_browser_test.cc @@ -237,22 +237,22 @@ bool InProcessBrowserTest::SetUpUserDataDirectory() { // Creates a browser with a single tab (about:blank), waits for the tab to // finish loading and shows the browser. Browser* InProcessBrowserTest::CreateBrowser(Profile* profile) { - Browser* browser = Browser::Create(profile); + Browser* browser = new Browser(Browser::CreateParams(profile)); AddBlankTabAndShow(browser); return browser; } Browser* InProcessBrowserTest::CreateIncognitoBrowser() { // Create a new browser with using the incognito profile. - Browser* incognito = - Browser::Create(browser()->profile()->GetOffTheRecordProfile()); + Browser* incognito = new Browser( + Browser::CreateParams(browser()->profile()->GetOffTheRecordProfile())); AddBlankTabAndShow(incognito); return incognito; } Browser* InProcessBrowserTest::CreateBrowserForPopup(Profile* profile) { - Browser* browser = Browser::CreateWithParams( - Browser::CreateParams(Browser::TYPE_POPUP, profile)); + Browser* browser = + new Browser(Browser::CreateParams(Browser::TYPE_POPUP, profile)); AddBlankTabAndShow(browser); return browser; } @@ -260,7 +260,7 @@ Browser* InProcessBrowserTest::CreateBrowserForPopup(Profile* profile) { Browser* InProcessBrowserTest::CreateBrowserForApp( const std::string& app_name, Profile* profile) { - Browser* browser = Browser::CreateWithParams( + Browser* browser = new Browser( Browser::CreateParams::CreateForApp( Browser::TYPE_POPUP, app_name, gfx::Rect(), profile)); AddBlankTabAndShow(browser); diff --git a/chrome/test/base/test_browser_window.cc b/chrome/test/base/test_browser_window.cc index a09b8e8..e489ed5 100644 --- a/chrome/test/base/test_browser_window.cc +++ b/chrome/test/base/test_browser_window.cc @@ -4,11 +4,13 @@ #include "chrome/test/base/test_browser_window.h" +#include "chrome/browser/ui/browser_list.h" +#include "chrome/browser/ui/browser_list_observer.h" #include "ui/gfx/rect.h" using content::NativeWebKeyboardEvent; -TestBrowserWindow::TestBrowserWindow(Browser* browser) {} +TestBrowserWindow::TestBrowserWindow() {} TestBrowserWindow::~TestBrowserWindow() {} @@ -130,3 +132,46 @@ WindowOpenDisposition TestBrowserWindow::GetDispositionForPopupBounds( FindBar* TestBrowserWindow::CreateFindBar() { return NULL; } + +namespace chrome { + +namespace { + +// Handles destroying a TestBrowserWindow when the Browser it is attached to is +// destroyed. +class TestBrowserWindowOwner : public chrome::BrowserListObserver { + public: + explicit TestBrowserWindowOwner(TestBrowserWindow* window) : window_(window) { + BrowserList::AddObserver(this); + } + virtual ~TestBrowserWindowOwner() { + BrowserList::RemoveObserver(this); + } + + private: + // Overridden from BrowserListObserver: + virtual void OnBrowserRemoved(Browser* browser) OVERRIDE { + if (browser->window() == window_.get()) + delete this; + } + + scoped_ptr window_; + + DISALLOW_COPY_AND_ASSIGN(TestBrowserWindowOwner); +}; + +} // namespace + +Browser* CreateBrowserWithTestWindowForProfile(Profile* profile) { + Browser::CreateParams params(profile); + return CreateBrowserWithTestWindowForParams(¶ms); +} + +Browser* CreateBrowserWithTestWindowForParams(Browser::CreateParams* params) { + TestBrowserWindow* window = new TestBrowserWindow; + new TestBrowserWindowOwner(window); + params->window = window; + return new Browser(*params); +} + +} // namespace chrome diff --git a/chrome/test/base/test_browser_window.h b/chrome/test/base/test_browser_window.h index 4ef2ab7..2a5c974 100644 --- a/chrome/test/base/test_browser_window.h +++ b/chrome/test/base/test_browser_window.h @@ -8,6 +8,7 @@ #include "base/basictypes.h" #include "base/compiler_specific.h" #include "build/build_config.h" +#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_window.h" #include "chrome/test/base/test_location_bar.h" @@ -20,7 +21,7 @@ class Extension; // See BrowserWithTestWindowTest for an example of using this class. class TestBrowserWindow : public BrowserWindow { public: - explicit TestBrowserWindow(Browser* browser); + TestBrowserWindow(); virtual ~TestBrowserWindow(); // BrowserWindow: @@ -150,4 +151,12 @@ class TestBrowserWindow : public BrowserWindow { DISALLOW_COPY_AND_ASSIGN(TestBrowserWindow); }; +namespace chrome { + +// Helpers that handle the lifetime of TestBrowserWindow instances. +Browser* CreateBrowserWithTestWindowForProfile(Profile* profile); +Browser* CreateBrowserWithTestWindowForParams(Browser::CreateParams* params); + +} // namespace chrome + #endif // CHROME_TEST_BASE_TEST_BROWSER_WINDOW_H_ -- cgit v1.1