Initialize Tizen 2.3
[framework/web/webkit-efl.git] / LayoutTests / inspector / view-events.html
1 <html>
2 <head>
3 <script src="../http/tests/inspector/inspector-test.js"></script>
4 <script>
5
6 function test()
7 {
8     function TestView(viewName)
9     {
10         WebInspector.View.call(this);
11
12         this._viewName = viewName;
13         InspectorTest.addResult(this._viewName + "()");
14     }
15
16     TestView.prototype = {
17         show: function(parentElement)
18         {
19             InspectorTest.addResult(this._viewName + ".show()");
20             WebInspector.View.prototype.show.call(this, parentElement);
21         },
22
23         detach: function()
24         {
25             InspectorTest.addResult(this._viewName + ".detach()");
26             WebInspector.View.prototype.detach.call(this);
27         },
28
29         doResize: function()
30         {
31             InspectorTest.addResult(this._viewName + ".doResize()");
32             WebInspector.View.prototype.doResize.call(this);
33         },
34
35         wasShown: function()
36         {
37             InspectorTest.addResult("  " + this._viewName + ".wasShown()");
38             if (this.showOnWasShown)
39                 this.showOnWasShown.show(this.element);
40             if (this.detachOnWasShown)
41                 this.detachOnWasShown.detach();
42         },
43
44         willHide: function()
45         {
46             InspectorTest.addResult("  " + this._viewName + ".willHide()");
47             if (this.showOnWillHide)
48                 this.showOnWillHide.show(this.element);
49             if (this.detachOnWillHide)
50                 this.detachOnWillHide.detach();
51         },
52
53         onResize: function()
54         {
55             InspectorTest.addResult("  " + this._viewName + ".onResize()");
56         }
57     };
58
59     TestView.prototype.__proto__ = WebInspector.View.prototype;
60
61     InspectorTest.runTestSuite([
62         function testShowView(next)
63         {
64             var view = new TestView("View");
65             view.show(WebInspector.inspectorView.element);
66             view.detach();
67             next();
68         },
69
70         function testAppendViaDOM(next)
71         {
72             try {
73                 var view = new TestView("View");
74                 document.body.appendChild(view.element);
75             } catch (e) {
76                 InspectorTest.addResult(e);
77             }
78             next();
79         },
80
81         function testInsertViaDOM(next)
82         {
83             try {
84                 var view = new TestView("View");
85                 document.body.insertBefore(view.element, null);
86             } catch (e) {
87                 InspectorTest.addResult(e);
88             }
89             next();
90         },
91
92         function testAttachToOrphanNode(next)
93         {
94             try {
95                 var view = new TestView("View");
96                 var div = document.createElement("div");
97                 view.show(div);
98             } catch (e) {
99                 InspectorTest.addResult(e);
100             }
101             next();
102         },
103
104         function testImmediateParent(next)
105         {
106             var parentView = new TestView("Parent");
107             var childView = new TestView("Child");
108             childView.show(parentView.element);
109             if (childView._parentView === parentView)
110                 InspectorTest.addResult("OK");
111             else
112                 InspectorTest.addResult("FAILED");
113             next();
114         },
115
116         function testDistantParent(next)
117         {
118             var parentView = new TestView("Parent");
119             var div = document.createElement("div");
120             parentView.element.appendChild(div);
121             var childView = new TestView("Child");
122             childView.show(div);
123
124             if (childView._parentView === parentView)
125                 InspectorTest.addResult("OK");
126             else
127                 InspectorTest.addResult("FAILED");
128             next();
129         },
130
131         function testEvents(next)
132         {
133             var parentView = new TestView("Parent");
134             parentView.markAsRoot();
135             var childView = new TestView("Child");
136             parentView.show(WebInspector.inspectorView.element);
137
138             parentView.doResize();
139             childView.show(parentView.element);
140             parentView.doResize();
141             parentView.detach();
142             parentView.show(WebInspector.inspectorView.element);
143             childView.detach();
144             parentView.detach();
145             next();
146         },
147
148         function testEventsHideOnDetach(next)
149         {
150             var parentView = new TestView("Parent");
151             var childView = new TestView("Child");
152             childView.setHideOnDetach();
153             parentView.show(WebInspector.inspectorView.element);
154
155             parentView.doResize();
156             childView.show(parentView.element);
157             parentView.doResize();
158             parentView.detach();
159             parentView.show(WebInspector.inspectorView.element);
160             childView.detach();
161             parentView.detach();
162             next();
163         },
164
165         function testViewCounter(next)
166         {
167             var parentView = new TestView("Parent");
168             parentView.show(WebInspector.inspectorView.element);
169
170             var childView = new TestView("Child");
171             childView.show(parentView.element);
172             InspectorTest.addResult("  view counter: " + parentView.element.__viewCounter);
173
174             var childView2 = new TestView("Child 2");
175             childView2.show(parentView.element);
176             InspectorTest.addResult("  view counter: " + parentView.element.__viewCounter);
177
178             childView.detach();
179             InspectorTest.addResult("  view counter: " + parentView.element.__viewCounter);
180
181             childView2.detach();
182             InspectorTest.addResult("  view counter: " + parentView.element.__viewCounter);
183
184             next();
185         },
186
187         function testRemoveChild(next)
188         {
189             var parentView = new TestView("Parent");
190             parentView.show(WebInspector.inspectorView.element);
191
192             var childView = new TestView("Child");
193             childView.show(parentView.element);
194             try {
195                 parentView.element.removeChild(childView.element);
196             } catch (e) {
197                 InspectorTest.addResult(e);
198             }
199             next();
200         },
201
202         function testImplicitRemoveChild(next)
203         {
204             var parentView = new TestView("Parent");
205             var div = document.createElement("div");
206             parentView.element.appendChild(div);
207
208             var childView = new TestView("Child");
209             childView.show(div);
210
211             try {
212                 parentView.element.removeChild(div);
213             } catch (e) {
214                 InspectorTest.addResult(e);
215             }
216             next();
217         },
218
219         function testRemoveChildren(next)
220         {
221             var parentView = new TestView("Parent");
222             var childView = new TestView("Child");
223             childView.show(parentView.element);
224             parentView.element.appendChild(document.createElement("div"));
225             try {
226                 parentView.element.removeChildren();
227             } catch (e) {
228                 InspectorTest.addResult(e);
229             }
230             next();
231         },
232
233         function testImplicitRemoveChildren(next)
234         {
235             var parentView = new TestView("Parent");
236             var div = document.createElement("div");
237             parentView.element.appendChild(div);
238
239             var childView = new TestView("Child");
240             childView.show(div);
241
242             try {
243                 parentView.element.removeChildren();
244             } catch (e) {
245                 InspectorTest.addResult(e);
246             }
247             next();
248         },
249
250         function testShowOnWasShown(next)
251         {
252             var parentView = new TestView("Parent");
253             parentView.showOnWasShown = new TestView("Child");
254             parentView.show(WebInspector.inspectorView.element);
255             parentView.detach();
256             next();
257         },
258
259         function testDetachOnWasShown(next)
260         {
261             var parentView = new TestView("Parent");
262             var childView = new TestView("Child");
263             childView.show(parentView.element);
264             parentView.detachOnWasShown = childView;
265             parentView.show(WebInspector.inspectorView.element);
266             parentView.detach();
267             next();
268         },
269
270         function testShowOnWillHide(next)
271         {
272             var parentView = new TestView("Parent");
273             var childView = new TestView("Child");
274             parentView.show(WebInspector.inspectorView.element);
275             childView.show(parentView.element);
276             parentView.showOnWillHide = childView;
277             parentView.detach();
278             next();
279         },
280
281         function testDetachOnWillHide(next)
282         {
283             var parentView = new TestView("Parent");
284             var childView = new TestView("Child");
285             parentView.show(WebInspector.inspectorView.element);
286             childView.show(parentView.element);
287             parentView.detachOnWillHide = childView;
288             parentView.detach();
289             next();
290         },
291
292         function testShowDetachesFromPrevious(next)
293         {
294             var parentView1 = new TestView("Parent1");
295             var parentView2 = new TestView("Parent2");
296             var childView = new TestView("Child");
297             parentView1.show(WebInspector.inspectorView.element);
298             parentView2.show(WebInspector.inspectorView.element);
299             childView.show(parentView1.element);
300             childView.show(parentView2.element);
301             next();
302         }
303     ]);
304 }
305
306 </script>
307 </head>
308
309 <body onload="runTest()">
310 <p>
311 This tests that events are properly propagated through View hierarchy.
312 </p>
313
314 </body>
315 </html>