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