summaryrefslogtreecommitdiffstats
path: root/netwerk/test/browser/browser_test_data_channel_observer.js
diff options
context:
space:
mode:
Diffstat (limited to 'netwerk/test/browser/browser_test_data_channel_observer.js')
-rw-r--r--netwerk/test/browser/browser_test_data_channel_observer.js35
1 files changed, 35 insertions, 0 deletions
diff --git a/netwerk/test/browser/browser_test_data_channel_observer.js b/netwerk/test/browser/browser_test_data_channel_observer.js
new file mode 100644
index 0000000000..e03bbc72e6
--- /dev/null
+++ b/netwerk/test/browser/browser_test_data_channel_observer.js
@@ -0,0 +1,35 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+const TEST_URI = "data:text/html;charset=utf-8,<h1>Test";
+
+let created = false;
+
+add_task(async function test_data_channel_observer() {
+ setupObserver();
+ let tab = await BrowserTestUtils.addTab(gBrowser, TEST_URI);
+ await BrowserTestUtils.waitForCondition(() => created);
+ ok(created, "We received observer notification");
+ await BrowserTestUtils.removeTab(tab);
+});
+
+function setupObserver() {
+ const observer = {
+ QueryInterface: ChromeUtils.generateQI(["nsIObserver"]),
+
+ observe: function observe(subject, topic) {
+ switch (topic) {
+ case "data-channel-opened":
+ let channelURI = subject.QueryInterface(Ci.nsIChannel).URI.spec;
+ if (channelURI === TEST_URI) {
+ Services.obs.removeObserver(observer, "data-channel-opened");
+ created = true;
+ }
+ break;
+ }
+ },
+ };
+ Services.obs.addObserver(observer, "data-channel-opened");
+}