blob: 3197ee38130456a66a9d84b4512e3bcf9d17ad87 [file] [log] [blame]
<!doctype html>
<html>
<head>
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
<script>
function test()
{
class TestRecorder extends WI.DiagnosticEventRecorder {
constructor(name, controller, {setup, teardown} = {}) {
super(name, controller);
this._setupCallback = setup;
this._teardownCallback = teardown;
}
setup()
{
if (typeof this._setupCallback === "function")
this._setupCallback(this);
}
teardown()
{
if (typeof this._teardownCallback === "function")
this._teardownCallback(this);
}
sendEvent(name, payload)
{
this.logDiagnosticEvent(name, payload);
}
};
let suite = InspectorTest.createSyncSuite("DiagnosticController");
suite.addTestCase({
name: "DiagnosticController.SetupAndTeardown",
test() {
let diagnosticController = new WI.DiagnosticController;
InspectorTest.expectThat(!diagnosticController.diagnosticLoggingAvailable, "Diagnostics should not be available initially.");
let recorder = new TestRecorder("Test.1", diagnosticController, {
setup: (recorder) => InspectorTest.log("In setup() for recorder: " + recorder.name),
teardown: (recorder) => InspectorTest.log("In teardown() for recorder: " + recorder.name),
});
InspectorTest.log("Adding recorder...");
diagnosticController.addRecorder(recorder);
InspectorTest.expectThat(!recorder.active, "Recorder should be inactive prior to diagnostics becoming available.");
InspectorTest.log("Triggering a diagnostic event...");
recorder.sendEvent("TestEvent.0", {"answer": "should NOT be logged"});
InspectorTest.log("Making diagnostics available...");
diagnosticController.diagnosticLoggingAvailable = true;
InspectorTest.expectThat(recorder.active, "Recorder should be active after diagnostics are available.");
InspectorTest.log("Triggering a diagnostic event...");
recorder.sendEvent("TestEvent.1", {"answer": "should be logged"});
InspectorTest.log("Making diagnostics not available...");
diagnosticController.diagnosticLoggingAvailable = false;
InspectorTest.expectThat(!recorder.active, "Recorder should be inactive after diagnostics are not longer available.");
}
});
suite.addTestCase({
name: "DiagnosticController.AddRecorderWhileActive",
test() {
let diagnosticController = new WI.DiagnosticController;
InspectorTest.log("Making diagnostics available...");
diagnosticController.diagnosticLoggingAvailable = true;
let recorder = new TestRecorder("Test.2", diagnosticController, {
setup: (recorder) => InspectorTest.log("In setup() for recorder: " + recorder.name),
teardown: (recorder) => InspectorTest.log("In teardown() for recorder: " + recorder.name),
});
InspectorTest.log("Adding recorder...");
diagnosticController.addRecorder(recorder);
InspectorTest.log("Triggering a diagnostic event...");
recorder.sendEvent("TestEvent.2", {"answer": "should be logged"});
InspectorTest.log("Making diagnostics not available...");
diagnosticController.diagnosticLoggingAvailable = false;
InspectorTest.log("Triggering a diagnostic event...");
recorder.sendEvent("TestEvent.3", {"answer": "should NOT be logged"});
}
});
suite.addTestCase({
name: "DiagnosticController.AddRecorderWhileInactive",
test() {
let diagnosticController = new WI.DiagnosticController;
InspectorTest.log("Making diagnostics not available...");
diagnosticController.diagnosticLoggingAvailable = false;
let recorder = new TestRecorder("Test.3", diagnosticController, {
setup: (recorder) => InspectorTest.log("In setup() for recorder: " + recorder.name),
teardown: (recorder) => InspectorTest.log("In teardown() for recorder: " + recorder.name),
});
InspectorTest.log("Adding recorder...");
diagnosticController.addRecorder(recorder);
InspectorTest.log("Triggering a diagnostic event...");
recorder.sendEvent("TestEvent.4", {"answer": "should NOT be logged"});
InspectorTest.log("Making diagnostics available...");
diagnosticController.diagnosticLoggingAvailable = true;
InspectorTest.log("Triggering a diagnostic event...");
recorder.sendEvent("TestEvent.5", {"answer": "should be logged"});
InspectorTest.log("Making diagnostics not available...");
diagnosticController.diagnosticLoggingAvailable = false;
InspectorTest.log("Triggering a diagnostic event...");
recorder.sendEvent("TestEvent.6", {"answer": "should NOT be logged"});
}
});
suite.runTestCasesAndFinish();
}
</script>
</head>
<body onLoad="runTest()">
</body>
</html>