3 <script src="../http/tests/inspector/inspector-test.js"></script>
8 function TestView(viewName)
10 WebInspector.View.call(this);
12 this._viewName = viewName;
13 this._processWillShowCount = 0;
14 this._processWasHiddenCount = 0;
15 InspectorTest.addResult(this._viewName + "()");
18 TestView.prototype = {
19 _processWillShow: function()
21 InspectorTest.assertEquals(this._processWillShowCount, this._processWasHiddenCount);
22 WebInspector.View.prototype._processWillShow.call(this);
23 ++this._processWillShowCount;
26 _processWasHidden: function()
28 WebInspector.View.prototype._processWasHidden.call(this);
29 ++this._processWasHiddenCount;
30 InspectorTest.assertEquals(this._processWillShowCount, this._processWasHiddenCount);
33 show: function(parentElement)
35 InspectorTest.addResult(this._viewName + ".show()");
36 WebInspector.View.prototype.show.call(this, parentElement);
41 InspectorTest.addResult(this._viewName + ".detach()");
42 WebInspector.View.prototype.detach.call(this);
47 InspectorTest.addResult(this._viewName + ".doResize()");
48 WebInspector.View.prototype.doResize.call(this);
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();
64 InspectorTest.addResult(" " + this._viewName + ".willHide()");
65 if (this.showOnWillHide)
66 this.showOnWillHide.show(this.element);
67 if (this.detachOnWillHide)
68 this.detachOnWillHide.detach();
73 InspectorTest.addResult(" " + this._viewName + ".onResize()");
77 TestView.prototype.__proto__ = WebInspector.View.prototype;
79 InspectorTest.runTestSuite([
80 function testShowView(next)
82 var view = new TestView("View");
83 view.show(WebInspector.inspectorView.element);
88 function testAppendViaDOM(next)
91 var view = new TestView("View");
92 document.body.appendChild(view.element);
94 InspectorTest.addResult(e);
99 function testInsertViaDOM(next)
102 var view = new TestView("View");
103 document.body.insertBefore(view.element, null);
105 InspectorTest.addResult(e);
110 function testAttachToOrphanNode(next)
113 var view = new TestView("View");
114 var div = document.createElement("div");
117 InspectorTest.addResult(e);
122 function testImmediateParent(next)
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");
130 InspectorTest.addResult("FAILED");
134 function testDistantParent(next)
136 var parentView = new TestView("Parent");
137 var div = document.createElement("div");
138 parentView.element.appendChild(div);
139 var childView = new TestView("Child");
142 if (childView._parentView === parentView)
143 InspectorTest.addResult("OK");
145 InspectorTest.addResult("FAILED");
149 function testEvents(next)
151 var parentView = new TestView("Parent");
152 parentView.markAsRoot();
153 var childView = new TestView("Child");
154 parentView.show(WebInspector.inspectorView.element);
156 parentView.doResize();
157 childView.show(parentView.element);
158 parentView.doResize();
160 parentView.show(WebInspector.inspectorView.element);
166 function testEventsHideOnDetach(next)
168 var parentView = new TestView("Parent");
169 var childView = new TestView("Child");
170 childView.setHideOnDetach();
171 parentView.show(WebInspector.inspectorView.element);
173 parentView.doResize();
174 childView.show(parentView.element);
175 parentView.doResize();
177 parentView.show(WebInspector.inspectorView.element);
183 function testViewCounter(next)
185 var parentView = new TestView("Parent");
186 parentView.show(WebInspector.inspectorView.element);
188 var childView = new TestView("Child");
189 childView.show(parentView.element);
190 InspectorTest.addResult(" view counter: " + parentView.element.__viewCounter);
192 var childView2 = new TestView("Child 2");
193 childView2.show(parentView.element);
194 InspectorTest.addResult(" view counter: " + parentView.element.__viewCounter);
197 InspectorTest.addResult(" view counter: " + parentView.element.__viewCounter);
200 InspectorTest.addResult(" view counter: " + parentView.element.__viewCounter);
205 function testRemoveChild(next)
207 var parentView = new TestView("Parent");
208 parentView.show(WebInspector.inspectorView.element);
210 var childView = new TestView("Child");
211 childView.show(parentView.element);
213 parentView.element.removeChild(childView.element);
215 InspectorTest.addResult(e);
220 function testImplicitRemoveChild(next)
222 var parentView = new TestView("Parent");
223 var div = document.createElement("div");
224 parentView.element.appendChild(div);
226 var childView = new TestView("Child");
230 parentView.element.removeChild(div);
232 InspectorTest.addResult(e);
237 function testRemoveChildren(next)
239 var parentView = new TestView("Parent");
240 var childView = new TestView("Child");
241 childView.show(parentView.element);
242 parentView.element.appendChild(document.createElement("div"));
244 parentView.element.removeChildren();
246 InspectorTest.addResult(e);
251 function testImplicitRemoveChildren(next)
253 var parentView = new TestView("Parent");
254 var div = document.createElement("div");
255 parentView.element.appendChild(div);
257 var childView = new TestView("Child");
261 parentView.element.removeChildren();
263 InspectorTest.addResult(e);
268 function testShowOnWasShown(next)
270 var parentView = new TestView("Parent");
271 parentView.showOnWasShown = new TestView("Child");
272 parentView.show(WebInspector.inspectorView.element);
277 function testShowNestedOnWasShown(next)
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);
290 function testDetachOnWasShown(next)
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);
301 function testShowOnWillHide(next)
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;
312 function testDetachOnWillHide(next)
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;
323 function testShowDetachesFromPrevious(next)
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);
335 function testResizeOnWasShown(next)
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);
351 <body onload="runTest()">
353 This tests that events are properly propagated through View hierarchy.