summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-28 16:25:14 +0000
committersky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-28 16:25:14 +0000
commitde4943f2cb9c8ce44812b94efa878bfb1c0f5e97 (patch)
tree95646f1151727c6f6df63df3189ed8b55a7ab8ac
parent03b2dba54bfbc9cc9cce3ff08f8ca8101d891956 (diff)
downloadchromium_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.h2
-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.cc6
-rw-r--r--chrome/chrome_tests.gypi4
-rw-r--r--chrome/test/in_process_browser_test.cc32
-rw-r--r--chrome/test/in_process_browser_test.h4
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() {