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()");
42 InspectorTest.addResult(" " + this._viewName + ".willHide()");
47 InspectorTest.addResult(" " + this._viewName + ".onResize()");
51 TestView.prototype.__proto__ = WebInspector.View.prototype;
53 InspectorTest.runTestSuite([
54 function testShowView(next)
56 var view = new TestView("View");
57 view.show(WebInspector.inspectorView.element);
62 function testAppendViaDOM(next)
65 var view = new TestView("View");
66 document.body.appendChild(view.element);
68 InspectorTest.addResult(e);
73 function testInsertViaDOM(next)
76 var view = new TestView("View");
77 document.body.insertBefore(view.element, null);
79 InspectorTest.addResult(e);
84 function testAttachToOrphanNode(next)
87 var view = new TestView("View");
88 var div = document.createElement("div");
91 InspectorTest.addResult(e);
96 function testImmediateParent(next)
98 var parentView = new TestView("Parent");
99 var childView = new TestView("Child");
100 childView.show(parentView.element);
101 if (childView._parentView === parentView)
102 InspectorTest.addResult("OK");
104 InspectorTest.addResult("FAILED");
108 function testDistantParent(next)
110 var parentView = new TestView("Parent");
111 var div = document.createElement("div");
112 parentView.element.appendChild(div);
113 var childView = new TestView("Child");
116 if (childView._parentView === parentView)
117 InspectorTest.addResult("OK");
119 InspectorTest.addResult("FAILED");
123 function testEvents(next)
125 var parentView = new TestView("Parent");
126 parentView.markAsRoot();
127 var childView = new TestView("Child");
128 parentView.show(WebInspector.inspectorView.element);
130 parentView.doResize();
131 childView.show(parentView.element);
132 parentView.doResize();
134 parentView.show(WebInspector.inspectorView.element);
140 function testEventsHideOnDetach(next)
142 var parentView = new TestView("Parent");
143 var childView = new TestView("Child");
144 childView.setHideOnDetach();
145 parentView.show(WebInspector.inspectorView.element);
147 parentView.doResize();
148 childView.show(parentView.element);
149 parentView.doResize();
151 parentView.show(WebInspector.inspectorView.element);
157 function testViewCounter(next)
159 var parentView = new TestView("Parent");
160 parentView.show(WebInspector.inspectorView.element);
162 var childView = new TestView("Child");
163 childView.show(parentView.element);
164 InspectorTest.addResult(" view counter: " + parentView.element.__viewCounter);
166 var childView2 = new TestView("Child 2");
167 childView2.show(parentView.element);
168 InspectorTest.addResult(" view counter: " + parentView.element.__viewCounter);
171 InspectorTest.addResult(" view counter: " + parentView.element.__viewCounter);
174 InspectorTest.addResult(" view counter: " + parentView.element.__viewCounter);
179 function testRemoveChild(next)
181 var parentView = new TestView("Parent");
182 parentView.show(WebInspector.inspectorView.element);
184 var childView = new TestView("Child");
185 childView.show(parentView.element);
187 parentView.element.removeChild(childView.element);
189 InspectorTest.addResult(e);
194 function testImplicitRemoveChild(next)
196 var parentView = new TestView("Parent");
197 var div = document.createElement("div");
198 parentView.element.appendChild(div);
200 var childView = new TestView("Child");
204 parentView.element.removeChild(div);
206 InspectorTest.addResult(e);
211 function testRemoveChildren(next)
213 var parentView = new TestView("Parent");
214 var childView = new TestView("Child");
215 childView.show(parentView.element);
216 parentView.element.appendChild(document.createElement("div"));
218 parentView.element.removeChildren();
220 InspectorTest.addResult(e);
225 function testImplicitRemoveChildren(next)
227 var parentView = new TestView("Parent");
228 var div = document.createElement("div");
229 parentView.element.appendChild(div);
231 var childView = new TestView("Child");
235 parentView.element.removeChildren();
237 InspectorTest.addResult(e);
247 <body onload="runTest()">
249 This tests that events are properly propagated through View hierarchy.