<html>
<head>
<script src="../http/tests/inspector/inspector-test2.js"></script>
<script>

function test()
{

    console.error = function()
    {
        InspectorTest.addResult(String.sprintf.apply(this, arguments));
    }

    InspectorBackend.setMonitoringXHREnabled(1);
    InspectorBackend.setMonitoringXHREnabled();
    InspectorBackend.setMonitoringXHREnabled(true, "not a function");
    InspectorBackend.setMonitoringXHREnabled(true, undefined);
    InspectorBackend.setMonitoringXHREnabled(false, undefined);
    WebInspector_syncDispatch('{"type": "event", "domain": "dom", "event": "something-strange", "data": {}}');

    InspectorTest.completeTest();
}

</script>
</head>

<body onload="runTest()">
<p>
Tests that InspectorBackendStub is catching incorrect arguments.
</p>

</body>
</html>
