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

Side by Side Diff: cc/trees/layer_tree_impl_unittest.cc

Issue 1372253002: gfx: Make conversions from gfx::Point to PointF explicit. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: pointfconvert-gfx: . Created 5 years, 2 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
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 "cc/trees/layer_tree_impl.h" 5 #include "cc/trees/layer_tree_impl.h"
6 6
7 #include "cc/layers/heads_up_display_layer_impl.h" 7 #include "cc/layers/heads_up_display_layer_impl.h"
8 #include "cc/layers/layer.h" 8 #include "cc/layers/layer.h"
9 #include "cc/layers/solid_color_scrollbar_layer_impl.h" 9 #include "cc/layers/solid_color_scrollbar_layer_impl.h"
10 #include "cc/test/fake_impl_proxy.h" 10 #include "cc/test/fake_impl_proxy.h"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 60
61 host_impl().SetViewportSize(root->bounds()); 61 host_impl().SetViewportSize(root->bounds());
62 host_impl().active_tree()->SetRootLayer(root.Pass()); 62 host_impl().active_tree()->SetRootLayer(root.Pass());
63 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree(); 63 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree();
64 64
65 // Sanity check the scenario we just created. 65 // Sanity check the scenario we just created.
66 ASSERT_EQ(1u, RenderSurfaceLayerList().size()); 66 ASSERT_EQ(1u, RenderSurfaceLayerList().size());
67 ASSERT_EQ(1u, root_layer()->render_surface()->layer_list().size()); 67 ASSERT_EQ(1u, root_layer()->render_surface()->layer_list().size());
68 68
69 // Hit testing for a point outside the layer should return a null pointer. 69 // Hit testing for a point outside the layer should return a null pointer.
70 gfx::Point test_point(101, 101); 70 gfx::PointF test_point(101.f, 101.f);
71 LayerImpl* result_layer = 71 LayerImpl* result_layer =
72 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 72 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
73 EXPECT_FALSE(result_layer); 73 EXPECT_FALSE(result_layer);
74 74
75 test_point = gfx::Point(-1, -1); 75 test_point = gfx::PointF(-1.f, -1.f);
76 result_layer = 76 result_layer =
77 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 77 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
78 EXPECT_FALSE(result_layer); 78 EXPECT_FALSE(result_layer);
79 79
80 // Hit testing for a point inside should return the root layer. 80 // Hit testing for a point inside should return the root layer.
81 test_point = gfx::Point(1, 1); 81 test_point = gfx::PointF(1.f, 1.f);
82 result_layer = 82 result_layer =
83 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 83 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
84 ASSERT_TRUE(result_layer); 84 ASSERT_TRUE(result_layer);
85 EXPECT_EQ(12345, result_layer->id()); 85 EXPECT_EQ(12345, result_layer->id());
86 86
87 test_point = gfx::Point(99, 99); 87 test_point = gfx::PointF(99.f, 99.f);
88 result_layer = 88 result_layer =
89 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 89 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
90 ASSERT_TRUE(result_layer); 90 ASSERT_TRUE(result_layer);
91 EXPECT_EQ(12345, result_layer->id()); 91 EXPECT_EQ(12345, result_layer->id());
92 } 92 }
93 93
94 TEST_F(LayerTreeImplTest, UpdateViewportAndHitTest) { 94 TEST_F(LayerTreeImplTest, UpdateViewportAndHitTest) {
95 // Ensures that the viewport rect is correctly updated by the clip tree. 95 // Ensures that the viewport rect is correctly updated by the clip tree.
96 TestSharedBitmapManager shared_bitmap_manager; 96 TestSharedBitmapManager shared_bitmap_manager;
97 TestTaskGraphRunner task_graph_runner; 97 TestTaskGraphRunner task_graph_runner;
(...skipping 20 matching lines...) Expand all
118 host_impl->active_tree()->SetRootLayer(root.Pass()); 118 host_impl->active_tree()->SetRootLayer(root.Pass());
119 host_impl->UpdateNumChildrenAndDrawPropertiesForActiveTree(); 119 host_impl->UpdateNumChildrenAndDrawPropertiesForActiveTree();
120 EXPECT_EQ( 120 EXPECT_EQ(
121 gfx::RectF(gfx::SizeF(bounds)), 121 gfx::RectF(gfx::SizeF(bounds)),
122 host_impl->active_tree()->property_trees()->clip_tree.ViewportClip()); 122 host_impl->active_tree()->property_trees()->clip_tree.ViewportClip());
123 EXPECT_EQ(gfx::Rect(bounds), 123 EXPECT_EQ(gfx::Rect(bounds),
124 host_impl->RootLayer()->visible_rect_from_property_trees()); 124 host_impl->RootLayer()->visible_rect_from_property_trees());
125 125
126 gfx::Size new_bounds(50, 50); 126 gfx::Size new_bounds(50, 50);
127 host_impl->SetViewportSize(new_bounds); 127 host_impl->SetViewportSize(new_bounds);
128 gfx::Point test_point(51, 51); 128 gfx::PointF test_point(51.f, 51.f);
129 host_impl->active_tree()->FindLayerThatIsHitByPoint(test_point); 129 host_impl->active_tree()->FindLayerThatIsHitByPoint(test_point);
130 EXPECT_EQ( 130 EXPECT_EQ(
131 gfx::RectF(gfx::SizeF(new_bounds)), 131 gfx::RectF(gfx::SizeF(new_bounds)),
132 host_impl->active_tree()->property_trees()->clip_tree.ViewportClip()); 132 host_impl->active_tree()->property_trees()->clip_tree.ViewportClip());
133 EXPECT_EQ(gfx::Rect(new_bounds), 133 EXPECT_EQ(gfx::Rect(new_bounds),
134 host_impl->RootLayer()->visible_rect_from_property_trees()); 134 host_impl->RootLayer()->visible_rect_from_property_trees());
135 } 135 }
136 136
137 TEST_F(LayerTreeImplTest, HitTestingForSingleLayerAndHud) { 137 TEST_F(LayerTreeImplTest, HitTestingForSingleLayerAndHud) {
138 scoped_ptr<LayerImpl> root = 138 scoped_ptr<LayerImpl> root =
(...skipping 20 matching lines...) Expand all
159 159
160 host_impl().SetViewportSize(hud_bounds); 160 host_impl().SetViewportSize(hud_bounds);
161 host_impl().active_tree()->SetRootLayer(root.Pass()); 161 host_impl().active_tree()->SetRootLayer(root.Pass());
162 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree(); 162 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree();
163 163
164 // Sanity check the scenario we just created. 164 // Sanity check the scenario we just created.
165 ASSERT_EQ(1u, RenderSurfaceLayerList().size()); 165 ASSERT_EQ(1u, RenderSurfaceLayerList().size());
166 ASSERT_EQ(2u, root_layer()->render_surface()->layer_list().size()); 166 ASSERT_EQ(2u, root_layer()->render_surface()->layer_list().size());
167 167
168 // Hit testing for a point inside HUD, but outside root should return null 168 // Hit testing for a point inside HUD, but outside root should return null
169 gfx::Point test_point(101, 101); 169 gfx::PointF test_point(101.f, 101.f);
170 LayerImpl* result_layer = 170 LayerImpl* result_layer =
171 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 171 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
172 EXPECT_FALSE(result_layer); 172 EXPECT_FALSE(result_layer);
173 173
174 test_point = gfx::Point(-1, -1); 174 test_point = gfx::PointF(-1.f, -1.f);
175 result_layer = 175 result_layer =
176 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 176 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
177 EXPECT_FALSE(result_layer); 177 EXPECT_FALSE(result_layer);
178 178
179 // Hit testing for a point inside should return the root layer, never the HUD 179 // Hit testing for a point inside should return the root layer, never the HUD
180 // layer. 180 // layer.
181 test_point = gfx::Point(1, 1); 181 test_point = gfx::PointF(1.f, 1.f);
182 result_layer = 182 result_layer =
183 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 183 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
184 ASSERT_TRUE(result_layer); 184 ASSERT_TRUE(result_layer);
185 EXPECT_EQ(12345, result_layer->id()); 185 EXPECT_EQ(12345, result_layer->id());
186 186
187 test_point = gfx::Point(99, 99); 187 test_point = gfx::PointF(99.f, 99.f);
188 result_layer = 188 result_layer =
189 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 189 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
190 ASSERT_TRUE(result_layer); 190 ASSERT_TRUE(result_layer);
191 EXPECT_EQ(12345, result_layer->id()); 191 EXPECT_EQ(12345, result_layer->id());
192 } 192 }
193 193
194 TEST_F(LayerTreeImplTest, HitTestingForUninvertibleTransform) { 194 TEST_F(LayerTreeImplTest, HitTestingForUninvertibleTransform) {
195 scoped_ptr<LayerImpl> root = 195 scoped_ptr<LayerImpl> root =
196 LayerImpl::Create(host_impl().active_tree(), 12345); 196 LayerImpl::Create(host_impl().active_tree(), 12345);
197 197
(...skipping 17 matching lines...) Expand all
215 host_impl().active_tree()->SetRootLayer(root.Pass()); 215 host_impl().active_tree()->SetRootLayer(root.Pass());
216 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree(); 216 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree();
217 // Sanity check the scenario we just created. 217 // Sanity check the scenario we just created.
218 ASSERT_EQ(1u, RenderSurfaceLayerList().size()); 218 ASSERT_EQ(1u, RenderSurfaceLayerList().size());
219 ASSERT_EQ(1u, root_layer()->render_surface()->layer_list().size()); 219 ASSERT_EQ(1u, root_layer()->render_surface()->layer_list().size());
220 ASSERT_FALSE(root_layer()->screen_space_transform().IsInvertible()); 220 ASSERT_FALSE(root_layer()->screen_space_transform().IsInvertible());
221 221
222 // Hit testing any point should not hit the layer. If the invertible matrix is 222 // Hit testing any point should not hit the layer. If the invertible matrix is
223 // accidentally ignored and treated like an identity, then the hit testing 223 // accidentally ignored and treated like an identity, then the hit testing
224 // will incorrectly hit the layer when it shouldn't. 224 // will incorrectly hit the layer when it shouldn't.
225 gfx::Point test_point(1, 1); 225 gfx::PointF test_point(1.f, 1.f);
226 LayerImpl* result_layer = 226 LayerImpl* result_layer =
227 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 227 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
228 EXPECT_FALSE(result_layer); 228 EXPECT_FALSE(result_layer);
229 229
230 test_point = gfx::Point(10, 10); 230 test_point = gfx::PointF(10.f, 10.f);
231 result_layer = 231 result_layer =
232 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 232 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
233 EXPECT_FALSE(result_layer); 233 EXPECT_FALSE(result_layer);
234 234
235 test_point = gfx::Point(10, 30); 235 test_point = gfx::PointF(10.f, 30.f);
236 result_layer = 236 result_layer =
237 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 237 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
238 EXPECT_FALSE(result_layer); 238 EXPECT_FALSE(result_layer);
239 239
240 test_point = gfx::Point(50, 50); 240 test_point = gfx::PointF(50.f, 50.f);
241 result_layer = 241 result_layer =
242 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 242 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
243 EXPECT_FALSE(result_layer); 243 EXPECT_FALSE(result_layer);
244 244
245 test_point = gfx::Point(67, 48); 245 test_point = gfx::PointF(67.f, 48.f);
246 result_layer = 246 result_layer =
247 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 247 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
248 EXPECT_FALSE(result_layer); 248 EXPECT_FALSE(result_layer);
249 249
250 test_point = gfx::Point(99, 99); 250 test_point = gfx::PointF(99.f, 99.f);
251 result_layer = 251 result_layer =
252 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 252 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
253 EXPECT_FALSE(result_layer); 253 EXPECT_FALSE(result_layer);
254 254
255 test_point = gfx::Point(-1, -1); 255 test_point = gfx::PointF(-1.f, -1.f);
256 result_layer = 256 result_layer =
257 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 257 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
258 EXPECT_FALSE(result_layer); 258 EXPECT_FALSE(result_layer);
259 } 259 }
260 260
261 TEST_F(LayerTreeImplTest, HitTestingForSinglePositionedLayer) { 261 TEST_F(LayerTreeImplTest, HitTestingForSinglePositionedLayer) {
262 scoped_ptr<LayerImpl> root = 262 scoped_ptr<LayerImpl> root =
263 LayerImpl::Create(host_impl().active_tree(), 12345); 263 LayerImpl::Create(host_impl().active_tree(), 12345);
264 264
265 gfx::Transform identity_matrix; 265 gfx::Transform identity_matrix;
266 gfx::Point3F transform_origin; 266 gfx::Point3F transform_origin;
267 // this layer is positioned, and hit testing should correctly know where the 267 // this layer is positioned, and hit testing should correctly know where the
268 // layer is located. 268 // layer is located.
269 gfx::PointF position(50.f, 50.f); 269 gfx::PointF position(50.f, 50.f);
270 gfx::Size bounds(100, 100); 270 gfx::Size bounds(100, 100);
271 SetLayerPropertiesForTesting(root.get(), identity_matrix, transform_origin, 271 SetLayerPropertiesForTesting(root.get(), identity_matrix, transform_origin,
272 position, bounds, true, false, true); 272 position, bounds, true, false, true);
273 root->SetDrawsContent(true); 273 root->SetDrawsContent(true);
274 274
275 host_impl().SetViewportSize(root->bounds()); 275 host_impl().SetViewportSize(root->bounds());
276 host_impl().active_tree()->SetRootLayer(root.Pass()); 276 host_impl().active_tree()->SetRootLayer(root.Pass());
277 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree(); 277 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree();
278 278
279 // Sanity check the scenario we just created. 279 // Sanity check the scenario we just created.
280 ASSERT_EQ(1u, RenderSurfaceLayerList().size()); 280 ASSERT_EQ(1u, RenderSurfaceLayerList().size());
281 ASSERT_EQ(1u, root_layer()->render_surface()->layer_list().size()); 281 ASSERT_EQ(1u, root_layer()->render_surface()->layer_list().size());
282 282
283 // Hit testing for a point outside the layer should return a null pointer. 283 // Hit testing for a point outside the layer should return a null pointer.
284 gfx::Point test_point(49, 49); 284 gfx::PointF test_point(49.f, 49.f);
285 LayerImpl* result_layer = 285 LayerImpl* result_layer =
286 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 286 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
287 EXPECT_FALSE(result_layer); 287 EXPECT_FALSE(result_layer);
288 288
289 // Even though the layer exists at (101, 101), it should not be visible there 289 // Even though the layer exists at (101, 101), it should not be visible there
290 // since the root render surface would clamp it. 290 // since the root render surface would clamp it.
291 test_point = gfx::Point(101, 101); 291 test_point = gfx::PointF(101.f, 101.f);
292 result_layer = 292 result_layer =
293 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 293 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
294 EXPECT_FALSE(result_layer); 294 EXPECT_FALSE(result_layer);
295 295
296 // Hit testing for a point inside should return the root layer. 296 // Hit testing for a point inside should return the root layer.
297 test_point = gfx::Point(51, 51); 297 test_point = gfx::PointF(51.f, 51.f);
298 result_layer = 298 result_layer =
299 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 299 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
300 ASSERT_TRUE(result_layer); 300 ASSERT_TRUE(result_layer);
301 EXPECT_EQ(12345, result_layer->id()); 301 EXPECT_EQ(12345, result_layer->id());
302 302
303 test_point = gfx::Point(99, 99); 303 test_point = gfx::PointF(99.f, 99.f);
304 result_layer = 304 result_layer =
305 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 305 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
306 ASSERT_TRUE(result_layer); 306 ASSERT_TRUE(result_layer);
307 EXPECT_EQ(12345, result_layer->id()); 307 EXPECT_EQ(12345, result_layer->id());
308 } 308 }
309 309
310 TEST_F(LayerTreeImplTest, HitTestingForSingleRotatedLayer) { 310 TEST_F(LayerTreeImplTest, HitTestingForSingleRotatedLayer) {
311 scoped_ptr<LayerImpl> root = 311 scoped_ptr<LayerImpl> root =
312 LayerImpl::Create(host_impl().active_tree(), 12345); 312 LayerImpl::Create(host_impl().active_tree(), 12345);
313 313
(...skipping 14 matching lines...) Expand all
328 host_impl().active_tree()->SetRootLayer(root.Pass()); 328 host_impl().active_tree()->SetRootLayer(root.Pass());
329 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree(); 329 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree();
330 330
331 // Sanity check the scenario we just created. 331 // Sanity check the scenario we just created.
332 ASSERT_EQ(1u, RenderSurfaceLayerList().size()); 332 ASSERT_EQ(1u, RenderSurfaceLayerList().size());
333 ASSERT_EQ(1u, root_layer()->render_surface()->layer_list().size()); 333 ASSERT_EQ(1u, root_layer()->render_surface()->layer_list().size());
334 334
335 // Hit testing for points outside the layer. 335 // Hit testing for points outside the layer.
336 // These corners would have been inside the un-transformed layer, but they 336 // These corners would have been inside the un-transformed layer, but they
337 // should not hit the correctly transformed layer. 337 // should not hit the correctly transformed layer.
338 gfx::Point test_point(99, 99); 338 gfx::PointF test_point(99.f, 99.f);
339 LayerImpl* result_layer = 339 LayerImpl* result_layer =
340 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 340 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
341 EXPECT_FALSE(result_layer); 341 EXPECT_FALSE(result_layer);
342 342
343 test_point = gfx::Point(1, 1); 343 test_point = gfx::PointF(1.f, 1.f);
344 result_layer = 344 result_layer =
345 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 345 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
346 EXPECT_FALSE(result_layer); 346 EXPECT_FALSE(result_layer);
347 347
348 // Hit testing for a point inside should return the root layer. 348 // Hit testing for a point inside should return the root layer.
349 test_point = gfx::Point(1, 50); 349 test_point = gfx::PointF(1.f, 50.f);
350 result_layer = 350 result_layer =
351 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 351 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
352 ASSERT_TRUE(result_layer); 352 ASSERT_TRUE(result_layer);
353 EXPECT_EQ(12345, result_layer->id()); 353 EXPECT_EQ(12345, result_layer->id());
354 354
355 // Hit testing the corners that would overlap the unclipped layer, but are 355 // Hit testing the corners that would overlap the unclipped layer, but are
356 // outside the clipped region. 356 // outside the clipped region.
357 test_point = gfx::Point(50, -1); 357 test_point = gfx::PointF(50.f, -1.f);
358 result_layer = 358 result_layer =
359 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 359 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
360 ASSERT_FALSE(result_layer); 360 ASSERT_FALSE(result_layer);
361 361
362 test_point = gfx::Point(-1, 50); 362 test_point = gfx::PointF(-1.f, 50.f);
363 result_layer = 363 result_layer =
364 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 364 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
365 ASSERT_FALSE(result_layer); 365 ASSERT_FALSE(result_layer);
366 } 366 }
367 367
368 TEST_F(LayerTreeImplTest, HitTestingForSinglePerspectiveLayer) { 368 TEST_F(LayerTreeImplTest, HitTestingForSinglePerspectiveLayer) {
369 scoped_ptr<LayerImpl> root = 369 scoped_ptr<LayerImpl> root =
370 LayerImpl::Create(host_impl().active_tree(), 12345); 370 LayerImpl::Create(host_impl().active_tree(), 12345);
371 371
372 gfx::Transform identity_matrix; 372 gfx::Transform identity_matrix;
(...skipping 19 matching lines...) Expand all
392 host_impl().active_tree()->SetRootLayer(root.Pass()); 392 host_impl().active_tree()->SetRootLayer(root.Pass());
393 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree(); 393 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree();
394 394
395 // Sanity check the scenario we just created. 395 // Sanity check the scenario we just created.
396 ASSERT_EQ(1u, RenderSurfaceLayerList().size()); 396 ASSERT_EQ(1u, RenderSurfaceLayerList().size());
397 ASSERT_EQ(1u, root_layer()->render_surface()->layer_list().size()); 397 ASSERT_EQ(1u, root_layer()->render_surface()->layer_list().size());
398 398
399 // Hit testing for points outside the layer. 399 // Hit testing for points outside the layer.
400 // These corners would have been inside the un-transformed layer, but they 400 // These corners would have been inside the un-transformed layer, but they
401 // should not hit the correctly transformed layer. 401 // should not hit the correctly transformed layer.
402 gfx::Point test_point(24, 24); 402 gfx::PointF test_point(24.f, 24.f);
403 LayerImpl* result_layer = 403 LayerImpl* result_layer =
404 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 404 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
405 EXPECT_FALSE(result_layer); 405 EXPECT_FALSE(result_layer);
406 406
407 test_point = gfx::Point(76, 76); 407 test_point = gfx::PointF(76.f, 76.f);
408 result_layer = 408 result_layer =
409 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 409 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
410 EXPECT_FALSE(result_layer); 410 EXPECT_FALSE(result_layer);
411 411
412 // Hit testing for a point inside should return the root layer. 412 // Hit testing for a point inside should return the root layer.
413 test_point = gfx::Point(26, 26); 413 test_point = gfx::PointF(26.f, 26.f);
414 result_layer = 414 result_layer =
415 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 415 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
416 ASSERT_TRUE(result_layer); 416 ASSERT_TRUE(result_layer);
417 EXPECT_EQ(12345, result_layer->id()); 417 EXPECT_EQ(12345, result_layer->id());
418 418
419 test_point = gfx::Point(74, 74); 419 test_point = gfx::PointF(74.f, 74.f);
420 result_layer = 420 result_layer =
421 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 421 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
422 ASSERT_TRUE(result_layer); 422 ASSERT_TRUE(result_layer);
423 EXPECT_EQ(12345, result_layer->id()); 423 EXPECT_EQ(12345, result_layer->id());
424 } 424 }
425 425
426 TEST_F(LayerTreeImplTest, HitTestingForSimpleClippedLayer) { 426 TEST_F(LayerTreeImplTest, HitTestingForSimpleClippedLayer) {
427 // Test that hit-testing will only work for the visible portion of a layer, 427 // Test that hit-testing will only work for the visible portion of a layer,
428 // and not the entire layer bounds. Here we just test the simple axis-aligned 428 // and not the entire layer bounds. Here we just test the simple axis-aligned
429 // case. 429 // case.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree(); 462 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree();
463 463
464 // Sanity check the scenario we just created. 464 // Sanity check the scenario we just created.
465 ASSERT_EQ(1u, RenderSurfaceLayerList().size()); 465 ASSERT_EQ(1u, RenderSurfaceLayerList().size());
466 ASSERT_EQ(1u, root_layer()->render_surface()->layer_list().size()); 466 ASSERT_EQ(1u, root_layer()->render_surface()->layer_list().size());
467 ASSERT_EQ(456, root_layer()->render_surface()->layer_list().at(0)->id()); 467 ASSERT_EQ(456, root_layer()->render_surface()->layer_list().at(0)->id());
468 468
469 // Hit testing for a point outside the layer should return a null pointer. 469 // Hit testing for a point outside the layer should return a null pointer.
470 // Despite the child layer being very large, it should be clipped to the root 470 // Despite the child layer being very large, it should be clipped to the root
471 // layer's bounds. 471 // layer's bounds.
472 gfx::Point test_point(24, 24); 472 gfx::PointF test_point(24.f, 24.f);
473 LayerImpl* result_layer = 473 LayerImpl* result_layer =
474 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 474 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
475 EXPECT_FALSE(result_layer); 475 EXPECT_FALSE(result_layer);
476 476
477 // Even though the layer exists at (101, 101), it should not be visible there 477 // Even though the layer exists at (101, 101), it should not be visible there
478 // since the clipping_layer would clamp it. 478 // since the clipping_layer would clamp it.
479 test_point = gfx::Point(76, 76); 479 test_point = gfx::PointF(76.f, 76.f);
480 result_layer = 480 result_layer =
481 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 481 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
482 EXPECT_FALSE(result_layer); 482 EXPECT_FALSE(result_layer);
483 483
484 // Hit testing for a point inside should return the child layer. 484 // Hit testing for a point inside should return the child layer.
485 test_point = gfx::Point(26, 26); 485 test_point = gfx::PointF(26.f, 26.f);
486 result_layer = 486 result_layer =
487 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 487 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
488 ASSERT_TRUE(result_layer); 488 ASSERT_TRUE(result_layer);
489 EXPECT_EQ(456, result_layer->id()); 489 EXPECT_EQ(456, result_layer->id());
490 490
491 test_point = gfx::Point(74, 74); 491 test_point = gfx::PointF(74.f, 74.f);
492 result_layer = 492 result_layer =
493 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 493 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
494 ASSERT_TRUE(result_layer); 494 ASSERT_TRUE(result_layer);
495 EXPECT_EQ(456, result_layer->id()); 495 EXPECT_EQ(456, result_layer->id());
496 } 496 }
497 497
498 TEST_F(LayerTreeImplTest, HitTestingForMultiClippedRotatedLayer) { 498 TEST_F(LayerTreeImplTest, HitTestingForMultiClippedRotatedLayer) {
499 // This test checks whether hit testing correctly avoids hit testing with 499 // This test checks whether hit testing correctly avoids hit testing with
500 // multiple ancestors that clip in non axis-aligned ways. To pass this test, 500 // multiple ancestors that clip in non axis-aligned ways. To pass this test,
501 // the hit testing algorithm needs to recognize that multiple parent layers 501 // the hit testing algorithm needs to recognize that multiple parent layers
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 child->AddChild(grand_child.Pass()); 563 child->AddChild(grand_child.Pass());
564 root->AddChild(child.Pass()); 564 root->AddChild(child.Pass());
565 } 565 }
566 566
567 host_impl().SetViewportSize(root->bounds()); 567 host_impl().SetViewportSize(root->bounds());
568 host_impl().active_tree()->SetRootLayer(root.Pass()); 568 host_impl().active_tree()->SetRootLayer(root.Pass());
569 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree(); 569 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree();
570 570
571 // (11, 89) is close to the the bottom left corner within the clip, but it is 571 // (11, 89) is close to the the bottom left corner within the clip, but it is
572 // not inside the layer. 572 // not inside the layer.
573 gfx::Point test_point(11, 89); 573 gfx::PointF test_point(11.f, 89.f);
574 LayerImpl* result_layer = 574 LayerImpl* result_layer =
575 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 575 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
576 EXPECT_FALSE(result_layer); 576 EXPECT_FALSE(result_layer);
577 577
578 // Closer inwards from the bottom left will overlap the layer. 578 // Closer inwards from the bottom left will overlap the layer.
579 test_point = gfx::Point(25, 75); 579 test_point = gfx::PointF(25.f, 75.f);
580 result_layer = 580 result_layer =
581 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 581 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
582 ASSERT_TRUE(result_layer); 582 ASSERT_TRUE(result_layer);
583 EXPECT_EQ(2468, result_layer->id()); 583 EXPECT_EQ(2468, result_layer->id());
584 584
585 // (4, 50) is inside the unclipped layer, but that corner of the layer should 585 // (4, 50) is inside the unclipped layer, but that corner of the layer should
586 // be clipped away by the grandparent and should not get hit. If hit testing 586 // be clipped away by the grandparent and should not get hit. If hit testing
587 // blindly uses visible content rect without considering how parent may clip 587 // blindly uses visible content rect without considering how parent may clip
588 // the layer, then hit testing would accidentally think that the point 588 // the layer, then hit testing would accidentally think that the point
589 // successfully hits the layer. 589 // successfully hits the layer.
590 test_point = gfx::Point(4, 50); 590 test_point = gfx::PointF(4.f, 50.f);
591 result_layer = 591 result_layer =
592 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 592 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
593 EXPECT_FALSE(result_layer); 593 EXPECT_FALSE(result_layer);
594 594
595 // (11, 50) is inside the layer and within the clipped area. 595 // (11, 50) is inside the layer and within the clipped area.
596 test_point = gfx::Point(11, 50); 596 test_point = gfx::PointF(11.f, 50.f);
597 result_layer = 597 result_layer =
598 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 598 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
599 ASSERT_TRUE(result_layer); 599 ASSERT_TRUE(result_layer);
600 EXPECT_EQ(2468, result_layer->id()); 600 EXPECT_EQ(2468, result_layer->id());
601 601
602 // Around the middle, just to the right and up, would have hit the layer 602 // Around the middle, just to the right and up, would have hit the layer
603 // except that that area should be clipped away by the parent. 603 // except that that area should be clipped away by the parent.
604 test_point = gfx::Point(51, 49); 604 test_point = gfx::PointF(51.f, 49.f);
605 result_layer = 605 result_layer =
606 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 606 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
607 EXPECT_FALSE(result_layer); 607 EXPECT_FALSE(result_layer);
608 608
609 // Around the middle, just to the left and down, should successfully hit the 609 // Around the middle, just to the left and down, should successfully hit the
610 // layer. 610 // layer.
611 test_point = gfx::Point(49, 51); 611 test_point = gfx::PointF(49.f, 51.f);
612 result_layer = 612 result_layer =
613 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 613 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
614 ASSERT_TRUE(result_layer); 614 ASSERT_TRUE(result_layer);
615 EXPECT_EQ(2468, result_layer->id()); 615 EXPECT_EQ(2468, result_layer->id());
616 } 616 }
617 617
618 TEST_F(LayerTreeImplTest, HitTestingForNonClippingIntermediateLayer) { 618 TEST_F(LayerTreeImplTest, HitTestingForNonClippingIntermediateLayer) {
619 // This test checks that hit testing code does not accidentally clip to layer 619 // This test checks that hit testing code does not accidentally clip to layer
620 // bounds for a layer that actually does not clip. 620 // bounds for a layer that actually does not clip.
621 gfx::Transform identity_matrix; 621 gfx::Transform identity_matrix;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
656 host_impl().SetViewportSize(root->bounds()); 656 host_impl().SetViewportSize(root->bounds());
657 host_impl().active_tree()->SetRootLayer(root.Pass()); 657 host_impl().active_tree()->SetRootLayer(root.Pass());
658 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree(); 658 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree();
659 659
660 // Sanity check the scenario we just created. 660 // Sanity check the scenario we just created.
661 ASSERT_EQ(1u, RenderSurfaceLayerList().size()); 661 ASSERT_EQ(1u, RenderSurfaceLayerList().size());
662 ASSERT_EQ(1u, root_layer()->render_surface()->layer_list().size()); 662 ASSERT_EQ(1u, root_layer()->render_surface()->layer_list().size());
663 ASSERT_EQ(456, root_layer()->render_surface()->layer_list().at(0)->id()); 663 ASSERT_EQ(456, root_layer()->render_surface()->layer_list().at(0)->id());
664 664
665 // Hit testing for a point outside the layer should return a null pointer. 665 // Hit testing for a point outside the layer should return a null pointer.
666 gfx::Point test_point(69, 69); 666 gfx::PointF test_point(69.f, 69.f);
667 LayerImpl* result_layer = 667 LayerImpl* result_layer =
668 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 668 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
669 EXPECT_FALSE(result_layer); 669 EXPECT_FALSE(result_layer);
670 670
671 test_point = gfx::Point(91, 91); 671 test_point = gfx::PointF(91.f, 91.f);
672 result_layer = 672 result_layer =
673 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 673 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
674 EXPECT_FALSE(result_layer); 674 EXPECT_FALSE(result_layer);
675 675
676 // Hit testing for a point inside should return the child layer. 676 // Hit testing for a point inside should return the child layer.
677 test_point = gfx::Point(71, 71); 677 test_point = gfx::PointF(71.f, 71.f);
678 result_layer = 678 result_layer =
679 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 679 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
680 ASSERT_TRUE(result_layer); 680 ASSERT_TRUE(result_layer);
681 EXPECT_EQ(456, result_layer->id()); 681 EXPECT_EQ(456, result_layer->id());
682 682
683 test_point = gfx::Point(89, 89); 683 test_point = gfx::PointF(89.f, 89.f);
684 result_layer = 684 result_layer =
685 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 685 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
686 ASSERT_TRUE(result_layer); 686 ASSERT_TRUE(result_layer);
687 EXPECT_EQ(456, result_layer->id()); 687 EXPECT_EQ(456, result_layer->id());
688 } 688 }
689 689
690 TEST_F(LayerTreeImplTest, HitTestingForMultipleLayers) { 690 TEST_F(LayerTreeImplTest, HitTestingForMultipleLayers) {
691 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl().active_tree(), 1); 691 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl().active_tree(), 1);
692 692
693 gfx::Transform identity_matrix; 693 gfx::Transform identity_matrix;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
756 756
757 RenderSurfaceImpl* root_render_surface = root_layer()->render_surface(); 757 RenderSurfaceImpl* root_render_surface = root_layer()->render_surface();
758 ASSERT_EQ(4u, root_render_surface->layer_list().size()); 758 ASSERT_EQ(4u, root_render_surface->layer_list().size());
759 ASSERT_EQ(1, root_render_surface->layer_list().at(0)->id()); // root layer 759 ASSERT_EQ(1, root_render_surface->layer_list().at(0)->id()); // root layer
760 ASSERT_EQ(2, root_render_surface->layer_list().at(1)->id()); // child1 760 ASSERT_EQ(2, root_render_surface->layer_list().at(1)->id()); // child1
761 ASSERT_EQ(4, root_render_surface->layer_list().at(2)->id()); // grand_child1 761 ASSERT_EQ(4, root_render_surface->layer_list().at(2)->id()); // grand_child1
762 ASSERT_EQ(3, root_render_surface->layer_list().at(3)->id()); // child2 762 ASSERT_EQ(3, root_render_surface->layer_list().at(3)->id()); // child2
763 763
764 // Nothing overlaps the root_layer at (1, 1), so hit testing there should find 764 // Nothing overlaps the root_layer at (1, 1), so hit testing there should find
765 // the root layer. 765 // the root layer.
766 gfx::Point test_point = gfx::Point(1, 1); 766 gfx::PointF test_point = gfx::PointF(1.f, 1.f);
767 LayerImpl* result_layer = 767 LayerImpl* result_layer =
768 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 768 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
769 ASSERT_TRUE(result_layer); 769 ASSERT_TRUE(result_layer);
770 EXPECT_EQ(1, result_layer->id()); 770 EXPECT_EQ(1, result_layer->id());
771 771
772 // At (15, 15), child1 and root are the only layers. child1 is expected to be 772 // At (15, 15), child1 and root are the only layers. child1 is expected to be
773 // on top. 773 // on top.
774 test_point = gfx::Point(15, 15); 774 test_point = gfx::PointF(15.f, 15.f);
775 result_layer = 775 result_layer =
776 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 776 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
777 ASSERT_TRUE(result_layer); 777 ASSERT_TRUE(result_layer);
778 EXPECT_EQ(2, result_layer->id()); 778 EXPECT_EQ(2, result_layer->id());
779 779
780 // At (51, 20), child1 and child2 overlap. child2 is expected to be on top. 780 // At (51, 20), child1 and child2 overlap. child2 is expected to be on top.
781 test_point = gfx::Point(51, 20); 781 test_point = gfx::PointF(51.f, 20.f);
782 result_layer = 782 result_layer =
783 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 783 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
784 ASSERT_TRUE(result_layer); 784 ASSERT_TRUE(result_layer);
785 EXPECT_EQ(3, result_layer->id()); 785 EXPECT_EQ(3, result_layer->id());
786 786
787 // At (80, 51), child2 and grand_child1 overlap. child2 is expected to be on 787 // At (80, 51), child2 and grand_child1 overlap. child2 is expected to be on
788 // top. 788 // top.
789 test_point = gfx::Point(80, 51); 789 test_point = gfx::PointF(80.f, 51.f);
790 result_layer = 790 result_layer =
791 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 791 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
792 ASSERT_TRUE(result_layer); 792 ASSERT_TRUE(result_layer);
793 EXPECT_EQ(3, result_layer->id()); 793 EXPECT_EQ(3, result_layer->id());
794 794
795 // At (51, 51), all layers overlap each other. child2 is expected to be on top 795 // At (51, 51), all layers overlap each other. child2 is expected to be on top
796 // of all other layers. 796 // of all other layers.
797 test_point = gfx::Point(51, 51); 797 test_point = gfx::PointF(51.f, 51.f);
798 result_layer = 798 result_layer =
799 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 799 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
800 ASSERT_TRUE(result_layer); 800 ASSERT_TRUE(result_layer);
801 EXPECT_EQ(3, result_layer->id()); 801 EXPECT_EQ(3, result_layer->id());
802 802
803 // At (20, 51), child1 and grand_child1 overlap. grand_child1 is expected to 803 // At (20, 51), child1 and grand_child1 overlap. grand_child1 is expected to
804 // be on top. 804 // be on top.
805 test_point = gfx::Point(20, 51); 805 test_point = gfx::PointF(20.f, 51.f);
806 result_layer = 806 result_layer =
807 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 807 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
808 ASSERT_TRUE(result_layer); 808 ASSERT_TRUE(result_layer);
809 EXPECT_EQ(4, result_layer->id()); 809 EXPECT_EQ(4, result_layer->id());
810 } 810 }
811 811
812 TEST_F(LayerTreeImplTest, HitTestingForMultipleLayersAtVaryingDepths) { 812 TEST_F(LayerTreeImplTest, HitTestingForMultipleLayersAtVaryingDepths) {
813 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl().active_tree(), 1); 813 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl().active_tree(), 1);
814 814
815 gfx::Transform identity_matrix; 815 gfx::Transform identity_matrix;
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
879 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree(); 879 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree();
880 880
881 // Sanity check the scenario we just created. 881 // Sanity check the scenario we just created.
882 ASSERT_TRUE(child1); 882 ASSERT_TRUE(child1);
883 ASSERT_TRUE(child2); 883 ASSERT_TRUE(child2);
884 ASSERT_TRUE(grand_child1); 884 ASSERT_TRUE(grand_child1);
885 ASSERT_EQ(1u, RenderSurfaceLayerList().size()); 885 ASSERT_EQ(1u, RenderSurfaceLayerList().size());
886 886
887 // Nothing overlaps the root_layer at (1, 1), so hit testing there should find 887 // Nothing overlaps the root_layer at (1, 1), so hit testing there should find
888 // the root layer. 888 // the root layer.
889 gfx::Point test_point = gfx::Point(1, 1); 889 gfx::PointF test_point = gfx::PointF(1.f, 1.f);
890 LayerImpl* result_layer = 890 LayerImpl* result_layer =
891 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 891 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
892 ASSERT_TRUE(result_layer); 892 ASSERT_TRUE(result_layer);
893 EXPECT_EQ(1, result_layer->id()); 893 EXPECT_EQ(1, result_layer->id());
894 894
895 // At (15, 15), child1 and root are the only layers. child1 is expected to be 895 // At (15, 15), child1 and root are the only layers. child1 is expected to be
896 // on top. 896 // on top.
897 test_point = gfx::Point(15, 15); 897 test_point = gfx::PointF(15.f, 15.f);
898 result_layer = 898 result_layer =
899 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 899 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
900 ASSERT_TRUE(result_layer); 900 ASSERT_TRUE(result_layer);
901 EXPECT_EQ(2, result_layer->id()); 901 EXPECT_EQ(2, result_layer->id());
902 902
903 // At (51, 20), child1 and child2 overlap. child2 is expected to be on top. 903 // At (51, 20), child1 and child2 overlap. child2 is expected to be on top.
904 // (because 3 is transformed to the back). 904 // (because 3 is transformed to the back).
905 test_point = gfx::Point(51, 20); 905 test_point = gfx::PointF(51.f, 20.f);
906 result_layer = 906 result_layer =
907 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 907 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
908 ASSERT_TRUE(result_layer); 908 ASSERT_TRUE(result_layer);
909 EXPECT_EQ(2, result_layer->id()); 909 EXPECT_EQ(2, result_layer->id());
910 910
911 // 3 Would have been on top if it hadn't been transformed to the background. 911 // 3 Would have been on top if it hadn't been transformed to the background.
912 // Make sure that it isn't hit. 912 // Make sure that it isn't hit.
913 test_point = gfx::Point(80, 51); 913 test_point = gfx::PointF(80.f, 51.f);
914 result_layer = 914 result_layer =
915 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 915 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
916 ASSERT_TRUE(result_layer); 916 ASSERT_TRUE(result_layer);
917 EXPECT_EQ(4, result_layer->id()); 917 EXPECT_EQ(4, result_layer->id());
918 918
919 // 3 Would have been on top if it hadn't been transformed to the background. 919 // 3 Would have been on top if it hadn't been transformed to the background.
920 // Make sure that it isn't hit. 920 // Make sure that it isn't hit.
921 test_point = gfx::Point(51, 51); 921 test_point = gfx::PointF(51.f, 51.f);
922 result_layer = 922 result_layer =
923 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 923 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
924 ASSERT_TRUE(result_layer); 924 ASSERT_TRUE(result_layer);
925 EXPECT_EQ(4, result_layer->id()); 925 EXPECT_EQ(4, result_layer->id());
926 926
927 // At (20, 51), child1 and grand_child1 overlap. grand_child1 is expected to 927 // At (20, 51), child1 and grand_child1 overlap. grand_child1 is expected to
928 // be on top. 928 // be on top.
929 test_point = gfx::Point(20, 51); 929 test_point = gfx::PointF(20.f, 51.f);
930 result_layer = 930 result_layer =
931 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 931 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
932 ASSERT_TRUE(result_layer); 932 ASSERT_TRUE(result_layer);
933 EXPECT_EQ(4, result_layer->id()); 933 EXPECT_EQ(4, result_layer->id());
934 } 934 }
935 935
936 TEST_F(LayerTreeImplTest, HitTestingRespectsClipParents) { 936 TEST_F(LayerTreeImplTest, HitTestingRespectsClipParents) {
937 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl().active_tree(), 1); 937 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl().active_tree(), 1);
938 gfx::Transform identity_matrix; 938 gfx::Transform identity_matrix;
939 gfx::Point3F transform_origin; 939 gfx::Point3F transform_origin;
(...skipping 27 matching lines...) Expand all
967 grand_child->SetClipParent(root.get()); 967 grand_child->SetClipParent(root.get());
968 968
969 child->AddChild(grand_child.Pass()); 969 child->AddChild(grand_child.Pass());
970 root->AddChild(child.Pass()); 970 root->AddChild(child.Pass());
971 } 971 }
972 972
973 host_impl().SetViewportSize(root->bounds()); 973 host_impl().SetViewportSize(root->bounds());
974 host_impl().active_tree()->SetRootLayer(root.Pass()); 974 host_impl().active_tree()->SetRootLayer(root.Pass());
975 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree(); 975 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree();
976 976
977 gfx::Point test_point = gfx::Point(12, 52); 977 gfx::PointF test_point(12.f, 52.f);
978 LayerImpl* result_layer = 978 LayerImpl* result_layer =
979 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 979 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
980 ASSERT_TRUE(result_layer); 980 ASSERT_TRUE(result_layer);
981 EXPECT_EQ(4, result_layer->id()); 981 EXPECT_EQ(4, result_layer->id());
982 } 982 }
983 983
984 TEST_F(LayerTreeImplTest, HitTestingRespectsScrollParents) { 984 TEST_F(LayerTreeImplTest, HitTestingRespectsScrollParents) {
985 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl().active_tree(), 1); 985 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl().active_tree(), 1);
986 gfx::Transform identity_matrix; 986 gfx::Transform identity_matrix;
987 gfx::Point3F transform_origin; 987 gfx::Point3F transform_origin;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1027 1027
1028 scroll_child->AddChild(grand_child.Pass()); 1028 scroll_child->AddChild(grand_child.Pass());
1029 root->AddChild(scroll_child.Pass()); 1029 root->AddChild(scroll_child.Pass());
1030 root->AddChild(child.Pass()); 1030 root->AddChild(child.Pass());
1031 } 1031 }
1032 1032
1033 host_impl().SetViewportSize(root->bounds()); 1033 host_impl().SetViewportSize(root->bounds());
1034 host_impl().active_tree()->SetRootLayer(root.Pass()); 1034 host_impl().active_tree()->SetRootLayer(root.Pass());
1035 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree(); 1035 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree();
1036 1036
1037 gfx::Point test_point = gfx::Point(12, 52); 1037 gfx::PointF test_point(12.f, 52.f);
1038 LayerImpl* result_layer = 1038 LayerImpl* result_layer =
1039 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 1039 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
1040 // The |test_point| should have been clipped away by |child|, the scroll 1040 // The |test_point| should have been clipped away by |child|, the scroll
1041 // parent, so the only thing that should be hit is |root|. 1041 // parent, so the only thing that should be hit is |root|.
1042 ASSERT_TRUE(result_layer); 1042 ASSERT_TRUE(result_layer);
1043 ASSERT_EQ(1, result_layer->id()); 1043 ASSERT_EQ(1, result_layer->id());
1044 } 1044 }
1045 TEST_F(LayerTreeImplTest, HitTestingForMultipleLayerLists) { 1045 TEST_F(LayerTreeImplTest, HitTestingForMultipleLayerLists) {
1046 // 1046 //
1047 // The geometry is set up similarly to the previous case, but 1047 // The geometry is set up similarly to the previous case, but
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
1125 ASSERT_EQ(2u, child1->render_surface()->layer_list().size()); 1125 ASSERT_EQ(2u, child1->render_surface()->layer_list().size());
1126 ASSERT_EQ(1u, child2->render_surface()->layer_list().size()); 1126 ASSERT_EQ(1u, child2->render_surface()->layer_list().size());
1127 ASSERT_EQ(1u, grand_child1->render_surface()->layer_list().size()); 1127 ASSERT_EQ(1u, grand_child1->render_surface()->layer_list().size());
1128 ASSERT_EQ(1, RenderSurfaceLayerList().at(0)->id()); // root layer 1128 ASSERT_EQ(1, RenderSurfaceLayerList().at(0)->id()); // root layer
1129 ASSERT_EQ(2, RenderSurfaceLayerList()[1]->id()); // child1 1129 ASSERT_EQ(2, RenderSurfaceLayerList()[1]->id()); // child1
1130 ASSERT_EQ(4, RenderSurfaceLayerList().at(2)->id()); // grand_child1 1130 ASSERT_EQ(4, RenderSurfaceLayerList().at(2)->id()); // grand_child1
1131 ASSERT_EQ(3, RenderSurfaceLayerList()[3]->id()); // child2 1131 ASSERT_EQ(3, RenderSurfaceLayerList()[3]->id()); // child2
1132 1132
1133 // Nothing overlaps the root_layer at (1, 1), so hit testing there should find 1133 // Nothing overlaps the root_layer at (1, 1), so hit testing there should find
1134 // the root layer. 1134 // the root layer.
1135 gfx::Point test_point = gfx::Point(1, 1); 1135 gfx::PointF test_point(1.f, 1.f);
1136 LayerImpl* result_layer = 1136 LayerImpl* result_layer =
1137 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 1137 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
1138 ASSERT_TRUE(result_layer); 1138 ASSERT_TRUE(result_layer);
1139 EXPECT_EQ(1, result_layer->id()); 1139 EXPECT_EQ(1, result_layer->id());
1140 1140
1141 // At (15, 15), child1 and root are the only layers. child1 is expected to be 1141 // At (15, 15), child1 and root are the only layers. child1 is expected to be
1142 // on top. 1142 // on top.
1143 test_point = gfx::Point(15, 15); 1143 test_point = gfx::PointF(15.f, 15.f);
1144 result_layer = 1144 result_layer =
1145 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 1145 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
1146 ASSERT_TRUE(result_layer); 1146 ASSERT_TRUE(result_layer);
1147 EXPECT_EQ(2, result_layer->id()); 1147 EXPECT_EQ(2, result_layer->id());
1148 1148
1149 // At (51, 20), child1 and child2 overlap. child2 is expected to be on top. 1149 // At (51, 20), child1 and child2 overlap. child2 is expected to be on top.
1150 test_point = gfx::Point(51, 20); 1150 test_point = gfx::PointF(51.f, 20.f);
1151 result_layer = 1151 result_layer =
1152 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 1152 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
1153 ASSERT_TRUE(result_layer); 1153 ASSERT_TRUE(result_layer);
1154 EXPECT_EQ(3, result_layer->id()); 1154 EXPECT_EQ(3, result_layer->id());
1155 1155
1156 // At (80, 51), child2 and grand_child1 overlap. child2 is expected to be on 1156 // At (80, 51), child2 and grand_child1 overlap. child2 is expected to be on
1157 // top. 1157 // top.
1158 test_point = gfx::Point(80, 51); 1158 test_point = gfx::PointF(80.f, 51.f);
1159 result_layer = 1159 result_layer =
1160 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 1160 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
1161 ASSERT_TRUE(result_layer); 1161 ASSERT_TRUE(result_layer);
1162 EXPECT_EQ(3, result_layer->id()); 1162 EXPECT_EQ(3, result_layer->id());
1163 1163
1164 // At (51, 51), all layers overlap each other. child2 is expected to be on top 1164 // At (51, 51), all layers overlap each other. child2 is expected to be on top
1165 // of all other layers. 1165 // of all other layers.
1166 test_point = gfx::Point(51, 51); 1166 test_point = gfx::PointF(51.f, 51.f);
1167 result_layer = 1167 result_layer =
1168 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 1168 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
1169 ASSERT_TRUE(result_layer); 1169 ASSERT_TRUE(result_layer);
1170 EXPECT_EQ(3, result_layer->id()); 1170 EXPECT_EQ(3, result_layer->id());
1171 1171
1172 // At (20, 51), child1 and grand_child1 overlap. grand_child1 is expected to 1172 // At (20, 51), child1 and grand_child1 overlap. grand_child1 is expected to
1173 // be on top. 1173 // be on top.
1174 test_point = gfx::Point(20, 51); 1174 test_point = gfx::PointF(20.f, 51.f);
1175 result_layer = 1175 result_layer =
1176 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point); 1176 host_impl().active_tree()->FindLayerThatIsHitByPoint(test_point);
1177 ASSERT_TRUE(result_layer); 1177 ASSERT_TRUE(result_layer);
1178 EXPECT_EQ(4, result_layer->id()); 1178 EXPECT_EQ(4, result_layer->id());
1179 } 1179 }
1180 1180
1181 TEST_F(LayerTreeImplTest, HitCheckingTouchHandlerRegionsForSingleLayer) { 1181 TEST_F(LayerTreeImplTest, HitCheckingTouchHandlerRegionsForSingleLayer) {
1182 scoped_ptr<LayerImpl> root = 1182 scoped_ptr<LayerImpl> root =
1183 LayerImpl::Create(host_impl().active_tree(), 12345); 1183 LayerImpl::Create(host_impl().active_tree(), 12345);
1184 1184
1185 gfx::Transform identity_matrix; 1185 gfx::Transform identity_matrix;
1186 Region touch_handler_region(gfx::Rect(10, 10, 50, 50)); 1186 Region touch_handler_region(gfx::Rect(10, 10, 50, 50));
1187 gfx::Point3F transform_origin; 1187 gfx::Point3F transform_origin;
1188 gfx::PointF position; 1188 gfx::PointF position;
1189 gfx::Size bounds(100, 100); 1189 gfx::Size bounds(100, 100);
1190 SetLayerPropertiesForTesting(root.get(), identity_matrix, transform_origin, 1190 SetLayerPropertiesForTesting(root.get(), identity_matrix, transform_origin,
1191 position, bounds, true, false, true); 1191 position, bounds, true, false, true);
1192 root->SetDrawsContent(true); 1192 root->SetDrawsContent(true);
1193 1193
1194 host_impl().SetViewportSize(root->bounds()); 1194 host_impl().SetViewportSize(root->bounds());
1195 host_impl().active_tree()->SetRootLayer(root.Pass()); 1195 host_impl().active_tree()->SetRootLayer(root.Pass());
1196 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree(); 1196 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree();
1197 1197
1198 // Sanity check the scenario we just created. 1198 // Sanity check the scenario we just created.
1199 ASSERT_EQ(1u, RenderSurfaceLayerList().size()); 1199 ASSERT_EQ(1u, RenderSurfaceLayerList().size());
1200 ASSERT_EQ(1u, root_layer()->render_surface()->layer_list().size()); 1200 ASSERT_EQ(1u, root_layer()->render_surface()->layer_list().size());
1201 1201
1202 // Hit checking for any point should return a null pointer for a layer without 1202 // Hit checking for any point should return a null pointer for a layer without
1203 // any touch event handler regions. 1203 // any touch event handler regions.
1204 gfx::Point test_point(11, 11); 1204 gfx::PointF test_point(11.f, 11.f);
1205 LayerImpl* result_layer = 1205 LayerImpl* result_layer =
1206 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1206 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1207 test_point); 1207 test_point);
1208 EXPECT_FALSE(result_layer); 1208 EXPECT_FALSE(result_layer);
1209 1209
1210 host_impl().active_tree()->root_layer()->SetTouchEventHandlerRegion( 1210 host_impl().active_tree()->root_layer()->SetTouchEventHandlerRegion(
1211 touch_handler_region); 1211 touch_handler_region);
1212 // Hit checking for a point outside the layer should return a null pointer. 1212 // Hit checking for a point outside the layer should return a null pointer.
1213 test_point = gfx::Point(101, 101); 1213 test_point = gfx::PointF(101.f, 101.f);
1214 result_layer = 1214 result_layer =
1215 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1215 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1216 test_point); 1216 test_point);
1217 EXPECT_FALSE(result_layer); 1217 EXPECT_FALSE(result_layer);
1218 1218
1219 test_point = gfx::Point(-1, -1); 1219 test_point = gfx::PointF(-1.f, -1.f);
1220 result_layer = 1220 result_layer =
1221 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1221 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1222 test_point); 1222 test_point);
1223 EXPECT_FALSE(result_layer); 1223 EXPECT_FALSE(result_layer);
1224 1224
1225 // Hit checking for a point inside the layer, but outside the touch handler 1225 // Hit checking for a point inside the layer, but outside the touch handler
1226 // region should return a null pointer. 1226 // region should return a null pointer.
1227 test_point = gfx::Point(1, 1); 1227 test_point = gfx::PointF(1.f, 1.f);
1228 result_layer = 1228 result_layer =
1229 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1229 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1230 test_point); 1230 test_point);
1231 EXPECT_FALSE(result_layer); 1231 EXPECT_FALSE(result_layer);
1232 1232
1233 test_point = gfx::Point(99, 99); 1233 test_point = gfx::PointF(99.f, 99.f);
1234 result_layer = 1234 result_layer =
1235 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1235 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1236 test_point); 1236 test_point);
1237 EXPECT_FALSE(result_layer); 1237 EXPECT_FALSE(result_layer);
1238 1238
1239 // Hit checking for a point inside the touch event handler region should 1239 // Hit checking for a point inside the touch event handler region should
1240 // return the root layer. 1240 // return the root layer.
1241 test_point = gfx::Point(11, 11); 1241 test_point = gfx::PointF(11.f, 11.f);
1242 result_layer = 1242 result_layer =
1243 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1243 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1244 test_point); 1244 test_point);
1245 ASSERT_TRUE(result_layer); 1245 ASSERT_TRUE(result_layer);
1246 EXPECT_EQ(12345, result_layer->id()); 1246 EXPECT_EQ(12345, result_layer->id());
1247 1247
1248 test_point = gfx::Point(59, 59); 1248 test_point = gfx::PointF(59.f, 59.f);
1249 result_layer = 1249 result_layer =
1250 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1250 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1251 test_point); 1251 test_point);
1252 ASSERT_TRUE(result_layer); 1252 ASSERT_TRUE(result_layer);
1253 EXPECT_EQ(12345, result_layer->id()); 1253 EXPECT_EQ(12345, result_layer->id());
1254 } 1254 }
1255 1255
1256 TEST_F(LayerTreeImplTest, 1256 TEST_F(LayerTreeImplTest,
1257 HitCheckingTouchHandlerRegionsForUninvertibleTransform) { 1257 HitCheckingTouchHandlerRegionsForUninvertibleTransform) {
1258 scoped_ptr<LayerImpl> root = 1258 scoped_ptr<LayerImpl> root =
(...skipping 23 matching lines...) Expand all
1282 1282
1283 // Sanity check the scenario we just created. 1283 // Sanity check the scenario we just created.
1284 ASSERT_EQ(1u, RenderSurfaceLayerList().size()); 1284 ASSERT_EQ(1u, RenderSurfaceLayerList().size());
1285 ASSERT_EQ(1u, root_layer()->render_surface()->layer_list().size()); 1285 ASSERT_EQ(1u, root_layer()->render_surface()->layer_list().size());
1286 ASSERT_FALSE(root_layer()->screen_space_transform().IsInvertible()); 1286 ASSERT_FALSE(root_layer()->screen_space_transform().IsInvertible());
1287 1287
1288 // Hit checking any point should not hit the touch handler region on the 1288 // Hit checking any point should not hit the touch handler region on the
1289 // layer. If the invertible matrix is accidentally ignored and treated like an 1289 // layer. If the invertible matrix is accidentally ignored and treated like an
1290 // identity, then the hit testing will incorrectly hit the layer when it 1290 // identity, then the hit testing will incorrectly hit the layer when it
1291 // shouldn't. 1291 // shouldn't.
1292 gfx::Point test_point(1, 1); 1292 gfx::PointF test_point(1.f, 1.f);
1293 LayerImpl* result_layer = 1293 LayerImpl* result_layer =
1294 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1294 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1295 test_point); 1295 test_point);
1296 EXPECT_FALSE(result_layer); 1296 EXPECT_FALSE(result_layer);
1297 1297
1298 test_point = gfx::Point(10, 10); 1298 test_point = gfx::PointF(10.f, 10.f);
1299 result_layer = 1299 result_layer =
1300 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1300 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1301 test_point); 1301 test_point);
1302 EXPECT_FALSE(result_layer); 1302 EXPECT_FALSE(result_layer);
1303 1303
1304 test_point = gfx::Point(10, 30); 1304 test_point = gfx::PointF(10.f, 30.f);
1305 result_layer = 1305 result_layer =
1306 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1306 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1307 test_point); 1307 test_point);
1308 EXPECT_FALSE(result_layer); 1308 EXPECT_FALSE(result_layer);
1309 1309
1310 test_point = gfx::Point(50, 50); 1310 test_point = gfx::PointF(50.f, 50.f);
1311 result_layer = 1311 result_layer =
1312 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1312 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1313 test_point); 1313 test_point);
1314 EXPECT_FALSE(result_layer); 1314 EXPECT_FALSE(result_layer);
1315 1315
1316 test_point = gfx::Point(67, 48); 1316 test_point = gfx::PointF(67.f, 48.f);
1317 result_layer = 1317 result_layer =
1318 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1318 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1319 test_point); 1319 test_point);
1320 EXPECT_FALSE(result_layer); 1320 EXPECT_FALSE(result_layer);
1321 1321
1322 test_point = gfx::Point(99, 99); 1322 test_point = gfx::PointF(99.f, 99.f);
1323 result_layer = 1323 result_layer =
1324 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1324 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1325 test_point); 1325 test_point);
1326 EXPECT_FALSE(result_layer); 1326 EXPECT_FALSE(result_layer);
1327 1327
1328 test_point = gfx::Point(-1, -1); 1328 test_point = gfx::PointF(-1.f, -1.f);
1329 result_layer = 1329 result_layer =
1330 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1330 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1331 test_point); 1331 test_point);
1332 EXPECT_FALSE(result_layer); 1332 EXPECT_FALSE(result_layer);
1333 } 1333 }
1334 1334
1335 TEST_F(LayerTreeImplTest, MakeScrollbarsInvisibleNearMinPageScale) { 1335 TEST_F(LayerTreeImplTest, MakeScrollbarsInvisibleNearMinPageScale) {
1336 const int kThumbThickness = 10; 1336 const int kThumbThickness = 10;
1337 const int kTrackStart = 0; 1337 const int kTrackStart = 0;
1338 const bool kIsLeftSideVerticalScrollbar = false; 1338 const bool kIsLeftSideVerticalScrollbar = false;
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
1419 1419
1420 host_impl().SetViewportSize(root->bounds()); 1420 host_impl().SetViewportSize(root->bounds());
1421 host_impl().active_tree()->SetRootLayer(root.Pass()); 1421 host_impl().active_tree()->SetRootLayer(root.Pass());
1422 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree(); 1422 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree();
1423 1423
1424 // Sanity check the scenario we just created. 1424 // Sanity check the scenario we just created.
1425 ASSERT_EQ(1u, RenderSurfaceLayerList().size()); 1425 ASSERT_EQ(1u, RenderSurfaceLayerList().size());
1426 ASSERT_EQ(1u, root_layer()->render_surface()->layer_list().size()); 1426 ASSERT_EQ(1u, root_layer()->render_surface()->layer_list().size());
1427 1427
1428 // Hit checking for a point outside the layer should return a null pointer. 1428 // Hit checking for a point outside the layer should return a null pointer.
1429 gfx::Point test_point(49, 49); 1429 gfx::PointF test_point(49.f, 49.f);
1430 LayerImpl* result_layer = 1430 LayerImpl* result_layer =
1431 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1431 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1432 test_point); 1432 test_point);
1433 EXPECT_FALSE(result_layer); 1433 EXPECT_FALSE(result_layer);
1434 1434
1435 // Even though the layer has a touch handler region containing (101, 101), it 1435 // Even though the layer has a touch handler region containing (101, 101), it
1436 // should not be visible there since the root render surface would clamp it. 1436 // should not be visible there since the root render surface would clamp it.
1437 test_point = gfx::Point(101, 101); 1437 test_point = gfx::PointF(101.f, 101.f);
1438 result_layer = 1438 result_layer =
1439 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1439 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1440 test_point); 1440 test_point);
1441 EXPECT_FALSE(result_layer); 1441 EXPECT_FALSE(result_layer);
1442 1442
1443 // Hit checking for a point inside the layer, but outside the touch handler 1443 // Hit checking for a point inside the layer, but outside the touch handler
1444 // region should return a null pointer. 1444 // region should return a null pointer.
1445 test_point = gfx::Point(51, 51); 1445 test_point = gfx::PointF(51.f, 51.f);
1446 result_layer = 1446 result_layer =
1447 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1447 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1448 test_point); 1448 test_point);
1449 EXPECT_FALSE(result_layer); 1449 EXPECT_FALSE(result_layer);
1450 1450
1451 // Hit checking for a point inside the touch event handler region should 1451 // Hit checking for a point inside the touch event handler region should
1452 // return the root layer. 1452 // return the root layer.
1453 test_point = gfx::Point(61, 61); 1453 test_point = gfx::PointF(61.f, 61.f);
1454 result_layer = 1454 result_layer =
1455 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1455 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1456 test_point); 1456 test_point);
1457 ASSERT_TRUE(result_layer); 1457 ASSERT_TRUE(result_layer);
1458 EXPECT_EQ(12345, result_layer->id()); 1458 EXPECT_EQ(12345, result_layer->id());
1459 1459
1460 test_point = gfx::Point(99, 99); 1460 test_point = gfx::PointF(99.f, 99.f);
1461 result_layer = 1461 result_layer =
1462 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1462 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1463 test_point); 1463 test_point);
1464 ASSERT_TRUE(result_layer); 1464 ASSERT_TRUE(result_layer);
1465 EXPECT_EQ(12345, result_layer->id()); 1465 EXPECT_EQ(12345, result_layer->id());
1466 } 1466 }
1467 1467
1468 TEST_F(LayerTreeImplTest, 1468 TEST_F(LayerTreeImplTest,
1469 HitCheckingTouchHandlerRegionsForSingleLayerWithDeviceScale) { 1469 HitCheckingTouchHandlerRegionsForSingleLayerWithDeviceScale) {
1470 // The layer's device_scale_factor and page_scale_factor should scale the 1470 // The layer's device_scale_factor and page_scale_factor should scale the
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1524 gfx::PointF test_point(76.f, 76.f); 1524 gfx::PointF test_point(76.f, 76.f);
1525 test_point = 1525 test_point =
1526 gfx::ScalePoint(test_point, device_scale_factor * page_scale_factor); 1526 gfx::ScalePoint(test_point, device_scale_factor * page_scale_factor);
1527 LayerImpl* result_layer = 1527 LayerImpl* result_layer =
1528 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1528 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1529 test_point); 1529 test_point);
1530 EXPECT_FALSE(result_layer); 1530 EXPECT_FALSE(result_layer);
1531 1531
1532 // Hit checking for a point inside the layer, but outside the touch handler 1532 // Hit checking for a point inside the layer, but outside the touch handler
1533 // region should return a null pointer. 1533 // region should return a null pointer.
1534 test_point = gfx::Point(26, 26); 1534 test_point = gfx::PointF(26.f, 26.f);
1535 test_point = 1535 test_point =
1536 gfx::ScalePoint(test_point, device_scale_factor * page_scale_factor); 1536 gfx::ScalePoint(test_point, device_scale_factor * page_scale_factor);
1537 result_layer = 1537 result_layer =
1538 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1538 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1539 test_point); 1539 test_point);
1540 EXPECT_FALSE(result_layer); 1540 EXPECT_FALSE(result_layer);
1541 1541
1542 test_point = gfx::Point(34, 34); 1542 test_point = gfx::PointF(34.f, 34.f);
1543 test_point = 1543 test_point =
1544 gfx::ScalePoint(test_point, device_scale_factor * page_scale_factor); 1544 gfx::ScalePoint(test_point, device_scale_factor * page_scale_factor);
1545 result_layer = 1545 result_layer =
1546 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1546 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1547 test_point); 1547 test_point);
1548 EXPECT_FALSE(result_layer); 1548 EXPECT_FALSE(result_layer);
1549 1549
1550 test_point = gfx::Point(65, 65); 1550 test_point = gfx::PointF(65.f, 65.f);
1551 test_point = 1551 test_point =
1552 gfx::ScalePoint(test_point, device_scale_factor * page_scale_factor); 1552 gfx::ScalePoint(test_point, device_scale_factor * page_scale_factor);
1553 result_layer = 1553 result_layer =
1554 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1554 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1555 test_point); 1555 test_point);
1556 EXPECT_FALSE(result_layer); 1556 EXPECT_FALSE(result_layer);
1557 1557
1558 test_point = gfx::Point(74, 74); 1558 test_point = gfx::PointF(74.f, 74.f);
1559 test_point = 1559 test_point =
1560 gfx::ScalePoint(test_point, device_scale_factor * page_scale_factor); 1560 gfx::ScalePoint(test_point, device_scale_factor * page_scale_factor);
1561 result_layer = 1561 result_layer =
1562 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1562 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1563 test_point); 1563 test_point);
1564 EXPECT_FALSE(result_layer); 1564 EXPECT_FALSE(result_layer);
1565 1565
1566 // Hit checking for a point inside the touch event handler region should 1566 // Hit checking for a point inside the touch event handler region should
1567 // return the root layer. 1567 // return the root layer.
1568 test_point = gfx::Point(35, 35); 1568 test_point = gfx::PointF(35.f, 35.f);
1569 test_point = 1569 test_point =
1570 gfx::ScalePoint(test_point, device_scale_factor * page_scale_factor); 1570 gfx::ScalePoint(test_point, device_scale_factor * page_scale_factor);
1571 result_layer = 1571 result_layer =
1572 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1572 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1573 test_point); 1573 test_point);
1574 ASSERT_TRUE(result_layer); 1574 ASSERT_TRUE(result_layer);
1575 EXPECT_EQ(12345, result_layer->id()); 1575 EXPECT_EQ(12345, result_layer->id());
1576 1576
1577 test_point = gfx::Point(64, 64); 1577 test_point = gfx::PointF(64.f, 64.f);
1578 test_point = 1578 test_point =
1579 gfx::ScalePoint(test_point, device_scale_factor * page_scale_factor); 1579 gfx::ScalePoint(test_point, device_scale_factor * page_scale_factor);
1580 result_layer = 1580 result_layer =
1581 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1581 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1582 test_point); 1582 test_point);
1583 ASSERT_TRUE(result_layer); 1583 ASSERT_TRUE(result_layer);
1584 EXPECT_EQ(12345, result_layer->id()); 1584 EXPECT_EQ(12345, result_layer->id());
1585 } 1585 }
1586 1586
1587 TEST_F(LayerTreeImplTest, HitCheckingTouchHandlerRegionsForSimpleClippedLayer) { 1587 TEST_F(LayerTreeImplTest, HitCheckingTouchHandlerRegionsForSimpleClippedLayer) {
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1625 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree(); 1625 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree();
1626 1626
1627 // Sanity check the scenario we just created. 1627 // Sanity check the scenario we just created.
1628 ASSERT_EQ(1u, RenderSurfaceLayerList().size()); 1628 ASSERT_EQ(1u, RenderSurfaceLayerList().size());
1629 ASSERT_EQ(1u, root_layer()->render_surface()->layer_list().size()); 1629 ASSERT_EQ(1u, root_layer()->render_surface()->layer_list().size());
1630 ASSERT_EQ(456, root_layer()->render_surface()->layer_list().at(0)->id()); 1630 ASSERT_EQ(456, root_layer()->render_surface()->layer_list().at(0)->id());
1631 1631
1632 // Hit checking for a point outside the layer should return a null pointer. 1632 // Hit checking for a point outside the layer should return a null pointer.
1633 // Despite the child layer being very large, it should be clipped to the root 1633 // Despite the child layer being very large, it should be clipped to the root
1634 // layer's bounds. 1634 // layer's bounds.
1635 gfx::Point test_point(24, 24); 1635 gfx::PointF test_point(24.f, 24.f);
1636 LayerImpl* result_layer = 1636 LayerImpl* result_layer =
1637 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1637 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1638 test_point); 1638 test_point);
1639 EXPECT_FALSE(result_layer); 1639 EXPECT_FALSE(result_layer);
1640 1640
1641 // Hit checking for a point inside the layer, but outside the touch handler 1641 // Hit checking for a point inside the layer, but outside the touch handler
1642 // region should return a null pointer. 1642 // region should return a null pointer.
1643 test_point = gfx::Point(35, 35); 1643 test_point = gfx::PointF(35.f, 35.f);
1644 result_layer = 1644 result_layer =
1645 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1645 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1646 test_point); 1646 test_point);
1647 EXPECT_FALSE(result_layer); 1647 EXPECT_FALSE(result_layer);
1648 1648
1649 test_point = gfx::Point(74, 74); 1649 test_point = gfx::PointF(74.f, 74.f);
1650 result_layer = 1650 result_layer =
1651 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1651 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1652 test_point); 1652 test_point);
1653 EXPECT_FALSE(result_layer); 1653 EXPECT_FALSE(result_layer);
1654 1654
1655 // Hit checking for a point inside the touch event handler region should 1655 // Hit checking for a point inside the touch event handler region should
1656 // return the root layer. 1656 // return the root layer.
1657 test_point = gfx::Point(25, 25); 1657 test_point = gfx::PointF(25.f, 25.f);
1658 result_layer = 1658 result_layer =
1659 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1659 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1660 test_point); 1660 test_point);
1661 ASSERT_TRUE(result_layer); 1661 ASSERT_TRUE(result_layer);
1662 EXPECT_EQ(456, result_layer->id()); 1662 EXPECT_EQ(456, result_layer->id());
1663 1663
1664 test_point = gfx::Point(34, 34); 1664 test_point = gfx::PointF(34.f, 34.f);
1665 result_layer = 1665 result_layer =
1666 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1666 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1667 test_point); 1667 test_point);
1668 ASSERT_TRUE(result_layer); 1668 ASSERT_TRUE(result_layer);
1669 EXPECT_EQ(456, result_layer->id()); 1669 EXPECT_EQ(456, result_layer->id());
1670 } 1670 }
1671 1671
1672 TEST_F(LayerTreeImplTest, HitCheckingTouchHandlerOverlappingRegions) { 1672 TEST_F(LayerTreeImplTest, HitCheckingTouchHandlerOverlappingRegions) {
1673 gfx::Transform identity_matrix; 1673 gfx::Transform identity_matrix;
1674 gfx::Point3F transform_origin; 1674 gfx::Point3F transform_origin;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1709 host_impl().SetViewportSize(root->bounds()); 1709 host_impl().SetViewportSize(root->bounds());
1710 host_impl().active_tree()->SetRootLayer(root.Pass()); 1710 host_impl().active_tree()->SetRootLayer(root.Pass());
1711 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree(); 1711 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree();
1712 1712
1713 // Sanity check the scenario we just created. 1713 // Sanity check the scenario we just created.
1714 ASSERT_EQ(1u, RenderSurfaceLayerList().size()); 1714 ASSERT_EQ(1u, RenderSurfaceLayerList().size());
1715 ASSERT_EQ(2u, root_layer()->render_surface()->layer_list().size()); 1715 ASSERT_EQ(2u, root_layer()->render_surface()->layer_list().size());
1716 ASSERT_EQ(123, root_layer()->render_surface()->layer_list().at(0)->id()); 1716 ASSERT_EQ(123, root_layer()->render_surface()->layer_list().at(0)->id());
1717 ASSERT_EQ(1234, root_layer()->render_surface()->layer_list().at(1)->id()); 1717 ASSERT_EQ(1234, root_layer()->render_surface()->layer_list().at(1)->id());
1718 1718
1719 gfx::Point test_point(35, 35); 1719 gfx::PointF test_point(35.f, 35.f);
1720 LayerImpl* result_layer = 1720 LayerImpl* result_layer =
1721 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1721 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1722 test_point); 1722 test_point);
1723 1723
1724 // We should have passed through the no-touch layer and found the layer 1724 // We should have passed through the no-touch layer and found the layer
1725 // behind it. 1725 // behind it.
1726 EXPECT_TRUE(result_layer); 1726 EXPECT_TRUE(result_layer);
1727 1727
1728 host_impl().active_tree()->LayerById(1234)->SetContentsOpaque(true); 1728 host_impl().active_tree()->LayerById(1234)->SetContentsOpaque(true);
1729 result_layer = 1729 result_layer =
1730 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1730 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1731 test_point); 1731 test_point);
1732 1732
1733 // Even with an opaque layer in the middle, we should still find the layer 1733 // Even with an opaque layer in the middle, we should still find the layer
1734 // with 1734 // with
1735 // the touch handler behind it (since we can't assume that opaque layers are 1735 // the touch handler behind it (since we can't assume that opaque layers are
1736 // opaque to hit testing). 1736 // opaque to hit testing).
1737 EXPECT_TRUE(result_layer); 1737 EXPECT_TRUE(result_layer);
1738 1738
1739 test_point = gfx::Point(35, 15); 1739 test_point = gfx::PointF(35.f, 15.f);
1740 result_layer = 1740 result_layer =
1741 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1741 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1742 test_point); 1742 test_point);
1743 ASSERT_TRUE(result_layer); 1743 ASSERT_TRUE(result_layer);
1744 EXPECT_EQ(123, result_layer->id()); 1744 EXPECT_EQ(123, result_layer->id());
1745 1745
1746 test_point = gfx::Point(35, 65); 1746 test_point = gfx::PointF(35.f, 65.f);
1747 result_layer = 1747 result_layer =
1748 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion( 1748 host_impl().active_tree()->FindLayerThatIsHitByPointInTouchHandlerRegion(
1749 test_point); 1749 test_point);
1750 EXPECT_FALSE(result_layer); 1750 EXPECT_FALSE(result_layer);
1751 } 1751 }
1752 1752
1753 TEST_F(LayerTreeImplTest, SelectionBoundsForSingleLayer) { 1753 TEST_F(LayerTreeImplTest, SelectionBoundsForSingleLayer) {
1754 int root_layer_id = 12345; 1754 int root_layer_id = 12345;
1755 scoped_ptr<LayerImpl> root = 1755 scoped_ptr<LayerImpl> root =
1756 LayerImpl::Create(host_impl().active_tree(), root_layer_id); 1756 LayerImpl::Create(host_impl().active_tree(), root_layer_id);
(...skipping 10 matching lines...) Expand all
1767 host_impl().active_tree()->SetRootLayer(root.Pass()); 1767 host_impl().active_tree()->SetRootLayer(root.Pass());
1768 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree(); 1768 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree();
1769 1769
1770 // Sanity check the scenario we just created. 1770 // Sanity check the scenario we just created.
1771 ASSERT_EQ(1u, RenderSurfaceLayerList().size()); 1771 ASSERT_EQ(1u, RenderSurfaceLayerList().size());
1772 ASSERT_EQ(1u, root_layer()->render_surface()->layer_list().size()); 1772 ASSERT_EQ(1u, root_layer()->render_surface()->layer_list().size());
1773 1773
1774 LayerSelection input; 1774 LayerSelection input;
1775 1775
1776 input.start.type = SELECTION_BOUND_LEFT; 1776 input.start.type = SELECTION_BOUND_LEFT;
1777 input.start.edge_top = gfx::PointF(10, 10); 1777 input.start.edge_top = gfx::Point(10, 10);
1778 input.start.edge_bottom = gfx::PointF(10, 20); 1778 input.start.edge_bottom = gfx::Point(10, 20);
1779 input.start.layer_id = root_layer_id; 1779 input.start.layer_id = root_layer_id;
1780 1780
1781 input.end.type = SELECTION_BOUND_RIGHT; 1781 input.end.type = SELECTION_BOUND_RIGHT;
1782 input.end.edge_top = gfx::PointF(50, 10); 1782 input.end.edge_top = gfx::Point(50, 10);
1783 input.end.edge_bottom = gfx::PointF(50, 30); 1783 input.end.edge_bottom = gfx::Point(50, 30);
1784 input.end.layer_id = root_layer_id; 1784 input.end.layer_id = root_layer_id;
1785 1785
1786 ViewportSelection output; 1786 ViewportSelection output;
1787 1787
1788 // Empty input bounds should produce empty output bounds. 1788 // Empty input bounds should produce empty output bounds.
1789 host_impl().active_tree()->GetViewportSelection(&output); 1789 host_impl().active_tree()->GetViewportSelection(&output);
1790 EXPECT_EQ(ViewportSelectionBound(), output.start); 1790 EXPECT_EQ(ViewportSelectionBound(), output.start);
1791 EXPECT_EQ(ViewportSelectionBound(), output.end); 1791 EXPECT_EQ(ViewportSelectionBound(), output.end);
1792 1792
1793 // Selection bounds should produce distinct left and right bounds. 1793 // Selection bounds should produce distinct left and right bounds.
1794 host_impl().active_tree()->RegisterSelection(input); 1794 host_impl().active_tree()->RegisterSelection(input);
1795 host_impl().active_tree()->GetViewportSelection(&output); 1795 host_impl().active_tree()->GetViewportSelection(&output);
1796 EXPECT_EQ(input.start.type, output.start.type); 1796 EXPECT_EQ(input.start.type, output.start.type);
1797 EXPECT_EQ(input.start.edge_bottom, output.start.edge_bottom); 1797 EXPECT_EQ(gfx::PointF(input.start.edge_bottom), output.start.edge_bottom);
1798 EXPECT_EQ(input.start.edge_top, output.start.edge_top); 1798 EXPECT_EQ(gfx::PointF(input.start.edge_top), output.start.edge_top);
1799 EXPECT_TRUE(output.start.visible); 1799 EXPECT_TRUE(output.start.visible);
1800 EXPECT_EQ(input.end.type, output.end.type); 1800 EXPECT_EQ(input.end.type, output.end.type);
1801 EXPECT_EQ(input.end.edge_bottom, output.end.edge_bottom); 1801 EXPECT_EQ(gfx::PointF(input.end.edge_bottom), output.end.edge_bottom);
1802 EXPECT_EQ(input.end.edge_top, output.end.edge_top); 1802 EXPECT_EQ(gfx::PointF(input.end.edge_top), output.end.edge_top);
1803 EXPECT_TRUE(output.end.visible); 1803 EXPECT_TRUE(output.end.visible);
1804 EXPECT_EQ(input.is_editable, output.is_editable); 1804 EXPECT_EQ(input.is_editable, output.is_editable);
1805 EXPECT_EQ(input.is_empty_text_form_control, 1805 EXPECT_EQ(input.is_empty_text_form_control,
1806 output.is_empty_text_form_control); 1806 output.is_empty_text_form_control);
1807 1807
1808 // Insertion bounds should produce identical left and right bounds. 1808 // Insertion bounds should produce identical left and right bounds.
1809 LayerSelection insertion_input; 1809 LayerSelection insertion_input;
1810 insertion_input.start.type = SELECTION_BOUND_CENTER; 1810 insertion_input.start.type = SELECTION_BOUND_CENTER;
1811 insertion_input.start.edge_top = gfx::PointF(15, 10); 1811 insertion_input.start.edge_top = gfx::Point(15, 10);
1812 insertion_input.start.edge_bottom = gfx::PointF(15, 30); 1812 insertion_input.start.edge_bottom = gfx::Point(15, 30);
1813 insertion_input.start.layer_id = root_layer_id; 1813 insertion_input.start.layer_id = root_layer_id;
1814 insertion_input.is_editable = true; 1814 insertion_input.is_editable = true;
1815 insertion_input.is_empty_text_form_control = true; 1815 insertion_input.is_empty_text_form_control = true;
1816 insertion_input.end = insertion_input.start; 1816 insertion_input.end = insertion_input.start;
1817 host_impl().active_tree()->RegisterSelection(insertion_input); 1817 host_impl().active_tree()->RegisterSelection(insertion_input);
1818 host_impl().active_tree()->GetViewportSelection(&output); 1818 host_impl().active_tree()->GetViewportSelection(&output);
1819 EXPECT_EQ(insertion_input.start.type, output.start.type); 1819 EXPECT_EQ(insertion_input.start.type, output.start.type);
1820 EXPECT_EQ(insertion_input.start.edge_bottom, output.start.edge_bottom); 1820 EXPECT_EQ(gfx::PointF(insertion_input.start.edge_bottom),
1821 EXPECT_EQ(insertion_input.start.edge_top, output.start.edge_top); 1821 output.start.edge_bottom);
1822 EXPECT_EQ(gfx::PointF(insertion_input.start.edge_top), output.start.edge_top);
1822 EXPECT_EQ(insertion_input.is_editable, output.is_editable); 1823 EXPECT_EQ(insertion_input.is_editable, output.is_editable);
1823 EXPECT_EQ(insertion_input.is_empty_text_form_control, 1824 EXPECT_EQ(insertion_input.is_empty_text_form_control,
1824 output.is_empty_text_form_control); 1825 output.is_empty_text_form_control);
1825 EXPECT_TRUE(output.start.visible); 1826 EXPECT_TRUE(output.start.visible);
1826 EXPECT_EQ(output.start, output.end); 1827 EXPECT_EQ(output.start, output.end);
1827 } 1828 }
1828 1829
1829 TEST_F(LayerTreeImplTest, SelectionBoundsForPartialOccludedLayers) { 1830 TEST_F(LayerTreeImplTest, SelectionBoundsForPartialOccludedLayers) {
1830 int root_layer_id = 12345; 1831 int root_layer_id = 12345;
1831 int clip_layer_id = 1234; 1832 int clip_layer_id = 1234;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1867 1868
1868 host_impl().SetViewportSize(root->bounds()); 1869 host_impl().SetViewportSize(root->bounds());
1869 host_impl().active_tree()->SetRootLayer(root.Pass()); 1870 host_impl().active_tree()->SetRootLayer(root.Pass());
1870 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree(); 1871 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree();
1871 1872
1872 // Sanity check the scenario we just created. 1873 // Sanity check the scenario we just created.
1873 ASSERT_EQ(1u, RenderSurfaceLayerList().size()); 1874 ASSERT_EQ(1u, RenderSurfaceLayerList().size());
1874 1875
1875 LayerSelection input; 1876 LayerSelection input;
1876 input.start.type = SELECTION_BOUND_LEFT; 1877 input.start.type = SELECTION_BOUND_LEFT;
1877 input.start.edge_top = gfx::PointF(25, 10); 1878 input.start.edge_top = gfx::Point(25, 10);
1878 input.start.edge_bottom = gfx::PointF(25, 30); 1879 input.start.edge_bottom = gfx::Point(25, 30);
1879 input.start.layer_id = clipped_layer_id; 1880 input.start.layer_id = clipped_layer_id;
1880 1881
1881 input.end.type = SELECTION_BOUND_RIGHT; 1882 input.end.type = SELECTION_BOUND_RIGHT;
1882 input.end.edge_top = gfx::PointF(75, 10); 1883 input.end.edge_top = gfx::Point(75, 10);
1883 input.end.edge_bottom = gfx::PointF(75, 30); 1884 input.end.edge_bottom = gfx::Point(75, 30);
1884 input.end.layer_id = clipped_layer_id; 1885 input.end.layer_id = clipped_layer_id;
1885 host_impl().active_tree()->RegisterSelection(input); 1886 host_impl().active_tree()->RegisterSelection(input);
1886 1887
1887 // The left bound should be occluded by the clip layer. 1888 // The left bound should be occluded by the clip layer.
1888 ViewportSelection output; 1889 ViewportSelection output;
1889 host_impl().active_tree()->GetViewportSelection(&output); 1890 host_impl().active_tree()->GetViewportSelection(&output);
1890 EXPECT_EQ(input.start.type, output.start.type); 1891 EXPECT_EQ(input.start.type, output.start.type);
1891 gfx::PointF expected_output_start_top = input.start.edge_top; 1892 auto expected_output_start_top = gfx::PointF(input.start.edge_top);
1892 gfx::PointF expected_output_edge_botom = input.start.edge_bottom; 1893 auto expected_output_edge_botom = gfx::PointF(input.start.edge_bottom);
1893 expected_output_start_top.Offset(clipping_offset.x(), clipping_offset.y()); 1894 expected_output_start_top.Offset(clipping_offset.x(), clipping_offset.y());
1894 expected_output_edge_botom.Offset(clipping_offset.x(), clipping_offset.y()); 1895 expected_output_edge_botom.Offset(clipping_offset.x(), clipping_offset.y());
1895 EXPECT_EQ(expected_output_start_top, output.start.edge_top); 1896 EXPECT_EQ(expected_output_start_top, output.start.edge_top);
1896 EXPECT_EQ(expected_output_edge_botom, output.start.edge_bottom); 1897 EXPECT_EQ(expected_output_edge_botom, output.start.edge_bottom);
1897 EXPECT_TRUE(output.start.visible); 1898 EXPECT_TRUE(output.start.visible);
1898 EXPECT_EQ(input.end.type, output.end.type); 1899 EXPECT_EQ(input.end.type, output.end.type);
1899 gfx::PointF expected_output_end_top = input.end.edge_top; 1900 auto expected_output_end_top = gfx::PointF(input.end.edge_top);
1900 gfx::PointF expected_output_end_bottom = input.end.edge_bottom; 1901 auto expected_output_end_bottom = gfx::PointF(input.end.edge_bottom);
1901 expected_output_end_bottom.Offset(clipping_offset.x(), clipping_offset.y()); 1902 expected_output_end_bottom.Offset(clipping_offset.x(), clipping_offset.y());
1902 expected_output_end_top.Offset(clipping_offset.x(), clipping_offset.y()); 1903 expected_output_end_top.Offset(clipping_offset.x(), clipping_offset.y());
1903 EXPECT_EQ(expected_output_end_top, output.end.edge_top); 1904 EXPECT_EQ(expected_output_end_top, output.end.edge_top);
1904 EXPECT_EQ(expected_output_end_bottom, output.end.edge_bottom); 1905 EXPECT_EQ(expected_output_end_bottom, output.end.edge_bottom);
1905 EXPECT_FALSE(output.end.visible); 1906 EXPECT_FALSE(output.end.visible);
1906 1907
1907 // Handles outside the viewport bounds should be marked invisible. 1908 // Handles outside the viewport bounds should be marked invisible.
1908 input.start.edge_top = gfx::PointF(-25, 0); 1909 input.start.edge_top = gfx::Point(-25, 0);
1909 input.start.edge_bottom = gfx::PointF(-25, 20); 1910 input.start.edge_bottom = gfx::Point(-25, 20);
1910 host_impl().active_tree()->RegisterSelection(input); 1911 host_impl().active_tree()->RegisterSelection(input);
1911 host_impl().active_tree()->GetViewportSelection(&output); 1912 host_impl().active_tree()->GetViewportSelection(&output);
1912 EXPECT_FALSE(output.start.visible); 1913 EXPECT_FALSE(output.start.visible);
1913 1914
1914 input.start.edge_top = gfx::PointF(0, -25); 1915 input.start.edge_top = gfx::Point(0, -25);
1915 input.start.edge_bottom = gfx::PointF(0, -5); 1916 input.start.edge_bottom = gfx::Point(0, -5);
1916 host_impl().active_tree()->RegisterSelection(input); 1917 host_impl().active_tree()->RegisterSelection(input);
1917 host_impl().active_tree()->GetViewportSelection(&output); 1918 host_impl().active_tree()->GetViewportSelection(&output);
1918 EXPECT_FALSE(output.start.visible); 1919 EXPECT_FALSE(output.start.visible);
1919 1920
1920 // If the handle bottom is partially visible, the handle is marked visible. 1921 // If the handle bottom is partially visible, the handle is marked visible.
1921 input.start.edge_top = gfx::PointF(0, -20); 1922 input.start.edge_top = gfx::Point(0, -20);
1922 input.start.edge_bottom = gfx::PointF(0, 1); 1923 input.start.edge_bottom = gfx::Point(0, 1);
1923 host_impl().active_tree()->RegisterSelection(input); 1924 host_impl().active_tree()->RegisterSelection(input);
1924 host_impl().active_tree()->GetViewportSelection(&output); 1925 host_impl().active_tree()->GetViewportSelection(&output);
1925 EXPECT_TRUE(output.start.visible); 1926 EXPECT_TRUE(output.start.visible);
1926 } 1927 }
1927 1928
1928 TEST_F(LayerTreeImplTest, SelectionBoundsForScaledLayers) { 1929 TEST_F(LayerTreeImplTest, SelectionBoundsForScaledLayers) {
1929 int root_layer_id = 1; 1930 int root_layer_id = 1;
1930 int sub_layer_id = 2; 1931 int sub_layer_id = 2;
1931 scoped_ptr<LayerImpl> root = 1932 scoped_ptr<LayerImpl> root =
1932 LayerImpl::Create(host_impl().active_tree(), root_layer_id); 1933 LayerImpl::Create(host_impl().active_tree(), root_layer_id);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1965 host_impl().active_tree()->SetRootLayer(root.Pass()); 1966 host_impl().active_tree()->SetRootLayer(root.Pass());
1966 host_impl().active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 1, 1967 host_impl().active_tree()->SetViewportLayersFromIds(Layer::INVALID_ID, 1, 1,
1967 Layer::INVALID_ID); 1968 Layer::INVALID_ID);
1968 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree(); 1969 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree();
1969 1970
1970 // Sanity check the scenario we just created. 1971 // Sanity check the scenario we just created.
1971 ASSERT_EQ(1u, RenderSurfaceLayerList().size()); 1972 ASSERT_EQ(1u, RenderSurfaceLayerList().size());
1972 1973
1973 LayerSelection input; 1974 LayerSelection input;
1974 input.start.type = SELECTION_BOUND_LEFT; 1975 input.start.type = SELECTION_BOUND_LEFT;
1975 input.start.edge_top = gfx::PointF(10, 10); 1976 input.start.edge_top = gfx::Point(10, 10);
1976 input.start.edge_bottom = gfx::PointF(10, 30); 1977 input.start.edge_bottom = gfx::Point(10, 30);
1977 input.start.layer_id = root_layer_id; 1978 input.start.layer_id = root_layer_id;
1978 1979
1979 input.end.type = SELECTION_BOUND_RIGHT; 1980 input.end.type = SELECTION_BOUND_RIGHT;
1980 input.end.edge_top = gfx::PointF(0, 0); 1981 input.end.edge_top = gfx::Point(0, 0);
1981 input.end.edge_bottom = gfx::PointF(0, 20); 1982 input.end.edge_bottom = gfx::Point(0, 20);
1982 input.end.layer_id = sub_layer_id; 1983 input.end.layer_id = sub_layer_id;
1983 host_impl().active_tree()->RegisterSelection(input); 1984 host_impl().active_tree()->RegisterSelection(input);
1984 1985
1985 // The viewport bounds should be properly scaled by the page scale, but should 1986 // The viewport bounds should be properly scaled by the page scale, but should
1986 // remain in DIP coordinates. 1987 // remain in DIP coordinates.
1987 ViewportSelection output; 1988 ViewportSelection output;
1988 host_impl().active_tree()->GetViewportSelection(&output); 1989 host_impl().active_tree()->GetViewportSelection(&output);
1989 EXPECT_EQ(input.start.type, output.start.type); 1990 EXPECT_EQ(input.start.type, output.start.type);
1990 gfx::PointF expected_output_start_top = input.start.edge_top; 1991 auto expected_output_start_top = gfx::PointF(input.start.edge_top);
1991 gfx::PointF expected_output_edge_bottom = input.start.edge_bottom; 1992 auto expected_output_edge_bottom = gfx::PointF(input.start.edge_bottom);
1992 expected_output_start_top.Scale(page_scale_factor); 1993 expected_output_start_top.Scale(page_scale_factor);
1993 expected_output_edge_bottom.Scale(page_scale_factor); 1994 expected_output_edge_bottom.Scale(page_scale_factor);
1994 EXPECT_EQ(expected_output_start_top, output.start.edge_top); 1995 EXPECT_EQ(expected_output_start_top, output.start.edge_top);
1995 EXPECT_EQ(expected_output_edge_bottom, output.start.edge_bottom); 1996 EXPECT_EQ(expected_output_edge_bottom, output.start.edge_bottom);
1996 EXPECT_TRUE(output.start.visible); 1997 EXPECT_TRUE(output.start.visible);
1997 EXPECT_EQ(input.end.type, output.end.type); 1998 EXPECT_EQ(input.end.type, output.end.type);
1998 1999
1999 gfx::PointF expected_output_end_top = input.end.edge_top; 2000 auto expected_output_end_top = gfx::PointF(input.end.edge_top);
2000 gfx::PointF expected_output_end_bottom = input.end.edge_bottom; 2001 auto expected_output_end_bottom = gfx::PointF(input.end.edge_bottom);
2001 expected_output_end_top.Offset(sub_layer_offset.x(), sub_layer_offset.y()); 2002 expected_output_end_top.Offset(sub_layer_offset.x(), sub_layer_offset.y());
2002 expected_output_end_bottom.Offset(sub_layer_offset.x(), sub_layer_offset.y()); 2003 expected_output_end_bottom.Offset(sub_layer_offset.x(), sub_layer_offset.y());
2003 expected_output_end_top.Scale(page_scale_factor); 2004 expected_output_end_top.Scale(page_scale_factor);
2004 expected_output_end_bottom.Scale(page_scale_factor); 2005 expected_output_end_bottom.Scale(page_scale_factor);
2005 EXPECT_EQ(expected_output_end_top, output.end.edge_top); 2006 EXPECT_EQ(expected_output_end_top, output.end.edge_top);
2006 EXPECT_EQ(expected_output_end_bottom, output.end.edge_bottom); 2007 EXPECT_EQ(expected_output_end_bottom, output.end.edge_bottom);
2007 EXPECT_TRUE(output.end.visible); 2008 EXPECT_TRUE(output.end.visible);
2008 } 2009 }
2009 2010
2010 TEST_F(LayerTreeImplTest, SelectionBoundsWithLargeTransforms) { 2011 TEST_F(LayerTreeImplTest, SelectionBoundsWithLargeTransforms) {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
2043 root->AddChild(child.Pass()); 2044 root->AddChild(child.Pass());
2044 } 2045 }
2045 2046
2046 host_impl().SetViewportSize(root->bounds()); 2047 host_impl().SetViewportSize(root->bounds());
2047 host_impl().active_tree()->SetRootLayer(root.Pass()); 2048 host_impl().active_tree()->SetRootLayer(root.Pass());
2048 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree(); 2049 host_impl().UpdateNumChildrenAndDrawPropertiesForActiveTree();
2049 2050
2050 LayerSelection input; 2051 LayerSelection input;
2051 2052
2052 input.start.type = SELECTION_BOUND_LEFT; 2053 input.start.type = SELECTION_BOUND_LEFT;
2053 input.start.edge_top = gfx::PointF(10, 10); 2054 input.start.edge_top = gfx::Point(10, 10);
2054 input.start.edge_bottom = gfx::PointF(10, 20); 2055 input.start.edge_bottom = gfx::Point(10, 20);
2055 input.start.layer_id = grand_child_id; 2056 input.start.layer_id = grand_child_id;
2056 2057
2057 input.end.type = SELECTION_BOUND_RIGHT; 2058 input.end.type = SELECTION_BOUND_RIGHT;
2058 input.end.edge_top = gfx::PointF(50, 10); 2059 input.end.edge_top = gfx::Point(50, 10);
2059 input.end.edge_bottom = gfx::PointF(50, 30); 2060 input.end.edge_bottom = gfx::Point(50, 30);
2060 input.end.layer_id = grand_child_id; 2061 input.end.layer_id = grand_child_id;
2061 2062
2062 host_impl().active_tree()->RegisterSelection(input); 2063 host_impl().active_tree()->RegisterSelection(input);
2063 2064
2064 ViewportSelection output; 2065 ViewportSelection output;
2065 host_impl().active_tree()->GetViewportSelection(&output); 2066 host_impl().active_tree()->GetViewportSelection(&output);
2066 2067
2067 // edge_bottom and edge_top aren't allowed to have NaNs, so the selection 2068 // edge_bottom and edge_top aren't allowed to have NaNs, so the selection
2068 // should be empty. 2069 // should be empty.
2069 EXPECT_EQ(ViewportSelectionBound(), output.start); 2070 EXPECT_EQ(ViewportSelectionBound(), output.start);
(...skipping 10 matching lines...) Expand all
2080 EXPECT_EQ(0u, host_impl().active_tree()->NumLayers()); 2081 EXPECT_EQ(0u, host_impl().active_tree()->NumLayers());
2081 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl().active_tree(), 1); 2082 scoped_ptr<LayerImpl> root = LayerImpl::Create(host_impl().active_tree(), 1);
2082 root->AddChild(LayerImpl::Create(host_impl().active_tree(), 2)); 2083 root->AddChild(LayerImpl::Create(host_impl().active_tree(), 2));
2083 root->AddChild(LayerImpl::Create(host_impl().active_tree(), 3)); 2084 root->AddChild(LayerImpl::Create(host_impl().active_tree(), 3));
2084 root->child_at(1)->AddChild(LayerImpl::Create(host_impl().active_tree(), 4)); 2085 root->child_at(1)->AddChild(LayerImpl::Create(host_impl().active_tree(), 4));
2085 EXPECT_EQ(4u, host_impl().active_tree()->NumLayers()); 2086 EXPECT_EQ(4u, host_impl().active_tree()->NumLayers());
2086 } 2087 }
2087 2088
2088 } // namespace 2089 } // namespace
2089 } // namespace cc 2090 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698