3 <script src="../http/tests/inspector/inspector-test.js"></script>
8 function TestView(viewName)
10 WebInspector.View.call(this);
12 this._viewName = viewName;
13 InspectorTest.addResult(this._viewName + "()");
16 TestView.prototype = {
17 show: function(parentElement)
19 InspectorTest.addResult(this._viewName + ".show()");
20 WebInspector.View.prototype.show.call(this, parentElement);
25 InspectorTest.addResult(this._viewName + ".detach()");
26 WebInspector.View.prototype.detach.call(this);
31 InspectorTest.addResult(this._viewName + ".doResize()");
32 WebInspector.View.prototype.doResize.call(this);
37 InspectorTest.addResult(" " + this._viewName + ".wasShown()");
38 if (this.showOnWasShown)
39 this.showOnWasShown.show(this.element);
40 if (this.detachOnWasShown)
41 this.detachOnWasShown.detach();
46 InspectorTest.addResult(" " + this._viewName + ".willHide()");
47 if (this.showOnWillHide)
48 this.showOnWillHide.show(this.element);
49 if (this.detachOnWillHide)
50 this.detachOnWillHide.detach();
55 InspectorTest.addResult(" " + this._viewName + ".onResize()");
59 TestView.prototype.__proto__ = WebInspector.View.prototype;
61 InspectorTest.runTestSuite([
62 function testShowView(next)
64 var view = new TestView("View");
65 view.show(WebInspector.inspectorView.element);
70 function testAppendViaDOM(next)
73 var view = new TestView("View");
74 document.body.appendChild(view.element);
76 InspectorTest.addResult(e);
81 function testInsertViaDOM(next)
84 var view = new TestView("View");
85 document.body.insertBefore(view.element, null);
87 InspectorTest.addResult(e);
92 function testAttachToOrphanNode(next)
95 var view = new TestView("View");
96 var div = document.createElement("div");
99 InspectorTest.addResult(e);
104 function testImmediateParent(next)
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");
112 InspectorTest.addResult("FAILED");
116 function testDistantParent(next)
118 var parentView = new TestView("Parent");
119 var div = document.createElement("div");
120 parentView.element.appendChild(div);
121 var childView = new TestView("Child");
124 if (childView._parentView === parentView)
125 InspectorTest.addResult("OK");
127 InspectorTest.addResult("FAILED");
131 function testEvents(next)
133 var parentView = new TestView("Parent");
134 parentView.markAsRoot();
135 var childView = new TestView("Child");
136 parentView.show(WebInspector.inspectorView.element);
138 parentView.doResize();
139 childView.show(parentView.element);
140 parentView.doResize();
142 parentView.show(WebInspector.inspectorView.element);
148 function testEventsHideOnDetach(next)
150 var parentView = new TestView("Parent");
151 var childView = new TestView("Child");
152 childView.setHideOnDetach();
153 parentView.show(WebInspector.inspectorView.element);
155 parentView.doResize();
156 childView.show(parentView.element);
157 parentView.doResize();
159 parentView.show(WebInspector.inspectorView.element);
165 function testViewCounter(next)
167 var parentView = new TestView("Parent");
168 parentView.show(WebInspector.inspectorView.element);
170 var childView = new TestView("Child");
171 childView.show(parentView.element);
172 InspectorTest.addResult(" view counter: " + parentView.element.__viewCounter);
174 var childView2 = new TestView("Child 2");
175 childView2.show(parentView.element);
176 InspectorTest.addResult(" view counter: " + parentView.element.__viewCounter);
179 InspectorTest.addResult(" view counter: " + parentView.element.__viewCounter);
182 InspectorTest.addResult(" view counter: " + parentView.element.__viewCounter);
187 function testRemoveChild(next)
189 var parentView = new TestView("Parent");
190 parentView.show(WebInspector.inspectorView.element);
192 var childView = new TestView("Child");
193 childView.show(parentView.element);
195 parentView.element.removeChild(childView.element);
197 InspectorTest.addResult(e);
202 function testImplicitRemoveChild(next)
204 var parentView = new TestView("Parent");
205 var div = document.createElement("div");
206 parentView.element.appendChild(div);
208 var childView = new TestView("Child");
212 parentView.element.removeChild(div);
214 InspectorTest.addResult(e);
219 function testRemoveChildren(next)
221 var parentView = new TestView("Parent");
222 var childView = new TestView("Child");
223 childView.show(parentView.element);
224 parentView.element.appendChild(document.createElement("div"));
226 parentView.element.removeChildren();
228 InspectorTest.addResult(e);
233 function testImplicitRemoveChildren(next)
235 var parentView = new TestView("Parent");
236 var div = document.createElement("div");
237 parentView.element.appendChild(div);
239 var childView = new TestView("Child");
243 parentView.element.removeChildren();
245 InspectorTest.addResult(e);
250 function testShowOnWasShown(next)
252 var parentView = new TestView("Parent");
253 parentView.showOnWasShown = new TestView("Child");
254 parentView.show(WebInspector.inspectorView.element);
259 function testDetachOnWasShown(next)
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);
270 function testShowOnWillHide(next)
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;
281 function testDetachOnWillHide(next)
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;
292 function testShowDetachesFromPrevious(next)
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);
309 <body onload="runTest()">
311 This tests that events are properly propagated through View hierarchy.