diff options
author | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-28 16:25:14 +0000 |
---|---|---|
committer | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-28 16:25:14 +0000 |
commit | de4943f2cb9c8ce44812b94efa878bfb1c0f5e97 (patch) | |
tree | 95646f1151727c6f6df63df3189ed8b55a7ab8ac | |
parent | 03b2dba54bfbc9cc9cce3ff08f8ca8101d891956 (diff) | |
download | chromium_src-de4943f2cb9c8ce44812b94efa878bfb1c0f5e97.zip chromium_src-de4943f2cb9c8ce44812b94efa878bfb1c0f5e97.tar.gz chromium_src-de4943f2cb9c8ce44812b94efa878bfb1c0f5e97.tar.bz2 |
Attempt 2 at:
Adds a test to make sure Chrome doesn't crash on startup when
configure to open maximized. Also, I'm making OnWidgetMove a little
less error prone.
BUG=89843
TEST=none
R=pkasting@chromium.org
TBR=pkasting@chromium.org
Review URL: http://codereview.chromium.org/7514044
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@94476 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/ui/browser.h | 2 | ||||
-rw-r--r-- | chrome/browser/ui/browser_browsertest.cc (renamed from chrome/browser/browser_browsertest.cc) | 14 | ||||
-rw-r--r-- | chrome/browser/ui/views/frame/browser_view.cc | 6 | ||||
-rw-r--r-- | chrome/chrome_tests.gypi | 4 | ||||
-rw-r--r-- | chrome/test/in_process_browser_test.cc | 32 | ||||
-rw-r--r-- | chrome/test/in_process_browser_test.h | 4 |
6 files changed, 42 insertions, 20 deletions
diff --git a/chrome/browser/ui/browser.h b/chrome/browser/ui/browser.h index 09073c0..01e0a77 100644 --- a/chrome/browser/ui/browser.h +++ b/chrome/browser/ui/browser.h @@ -82,6 +82,8 @@ class Browser : public TabHandlerDelegate, // enum, look at SessionService::WindowType to see if it needs to be // updated. enum Type { + // If you add a new type, consider updating the test + // BrowserTest.StartMaximized. TYPE_TABBED = 1, TYPE_POPUP = 2, TYPE_PANEL = 3, diff --git a/chrome/browser/browser_browsertest.cc b/chrome/browser/ui/browser_browsertest.cc index 9c191c2b..0b20a83 100644 --- a/chrome/browser/browser_browsertest.cc +++ b/chrome/browser/ui/browser_browsertest.cc @@ -771,6 +771,20 @@ IN_PROC_BROWSER_TEST_F(BrowserTest, OpenAppWindowLikeNtp) { } #endif // !defined(OS_MACOSX) +// Makes sure the browser doesn't crash when +// set_maximized_state(MAXIMIZED_STATE_MAXIMIZED) has been invoked. +IN_PROC_BROWSER_TEST_F(BrowserTest, StartMaximized) { + // Can't test TYPE_PANEL as they are currently created differently (and can't + // end up maximized). + Browser::Type types[] = { Browser::TYPE_TABBED, Browser::TYPE_POPUP }; + for (size_t i = 0; i < ARRAYSIZE_UNSAFE(types); ++i) { + Browser* max_browser = new Browser(types[i], browser()->profile()); + max_browser->set_maximized_state(Browser::MAXIMIZED_STATE_MAXIMIZED); + max_browser->InitBrowserWindow(); + AddBlankTabAndShow(max_browser); + } +} + // TODO(ben): this test was never enabled. It has bit-rotted since being added. // It originally lived in browser_unittest.cc, but has been moved here to make // room for real browser unit tests. diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc index 1bb72e8..9d053ed 100644 --- a/chrome/browser/ui/views/frame/browser_view.cc +++ b/chrome/browser/ui/views/frame/browser_view.cc @@ -1686,6 +1686,12 @@ void BrowserView::OnWindowBeginUserBoundsChange() { } void BrowserView::OnWidgetMove() { + if (!initialized_) { + // Creating the widget can trigger a move. Ignore it until we've initialized + // things. + return; + } + // Cancel any tabstrip animations, some of them may be invalidated by the // window being repositioned. // Comment out for one cycle to see if this fixes dist tests. diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi index b181bc4..cbf6f88 100644 --- a/chrome/chrome_tests.gypi +++ b/chrome/chrome_tests.gypi @@ -2394,7 +2394,6 @@ 'browser/autocomplete/autocomplete_browsertest.cc', 'browser/autofill/form_structure_browsertest.cc', 'browser/automation/automation_tab_helper_browsertest.cc', - 'browser/browser_browsertest.cc', 'browser/browsing_data_database_helper_browsertest.cc', 'browser/browsing_data_helper_browsertest.h', 'browser/browsing_data_indexed_db_helper_browsertest.cc', @@ -2551,7 +2550,6 @@ 'browser/geolocation/access_token_store_browsertest.cc', 'browser/geolocation/geolocation_browsertest.cc', 'browser/gpu_browsertest.cc', - 'browser/ui/gtk/view_id_util_browsertest.cc', 'browser/history/history_browsertest.cc', 'browser/idbbindingutilities_browsertest.cc', 'browser/importer/toolbar_importer_utils_browsertest.cc', @@ -2578,6 +2576,7 @@ 'browser/task_manager/task_manager_browsertest.cc', 'browser/task_manager/task_manager_notification_browsertest.cc', 'browser/translate/translate_manager_browsertest.cc', + 'browser/ui/browser_browsertest.cc', 'browser/ui/browser_init_browsertest.cc', 'browser/ui/browser_navigator_browsertest.cc', 'browser/ui/browser_navigator_browsertest.h', @@ -2586,6 +2585,7 @@ 'browser/ui/cocoa/applescript/browsercrapplication+applescript_test.mm', 'browser/ui/cocoa/applescript/window_applescript_test.mm', 'browser/ui/find_bar/find_bar_host_browsertest.cc', + 'browser/ui/gtk/view_id_util_browsertest.cc', 'browser/ui/login/login_prompt_browsertest.cc', 'browser/ui/panels/panel_app_browsertest.cc', 'browser/ui/panels/panel_browsertest.cc', diff --git a/chrome/test/in_process_browser_test.cc b/chrome/test/in_process_browser_test.cc index f8f882d..195ed7e 100644 --- a/chrome/test/in_process_browser_test.cc +++ b/chrome/test/in_process_browser_test.cc @@ -54,21 +54,6 @@ #include "chrome/browser/chromeos/audio_handler.h" #endif -namespace { - -void InitializeBrowser(Browser* browser) { - browser->AddSelectedTabWithURL(GURL(chrome::kAboutBlankURL), - PageTransition::START_PAGE); - - // Wait for the page to finish loading. - ui_test_utils::WaitForNavigation( - &browser->GetSelectedTabContents()->controller()); - - browser->window()->Show(); -} - -} // namespace - extern int BrowserMain(const MainFunctionParams&); const char kUnitTestShowWindows[] = "show-windows"; @@ -274,7 +259,7 @@ bool InProcessBrowserTest::SetUpUserDataDirectory() { // finish loading and shows the browser. Browser* InProcessBrowserTest::CreateBrowser(Profile* profile) { Browser* browser = Browser::Create(profile); - InitializeBrowser(browser); + AddBlankTabAndShow(browser); return browser; } @@ -282,16 +267,27 @@ Browser* InProcessBrowserTest::CreateIncognitoBrowser() { // Create a new browser with using the incognito profile. Browser* incognito = Browser::Create(browser()->profile()->GetOffTheRecordProfile()); - InitializeBrowser(incognito); + AddBlankTabAndShow(incognito); return incognito; } Browser* InProcessBrowserTest::CreateBrowserForPopup(Profile* profile) { Browser* browser = Browser::CreateForType(Browser::TYPE_POPUP, profile); - InitializeBrowser(browser); + AddBlankTabAndShow(browser); return browser; } +void InProcessBrowserTest::AddBlankTabAndShow(Browser* browser) { + browser->AddSelectedTabWithURL( + GURL(chrome::kAboutBlankURL), PageTransition::START_PAGE); + + // Wait for the page to finish loading. + ui_test_utils::WaitForNavigation( + &browser->GetSelectedTabContents()->controller()); + + browser->window()->Show(); +} + void InProcessBrowserTest::RunTestOnMainThreadLoop() { #if defined(OS_POSIX) // Restore default signal handler for SIGTERM, so when the out-of-process diff --git a/chrome/test/in_process_browser_test.h b/chrome/test/in_process_browser_test.h index 4055321..10693b2 100644 --- a/chrome/test/in_process_browser_test.h +++ b/chrome/test/in_process_browser_test.h @@ -156,6 +156,10 @@ class InProcessBrowserTest : public testing::Test { // for the tab to finish loading, and shows the browser. Browser* CreateBrowserForPopup(Profile* profile); + // Called from the various CreateBrowser methods to add a blank tab, wait for + // the navigation to complete, and show the browser's window. + void AddBlankTabAndShow(Browser* browser); + // Returns the host resolver being used for the tests. Subclasses might want // to configure it inside tests. net::RuleBasedHostResolverProc* host_resolver() { |