Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Side by Side Diff: ui/views/widget/desktop_aura/x11_topmost_window_finder_interactive_uitest.cc

Issue 356353002: Reenable X11TopmostWindowFinderTests (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ui/views/views.gyp ('k') | ui/views/widget/desktop_aura/x11_topmost_window_finder_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/views/widget/desktop_aura/x11_topmost_window_finder.h" 5 #include "ui/views/widget/desktop_aura/x11_topmost_window_finder.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 #include <X11/extensions/shape.h> 9 #include <X11/extensions/shape.h>
10 #include <X11/Xlib.h> 10 #include <X11/Xlib.h>
11 #include <X11/Xregion.h> 11 #include <X11/Xregion.h>
12 12
13 // Get rid of X11 macros which conflict with gtest. 13 // Get rid of X11 macros which conflict with gtest.
14 #undef Bool 14 #undef Bool
15 #undef None 15 #undef None
16 16
17 #include "base/memory/scoped_ptr.h" 17 #include "base/memory/scoped_ptr.h"
18 #include "base/path_service.h"
18 #include "third_party/skia/include/core/SkRect.h" 19 #include "third_party/skia/include/core/SkRect.h"
19 #include "third_party/skia/include/core/SkRegion.h" 20 #include "third_party/skia/include/core/SkRegion.h"
20 #include "ui/aura/window.h" 21 #include "ui/aura/window.h"
21 #include "ui/aura/window_tree_host.h" 22 #include "ui/aura/window_tree_host.h"
23 #include "ui/base/resource/resource_bundle.h"
24 #include "ui/base/ui_base_paths.h"
22 #include "ui/events/platform/x11/x11_event_source.h" 25 #include "ui/events/platform/x11/x11_event_source.h"
23 #include "ui/gfx/path.h" 26 #include "ui/gfx/path.h"
24 #include "ui/gfx/path_x11.h" 27 #include "ui/gfx/path_x11.h"
25 #include "ui/gfx/x/x11_atom_cache.h" 28 #include "ui/gfx/x/x11_atom_cache.h"
29 #include "ui/gl/gl_surface.h"
26 #include "ui/views/test/views_test_base.h" 30 #include "ui/views/test/views_test_base.h"
27 #include "ui/views/test/x11_property_change_waiter.h" 31 #include "ui/views/test/x11_property_change_waiter.h"
28 #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h" 32 #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
29 #include "ui/views/widget/desktop_aura/x11_desktop_handler.h" 33 #include "ui/views/widget/desktop_aura/x11_desktop_handler.h"
30 #include "ui/views/widget/widget.h" 34 #include "ui/views/widget/widget.h"
31 35
32 namespace views { 36 namespace views {
33 37
34 namespace { 38 namespace {
35 39
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 int screen_x, 189 int screen_x,
186 int screen_y, 190 int screen_y,
187 aura::Window* ignore_window) { 191 aura::Window* ignore_window) {
188 std::set<aura::Window*> ignore; 192 std::set<aura::Window*> ignore;
189 ignore.insert(ignore_window); 193 ignore.insert(ignore_window);
190 X11TopmostWindowFinder finder; 194 X11TopmostWindowFinder finder;
191 return finder.FindLocalProcessWindowAt(gfx::Point(screen_x, screen_y), 195 return finder.FindLocalProcessWindowAt(gfx::Point(screen_x, screen_y),
192 ignore); 196 ignore);
193 } 197 }
194 198
199 static void SetUpTestCase() {
200 gfx::GLSurface::InitializeOneOffForTests();
201 ui::RegisterPathProvider();
202 base::FilePath ui_test_pak_path;
203 ASSERT_TRUE(PathService::Get(ui::UI_TEST_PAK, &ui_test_pak_path));
204 ui::ResourceBundle::InitSharedInstanceWithPakPath(ui_test_pak_path);
205 }
206
195 // ViewsTestBase: 207 // ViewsTestBase:
196 virtual void SetUp() OVERRIDE { 208 virtual void SetUp() OVERRIDE {
197 ViewsTestBase::SetUp(); 209 ViewsTestBase::SetUp();
198 210
199 // Make X11 synchronous for our display connection. This does not force the 211 // Make X11 synchronous for our display connection. This does not force the
200 // window manager to behave synchronously. 212 // window manager to behave synchronously.
201 XSynchronize(xdisplay(), True); 213 XSynchronize(xdisplay(), True);
202 214
203 // Ensure that the X11DesktopHandler exists. The X11DesktopHandler is 215 // Ensure that the X11DesktopHandler exists. The X11DesktopHandler is
204 // necessary to properly track menu windows. 216 // necessary to properly track menu windows.
205 X11DesktopHandler::get(); 217 X11DesktopHandler::get();
206 } 218 }
207 219
208 virtual void TearDown() OVERRIDE { 220 virtual void TearDown() OVERRIDE {
209 XSynchronize(xdisplay(), False); 221 XSynchronize(xdisplay(), False);
210 ViewsTestBase::TearDown(); 222 ViewsTestBase::TearDown();
211 } 223 }
212 224
213 private: 225 private:
214 DISALLOW_COPY_AND_ASSIGN(X11TopmostWindowFinderTest); 226 DISALLOW_COPY_AND_ASSIGN(X11TopmostWindowFinderTest);
215 }; 227 };
216 228
217 // Flaky on Linux. http://crbug.com/388241 229 TEST_F(X11TopmostWindowFinderTest, Basic) {
218 TEST_F(X11TopmostWindowFinderTest, DISABLED_Basic) {
219 // Avoid positioning test windows at 0x0 because window managers often have a 230 // Avoid positioning test windows at 0x0 because window managers often have a
220 // panel/launcher along one of the screen edges and do not allow windows to 231 // panel/launcher along one of the screen edges and do not allow windows to
221 // position themselves to overlap the panel/launcher. 232 // position themselves to overlap the panel/launcher.
222 scoped_ptr<Widget> widget1( 233 scoped_ptr<Widget> widget1(
223 CreateAndShowWidget(gfx::Rect(100, 100, 200, 100))); 234 CreateAndShowWidget(gfx::Rect(100, 100, 200, 100)));
224 aura::Window* window1 = widget1->GetNativeWindow(); 235 aura::Window* window1 = widget1->GetNativeWindow();
225 XID xid1 = window1->GetHost()->GetAcceleratedWidget(); 236 XID xid1 = window1->GetHost()->GetAcceleratedWidget();
226 237
227 XID xid2 = CreateAndShowXWindow(gfx::Rect(200, 100, 100, 200)); 238 XID xid2 = CreateAndShowXWindow(gfx::Rect(200, 100, 100, 200));
228 239
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 FindTopmostLocalProcessWindowWithIgnore(250, 250, window3)); 273 FindTopmostLocalProcessWindowWithIgnore(250, 250, window3));
263 EXPECT_EQ(NULL, 274 EXPECT_EQ(NULL,
264 FindTopmostLocalProcessWindowWithIgnore(150, 250, window3)); 275 FindTopmostLocalProcessWindowWithIgnore(150, 250, window3));
265 EXPECT_EQ(window1, 276 EXPECT_EQ(window1,
266 FindTopmostLocalProcessWindowWithIgnore(150, 195, window3)); 277 FindTopmostLocalProcessWindowWithIgnore(150, 195, window3));
267 278
268 XDestroyWindow(xdisplay(), xid2); 279 XDestroyWindow(xdisplay(), xid2);
269 } 280 }
270 281
271 // Test that the minimized state is properly handled. 282 // Test that the minimized state is properly handled.
272 // Flaky on Linux. http://crbug.com/388241 283 TEST_F(X11TopmostWindowFinderTest, Minimized) {
273 TEST_F(X11TopmostWindowFinderTest, DISABLED_Minimized) {
274 scoped_ptr<Widget> widget1( 284 scoped_ptr<Widget> widget1(
275 CreateAndShowWidget(gfx::Rect(100, 100, 100, 100))); 285 CreateAndShowWidget(gfx::Rect(100, 100, 100, 100)));
276 aura::Window* window1 = widget1->GetNativeWindow(); 286 aura::Window* window1 = widget1->GetNativeWindow();
277 XID xid1 = window1->GetHost()->GetAcceleratedWidget(); 287 XID xid1 = window1->GetHost()->GetAcceleratedWidget();
278 XID xid2 = CreateAndShowXWindow(gfx::Rect(300, 100, 100, 100)); 288 XID xid2 = CreateAndShowXWindow(gfx::Rect(300, 100, 100, 100));
279 289
280 XID xids[] = { xid1, xid2 }; 290 XID xids[] = { xid1, xid2 };
281 StackingClientListWaiter stack_waiter(xids, arraysize(xids)); 291 StackingClientListWaiter stack_waiter(xids, arraysize(xids));
282 stack_waiter.Wait(); 292 stack_waiter.Wait();
283 ui::X11EventSource::GetInstance()->DispatchXEvents(); 293 ui::X11EventSource::GetInstance()->DispatchXEvents();
(...skipping 15 matching lines...) Expand all
299 XIconifyWindow(xdisplay(), xid2, 0); 309 XIconifyWindow(xdisplay(), xid2, 0);
300 minimize_waiter.Wait(); 310 minimize_waiter.Wait();
301 } 311 }
302 EXPECT_NE(xid1, FindTopmostXWindowAt(350, 150)); 312 EXPECT_NE(xid1, FindTopmostXWindowAt(350, 150));
303 EXPECT_NE(xid2, FindTopmostXWindowAt(350, 150)); 313 EXPECT_NE(xid2, FindTopmostXWindowAt(350, 150));
304 314
305 XDestroyWindow(xdisplay(), xid2); 315 XDestroyWindow(xdisplay(), xid2);
306 } 316 }
307 317
308 // Test that non-rectangular windows are properly handled. 318 // Test that non-rectangular windows are properly handled.
309 // Flaky on Linux. http://crbug.com/388241 319 TEST_F(X11TopmostWindowFinderTest, NonRectangular) {
310 TEST_F(X11TopmostWindowFinderTest, DISABLED_NonRectangular) {
311 if (!ui::IsShapeExtensionAvailable()) 320 if (!ui::IsShapeExtensionAvailable())
312 return; 321 return;
313 322
314 scoped_ptr<Widget> widget1( 323 scoped_ptr<Widget> widget1(
315 CreateAndShowWidget(gfx::Rect(100, 100, 100, 100))); 324 CreateAndShowWidget(gfx::Rect(100, 100, 100, 100)));
316 XID xid1 = widget1->GetNativeWindow()->GetHost()->GetAcceleratedWidget(); 325 XID xid1 = widget1->GetNativeWindow()->GetHost()->GetAcceleratedWidget();
317 SkRegion* skregion1 = new SkRegion; 326 SkRegion* skregion1 = new SkRegion;
318 skregion1->op(SkIRect::MakeXYWH(0, 10, 10, 90), SkRegion::kUnion_Op); 327 skregion1->op(SkIRect::MakeXYWH(0, 10, 10, 90), SkRegion::kUnion_Op);
319 skregion1->op(SkIRect::MakeXYWH(10, 0, 90, 100), SkRegion::kUnion_Op); 328 skregion1->op(SkIRect::MakeXYWH(10, 0, 90, 100), SkRegion::kUnion_Op);
320 // Widget takes ownership of |skregion1|. 329 // Widget takes ownership of |skregion1|.
(...skipping 21 matching lines...) Expand all
342 // because the code path is different. 351 // because the code path is different.
343 EXPECT_EQ(xid2, FindTopmostXWindowAt(305, 120)); 352 EXPECT_EQ(xid2, FindTopmostXWindowAt(305, 120));
344 EXPECT_NE(xid1, FindTopmostXWindowAt(305, 105)); 353 EXPECT_NE(xid1, FindTopmostXWindowAt(305, 105));
345 EXPECT_NE(xid2, FindTopmostXWindowAt(305, 105)); 354 EXPECT_NE(xid2, FindTopmostXWindowAt(305, 105));
346 355
347 XDestroyWindow(xdisplay(), xid2); 356 XDestroyWindow(xdisplay(), xid2);
348 } 357 }
349 358
350 // Test that the TopmostWindowFinder finds windows which belong to menus 359 // Test that the TopmostWindowFinder finds windows which belong to menus
351 // (which may or may not belong to Chrome). 360 // (which may or may not belong to Chrome).
352 // Flaky on Linux. http://crbug.com/388241 361 TEST_F(X11TopmostWindowFinderTest, Menu) {
353 TEST_F(X11TopmostWindowFinderTest, DISABLED_Menu) {
354 XID xid = CreateAndShowXWindow(gfx::Rect(100, 100, 100, 100)); 362 XID xid = CreateAndShowXWindow(gfx::Rect(100, 100, 100, 100));
355 363
356 XID root = DefaultRootWindow(xdisplay()); 364 XID root = DefaultRootWindow(xdisplay());
357 XSetWindowAttributes swa; 365 XSetWindowAttributes swa;
358 swa.override_redirect = True; 366 swa.override_redirect = True;
359 XID menu_xid = XCreateWindow(xdisplay(), 367 XID menu_xid = XCreateWindow(xdisplay(),
360 root, 368 root,
361 0, 0, 1, 1, 369 0, 0, 1, 1,
362 0, // border width 370 0, // border width
363 CopyFromParent, // depth 371 CopyFromParent, // depth
(...skipping 20 matching lines...) Expand all
384 392
385 EXPECT_EQ(xid, FindTopmostXWindowAt(110, 110)); 393 EXPECT_EQ(xid, FindTopmostXWindowAt(110, 110));
386 EXPECT_EQ(menu_xid, FindTopmostXWindowAt(150, 120)); 394 EXPECT_EQ(menu_xid, FindTopmostXWindowAt(150, 120));
387 EXPECT_EQ(menu_xid, FindTopmostXWindowAt(210, 120)); 395 EXPECT_EQ(menu_xid, FindTopmostXWindowAt(210, 120));
388 396
389 XDestroyWindow(xdisplay(), xid); 397 XDestroyWindow(xdisplay(), xid);
390 XDestroyWindow(xdisplay(), menu_xid); 398 XDestroyWindow(xdisplay(), menu_xid);
391 } 399 }
392 400
393 } // namespace views 401 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/views.gyp ('k') | ui/views/widget/desktop_aura/x11_topmost_window_finder_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698