OLD | NEW |
| (Empty) |
1 <sky> | |
2 <style> | |
3 foo, parent { width: 100px; height: 100px; background: blue; } | |
4 bar { width: 100px; height: 100px; background: purple; } | |
5 parent { display: paragraph; } | |
6 child { background: salmon; display: paragraph; } | |
7 canvas { height: 50px; background-color: pink; } | |
8 inline-flex { display: inline-flex; width: 50px; height: 50px; background: green
; } | |
9 grand-child { width: 50px; height: 50px; transform: translate3d(100px, 0, 0); ba
ckground: papayawhip; } | |
10 </style> | |
11 <foo /><bar /> | |
12 <parent> | |
13 <child>Foo bar</child> | |
14 <inline-flex> | |
15 <grand-child /> | |
16 </inline-flex> | |
17 </parent> | |
18 <canvas /> | |
19 <script> | |
20 import "../resources/third_party/unittest/unittest.dart"; | |
21 import "../resources/unit.dart"; | |
22 | |
23 import "dart:sky"; | |
24 | |
25 void main() { | |
26 initUnit(); | |
27 | |
28 test("should hit test", () { | |
29 // FIXME: We should have much better hit-testing coverage, at least: | |
30 // inline content (both sections of a wrapped run) | |
31 // text node | |
32 // flex box | |
33 // display: paragraph | |
34 // position: absolute | |
35 // position: relative | |
36 // z-order (missing, zero, positive and negative) | |
37 expect(document.elementFromPoint(50, 50).tagName, equals('foo')); | |
38 expect(document.elementFromPoint(50, 150).tagName, equals('bar')); | |
39 expect(document.elementFromPoint(150, 50).tagName, equals('sky')); | |
40 }); | |
41 | |
42 void hitTestWithChildren() { | |
43 expect(document.elementFromPoint(50, 210).tagName, equals('child')); | |
44 // Right of the <child> inline. | |
45 expect(document.elementFromPoint(95, 210).tagName, equals('parent')); | |
46 // Below the <child> inline. | |
47 expect(document.elementFromPoint(50, 275).tagName, equals('parent')); | |
48 } | |
49 | |
50 test("should hit test child and parent", () { | |
51 hitTestWithChildren(); | |
52 }); | |
53 | |
54 test("should hit test child with layered parent", () { | |
55 document.querySelector('parent').style["transform"] = "translate3d(0, 0, 0)"
; | |
56 hitTestWithChildren(); | |
57 }); | |
58 | |
59 test("should hit test transformed child", () { | |
60 document.querySelector('parent').style["display"] = "flex"; | |
61 document.querySelector('child').style["transform"] = "translate3d(100px, 0,
0)"; | |
62 expect(document.elementFromPoint(50, 210).tagName, equals('parent')); | |
63 expect(document.elementFromPoint(150, 210).tagName, equals('child')); | |
64 expect(document.elementFromPoint(25, 240).tagName, equals('inline-flex')); | |
65 // TODO(ojan): This is incorrect. It should hit grand-child. | |
66 // This broke sometime before 4153b8a515d54275934d4244aaf2d5a7a8fe3333. | |
67 expect(document.elementFromPoint(150, 240).tagName, equals('sky')); | |
68 }); | |
69 | |
70 test("should hit test canvas", () { | |
71 expect(document.elementFromPoint(50, 310).tagName, equals('canvas')); | |
72 }); | |
73 } | |
74 </script> | |
75 </sky> | |
OLD | NEW |