forked from mirrors/gecko-dev
		
	 3af8c4138c
			
		
	
	
		3af8c4138c
		
	
	
	
	
		
			
			It has some properties which make it footgunny, especially in the face of Fission. Callers should use WindowGlobalChild.innerWindowId instead. Differential Revision: https://phabricator.services.mozilla.com/D82801
		
			
				
	
	
		
			69 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE HTML>
 | |
| <html>
 | |
| <head>
 | |
|     <title>EventSource event service basic test</title>
 | |
|     <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
 | |
|     <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
 | |
|     <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
 | |
| </head>
 | |
| <body>
 | |
| <pre id="test">
 | |
| <script class="testbody" type="text/javascript">
 | |
| 
 | |
| var service = SpecialPowers.Cc["@mozilla.org/eventsourceevent/service;1"]
 | |
|                 .getService(SpecialPowers.Ci.nsIEventSourceEventService);
 | |
| ok(!!service, "We have the nsIEventSourceEventService");
 | |
| 
 | |
| var innerId = SpecialPowers.wrap(window).windowGlobalChild.innerWindowId;
 | |
| ok(innerId, "We have a valid innerWindowID: " + innerId);
 | |
| 
 | |
| var channelId = null;
 | |
| var listener = {
 | |
|     QueryInterface(aIID) {
 | |
|       if (
 | |
|         SpecialPowers.wrap(aIID).equals(SpecialPowers.Ci.nsISupports) ||
 | |
|         SpecialPowers.wrap(aIID).equals(SpecialPowers.Ci.nsIEventSourceEventListener)
 | |
|       ) {
 | |
|         return this;
 | |
|       }
 | |
|       throw SpecialPowers.Components.results.NS_ERROR_NO_INTERFACE;
 | |
|     },
 | |
|     eventSourceConnectionOpened(httpChannelId) {
 | |
|         info("eventSourceConnectionOpened");
 | |
|         ok(httpChannelId > 0, "Channel ID received");
 | |
|         channelId = httpChannelId;
 | |
|     },
 | |
|     eventSourceConnectionClosed(httpChannelId) {
 | |
|         info("eventSourceConnectionClosed");
 | |
|         ok(httpChannelId > 0, "Channel ID received");
 | |
|         ok(httpChannelId === channelId, "Channel ID matched");
 | |
|         service.removeListener(innerId, listener);
 | |
|         ok(true, "Listener removed");
 | |
|         ok(!service.hasListenerFor(innerId), "hasListenerFor(innerId) should be false");
 | |
|         SimpleTest.finish();
 | |
|     },
 | |
|     eventReceived(httpChannelId, eventName, lastEventId, data, retry, timeStamp) {
 | |
|         info("eventReceived");
 | |
|         is(eventName, "message", "Event name is 'message'");
 | |
|         is(lastEventId, "1", "Last event id is '1'");
 | |
|         is(data, "msg 1", "Data is 'msg 1'");
 | |
|         ok(retry > 0, "Reconnection time received");
 | |
|         ok(httpChannelId === channelId, "Channel ID matched");
 | |
|         ok(timeStamp > 0, "TimeStamp received");
 | |
|     }
 | |
| }
 | |
| 
 | |
| service.addListener(innerId, listener);
 | |
| ok(true, "Listener added");
 | |
| ok(service.hasListenerFor(innerId), "hasListenerFor(innerId) should be true");
 | |
| addLoadEvent(function () {
 | |
|     const es = new EventSource("http://mochi.test:8888/tests/dom/base/test/eventsource_message.sjs");
 | |
|     es.onmessage = function (e) {
 | |
|       es.close();
 | |
|     };
 | |
| });
 | |
| SimpleTest.waitForExplicitFinish();
 | |
| </script>
 | |
| </pre>
 | |
| </body>
 | |
| </html>
 |