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();
62 InspectorTest.addResult(" " + this._viewName + ".willHide()");
63 if (this.showOnWillHide)
64 this.showOnWillHide.show(this.element);
65 if (this.detachOnWillHide)
66 this.detachOnWillHide.detach();
71 InspectorTest.addResult(" " + this._viewName + ".onResize()");
75 TestView.prototype.__proto__ = WebInspector.View.prototype;
77 InspectorTest.runTestSuite([
78 function testShowView(next)
80 var view = new TestView("View");
81 view.show(WebInspector.inspectorView.element);
86 function testAppendViaDOM(next)
89 var view = new TestView("View");
90 document.body.appendChild(view.element);
92 InspectorTest.addResult(e);
97 function testInsertViaDOM(next)
100 var view = new TestView("View");
101 document.body.insertBefore(view.element, null);
103 InspectorTest.addResult(e);
108 function testAttachToOrphanNode(next)
111 var view = new TestView("View");
112 var div = document.createElement("div");
115 InspectorTest.addResult(e);
120 function testImmediateParent(next)
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");
128 InspectorTest.addResult("FAILED");
132 function testDistantParent(next)
134 var parentView = new TestView("Parent");
135 var div = document.createElement("div");
136 parentView.element.appendChild(div);
137 var childView = new TestView("Child");
140 if (childView._parentView === parentView)
141 InspectorTest.addResult("OK");
143 InspectorTest.addResult("FAILED");
147 function testEvents(next)
149 var parentView = new TestView("Parent");
150 parentView.markAsRoot();
151 var childView = new TestView("Child");
152 parentView.show(WebInspector.inspectorView.element);
154 parentView.doResize();
155 childView.show(parentView.element);
156 parentView.doResize();
158 parentView.show(WebInspector.inspectorView.element);
164 function testEventsHideOnDetach(next)
166 var parentView = new TestView("Parent");
167 var childView = new TestView("Child");
168 childView.setHideOnDetach();
169 parentView.show(WebInspector.inspectorView.element);
171 parentView.doResize();
172 childView.show(parentView.element);
173 parentView.doResize();
175 parentView.show(WebInspector.inspectorView.element);
181 function testViewCounter(next)
183 var parentView = new TestView("Parent");
184 parentView.show(WebInspector.inspectorView.element);
186 var childView = new TestView("Child");
187 childView.show(parentView.element);
188 InspectorTest.addResult(" view counter: " + parentView.element.__viewCounter);
190 var childView2 = new TestView("Child 2");
191 childView2.show(parentView.element);
192 InspectorTest.addResult(" view counter: " + parentView.element.__viewCounter);
195 InspectorTest.addResult(" view counter: " + parentView.element.__viewCounter);
198 InspectorTest.addResult(" view counter: " + parentView.element.__viewCounter);
203 function testRemoveChild(next)
205 var parentView = new TestView("Parent");
206 parentView.show(WebInspector.inspectorView.element);
208 var childView = new TestView("Child");
209 childView.show(parentView.element);
211 parentView.element.removeChild(childView.element);
213 InspectorTest.addResult(e);
218 function testImplicitRemoveChild(next)
220 var parentView = new TestView("Parent");
221 var div = document.createElement("div");
222 parentView.element.appendChild(div);
224 var childView = new TestView("Child");
228 parentView.element.removeChild(div);
230 InspectorTest.addResult(e);
235 function testRemoveChildren(next)
237 var parentView = new TestView("Parent");
238 var childView = new TestView("Child");
239 childView.show(parentView.element);
240 parentView.element.appendChild(document.createElement("div"));
242 parentView.element.removeChildren();
244 InspectorTest.addResult(e);
249 function testImplicitRemoveChildren(next)
251 var parentView = new TestView("Parent");
252 var div = document.createElement("div");
253 parentView.element.appendChild(div);
255 var childView = new TestView("Child");
259 parentView.element.removeChildren();
261 InspectorTest.addResult(e);
266 function testShowOnWasShown(next)
268 var parentView = new TestView("Parent");
269 parentView.showOnWasShown = new TestView("Child");
270 parentView.show(WebInspector.inspectorView.element);
275 function testShowNestedOnWasShown(next)
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);
288 function testDetachOnWasShown(next)
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);
299 function testShowOnWillHide(next)
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;
310 function testDetachOnWillHide(next)
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;
321 function testShowDetachesFromPrevious(next)
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);
338 <body onload="runTest()">
340 This tests that events are properly propagated through View hierarchy.