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

Side by Side Diff: ui/aura/window_unittest.cc

Issue 10831361: Draggable region support for frameless app window on CrOS. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix build Created 8 years, 4 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/aura/window.h" 5 #include "ui/aura/window.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after
480 scoped_ptr<Window> w12( 480 scoped_ptr<Window> w12(
481 CreateTestWindow(SK_ColorMAGENTA, 12, gfx::Rect(10, 420, 25, 25), 481 CreateTestWindow(SK_ColorMAGENTA, 12, gfx::Rect(10, 420, 25, 25),
482 w1.get())); 482 w1.get()));
483 scoped_ptr<Window> w121( 483 scoped_ptr<Window> w121(
484 CreateTestWindow(SK_ColorYELLOW, 121, gfx::Rect(5, 5, 5, 5), w12.get())); 484 CreateTestWindow(SK_ColorYELLOW, 121, gfx::Rect(5, 5, 5, 5), w12.get()));
485 scoped_ptr<Window> w13( 485 scoped_ptr<Window> w13(
486 CreateTestWindow(SK_ColorGRAY, 13, gfx::Rect(5, 470, 50, 50), w1.get())); 486 CreateTestWindow(SK_ColorGRAY, 13, gfx::Rect(5, 470, 50, 50), w1.get()));
487 487
488 Window* root = root_window(); 488 Window* root = root_window();
489 w1->parent()->SetBounds(gfx::Rect(500, 500)); 489 w1->parent()->SetBounds(gfx::Rect(500, 500));
490 EXPECT_EQ(NULL, root->GetEventHandlerForPoint(gfx::Point(5, 5))); 490 EXPECT_EQ(NULL, root->GetEventHandlerForPoint(
491 EXPECT_EQ(w1.get(), root->GetEventHandlerForPoint(gfx::Point(11, 11))); 491 gfx::Point(5, 5), ui::ET_MOUSE_ENTERED));
492 EXPECT_EQ(w11.get(), root->GetEventHandlerForPoint(gfx::Point(16, 16))); 492 EXPECT_EQ(w1.get(), root->GetEventHandlerForPoint(
493 EXPECT_EQ(w111.get(), root->GetEventHandlerForPoint(gfx::Point(21, 21))); 493 gfx::Point(11, 11), ui::ET_MOUSE_ENTERED));
494 EXPECT_EQ(w1111.get(), root->GetEventHandlerForPoint(gfx::Point(26, 26))); 494 EXPECT_EQ(w11.get(), root->GetEventHandlerForPoint(
495 EXPECT_EQ(w12.get(), root->GetEventHandlerForPoint(gfx::Point(21, 431))); 495 gfx::Point(16, 16), ui::ET_MOUSE_ENTERED));
496 EXPECT_EQ(w121.get(), root->GetEventHandlerForPoint(gfx::Point(26, 436))); 496 EXPECT_EQ(w111.get(), root->GetEventHandlerForPoint(
497 EXPECT_EQ(w13.get(), root->GetEventHandlerForPoint(gfx::Point(26, 481))); 497 gfx::Point(21, 21), ui::ET_MOUSE_ENTERED));
498 EXPECT_EQ(w1111.get(), root->GetEventHandlerForPoint(
499 gfx::Point(26, 26), ui::ET_MOUSE_ENTERED));
500 EXPECT_EQ(w12.get(), root->GetEventHandlerForPoint(
501 gfx::Point(21, 431), ui::ET_MOUSE_ENTERED));
502 EXPECT_EQ(w121.get(), root->GetEventHandlerForPoint(
503 gfx::Point(26, 436), ui::ET_MOUSE_ENTERED));
504 EXPECT_EQ(w13.get(), root->GetEventHandlerForPoint(
505 gfx::Point(26, 481), ui::ET_MOUSE_ENTERED));
498 } 506 }
499 507
500 TEST_F(WindowTest, GetEventHandlerForPointWithOverride) { 508 TEST_F(WindowTest, GetEventHandlerForPointWithOverride) {
501 // If our child is flush to our top-left corner he gets events just inside the 509 // If our child is flush to our top-left corner he gets events just inside the
502 // window edges. 510 // window edges.
503 scoped_ptr<Window> parent( 511 scoped_ptr<Window> parent(
504 CreateTestWindow(SK_ColorWHITE, 1, gfx::Rect(10, 20, 400, 500), NULL)); 512 CreateTestWindow(SK_ColorWHITE, 1, gfx::Rect(10, 20, 400, 500), NULL));
505 scoped_ptr<Window> child( 513 scoped_ptr<Window> child(
506 CreateTestWindow(SK_ColorRED, 2, gfx::Rect(0, 0, 60, 70), parent.get())); 514 CreateTestWindow(SK_ColorRED, 2, gfx::Rect(0, 0, 60, 70), parent.get()));
507 EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(gfx::Point(0, 0))); 515 EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(
508 EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(gfx::Point(1, 1))); 516 gfx::Point(0, 0), ui::ET_MOUSE_ENTERED));
517 EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(
518 gfx::Point(1, 1), ui::ET_MOUSE_ENTERED));
509 519
510 // We can override the hit test bounds of the parent to make the parent grab 520 // We can override the hit test bounds of the parent to make the parent grab
511 // events along that edge. 521 // events along that edge.
512 parent->set_hit_test_bounds_override_inner(gfx::Insets(1, 1, 1, 1)); 522 parent->set_hit_test_bounds_override_inner(gfx::Insets(1, 1, 1, 1));
513 EXPECT_EQ(parent.get(), parent->GetEventHandlerForPoint(gfx::Point(0, 0))); 523 EXPECT_EQ(parent.get(), parent->GetEventHandlerForPoint(
514 EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(gfx::Point(1, 1))); 524 gfx::Point(0, 0), ui::ET_MOUSE_ENTERED));
525 EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(
526 gfx::Point(1, 1), ui::ET_MOUSE_ENTERED));
527 }
528
529 TEST_F(WindowTest, GetEventHandlerForPointWithinDraggableRegion) {
530 scoped_ptr<Window> parent(
531 CreateTestWindow(SK_ColorWHITE, 1, gfx::Rect(10, 20, 400, 500), NULL));
532 scoped_ptr<Window> child(
533 CreateTestWindow(SK_ColorRED, 2, gfx::Rect(0, 0, 390, 480),
534 parent.get()));
535
536 // Child should grab all mouse events if draggable region is not set.
537 EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(
538 gfx::Point(50, 50), ui::ET_MOUSE_PRESSED));
539 EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(
540 gfx::Point(50, 50), ui::ET_MOUSE_DRAGGED));
541 EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(
542 gfx::Point(50, 50), ui::ET_MOUSE_RELEASED));
543 EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(
544 gfx::Point(50, 50), ui::ET_MOUSE_MOVED));
545 EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(
546 gfx::Point(50, 50), ui::ET_MOUSE_ENTERED));
547
548 // Create a draggable region.
549 SkRegion* draggable_region = new SkRegion;
550 draggable_region->setRect(10, 10, 200, 100);
551 parent->SetDraggableRegion(draggable_region);
552
553 // Parent should grab all mouse click/drag related events.
554 EXPECT_EQ(parent.get(), parent->GetEventHandlerForPoint(
555 gfx::Point(50, 50), ui::ET_MOUSE_PRESSED));
556 EXPECT_EQ(parent.get(), parent->GetEventHandlerForPoint(
557 gfx::Point(50, 50), ui::ET_MOUSE_DRAGGED));
558 EXPECT_EQ(parent.get(), parent->GetEventHandlerForPoint(
559 gfx::Point(50, 50), ui::ET_MOUSE_RELEASED));
560
561 // Child should grab all other mouse events.
562 EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(
563 gfx::Point(50, 50), ui::ET_MOUSE_MOVED));
564 EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(
565 gfx::Point(50, 50), ui::ET_MOUSE_ENTERED));
515 } 566 }
516 567
517 TEST_F(WindowTest, GetTopWindowContainingPoint) { 568 TEST_F(WindowTest, GetTopWindowContainingPoint) {
518 Window* root = root_window(); 569 Window* root = root_window();
519 root->SetBounds(gfx::Rect(0, 0, 300, 300)); 570 root->SetBounds(gfx::Rect(0, 0, 300, 300));
520 571
521 scoped_ptr<Window> w1( 572 scoped_ptr<Window> w1(
522 CreateTestWindow(SK_ColorWHITE, 1, gfx::Rect(10, 10, 100, 100), NULL)); 573 CreateTestWindow(SK_ColorWHITE, 1, gfx::Rect(10, 10, 100, 100), NULL));
523 scoped_ptr<Window> w11( 574 scoped_ptr<Window> w11(
524 CreateTestWindow(SK_ColorGREEN, 11, gfx::Rect(0, 0, 120, 120), w1.get())); 575 CreateTestWindow(SK_ColorGREEN, 11, gfx::Rect(0, 0, 120, 120), w1.get()));
(...skipping 636 matching lines...) Expand 10 before | Expand all | Expand 10 after
1161 scoped_ptr<Window> w1(CreateTestWindowWithDelegate(NULL, 1, 1212 scoped_ptr<Window> w1(CreateTestWindowWithDelegate(NULL, 1,
1162 gfx::Rect(0, 0, 500, 500), NULL)); 1213 gfx::Rect(0, 0, 500, 500), NULL));
1163 scoped_ptr<Window> w11(CreateTestWindowWithDelegate(NULL, 11, 1214 scoped_ptr<Window> w11(CreateTestWindowWithDelegate(NULL, 11,
1164 gfx::Rect(0, 0, 500, 500), w1.get())); 1215 gfx::Rect(0, 0, 500, 500), w1.get()));
1165 scoped_ptr<Window> w111(CreateTestWindowWithDelegate(&d111, 111, 1216 scoped_ptr<Window> w111(CreateTestWindowWithDelegate(&d111, 111,
1166 gfx::Rect(50, 50, 450, 450), w11.get())); 1217 gfx::Rect(50, 50, 450, 450), w11.get()));
1167 scoped_ptr<Window> w12(CreateTestWindowWithDelegate(NULL, 12, 1218 scoped_ptr<Window> w12(CreateTestWindowWithDelegate(NULL, 12,
1168 gfx::Rect(0, 0, 500, 500), w1.get())); 1219 gfx::Rect(0, 0, 500, 500), w1.get()));
1169 1220
1170 gfx::Point target_point = w111->bounds().CenterPoint(); 1221 gfx::Point target_point = w111->bounds().CenterPoint();
1171 EXPECT_EQ(w111.get(), w1->GetEventHandlerForPoint(target_point)); 1222 EXPECT_EQ(w111.get(), w1->GetEventHandlerForPoint(
1223 target_point, ui::ET_MOUSE_ENTERED));
1172 } 1224 }
1173 1225
1174 class VisibilityWindowDelegate : public TestWindowDelegate { 1226 class VisibilityWindowDelegate : public TestWindowDelegate {
1175 public: 1227 public:
1176 VisibilityWindowDelegate() 1228 VisibilityWindowDelegate()
1177 : shown_(0), 1229 : shown_(0),
1178 hidden_(0) { 1230 hidden_(0) {
1179 } 1231 }
1180 1232
1181 int shown() const { return shown_; } 1233 int shown() const { return shown_; }
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
1267 gfx::Rect(0, 0, 500, 500), NULL)); 1319 gfx::Rect(0, 0, 500, 500), NULL));
1268 scoped_ptr<Window> w11(CreateTestWindowWithDelegate(&d11, 11, 1320 scoped_ptr<Window> w11(CreateTestWindowWithDelegate(&d11, 11,
1269 gfx::Rect(0, 0, 500, 500), w1.get())); 1321 gfx::Rect(0, 0, 500, 500), w1.get()));
1270 scoped_ptr<Window> w111(CreateTestWindowWithDelegate(&d111, 111, 1322 scoped_ptr<Window> w111(CreateTestWindowWithDelegate(&d111, 111,
1271 gfx::Rect(50, 50, 450, 450), w11.get())); 1323 gfx::Rect(50, 50, 450, 450), w11.get()));
1272 scoped_ptr<Window> w12(CreateTestWindowWithDelegate(&d12, 12, 1324 scoped_ptr<Window> w12(CreateTestWindowWithDelegate(&d12, 12,
1273 gfx::Rect(0, 0, 500, 500), w1.get())); 1325 gfx::Rect(0, 0, 500, 500), w1.get()));
1274 scoped_ptr<Window> w121(CreateTestWindowWithDelegate(&d121, 121, 1326 scoped_ptr<Window> w121(CreateTestWindowWithDelegate(&d121, 121,
1275 gfx::Rect(150, 150, 50, 50), w12.get())); 1327 gfx::Rect(150, 150, 50, 50), w12.get()));
1276 1328
1277 EXPECT_EQ(w12.get(), w1->GetEventHandlerForPoint(gfx::Point(10, 10))); 1329 EXPECT_EQ(w12.get(), w1->GetEventHandlerForPoint(
1330 gfx::Point(10, 10), ui::ET_MOUSE_ENTERED));
1278 w12->set_ignore_events(true); 1331 w12->set_ignore_events(true);
1279 EXPECT_EQ(w11.get(), w1->GetEventHandlerForPoint(gfx::Point(10, 10))); 1332 EXPECT_EQ(w11.get(), w1->GetEventHandlerForPoint(
1333 gfx::Point(10, 10), ui::ET_MOUSE_ENTERED));
1280 w12->set_ignore_events(false); 1334 w12->set_ignore_events(false);
1281 1335
1282 EXPECT_EQ(w121.get(), w1->GetEventHandlerForPoint(gfx::Point(160, 160))); 1336 EXPECT_EQ(w121.get(), w1->GetEventHandlerForPoint(
1337 gfx::Point(160, 160), ui::ET_MOUSE_ENTERED));
1283 w121->set_ignore_events(true); 1338 w121->set_ignore_events(true);
1284 EXPECT_EQ(w12.get(), w1->GetEventHandlerForPoint(gfx::Point(160, 160))); 1339 EXPECT_EQ(w12.get(), w1->GetEventHandlerForPoint(
1340 gfx::Point(160, 160), ui::ET_MOUSE_ENTERED));
1285 w12->set_ignore_events(true); 1341 w12->set_ignore_events(true);
1286 EXPECT_EQ(w111.get(), w1->GetEventHandlerForPoint(gfx::Point(160, 160))); 1342 EXPECT_EQ(w111.get(), w1->GetEventHandlerForPoint(
1343 gfx::Point(160, 160), ui::ET_MOUSE_ENTERED));
1287 w111->set_ignore_events(true); 1344 w111->set_ignore_events(true);
1288 EXPECT_EQ(w11.get(), w1->GetEventHandlerForPoint(gfx::Point(160, 160))); 1345 EXPECT_EQ(w11.get(), w1->GetEventHandlerForPoint(
1346 gfx::Point(160, 160), ui::ET_MOUSE_ENTERED));
1289 } 1347 }
1290 1348
1291 // Tests transformation on the root window. 1349 // Tests transformation on the root window.
1292 TEST_F(WindowTest, Transform) { 1350 TEST_F(WindowTest, Transform) {
1293 gfx::Size size = root_window()->GetHostSize(); 1351 gfx::Size size = root_window()->GetHostSize();
1294 EXPECT_EQ(gfx::Rect(size), 1352 EXPECT_EQ(gfx::Rect(size),
1295 gfx::Screen::GetDisplayNearestPoint(gfx::Point()).bounds()); 1353 gfx::Screen::GetDisplayNearestPoint(gfx::Point()).bounds());
1296 1354
1297 // Rotate it clock-wise 90 degrees. 1355 // Rotate it clock-wise 90 degrees.
1298 ui::Transform transform; 1356 ui::Transform transform;
(...skipping 1208 matching lines...) Expand 10 before | Expand all | Expand 10 after
2507 // Move |w2| to be a child of |w1|. 2565 // Move |w2| to be a child of |w1|.
2508 w1->AddChild(w2.get()); 2566 w1->AddChild(w2.get());
2509 // Sine we moved in the same root, observer shouldn't be notified. 2567 // Sine we moved in the same root, observer shouldn't be notified.
2510 EXPECT_EQ("0 0", observer.CountStringAndReset()); 2568 EXPECT_EQ("0 0", observer.CountStringAndReset());
2511 // |w2| should still have focus after moving. 2569 // |w2| should still have focus after moving.
2512 EXPECT_TRUE(w2->HasFocus()); 2570 EXPECT_TRUE(w2->HasFocus());
2513 } 2571 }
2514 2572
2515 } // namespace test 2573 } // namespace test
2516 } // namespace aura 2574 } // namespace aura
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698