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

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

Issue 173443002: aura: Take transformation into account when computing window bounds in root-window/screen. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 10 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) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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_targeter.h" 5 #include "ui/aura/window_targeter.h"
6 6
7 #include "ui/aura/scoped_window_targeter.h" 7 #include "ui/aura/scoped_window_targeter.h"
8 #include "ui/aura/test/aura_test_base.h" 8 #include "ui/aura/test/aura_test_base.h"
9 #include "ui/aura/test/test_event_handler.h" 9 #include "ui/aura/test/test_event_handler.h"
10 #include "ui/aura/test/test_window_delegate.h" 10 #include "ui/aura/test/test_window_delegate.h"
(...skipping 22 matching lines...) Expand all
33 }; 33 };
34 34
35 class WindowTargeterTest : public test::AuraTestBase { 35 class WindowTargeterTest : public test::AuraTestBase {
36 public: 36 public:
37 WindowTargeterTest() {} 37 WindowTargeterTest() {}
38 virtual ~WindowTargeterTest() {} 38 virtual ~WindowTargeterTest() {}
39 39
40 Window* root_window() { return AuraTestBase::root_window(); } 40 Window* root_window() { return AuraTestBase::root_window(); }
41 }; 41 };
42 42
43 gfx::RectF GetEffectiveVisibleBoundsInRootWindow(Window* window) {
44 gfx::RectF bounds = gfx::Rect(window->bounds().size());
45 Window* root = window->GetRootWindow();
46 CHECK(window->layer());
47 CHECK(root->layer());
48 gfx::Transform transform;
49 if (!window->layer()->GetTargetTransformRelativeTo(root->layer(), &transform))
50 return gfx::RectF();
51 transform.TransformRect(&bounds);
52 return bounds;
53 }
54
55 TEST_F(WindowTargeterTest, Basic) { 43 TEST_F(WindowTargeterTest, Basic) {
56 test::TestWindowDelegate delegate; 44 test::TestWindowDelegate delegate;
57 scoped_ptr<Window> window(CreateNormalWindow(1, root_window(), &delegate)); 45 scoped_ptr<Window> window(CreateNormalWindow(1, root_window(), &delegate));
58 Window* one = CreateNormalWindow(2, window.get(), &delegate); 46 Window* one = CreateNormalWindow(2, window.get(), &delegate);
59 Window* two = CreateNormalWindow(3, window.get(), &delegate); 47 Window* two = CreateNormalWindow(3, window.get(), &delegate);
60 48
61 window->SetBounds(gfx::Rect(0, 0, 100, 100)); 49 window->SetBounds(gfx::Rect(0, 0, 100, 100));
62 one->SetBounds(gfx::Rect(0, 0, 500, 100)); 50 one->SetBounds(gfx::Rect(0, 0, 500, 100));
63 two->SetBounds(gfx::Rect(501, 0, 500, 1000)); 51 two->SetBounds(gfx::Rect(501, 0, 500, 1000));
64 52
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 ui::MouseEvent mouse(ui::ET_MOUSE_MOVED, event_location, event_location, 122 ui::MouseEvent mouse(ui::ET_MOUSE_MOVED, event_location, event_location,
135 ui::EF_NONE, ui::EF_NONE); 123 ui::EF_NONE, ui::EF_NONE);
136 EXPECT_EQ(window.get(), targeter->FindTargetForEvent(root_target, &mouse)); 124 EXPECT_EQ(window.get(), targeter->FindTargetForEvent(root_target, &mouse));
137 } 125 }
138 126
139 // Scale |window| by 50%. This should move it away from underneath 127 // Scale |window| by 50%. This should move it away from underneath
140 // |event_location|, so an event in that location will not be targeted to it. 128 // |event_location|, so an event in that location will not be targeted to it.
141 gfx::Transform transform; 129 gfx::Transform transform;
142 transform.Scale(0.5, 0.5); 130 transform.Scale(0.5, 0.5);
143 window->SetTransform(transform); 131 window->SetTransform(transform);
144 EXPECT_EQ(gfx::RectF(100, 20, 200, 40).ToString(), 132 EXPECT_EQ(gfx::Rect(100, 20, 200, 40).ToString(),
145 GetEffectiveVisibleBoundsInRootWindow(window.get()).ToString()); 133 window->GetBoundsInRootWindow().ToString());
146 { 134 {
147 ui::MouseEvent mouse(ui::ET_MOUSE_MOVED, event_location, event_location, 135 ui::MouseEvent mouse(ui::ET_MOUSE_MOVED, event_location, event_location,
148 ui::EF_NONE, ui::EF_NONE); 136 ui::EF_NONE, ui::EF_NONE);
149 EXPECT_EQ(root_window(), targeter->FindTargetForEvent(root_target, &mouse)); 137 EXPECT_EQ(root_window(), targeter->FindTargetForEvent(root_target, &mouse));
150 } 138 }
151 139
152 transform = gfx::Transform(); 140 transform = gfx::Transform();
153 transform.Translate(200, 10); 141 transform.Translate(200, 10);
154 transform.Scale(0.5, 0.5); 142 transform.Scale(0.5, 0.5);
155 window->SetTransform(transform); 143 window->SetTransform(transform);
156 EXPECT_EQ(gfx::RectF(300, 30, 200, 40).ToString(), 144 EXPECT_EQ(gfx::Rect(300, 30, 200, 40).ToString(),
157 GetEffectiveVisibleBoundsInRootWindow(window.get()).ToString()); 145 window->GetBoundsInRootWindow().ToString());
158 { 146 {
159 ui::MouseEvent mouse(ui::ET_MOUSE_MOVED, event_location, event_location, 147 ui::MouseEvent mouse(ui::ET_MOUSE_MOVED, event_location, event_location,
160 ui::EF_NONE, ui::EF_NONE); 148 ui::EF_NONE, ui::EF_NONE);
161 EXPECT_EQ(window.get(), targeter->FindTargetForEvent(root_target, &mouse)); 149 EXPECT_EQ(window.get(), targeter->FindTargetForEvent(root_target, &mouse));
162 } 150 }
163 } 151 }
164 152
165 } // namespace aura 153 } // namespace aura
OLDNEW
« ui/aura/window.cc ('K') | « ui/aura/window.cc ('k') | ui/aura/window_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698