forked from mirrors/gecko-dev
		
	# ignore-this-changeset Differential Revision: https://phabricator.services.mozilla.com/D35950 --HG-- extra : source : ff6aa88097df9836d93d6aa5554ffcd160f07167 extra : intermediate-source : 2130a9484ece03d835939359c4a07966aa8d790c
		
			
				
	
	
		
			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");
 | 
						|
    }
 | 
						|
  },
 | 
						|
};
 |