summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorerg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-23 05:56:05 +0000
committererg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-23 05:56:05 +0000
commit953c213eca4dd064d59574f0950025a5c0ced921 (patch)
treedad2c2d7a3de2f2e8a505c8f29c256784e1ec085
parent698f713aaa0e4012421e22801be446328852ba96 (diff)
downloadchromium_src-953c213eca4dd064d59574f0950025a5c0ced921.zip
chromium_src-953c213eca4dd064d59574f0950025a5c0ced921.tar.gz
chromium_src-953c213eca4dd064d59574f0950025a5c0ced921.tar.bz2
Enable browser_tests on linux_aura.
This patch is two parts: - Disables some of the remaining failing/flaky tests so we can turn the rest of browser_tests on. - Fix several places where we try to pass empty sizes to X11. BUG=167114, 163931, 173621 Review URL: https://chromiumcodereview.appspot.com/11818065 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@184284 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--base/message_pump_aurax11.cc7
-rw-r--r--chrome/browser/autofill/form_structure_browsertest.cc4
-rw-r--r--chrome/browser/download/save_page_browsertest.cc18
-rw-r--r--chrome/browser/extensions/api/app_window/app_window_apitest.cc3
-rw-r--r--chrome/browser/extensions/extension_url_rewrite_browsertest.cc8
-rw-r--r--chrome/browser/extensions/platform_app_browsertest.cc8
-rw-r--r--chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc8
-rw-r--r--chrome/browser/ui/browser_browsertest.cc24
-rw-r--r--chrome/browser/ui/browser_navigator_browsertest.cc8
-rw-r--r--chrome/browser/ui/panels/panel_extension_browsertest.cc9
-rw-r--r--chrome/browser/ui/views/extensions/native_app_window_views.cc2
-rw-r--r--chrome/browser/ui/views/location_bar/star_view_browsertest.cc7
-rw-r--r--chrome/browser/ui/webui/bookmarks_ui_browsertest.cc10
-rw-r--r--chrome/test/base/chrome_test_launcher.cc17
-rw-r--r--ui/views/widget/desktop_aura/desktop_root_window_host_linux.cc20
-rw-r--r--ui/views/widget/widget.cc3
16 files changed, 129 insertions, 27 deletions
diff --git a/base/message_pump_aurax11.cc b/base/message_pump_aurax11.cc
index 9ba7989..8c764d5 100644
--- a/base/message_pump_aurax11.cc
+++ b/base/message_pump_aurax11.cc
@@ -91,7 +91,14 @@ Window FindEventTarget(const base::NativeEvent& xev) {
if (xev->type == GenericEvent &&
static_cast<XIEvent*>(xev->xcookie.data)->extension == g_xinput_opcode) {
target = static_cast<XIDeviceEvent*>(xev->xcookie.data)->event;
+ } else if (xev->type == MapNotify) {
+ target = xev->xmap.window;
+ } else if (xev->type == UnmapNotify) {
+ target = xev->xunmap.window;
}
+ // TODO(erg): Are there other events that we aren't reacting to properly
+ // because xev->xany.window != xev->eventname.window?
+
return target;
}
diff --git a/chrome/browser/autofill/form_structure_browsertest.cc b/chrome/browser/autofill/form_structure_browsertest.cc
index a4bb651..438b0fb 100644
--- a/chrome/browser/autofill/form_structure_browsertest.cc
+++ b/chrome/browser/autofill/form_structure_browsertest.cc
@@ -87,8 +87,8 @@ std::string FormStructureBrowserTest::FormStructuresToString(
}
// Heuristics tests timeout on Windows. See http://crbug.com/85276
-// Also on ChromeOS. See crbug.com/173621
-#if defined(OS_WIN) || defined(OS_CHROMEOS)
+// Also on ChromeOS/Aura. See crbug.com/173621
+#if defined(OS_WIN) || defined(USE_AURA)
#define MAYBE_DataDrivenHeuristics(n) DISABLED_DataDrivenHeuristics##n
#else
#define MAYBE_DataDrivenHeuristics(n) DataDrivenHeuristics##n
diff --git a/chrome/browser/download/save_page_browsertest.cc b/chrome/browser/download/save_page_browsertest.cc
index f011a12..8070b1d 100644
--- a/chrome/browser/download/save_page_browsertest.cc
+++ b/chrome/browser/download/save_page_browsertest.cc
@@ -377,7 +377,8 @@ SavePageBrowserTest::~SavePageBrowserTest() {
}
// Disabled on Windows due to flakiness. http://crbug.com/162323
-#if defined(OS_WIN)
+// TODO(linux_aura) http://crbug.com/163931
+#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA))
#define MAYBE_SaveHTMLOnly DISABLED_SaveHTMLOnly
#else
#define MAYBE_SaveHTMLOnly SaveHTMLOnly
@@ -408,7 +409,8 @@ IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, MAYBE_SaveHTMLOnly) {
}
// Disabled on Windows due to flakiness. http://crbug.com/162323
-#if defined(OS_WIN)
+// TODO(linux_aura) http://crbug.com/163931
+#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA))
#define MAYBE_SaveHTMLOnlyCancel DISABLED_SaveHTMLOnlyCancel
#else
#define MAYBE_SaveHTMLOnlyCancel SaveHTMLOnlyCancel
@@ -473,7 +475,8 @@ IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, SaveHTMLOnlyTabDestroy) {
}
// Disabled on Windows due to flakiness. http://crbug.com/162323
-#if defined(OS_WIN)
+// TODO(linux_aura) http://crbug.com/163931
+#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA))
#define MAYBE_SaveViewSourceHTMLOnly DISABLED_SaveViewSourceHTMLOnly
#else
#define MAYBE_SaveViewSourceHTMLOnly SaveViewSourceHTMLOnly
@@ -512,7 +515,8 @@ IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, MAYBE_SaveViewSourceHTMLOnly) {
}
// Disabled on Windows due to flakiness. http://crbug.com/162323
-#if defined(OS_WIN)
+// TODO(linux_aura) http://crbug.com/163931
+#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA))
#define MAYBE_SaveCompleteHTML DISABLED_SaveCompleteHTML
#else
#define MAYBE_SaveCompleteHTML SaveCompleteHTML
@@ -606,7 +610,8 @@ IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, NoSave) {
}
// Disabled on Windows due to flakiness. http://crbug.com/162323
-#if defined(OS_WIN)
+// TODO(linux_aura) http://crbug.com/163931
+#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA))
#define MAYBE_FileNameFromPageTitle DISABLED_FileNameFromPageTitle
#else
#define MAYBE_FileNameFromPageTitle FileNameFromPageTitle
@@ -649,7 +654,8 @@ IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, MAYBE_FileNameFromPageTitle) {
}
// Disabled on Windows due to flakiness. http://crbug.com/162323
-#if defined(OS_WIN)
+// TODO(linux_aura) http://crbug.com/163931
+#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA))
#define MAYBE_RemoveFromList DISABLED_RemoveFromList
#else
#define MAYBE_RemoveFromList RemoveFromList
diff --git a/chrome/browser/extensions/api/app_window/app_window_apitest.cc b/chrome/browser/extensions/api/app_window/app_window_apitest.cc
index 0c40318..7d4e0e3 100644
--- a/chrome/browser/extensions/api/app_window/app_window_apitest.cc
+++ b/chrome/browser/extensions/api/app_window/app_window_apitest.cc
@@ -124,7 +124,8 @@ IN_PROC_BROWSER_TEST_F(ExperimentalPlatformAppBrowserTest, WindowsApiSetIcon) {
// TODO(asargent) - Figure out what to do about the fact that minimize events
// don't work under ubuntu unity.
// (crbug.com/162794 and https://bugs.launchpad.net/unity/+bug/998073).
-#if defined(TOOLKIT_VIEWS) || defined(OS_MACOSX)
+// TODO(linux_aura) http://crbug.com/163931
+#if (defined(TOOLKIT_VIEWS) || defined(OS_MACOSX)) && !(defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA))
IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, WindowsApiProperties) {
EXPECT_TRUE(
diff --git a/chrome/browser/extensions/extension_url_rewrite_browsertest.cc b/chrome/browser/extensions/extension_url_rewrite_browsertest.cc
index 15b469d..b0a57a3 100644
--- a/chrome/browser/extensions/extension_url_rewrite_browsertest.cc
+++ b/chrome/browser/extensions/extension_url_rewrite_browsertest.cc
@@ -93,7 +93,13 @@ IN_PROC_BROWSER_TEST_F(ExtensionURLRewriteBrowserTest, NewTabPageURLOverride) {
extensions::kExtensionScheme));
}
-IN_PROC_BROWSER_TEST_F(ExtensionURLRewriteBrowserTest, BookmarksURL) {
+// TODO(linux_aura) http://crbug.com/163931
+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA)
+#define MAYBE_BookmarksURL DISABLED_BookmarksURL
+#else
+#define MAYBE_BookmarksURL BookmarksURL
+#endif
+IN_PROC_BROWSER_TEST_F(ExtensionURLRewriteBrowserTest, MAYBE_BookmarksURL) {
// Navigate to chrome://bookmarks and check that the location bar URL is
// what was entered and the internal URL uses the chrome-extension:// scheme.
TestExtensionURLOverride(GURL(chrome::kChromeUIBookmarksURL));
diff --git a/chrome/browser/extensions/platform_app_browsertest.cc b/chrome/browser/extensions/platform_app_browsertest.cc
index 14b7645..256388d 100644
--- a/chrome/browser/extensions/platform_app_browsertest.cc
+++ b/chrome/browser/extensions/platform_app_browsertest.cc
@@ -786,7 +786,13 @@ IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, MAYBE_Messaging) {
EXPECT_TRUE(result_catcher.GetNextResult());
}
-IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, WebContentsHasFocus) {
+// TODO(linux_aura) http://crbug.com/163931
+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA)
+#define MAYBE_WebContentsHasFocus DISABLED_WebContentsHasFocus
+#else
+#define MAYBE_WebContentsHasFocus WebContentsHasFocus
+#endif
+IN_PROC_BROWSER_TEST_F(PlatformAppBrowserTest, MAYBE_WebContentsHasFocus) {
const Extension* extension = LoadAndLaunchPlatformApp("minimal");
ShellWindow* window = CreateShellWindow(extension);
EXPECT_TRUE(window->web_contents()->GetRenderWidgetHostView()->HasFocus());
diff --git a/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc b/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc
index 516708dd..90cb309 100644
--- a/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc
+++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc
@@ -561,8 +561,14 @@ class SafeBrowsingBlockingPageTest : public InProcessBrowserTest {
DISALLOW_COPY_AND_ASSIGN(SafeBrowsingBlockingPageTest);
};
+// TODO(linux_aura) http://crbug.com/163931
+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA)
+#define MAYBE_MalwareRedirectInIFrameCanceled DISABLED_MalwareRedirectInIFrameCanceled
+#else
+#define MAYBE_MalwareRedirectInIFrameCanceled MalwareRedirectInIFrameCanceled
+#endif
IN_PROC_BROWSER_TEST_F(SafeBrowsingBlockingPageTest,
- MalwareRedirectInIFrameCanceled) {
+ MAYBE_MalwareRedirectInIFrameCanceled) {
// 1. Test the case that redirect is a subresource.
MalwareRedirectCancelAndProceed("openWinIFrame");
// If the redirect was from subresource but canceled, "proceed" will continue
diff --git a/chrome/browser/ui/browser_browsertest.cc b/chrome/browser/ui/browser_browsertest.cc
index 56e4de2..3908a6a 100644
--- a/chrome/browser/ui/browser_browsertest.cc
+++ b/chrome/browser/ui/browser_browsertest.cc
@@ -1077,7 +1077,13 @@ IN_PROC_BROWSER_TEST_F(BrowserTest, RestorePinnedTabs) {
// This test verifies we don't crash when closing the last window and the app
// menu is showing.
-IN_PROC_BROWSER_TEST_F(BrowserTest, CloseWithAppMenuOpen) {
+// TODO(linux_aura) http://crbug.com/163931
+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA)
+#define MAYBE_CloseWithAppMenuOpen DISABLED_CloseWithAppMenuOpen
+#else
+#define MAYBE_CloseWithAppMenuOpen CloseWithAppMenuOpen
+#endif
+IN_PROC_BROWSER_TEST_F(BrowserTest, MAYBE_CloseWithAppMenuOpen) {
if (browser_defaults::kBrowserAliveWithNoWindows)
return;
@@ -1951,7 +1957,13 @@ IN_PROC_BROWSER_TEST_F(ClickModifierTest, WindowOpenControlShiftClickTest) {
}
// Middle-clicks open in a background tab.
-IN_PROC_BROWSER_TEST_F(ClickModifierTest, WindowOpenMiddleClickTest) {
+// TODO(linux_aura) http://crbug.com/163931
+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA)
+#define MAYBE_WindowOpenMiddleClickTest DISABLED_WindowOpenMiddleClickTest
+#else
+#define MAYBE_WindowOpenMiddleClickTest WindowOpenMiddleClickTest
+#endif
+IN_PROC_BROWSER_TEST_F(ClickModifierTest, MAYBE_WindowOpenMiddleClickTest) {
int modifiers = 0;
WebKit::WebMouseEvent::Button button = WebKit::WebMouseEvent::ButtonMiddle;
WindowOpenDisposition disposition = NEW_BACKGROUND_TAB;
@@ -2014,7 +2026,13 @@ IN_PROC_BROWSER_TEST_F(ClickModifierTest, HrefControlShiftClickTest) {
}
// Middle-clicks open in a background tab.
-IN_PROC_BROWSER_TEST_F(ClickModifierTest, HrefMiddleClickTest) {
+// TODO(linux_aura) http://crbug.com/163931
+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA)
+#define MAYBE_HrefMiddleClickTest DISABLED_HrefMiddleClickTest
+#else
+#define MAYBE_HrefMiddleClickTest HrefMiddleClickTest
+#endif
+IN_PROC_BROWSER_TEST_F(ClickModifierTest, MAYBE_HrefMiddleClickTest) {
int modifiers = 0;
WebKit::WebMouseEvent::Button button = WebKit::WebMouseEvent::ButtonMiddle;
WindowOpenDisposition disposition = NEW_BACKGROUND_TAB;
diff --git a/chrome/browser/ui/browser_navigator_browsertest.cc b/chrome/browser/ui/browser_navigator_browsertest.cc
index 1fd1cda..a061a20 100644
--- a/chrome/browser/ui/browser_navigator_browsertest.cc
+++ b/chrome/browser/ui/browser_navigator_browsertest.cc
@@ -1194,8 +1194,14 @@ IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest,
browser()->tab_strip_model()->GetActiveWebContents()->GetURL());
}
+// TODO(linux_aura) http://crbug.com/163931
+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA)
+#define MAYBE_NavigateFromDefaultToBookmarksInSameTab DISABLED_NavigateFromDefaultToBookmarksInSameTab
+#else
+#define MAYBE_NavigateFromDefaultToBookmarksInSameTab NavigateFromDefaultToBookmarksInSameTab
+#endif
IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest,
- NavigateFromDefaultToBookmarksInSameTab) {
+ MAYBE_NavigateFromDefaultToBookmarksInSameTab) {
{
content::WindowedNotificationObserver observer(
content::NOTIFICATION_LOAD_STOP,
diff --git a/chrome/browser/ui/panels/panel_extension_browsertest.cc b/chrome/browser/ui/panels/panel_extension_browsertest.cc
index 34277a4..6f4a56a 100644
--- a/chrome/browser/ui/panels/panel_extension_browsertest.cc
+++ b/chrome/browser/ui/panels/panel_extension_browsertest.cc
@@ -101,8 +101,15 @@ IN_PROC_BROWSER_TEST_F(PanelExtensionBrowserTest, PanelAppIcon) {
// Tests that icon loading might not be completed when the panel is closed.
// (crbug.com/151484)
+//
+// TODO(linux_aura) http://crbug.com/163931
+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA)
+#define MAYBE_ClosePanelBeforeIconLoadingCompleted DISABLED_ClosePanelBeforeIconLoadingCompleted
+#else
+#define MAYBE_ClosePanelBeforeIconLoadingCompleted ClosePanelBeforeIconLoadingCompleted
+#endif
IN_PROC_BROWSER_TEST_F(PanelExtensionBrowserTest,
- ClosePanelBeforeIconLoadingCompleted) {
+ MAYBE_ClosePanelBeforeIconLoadingCompleted) {
const Extension* extension =
LoadExtension(test_data_dir_.AppendASCII("test_extension"));
Panel* panel = CreatePanelFromExtension(extension);
diff --git a/chrome/browser/ui/views/extensions/native_app_window_views.cc b/chrome/browser/ui/views/extensions/native_app_window_views.cc
index 9963e2e..e03fb9b 100644
--- a/chrome/browser/ui/views/extensions/native_app_window_views.cc
+++ b/chrome/browser/ui/views/extensions/native_app_window_views.cc
@@ -121,7 +121,7 @@ void NativeAppWindowViews::InitializeDefaultWindow(
if (create_params.bounds.x() == INT_MIN ||
create_params.bounds.y() == INT_MIN) {
window_->CenterWindow(window_bounds.size());
- } else {
+ } else if (!window_bounds.IsEmpty()) {
window_->SetBounds(window_bounds);
}
diff --git a/chrome/browser/ui/views/location_bar/star_view_browsertest.cc b/chrome/browser/ui/views/location_bar/star_view_browsertest.cc
index f6640ca..ea635fc 100644
--- a/chrome/browser/ui/views/location_bar/star_view_browsertest.cc
+++ b/chrome/browser/ui/views/location_bar/star_view_browsertest.cc
@@ -15,7 +15,12 @@ typedef InProcessBrowserTest StarViewTest;
// Verify that clicking the bookmark star a second time hides the bookmark
// bubble.
-IN_PROC_BROWSER_TEST_F(StarViewTest, HideOnSecondClick) {
+#if defined(OS_LINUX) && defined(USE_AURA) && !defined(OS_CHROMEOS)
+#define MAYBE_HideOnSecondClick DISABLED_HideOnSecondClick
+#else
+#define MAYBE_HideOnSecondClick HideOnSecondClick
+#endif
+IN_PROC_BROWSER_TEST_F(StarViewTest, MAYBE_HideOnSecondClick) {
BrowserView* browser_view = reinterpret_cast<BrowserView*>(
browser()->window());
views::ImageView* star_view =
diff --git a/chrome/browser/ui/webui/bookmarks_ui_browsertest.cc b/chrome/browser/ui/webui/bookmarks_ui_browsertest.cc
index 3ac942d..80c8dfc 100644
--- a/chrome/browser/ui/webui/bookmarks_ui_browsertest.cc
+++ b/chrome/browser/ui/webui/bookmarks_ui_browsertest.cc
@@ -59,8 +59,16 @@ IN_PROC_BROWSER_TEST_F(BookmarksTest, CommandOpensBookmarksTab) {
AssertIsBookmarksPage(browser()->tab_strip_model()->GetActiveWebContents());
}
+// TODO(linux_aura) http://crbug.com/163931
+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA)
+#define MAYBE_CommandAgainGoesBackToBookmarksTab DISABLED_CommandAgainGoesBackToBookmarksTab
+#else
+#define MAYBE_CommandAgainGoesBackToBookmarksTab CommandAgainGoesBackToBookmarksTab
+#endif
+
// If this flakes on Mac, use: http://crbug.com/87200
-IN_PROC_BROWSER_TEST_F(BookmarksTest, CommandAgainGoesBackToBookmarksTab) {
+IN_PROC_BROWSER_TEST_F(BookmarksTest,
+ MAYBE_CommandAgainGoesBackToBookmarksTab) {
ui_test_utils::NavigateToURL(
browser(),
ui_test_utils::GetTestUrl(base::FilePath(),
diff --git a/chrome/test/base/chrome_test_launcher.cc b/chrome/test/base/chrome_test_launcher.cc
index 704862e..e39dd70f 100644
--- a/chrome/test/base/chrome_test_launcher.cc
+++ b/chrome/test/base/chrome_test_launcher.cc
@@ -7,14 +7,18 @@
#include <stack>
#include "base/command_line.h"
+#include "base/file_path.h"
+#include "base/file_util.h"
#include "base/logging.h"
#include "base/memory/linked_ptr.h"
+#include "base/process_util.h"
#include "base/run_loop.h"
#include "base/string_util.h"
#include "base/test/test_file_util.h"
#include "chrome/app/chrome_main_delegate.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/chrome_constants.h"
+#include "chrome/common/chrome_switches.h"
#include "chrome/test/base/chrome_test_suite.h"
#include "content/public/app/content_main.h"
#include "content/public/browser/browser_thread.h"
@@ -115,9 +119,18 @@ class ChromeTestLauncherDelegate : public content::TestLauncherDelegate {
};
int main(int argc, char** argv) {
-// http://crbug.com/163931 Disabled until browser_tests ready on Linux Aura.
+// http://crbug.com/163931 Disabled until interactive_ui_tests ready on Linux
+// Aura.
#if defined(OS_LINUX) && defined(USE_AURA) && !defined(OS_CHROMEOS)
- return 0;
+ base::FilePath bin_dir;
+ CHECK(file_util::ReadSymbolicLink(
+ base::FilePath(base::kProcSelfExe), &bin_dir));
+ std::string filename = bin_dir.value();
+ // http://crbug.com/154081: early exit until interactive_ui_tests are green.
+ if (EndsWith(filename, "interactive_ui_tests", false)) {
+ LOG(INFO) << "interactive_ui_tests on Linux Aura are not ready yet.";
+ return 0;
+ }
#endif
#if defined(OS_MACOSX)
diff --git a/ui/views/widget/desktop_aura/desktop_root_window_host_linux.cc b/ui/views/widget/desktop_aura/desktop_root_window_host_linux.cc
index 0314487..6f7b895 100644
--- a/ui/views/widget/desktop_aura/desktop_root_window_host_linux.cc
+++ b/ui/views/widget/desktop_aura/desktop_root_window_host_linux.cc
@@ -449,10 +449,18 @@ gfx::Rect DesktopRootWindowHostLinux::GetWorkAreaBoundsInScreen() const {
return gfx::Rect(value[0], value[1], value[2], value[3]);
}
- // TODO(erg): As a fallback, we should return the bounds for the current
- // monitor. However, that's pretty difficult and requires futzing with XRR.
- NOTIMPLEMENTED();
- return gfx::Rect();
+ // Fetch the geometry of the root window.
+ Window root;
+ int x, y;
+ unsigned int width, height;
+ unsigned int border_width, depth;
+ if (!XGetGeometry(xdisplay_, x_root_window_, &root, &x, &y,
+ &width, &height, &border_width, &depth)) {
+ NOTIMPLEMENTED();
+ return gfx::Rect(0, 0, 10, 10);
+ }
+
+ return gfx::Rect(x, y, width, height);
}
void DesktopRootWindowHostLinux::SetShape(gfx::NativeRegion native_region) {
@@ -690,6 +698,10 @@ void DesktopRootWindowHostLinux::SetBounds(const gfx::Rect& bounds) {
unsigned value_mask = 0;
if (size_changed) {
+ // X11 will send an XError at our process if have a 0 sized window.
+ DCHECK_GT(bounds.width(), 0);
+ DCHECK_GT(bounds.height(), 0);
+
changes.width = bounds.width();
changes.height = bounds.height();
value_mask |= CWHeight | CWWidth;
diff --git a/ui/views/widget/widget.cc b/ui/views/widget/widget.cc
index 9a9ad4b..a22691d 100644
--- a/ui/views/widget/widget.cc
+++ b/ui/views/widget/widget.cc
@@ -1354,7 +1354,8 @@ void Widget::SetInitialBounds(const gfx::Rect& bounds) {
// If we're going to maximize, wait until Show is invoked to set the
// bounds. That way we avoid a noticeable resize.
initial_restored_bounds_ = saved_bounds;
- } else {
+ } else if (!saved_bounds.IsEmpty()) {
+ // If the saved bounds are valid, use them.
SetBounds(saved_bounds);
}
} else {