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