OLD | NEW |
| (Empty) |
1 <html> | |
2 <head> | |
3 <style> | |
4 .layer { | |
5 position: absolute; | |
6 -webkit-transform: translateZ(10px); | |
7 opacity: 0.8; | |
8 left: 20px; | |
9 top: 20px; | |
10 } | |
11 </style> | |
12 <script src="../http/tests/inspector/inspector-test.js"></script> | |
13 <script src="../http/tests/inspector/layers-test.js"></script> | |
14 <script> | |
15 function initialize_LayersPanelnMouseEvents() | |
16 { | |
17 | |
18 InspectorTest.findLayerTreeElement = function(layer) | |
19 { | |
20 var layerTree = WebInspector.panel("layers").sidebarTree; | |
21 var element = layerTree.getCachedTreeElement(layer); | |
22 element.reveal(); | |
23 return element.listItemElement; | |
24 } | |
25 | |
26 InspectorTest.find3DViewElement = function(layer) | |
27 { | |
28 var layers3DView = WebInspector.panel("layers")._layers3DView; | |
29 return layers3DView._elementForLayer(layer); | |
30 } | |
31 | |
32 InspectorTest.dispatchMouseEvent = function(eventType, button, element, offsetX,
offsetY) | |
33 { | |
34 var totalOffset = element.totalOffset(); | |
35 var scrollOffset = element.scrollOffset(); | |
36 var eventArguments = { | |
37 bubbles: true, | |
38 cancelable: true, | |
39 view: window, | |
40 screenX: totalOffset.left - scrollOffset.left + offsetX, | |
41 screenY: totalOffset.top - scrollOffset.top + offsetY, | |
42 clientX: totalOffset.left + offsetX, | |
43 clientY: totalOffset.top + offsetY, | |
44 button: button | |
45 }; | |
46 if (eventType === "mouseout") { | |
47 eventArguments.screenX = 0; | |
48 eventArguments.screenY = 0; | |
49 eventArguments.clientX = 0; | |
50 eventArguments.clientY = 0; | |
51 } | |
52 element.dispatchEvent(new MouseEvent(eventType, eventArguments)); | |
53 } | |
54 | |
55 InspectorTest.dispatchMouseEventToLayerTree = function(eventType, button, layer) | |
56 { | |
57 var element = InspectorTest.findLayerTreeElement(layer); | |
58 InspectorTest.assertTrue(!!element); | |
59 InspectorTest.dispatchMouseEvent(eventType, button, element, element.clientW
idth >> 1, element.clientHeight >> 1); | |
60 } | |
61 | |
62 InspectorTest.dispatchMouseEventTo3DView = function(eventType, button, layer) | |
63 { | |
64 // Caveat: this will blow if layers are transformed. We only take root layer
scale into account. | |
65 var offsetX = 0; | |
66 var offsetY = 0; | |
67 for (var currentLayer = layer; currentLayer; currentLayer = currentLayer.par
ent()) { | |
68 offsetX += currentLayer.offsetX(); | |
69 offsetY += currentLayer.offsetY(); | |
70 } | |
71 var layer3DView = WebInspector.panel("layers")._layers3DView; | |
72 var rootElement = layer3DView._elementForLayer(InspectorTest._layerTreeModel
.contentRoot()); | |
73 var screenOffsetX = Math.round(layer3DView._scale * offsetX) + 2; | |
74 var screenOffsetY = Math.round(layer3DView._scale * offsetY) + 2; | |
75 InspectorTest.dispatchMouseEvent(eventType, button, rootElement, screenOffse
tX, screenOffsetY); | |
76 } | |
77 | |
78 InspectorTest.dumpSelectedStyles = function(message, element) | |
79 { | |
80 var classes = []; | |
81 if (element.classList.contains("selected")) | |
82 classes.push("selected"); | |
83 if (element.classList.contains("hovered")) | |
84 classes.push("hovered"); | |
85 | |
86 InspectorTest.addResult(message + ": " + classes.join(", ")); | |
87 } | |
88 | |
89 } | |
90 | |
91 function test() | |
92 { | |
93 function step1() | |
94 { | |
95 var layerB1 = InspectorTest.findLayerByNodeIdAttribute("b1"); | |
96 var treeElementB1 = InspectorTest.findLayerTreeElement(layerB1); | |
97 var viewElementB1 = InspectorTest.find3DViewElement(layerB1); | |
98 | |
99 var layerB3 = InspectorTest.findLayerByNodeIdAttribute("b3"); | |
100 var treeElementB3 = InspectorTest.findLayerTreeElement(layerB3); | |
101 var viewElementB3 = InspectorTest.find3DViewElement(layerB3); | |
102 | |
103 function dumpElementSelectionState() | |
104 { | |
105 InspectorTest.dumpSelectedStyles("Layer b1 in tree", treeElementB1); | |
106 InspectorTest.dumpSelectedStyles("Layer b3 in tree", treeElementB3); | |
107 InspectorTest.dumpSelectedStyles("Layer b1 in view", viewElementB1); | |
108 InspectorTest.dumpSelectedStyles("Layer b3 in view", viewElementB3); | |
109 } | |
110 InspectorTest.addResult("Hovering b1 in tree"); | |
111 InspectorTest.dispatchMouseEventToLayerTree("mousemove", -1, layerB1); | |
112 dumpElementSelectionState(); | |
113 | |
114 InspectorTest.addResult("Hovering b3 in tree"); | |
115 InspectorTest.dispatchMouseEventToLayerTree("mousemove", -1, layerB3); | |
116 dumpElementSelectionState(); | |
117 | |
118 InspectorTest.addResult("Hovering away from tree"); | |
119 InspectorTest.dispatchMouseEventToLayerTree("mouseout", -1, layerB3); | |
120 dumpElementSelectionState(); | |
121 | |
122 InspectorTest.addResult("Selecting b1 in tree"); | |
123 InspectorTest.dispatchMouseEventToLayerTree("mousedown", 0, layerB1); | |
124 dumpElementSelectionState(); | |
125 | |
126 InspectorTest.addResult("Selecting b3 in tree"); | |
127 InspectorTest.dispatchMouseEventToLayerTree("mousedown", 0, layerB3); | |
128 dumpElementSelectionState(); | |
129 | |
130 InspectorTest.addResult("Hovering b1 in view"); | |
131 InspectorTest.dispatchMouseEventTo3DView("mousemove", -1, layerB1); | |
132 dumpElementSelectionState(); | |
133 | |
134 InspectorTest.addResult("Hovering b3 in view"); | |
135 InspectorTest.dispatchMouseEventTo3DView("mousemove", -1, layerB3); | |
136 dumpElementSelectionState(); | |
137 | |
138 InspectorTest.addResult("Hovering away from view"); | |
139 InspectorTest.dispatchMouseEventTo3DView("mouseout", -1, layerB3); | |
140 dumpElementSelectionState(); | |
141 | |
142 InspectorTest.addResult("Selecting b1 in view"); | |
143 InspectorTest.dispatchMouseEventTo3DView("click", 0, layerB1); | |
144 dumpElementSelectionState(); | |
145 | |
146 InspectorTest.addResult("Selecting b3 in view"); | |
147 InspectorTest.dispatchMouseEventTo3DView("click", 1, layerB3); | |
148 dumpElementSelectionState(); | |
149 | |
150 InspectorTest.completeTest(); | |
151 } | |
152 WebInspector.showPanel("layers"); | |
153 InspectorTest.requestLayers(step1); | |
154 | |
155 } | |
156 </script> | |
157 | |
158 <body onload="runTest()"> | |
159 <div id="a" style="width: 200px; height: 200px" class="layer"> | |
160 <div class="layer" id="b1" style="width: 150px; height: 100px"></div> | |
161 <div id="b2" class="layer" style="width: 140px; height: 110px"> | |
162 <div id="c" class="layer" style="width: 100px; height: 90px"></div> | |
163 <div id="b3" class="layer" style="width: 140px; height: 110px;"></div> | |
164 </div> | |
165 </div> | |
166 </body> | |
OLD | NEW |