Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / http / tests / inspector / layers-test.js
1 function initialize_LayerTreeTests()
2 {
3
4     InspectorTest.preloadPanel("layers");
5
6     InspectorTest.layerTreeModel = WebInspector.targetManager.mainTarget().layerTreeModel;
7
8     InspectorTest.labelForLayer = function(layer)
9     {
10         var node = layer.nodeForSelfOrAncestor();
11         var label = node ? WebInspector.DOMPresentationUtils.fullQualifiedSelector(node, false) : "<invalid node id>";
12         var height = layer.height();
13         var width = layer.width();
14         if (height <= 200 && width <= 200)
15             label += " " + height + "x" + width;
16         if (typeof layer.__extraData !== "undefined")
17             label += " (" + layer.__extraData + ")";
18         return label;
19     }
20
21     InspectorTest.dumpLayerTree = function(prefix, root)
22     {
23         if (!prefix)
24             prefix = "";
25         if (!root) {
26             root = InspectorTest.layerTreeModel.layerTree().contentRoot();
27             if (!root) {
28                 InspectorTest.addResult("No layer root, perhaps not in the composited mode! ");
29                 InspectorTest.completeTest();
30                 return;
31             }
32         }
33         InspectorTest.addResult(prefix + InspectorTest.labelForLayer(root));
34         root.children().forEach(InspectorTest.dumpLayerTree.bind(InspectorTest, prefix + "    "));
35     }
36
37     InspectorTest.dumpLayerTreeOutline = function(prefix, root)
38     {
39         if (!prefix)
40             prefix = "";
41         if (!root)
42             root = WebInspector.panels.layers._layerTree._treeOutline;
43         if (root.representedObject)
44             InspectorTest.addResult(prefix + InspectorTest.labelForLayer(root.representedObject));
45         root.children.forEach(InspectorTest.dumpLayerTreeOutline.bind(InspectorTest, prefix + "    "));
46     }
47
48     InspectorTest.dumpLayers3DView = function(prefix, root)
49     {
50         if (!prefix)
51             prefix = "";
52         if (!root)
53             root = WebInspector.panels.layers._layers3DView._rotatingContainerElement;
54         if (root.__layer)
55             InspectorTest.addResult(prefix + InspectorTest.labelForLayer(root.__layer));
56         for (var element = root.firstElementChild; element; element = element.nextSibling)
57             InspectorTest.dumpLayers3DView(prefix + "    ", element);
58     }
59
60     InspectorTest.evaluateAndRunWhenTreeChanges = function(expression, callback)
61     {
62         function eventHandler()
63         {
64             InspectorTest.layerTreeModel.removeEventListener(WebInspector.LayerTreeModel.Events.LayerTreeChanged, eventHandler);
65             callback();
66         }
67         InspectorTest.evaluateInPage(expression, function() {
68             InspectorTest.layerTreeModel.addEventListener(WebInspector.LayerTreeModel.Events.LayerTreeChanged, eventHandler);
69         });
70     }
71
72     InspectorTest.findLayerByNodeIdAttribute = function(nodeIdAttribute)
73     {
74         var result;
75         function testLayer(layer)
76         {
77             var node = layer.node();
78             if (!node)
79                 return false;
80             if (!node || node.getAttribute("id") !== nodeIdAttribute)
81                 return false;
82             result = layer;
83             return true;
84         }
85         InspectorTest.layerTreeModel.layerTree().forEachLayer(testLayer);
86         if (!result)
87             InspectorTest.addResult("ERROR: No layer for " + nodeIdAttribute);
88         return result;
89     }
90
91     InspectorTest.requestLayers = function(callback)
92     {
93         InspectorTest.layerTreeModel.addEventListener(WebInspector.LayerTreeModel.Events.LayerTreeChanged, onLayerTreeChanged);
94         InspectorTest.layerTreeModel.enable();
95         function onLayerTreeChanged()
96         {
97             InspectorTest.layerTreeModel.removeEventListener(WebInspector.LayerTreeModel.Events.LayerTreeChanged, onLayerTreeChanged);
98             callback();
99         }
100     }
101
102     InspectorTest.dumpModelScrollRects = function()
103     {
104         function dumpScrollRectsForLayer(layer)
105         {
106             if (layer._scrollRects.length > 0)
107                 InspectorTest.addObject(layer._scrollRects);
108         }
109
110         InspectorTest.addResult("Model elements dump");
111         InspectorTest.layerTreeModel.layerTree().forEachLayer(dumpScrollRectsForLayer.bind(this));
112     }
113
114     InspectorTest.dispatchMouseEvent = function(eventType, button, element, offsetX, offsetY)
115     {
116         var totalOffset = element.totalOffset();
117         var scrollOffset = element.scrollOffset();
118         var eventArguments = {
119             bubbles: true,
120             cancelable: true,
121             view: window,
122             screenX: totalOffset.left - scrollOffset.left + offsetX,
123             screenY: totalOffset.top - scrollOffset.top + offsetY,
124             clientX: totalOffset.left + offsetX,
125             clientY: totalOffset.top + offsetY,
126             button: button
127         };
128         if (eventType === "mouseout") {
129             eventArguments.screenX = 0;
130             eventArguments.screenY = 0;
131             eventArguments.clientX = 0;
132             eventArguments.clientY = 0;
133         }
134         element.dispatchEvent(new MouseEvent(eventType, eventArguments));
135     }
136 }