blob: 00d6f6937cc907aee4c1bbb1b92c9d9dfbe79203 [file] [log] [blame]
<html>
<head>
<script src="../http/tests/inspector/inspector-test.js"></script>
<script>
function test()
{
function TestView(viewName)
{
WebInspector.View.call(this);
this._viewName = viewName;
InspectorTest.addResult(this._viewName + "()");
}
TestView.prototype = {
show: function(parentElement)
{
InspectorTest.addResult(this._viewName + ".show()");
WebInspector.View.prototype.show.call(this, parentElement);
},
detach: function()
{
InspectorTest.addResult(this._viewName + ".detach()");
WebInspector.View.prototype.detach.call(this);
},
doResize: function()
{
InspectorTest.addResult(this._viewName + ".doResize()");
WebInspector.View.prototype.doResize.call(this);
},
wasShown: function()
{
InspectorTest.addResult(" " + this._viewName + ".wasShown()");
if (this.showOnWasShown)
this.showOnWasShown.show(this.element);
if (this.detachOnWasShown)
this.detachOnWasShown.detach();
},
willHide: function()
{
InspectorTest.addResult(" " + this._viewName + ".willHide()");
if (this.showOnWillHide)
this.showOnWillHide.show(this.element);
if (this.detachOnWillHide)
this.detachOnWillHide.detach();
},
onResize: function()
{
InspectorTest.addResult(" " + this._viewName + ".onResize()");
}
};
TestView.prototype.__proto__ = WebInspector.View.prototype;
InspectorTest.runTestSuite([
function testShowView(next)
{
var view = new TestView("View");
view.show(WebInspector.inspectorView.element);
view.detach();
next();
},
function testAppendViaDOM(next)
{
try {
var view = new TestView("View");
document.body.appendChild(view.element);
} catch (e) {
InspectorTest.addResult(e);
}
next();
},
function testInsertViaDOM(next)
{
try {
var view = new TestView("View");
document.body.insertBefore(view.element, null);
} catch (e) {
InspectorTest.addResult(e);
}
next();
},
function testAttachToOrphanNode(next)
{
try {
var view = new TestView("View");
var div = document.createElement("div");
view.show(div);
} catch (e) {
InspectorTest.addResult(e);
}
next();
},
function testImmediateParent(next)
{
var parentView = new TestView("Parent");
var childView = new TestView("Child");
childView.show(parentView.element);
if (childView._parentView === parentView)
InspectorTest.addResult("OK");
else
InspectorTest.addResult("FAILED");
next();
},
function testDistantParent(next)
{
var parentView = new TestView("Parent");
var div = document.createElement("div");
parentView.element.appendChild(div);
var childView = new TestView("Child");
childView.show(div);
if (childView._parentView === parentView)
InspectorTest.addResult("OK");
else
InspectorTest.addResult("FAILED");
next();
},
function testEvents(next)
{
var parentView = new TestView("Parent");
parentView.markAsRoot();
var childView = new TestView("Child");
parentView.show(WebInspector.inspectorView.element);
parentView.doResize();
childView.show(parentView.element);
parentView.doResize();
parentView.detach();
parentView.show(WebInspector.inspectorView.element);
childView.detach();
parentView.detach();
next();
},
function testEventsHideOnDetach(next)
{
var parentView = new TestView("Parent");
var childView = new TestView("Child");
childView.setHideOnDetach();
parentView.show(WebInspector.inspectorView.element);
parentView.doResize();
childView.show(parentView.element);
parentView.doResize();
parentView.detach();
parentView.show(WebInspector.inspectorView.element);
childView.detach();
parentView.detach();
next();
},
function testViewCounter(next)
{
var parentView = new TestView("Parent");
parentView.show(WebInspector.inspectorView.element);
var childView = new TestView("Child");
childView.show(parentView.element);
InspectorTest.addResult(" view counter: " + parentView.element.__viewCounter);
var childView2 = new TestView("Child 2");
childView2.show(parentView.element);
InspectorTest.addResult(" view counter: " + parentView.element.__viewCounter);
childView.detach();
InspectorTest.addResult(" view counter: " + parentView.element.__viewCounter);
childView2.detach();
InspectorTest.addResult(" view counter: " + parentView.element.__viewCounter);
next();
},
function testRemoveChild(next)
{
var parentView = new TestView("Parent");
parentView.show(WebInspector.inspectorView.element);
var childView = new TestView("Child");
childView.show(parentView.element);
try {
parentView.element.removeChild(childView.element);
} catch (e) {
InspectorTest.addResult(e);
}
next();
},
function testImplicitRemoveChild(next)
{
var parentView = new TestView("Parent");
var div = document.createElement("div");
parentView.element.appendChild(div);
var childView = new TestView("Child");
childView.show(div);
try {
parentView.element.removeChild(div);
} catch (e) {
InspectorTest.addResult(e);
}
next();
},
function testRemoveChildren(next)
{
var parentView = new TestView("Parent");
var childView = new TestView("Child");
childView.show(parentView.element);
parentView.element.appendChild(document.createElement("div"));
try {
parentView.element.removeChildren();
} catch (e) {
InspectorTest.addResult(e);
}
next();
},
function testImplicitRemoveChildren(next)
{
var parentView = new TestView("Parent");
var div = document.createElement("div");
parentView.element.appendChild(div);
var childView = new TestView("Child");
childView.show(div);
try {
parentView.element.removeChildren();
} catch (e) {
InspectorTest.addResult(e);
}
next();
},
function testShowOnWasShown(next)
{
var parentView = new TestView("Parent");
parentView.showOnWasShown = new TestView("Child");
parentView.show(WebInspector.inspectorView.element);
parentView.detach();
next();
},
function testDetachOnWasShown(next)
{
var parentView = new TestView("Parent");
var childView = new TestView("Child");
childView.show(parentView.element);
parentView.detachOnWasShown = childView;
parentView.show(WebInspector.inspectorView.element);
parentView.detach();
next();
},
function testShowOnWillHide(next)
{
var parentView = new TestView("Parent");
var childView = new TestView("Child");
parentView.show(WebInspector.inspectorView.element);
childView.show(parentView.element);
parentView.showOnWillHide = childView;
parentView.detach();
next();
},
function testDetachOnWillHide(next)
{
var parentView = new TestView("Parent");
var childView = new TestView("Child");
parentView.show(WebInspector.inspectorView.element);
childView.show(parentView.element);
parentView.detachOnWillHide = childView;
parentView.detach();
next();
},
function testShowDetachesFromPrevious(next)
{
var parentView1 = new TestView("Parent1");
var parentView2 = new TestView("Parent2");
var childView = new TestView("Child");
parentView1.show(WebInspector.inspectorView.element);
parentView2.show(WebInspector.inspectorView.element);
childView.show(parentView1.element);
childView.show(parentView2.element);
next();
}
]);
}
</script>
</head>
<body onload="runTest()">
<p>
This tests that events are properly propagated through View hierarchy.
</p>
</body>
</html>