/* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; const URL = "http://localhost:0"; add_agent_task(async function debuggerAddress() { const port = getNonAtomicFreePort(); await RemoteAgent.listen(`http://localhost:${port}`); is( remoteAgentInstance.debuggerAddress, `localhost:${port}`, "debuggerAddress set" ); }); add_agent_task(async function listening() { is(remoteAgentInstance.listening, false, "Agent is not listening"); await RemoteAgent.listen(URL); is(remoteAgentInstance.listening, true, "Agent is listening"); }); add_agent_task(async function remoteListeningNotification() { let active; const port = getNonAtomicFreePort(); function observer(subject, topic, data) { Services.obs.removeObserver(observer, topic); active = data; } Services.obs.addObserver(observer, "remote-listening"); await RemoteAgent.listen("http://localhost:" + port); is(active, "true", "remote-listening observer notified enabled state"); Services.obs.addObserver(observer, "remote-listening"); await RemoteAgent.close(); is(active, null, "remote-listening observer notified disabled state"); }); // TODO(ato): https://bugzil.la/1590829 add_agent_task(async function listenTakesString() { await RemoteAgent.listen("http://localhost:0"); await RemoteAgent.close(); }); // TODO(ato): https://bugzil.la/1590829 add_agent_task(async function listenNonURL() { try { await RemoteAgent.listen("foobar"); fail("listen() did not reject non-URL"); } catch (e) { is(e.result, Cr.NS_ERROR_MALFORMED_URI); } }); add_agent_task(async function listenRestrictedToLoopbackDevice() { try { await RemoteAgent.listen("http://0.0.0.0:9222"); fail("listen() did not reject non-loopback device"); } catch (e) { is(e.result, Cr.NS_ERROR_ILLEGAL_VALUE); is(e.message, "Restricted to loopback devices"); } }); add_agent_task(async function test_close() { await RemoteAgent.listen(URL); await RemoteAgent.close(); // no-op when not listening await RemoteAgent.close(); });