mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-10-31 16:28:05 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			68 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| var expected = [
 | |
|   "TabOpen",
 | |
|   "onStateChange",
 | |
|   "onLocationChange",
 | |
|   "onLinkIconAvailable",
 | |
| ];
 | |
| var actual = [];
 | |
| var tabIndex = -1;
 | |
| this.__defineGetter__("tab", () => gBrowser.tabs[tabIndex]);
 | |
| 
 | |
| function test() {
 | |
|   waitForExplicitFinish();
 | |
|   tabIndex = gBrowser.tabs.length;
 | |
|   gBrowser.addTabsProgressListener(progressListener);
 | |
|   gBrowser.tabContainer.addEventListener("TabOpen", TabOpen);
 | |
|   BrowserTestUtils.addTab(
 | |
|     gBrowser,
 | |
|     "data:text/html,<html><head><link href='about:logo' rel='shortcut icon'>"
 | |
|   );
 | |
| }
 | |
| 
 | |
| function recordEvent(aName) {
 | |
|   info("got " + aName);
 | |
|   if (!actual.includes(aName)) {
 | |
|     actual.push(aName);
 | |
|   }
 | |
|   if (actual.length == expected.length) {
 | |
|     is(
 | |
|       actual.toString(),
 | |
|       expected.toString(),
 | |
|       "got events and progress notifications in expected order"
 | |
|     );
 | |
| 
 | |
|     executeSoon(
 | |
|       // eslint-disable-next-line no-shadow
 | |
|       function (tab) {
 | |
|         gBrowser.removeTab(tab);
 | |
|         gBrowser.removeTabsProgressListener(progressListener);
 | |
|         gBrowser.tabContainer.removeEventListener("TabOpen", TabOpen);
 | |
|         finish();
 | |
|       }.bind(null, tab)
 | |
|     );
 | |
|   }
 | |
| }
 | |
| 
 | |
| function TabOpen(aEvent) {
 | |
|   if (aEvent.target == tab) {
 | |
|     recordEvent("TabOpen");
 | |
|   }
 | |
| }
 | |
| 
 | |
| var progressListener = {
 | |
|   onLocationChange: function onLocationChange(aBrowser) {
 | |
|     if (aBrowser == tab.linkedBrowser) {
 | |
|       recordEvent("onLocationChange");
 | |
|     }
 | |
|   },
 | |
|   onStateChange: function onStateChange(aBrowser) {
 | |
|     if (aBrowser == tab.linkedBrowser) {
 | |
|       recordEvent("onStateChange");
 | |
|     }
 | |
|   },
 | |
|   onLinkIconAvailable: function onLinkIconAvailable(aBrowser) {
 | |
|     if (aBrowser == tab.linkedBrowser) {
 | |
|       recordEvent("onLinkIconAvailable");
 | |
|     }
 | |
|   },
 | |
| };
 | 
