| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "ash/shell.h" | 5 #include "ash/shell.h" |
| 6 #include "components/exo/buffer.h" | 6 #include "components/exo/buffer.h" |
| 7 #include "components/exo/pointer.h" | 7 #include "components/exo/pointer.h" |
| 8 #include "components/exo/pointer_delegate.h" | 8 #include "components/exo/pointer_delegate.h" |
| 9 #include "components/exo/shell_surface.h" | 9 #include "components/exo/shell_surface.h" |
| 10 #include "components/exo/surface.h" | 10 #include "components/exo/surface.h" |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 MOCK_METHOD3(OnPointerEnter, void(Surface*, const gfx::Point&, int)); | 30 MOCK_METHOD3(OnPointerEnter, void(Surface*, const gfx::Point&, int)); |
| 31 MOCK_METHOD1(OnPointerLeave, void(Surface*)); | 31 MOCK_METHOD1(OnPointerLeave, void(Surface*)); |
| 32 MOCK_METHOD2(OnPointerMotion, void(base::TimeDelta, const gfx::Point&)); | 32 MOCK_METHOD2(OnPointerMotion, void(base::TimeDelta, const gfx::Point&)); |
| 33 MOCK_METHOD3(OnPointerButton, void(base::TimeDelta, int, bool)); | 33 MOCK_METHOD3(OnPointerButton, void(base::TimeDelta, int, bool)); |
| 34 MOCK_METHOD2(OnPointerWheel, void(base::TimeDelta, const gfx::Vector2d&)); | 34 MOCK_METHOD2(OnPointerWheel, void(base::TimeDelta, const gfx::Vector2d&)); |
| 35 }; | 35 }; |
| 36 | 36 |
| 37 TEST_F(PointerTest, OnPointerEnter) { | 37 TEST_F(PointerTest, OnPointerEnter) { |
| 38 scoped_ptr<Surface> surface(new Surface); | 38 scoped_ptr<Surface> surface(new Surface); |
| 39 scoped_ptr<ShellSurface> shell_surface(new ShellSurface(surface.get())); | 39 scoped_ptr<ShellSurface> shell_surface(new ShellSurface(surface.get())); |
| 40 shell_surface->Init(); | |
| 41 gfx::Size buffer_size(10, 10); | 40 gfx::Size buffer_size(10, 10); |
| 42 scoped_ptr<Buffer> buffer(new Buffer( | 41 scoped_ptr<Buffer> buffer(new Buffer( |
| 43 exo_test_helper()->CreateGpuMemoryBuffer(buffer_size), GL_TEXTURE_2D)); | 42 exo_test_helper()->CreateGpuMemoryBuffer(buffer_size), GL_TEXTURE_2D)); |
| 44 surface->Attach(buffer.get()); | 43 surface->Attach(buffer.get()); |
| 45 surface->Commit(); | 44 surface->Commit(); |
| 46 | 45 |
| 47 MockPointerDelegate delegate; | 46 MockPointerDelegate delegate; |
| 48 scoped_ptr<Pointer> pointer(new Pointer(&delegate)); | 47 scoped_ptr<Pointer> pointer(new Pointer(&delegate)); |
| 49 ui::test::EventGenerator generator(ash::Shell::GetPrimaryRootWindow()); | 48 ui::test::EventGenerator generator(ash::Shell::GetPrimaryRootWindow()); |
| 50 | 49 |
| 51 EXPECT_CALL(delegate, CanAcceptPointerEventsForSurface(surface.get())) | 50 EXPECT_CALL(delegate, CanAcceptPointerEventsForSurface(surface.get())) |
| 52 .WillRepeatedly(testing::Return(true)); | 51 .WillRepeatedly(testing::Return(true)); |
| 53 EXPECT_CALL(delegate, OnPointerEnter(surface.get(), gfx::Point(), 0)); | 52 EXPECT_CALL(delegate, OnPointerEnter(surface.get(), gfx::Point(), 0)); |
| 54 generator.MoveMouseTo(surface->GetBoundsInScreen().origin()); | 53 generator.MoveMouseTo(surface->GetBoundsInScreen().origin()); |
| 55 | 54 |
| 56 EXPECT_CALL(delegate, OnPointerDestroying(pointer.get())); | 55 EXPECT_CALL(delegate, OnPointerDestroying(pointer.get())); |
| 57 pointer.reset(); | 56 pointer.reset(); |
| 58 } | 57 } |
| 59 | 58 |
| 60 TEST_F(PointerTest, OnPointerLeave) { | 59 TEST_F(PointerTest, OnPointerLeave) { |
| 61 scoped_ptr<Surface> surface(new Surface); | 60 scoped_ptr<Surface> surface(new Surface); |
| 62 scoped_ptr<ShellSurface> shell_surface(new ShellSurface(surface.get())); | 61 scoped_ptr<ShellSurface> shell_surface(new ShellSurface(surface.get())); |
| 63 shell_surface->Init(); | |
| 64 gfx::Size buffer_size(10, 10); | 62 gfx::Size buffer_size(10, 10); |
| 65 scoped_ptr<Buffer> buffer(new Buffer( | 63 scoped_ptr<Buffer> buffer(new Buffer( |
| 66 exo_test_helper()->CreateGpuMemoryBuffer(buffer_size), GL_TEXTURE_2D)); | 64 exo_test_helper()->CreateGpuMemoryBuffer(buffer_size), GL_TEXTURE_2D)); |
| 67 surface->Attach(buffer.get()); | 65 surface->Attach(buffer.get()); |
| 68 surface->Commit(); | 66 surface->Commit(); |
| 69 | 67 |
| 70 MockPointerDelegate delegate; | 68 MockPointerDelegate delegate; |
| 71 scoped_ptr<Pointer> pointer(new Pointer(&delegate)); | 69 scoped_ptr<Pointer> pointer(new Pointer(&delegate)); |
| 72 ui::test::EventGenerator generator(ash::Shell::GetPrimaryRootWindow()); | 70 ui::test::EventGenerator generator(ash::Shell::GetPrimaryRootWindow()); |
| 73 | 71 |
| 74 EXPECT_CALL(delegate, CanAcceptPointerEventsForSurface(surface.get())) | 72 EXPECT_CALL(delegate, CanAcceptPointerEventsForSurface(surface.get())) |
| 75 .WillRepeatedly(testing::Return(true)); | 73 .WillRepeatedly(testing::Return(true)); |
| 76 EXPECT_CALL(delegate, OnPointerEnter(surface.get(), gfx::Point(), 0)); | 74 EXPECT_CALL(delegate, OnPointerEnter(surface.get(), gfx::Point(), 0)); |
| 77 generator.MoveMouseTo(surface->GetBoundsInScreen().origin()); | 75 generator.MoveMouseTo(surface->GetBoundsInScreen().origin()); |
| 78 | 76 |
| 79 EXPECT_CALL(delegate, OnPointerLeave(surface.get())); | 77 EXPECT_CALL(delegate, OnPointerLeave(surface.get())); |
| 80 generator.MoveMouseTo(surface->GetBoundsInScreen().bottom_right()); | 78 generator.MoveMouseTo(surface->GetBoundsInScreen().bottom_right()); |
| 81 | 79 |
| 82 EXPECT_CALL(delegate, OnPointerDestroying(pointer.get())); | 80 EXPECT_CALL(delegate, OnPointerDestroying(pointer.get())); |
| 83 pointer.reset(); | 81 pointer.reset(); |
| 84 } | 82 } |
| 85 | 83 |
| 86 TEST_F(PointerTest, OnPointerMotion) { | 84 TEST_F(PointerTest, OnPointerMotion) { |
| 87 scoped_ptr<Surface> surface(new Surface); | 85 scoped_ptr<Surface> surface(new Surface); |
| 88 scoped_ptr<ShellSurface> shell_surface(new ShellSurface(surface.get())); | 86 scoped_ptr<ShellSurface> shell_surface(new ShellSurface(surface.get())); |
| 89 shell_surface->Init(); | |
| 90 gfx::Size buffer_size(10, 10); | 87 gfx::Size buffer_size(10, 10); |
| 91 scoped_ptr<Buffer> buffer(new Buffer( | 88 scoped_ptr<Buffer> buffer(new Buffer( |
| 92 exo_test_helper()->CreateGpuMemoryBuffer(buffer_size), GL_TEXTURE_2D)); | 89 exo_test_helper()->CreateGpuMemoryBuffer(buffer_size), GL_TEXTURE_2D)); |
| 93 surface->Attach(buffer.get()); | 90 surface->Attach(buffer.get()); |
| 94 surface->Commit(); | 91 surface->Commit(); |
| 95 | 92 |
| 96 MockPointerDelegate delegate; | 93 MockPointerDelegate delegate; |
| 97 scoped_ptr<Pointer> pointer(new Pointer(&delegate)); | 94 scoped_ptr<Pointer> pointer(new Pointer(&delegate)); |
| 98 ui::test::EventGenerator generator(ash::Shell::GetPrimaryRootWindow()); | 95 ui::test::EventGenerator generator(ash::Shell::GetPrimaryRootWindow()); |
| 99 | 96 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 127 generator.MoveMouseTo(sub_surface->GetBoundsInScreen().origin() + | 124 generator.MoveMouseTo(sub_surface->GetBoundsInScreen().origin() + |
| 128 gfx::Vector2d(1, 1)); | 125 gfx::Vector2d(1, 1)); |
| 129 | 126 |
| 130 EXPECT_CALL(delegate, OnPointerDestroying(pointer.get())); | 127 EXPECT_CALL(delegate, OnPointerDestroying(pointer.get())); |
| 131 pointer.reset(); | 128 pointer.reset(); |
| 132 } | 129 } |
| 133 | 130 |
| 134 TEST_F(PointerTest, OnPointerButton) { | 131 TEST_F(PointerTest, OnPointerButton) { |
| 135 scoped_ptr<Surface> surface(new Surface); | 132 scoped_ptr<Surface> surface(new Surface); |
| 136 scoped_ptr<ShellSurface> shell_surface(new ShellSurface(surface.get())); | 133 scoped_ptr<ShellSurface> shell_surface(new ShellSurface(surface.get())); |
| 137 shell_surface->Init(); | |
| 138 gfx::Size buffer_size(10, 10); | 134 gfx::Size buffer_size(10, 10); |
| 139 scoped_ptr<Buffer> buffer(new Buffer( | 135 scoped_ptr<Buffer> buffer(new Buffer( |
| 140 exo_test_helper()->CreateGpuMemoryBuffer(buffer_size), GL_TEXTURE_2D)); | 136 exo_test_helper()->CreateGpuMemoryBuffer(buffer_size), GL_TEXTURE_2D)); |
| 141 surface->Attach(buffer.get()); | 137 surface->Attach(buffer.get()); |
| 142 surface->Commit(); | 138 surface->Commit(); |
| 143 | 139 |
| 144 MockPointerDelegate delegate; | 140 MockPointerDelegate delegate; |
| 145 scoped_ptr<Pointer> pointer(new Pointer(&delegate)); | 141 scoped_ptr<Pointer> pointer(new Pointer(&delegate)); |
| 146 ui::test::EventGenerator generator(ash::Shell::GetPrimaryRootWindow()); | 142 ui::test::EventGenerator generator(ash::Shell::GetPrimaryRootWindow()); |
| 147 | 143 |
| 148 EXPECT_CALL(delegate, CanAcceptPointerEventsForSurface(surface.get())) | 144 EXPECT_CALL(delegate, CanAcceptPointerEventsForSurface(surface.get())) |
| 149 .WillRepeatedly(testing::Return(true)); | 145 .WillRepeatedly(testing::Return(true)); |
| 150 EXPECT_CALL(delegate, OnPointerEnter(surface.get(), gfx::Point(), 0)); | 146 EXPECT_CALL(delegate, OnPointerEnter(surface.get(), gfx::Point(), 0)); |
| 151 generator.MoveMouseTo(surface->GetBoundsInScreen().origin()); | 147 generator.MoveMouseTo(surface->GetBoundsInScreen().origin()); |
| 152 | 148 |
| 153 EXPECT_CALL(delegate, | 149 EXPECT_CALL(delegate, |
| 154 OnPointerButton(testing::_, ui::EF_LEFT_MOUSE_BUTTON, true)); | 150 OnPointerButton(testing::_, ui::EF_LEFT_MOUSE_BUTTON, true)); |
| 155 EXPECT_CALL(delegate, | 151 EXPECT_CALL(delegate, |
| 156 OnPointerButton(testing::_, ui::EF_LEFT_MOUSE_BUTTON, false)); | 152 OnPointerButton(testing::_, ui::EF_LEFT_MOUSE_BUTTON, false)); |
| 157 generator.ClickLeftButton(); | 153 generator.ClickLeftButton(); |
| 158 | 154 |
| 159 EXPECT_CALL(delegate, OnPointerDestroying(pointer.get())); | 155 EXPECT_CALL(delegate, OnPointerDestroying(pointer.get())); |
| 160 pointer.reset(); | 156 pointer.reset(); |
| 161 } | 157 } |
| 162 | 158 |
| 163 TEST_F(PointerTest, OnPointerWheel) { | 159 TEST_F(PointerTest, OnPointerWheel) { |
| 164 scoped_ptr<Surface> surface(new Surface); | 160 scoped_ptr<Surface> surface(new Surface); |
| 165 scoped_ptr<ShellSurface> shell_surface(new ShellSurface(surface.get())); | 161 scoped_ptr<ShellSurface> shell_surface(new ShellSurface(surface.get())); |
| 166 shell_surface->Init(); | |
| 167 gfx::Size buffer_size(10, 10); | 162 gfx::Size buffer_size(10, 10); |
| 168 scoped_ptr<Buffer> buffer(new Buffer( | 163 scoped_ptr<Buffer> buffer(new Buffer( |
| 169 exo_test_helper()->CreateGpuMemoryBuffer(buffer_size), GL_TEXTURE_2D)); | 164 exo_test_helper()->CreateGpuMemoryBuffer(buffer_size), GL_TEXTURE_2D)); |
| 170 surface->Attach(buffer.get()); | 165 surface->Attach(buffer.get()); |
| 171 surface->Commit(); | 166 surface->Commit(); |
| 172 | 167 |
| 173 MockPointerDelegate delegate; | 168 MockPointerDelegate delegate; |
| 174 scoped_ptr<Pointer> pointer(new Pointer(&delegate)); | 169 scoped_ptr<Pointer> pointer(new Pointer(&delegate)); |
| 175 ui::test::EventGenerator generator(ash::Shell::GetPrimaryRootWindow()); | 170 ui::test::EventGenerator generator(ash::Shell::GetPrimaryRootWindow()); |
| 176 | 171 |
| 177 EXPECT_CALL(delegate, CanAcceptPointerEventsForSurface(surface.get())) | 172 EXPECT_CALL(delegate, CanAcceptPointerEventsForSurface(surface.get())) |
| 178 .WillRepeatedly(testing::Return(true)); | 173 .WillRepeatedly(testing::Return(true)); |
| 179 EXPECT_CALL(delegate, OnPointerEnter(surface.get(), gfx::Point(), 0)); | 174 EXPECT_CALL(delegate, OnPointerEnter(surface.get(), gfx::Point(), 0)); |
| 180 generator.MoveMouseTo(surface->GetBoundsInScreen().origin()); | 175 generator.MoveMouseTo(surface->GetBoundsInScreen().origin()); |
| 181 | 176 |
| 182 EXPECT_CALL(delegate, OnPointerWheel(testing::_, gfx::Vector2d(1, 1))); | 177 EXPECT_CALL(delegate, OnPointerWheel(testing::_, gfx::Vector2d(1, 1))); |
| 183 generator.MoveMouseWheel(1, 1); | 178 generator.MoveMouseWheel(1, 1); |
| 184 | 179 |
| 185 EXPECT_CALL(delegate, OnPointerDestroying(pointer.get())); | 180 EXPECT_CALL(delegate, OnPointerDestroying(pointer.get())); |
| 186 pointer.reset(); | 181 pointer.reset(); |
| 187 } | 182 } |
| 188 | 183 |
| 189 TEST_F(PointerTest, OnPointerScroll) { | 184 TEST_F(PointerTest, OnPointerScroll) { |
| 190 scoped_ptr<Surface> surface(new Surface); | 185 scoped_ptr<Surface> surface(new Surface); |
| 191 scoped_ptr<ShellSurface> shell_surface(new ShellSurface(surface.get())); | 186 scoped_ptr<ShellSurface> shell_surface(new ShellSurface(surface.get())); |
| 192 shell_surface->Init(); | |
| 193 gfx::Size buffer_size(10, 10); | 187 gfx::Size buffer_size(10, 10); |
| 194 scoped_ptr<Buffer> buffer(new Buffer( | 188 scoped_ptr<Buffer> buffer(new Buffer( |
| 195 exo_test_helper()->CreateGpuMemoryBuffer(buffer_size), GL_TEXTURE_2D)); | 189 exo_test_helper()->CreateGpuMemoryBuffer(buffer_size), GL_TEXTURE_2D)); |
| 196 surface->Attach(buffer.get()); | 190 surface->Attach(buffer.get()); |
| 197 surface->Commit(); | 191 surface->Commit(); |
| 198 | 192 |
| 199 MockPointerDelegate delegate; | 193 MockPointerDelegate delegate; |
| 200 scoped_ptr<Pointer> pointer(new Pointer(&delegate)); | 194 scoped_ptr<Pointer> pointer(new Pointer(&delegate)); |
| 201 ui::test::EventGenerator generator(ash::Shell::GetPrimaryRootWindow()); | 195 ui::test::EventGenerator generator(ash::Shell::GetPrimaryRootWindow()); |
| 202 gfx::Point location = surface->GetBoundsInScreen().origin(); | 196 gfx::Point location = surface->GetBoundsInScreen().origin(); |
| 203 | 197 |
| 204 EXPECT_CALL(delegate, CanAcceptPointerEventsForSurface(surface.get())) | 198 EXPECT_CALL(delegate, CanAcceptPointerEventsForSurface(surface.get())) |
| 205 .WillRepeatedly(testing::Return(true)); | 199 .WillRepeatedly(testing::Return(true)); |
| 206 EXPECT_CALL(delegate, OnPointerEnter(surface.get(), gfx::Point(), 0)); | 200 EXPECT_CALL(delegate, OnPointerEnter(surface.get(), gfx::Point(), 0)); |
| 207 generator.MoveMouseTo(location); | 201 generator.MoveMouseTo(location); |
| 208 | 202 |
| 209 EXPECT_CALL(delegate, OnPointerWheel(testing::_, gfx::Vector2d(1, 1))); | 203 EXPECT_CALL(delegate, OnPointerWheel(testing::_, gfx::Vector2d(1, 1))); |
| 210 ui::ScrollEvent scroll_event(ui::ET_SCROLL, location, ui::EventTimeForNow(), | 204 ui::ScrollEvent scroll_event(ui::ET_SCROLL, location, ui::EventTimeForNow(), |
| 211 0 /* flags */, 1 /* x_offset */, | 205 0 /* flags */, 1 /* x_offset */, |
| 212 1 /* y_offset */, 1 /* x_offset_ordinal */, | 206 1 /* y_offset */, 1 /* x_offset_ordinal */, |
| 213 1 /* y_offset_ordinal */, 1 /* finger_count */); | 207 1 /* y_offset_ordinal */, 1 /* finger_count */); |
| 214 generator.Dispatch(&scroll_event); | 208 generator.Dispatch(&scroll_event); |
| 215 | 209 |
| 216 EXPECT_CALL(delegate, OnPointerDestroying(pointer.get())); | 210 EXPECT_CALL(delegate, OnPointerDestroying(pointer.get())); |
| 217 pointer.reset(); | 211 pointer.reset(); |
| 218 } | 212 } |
| 219 | 213 |
| 220 } // namespace | 214 } // namespace |
| 221 } // namespace exo | 215 } // namespace exo |
| OLD | NEW |