forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			56 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* Any copyright is dedicated to the Public Domain.
 | |
|    http://creativecommons.org/publicdomain/zero/1.0/ */
 | |
| 
 | |
| var state = {
 | |
|   windows: [
 | |
|     {
 | |
|       tabs: [
 | |
|         {
 | |
|           entries: [
 | |
|             { url: "http://example.com#1", triggeringPrincipal_base64 },
 | |
|           ],
 | |
|         },
 | |
|         {
 | |
|           entries: [
 | |
|             { url: "http://example.com#2", triggeringPrincipal_base64 },
 | |
|           ],
 | |
|           hidden: true,
 | |
|         },
 | |
|       ],
 | |
|     },
 | |
|   ],
 | |
| };
 | |
| 
 | |
| function test() {
 | |
|   waitForExplicitFinish();
 | |
| 
 | |
|   newWindowWithState(state, function (aWindow) {
 | |
|     let tab = aWindow.gBrowser.tabs[1];
 | |
|     ok(tab.hidden, "the second tab is hidden");
 | |
| 
 | |
|     let tabShown = false;
 | |
|     let tabShowCallback = () => (tabShown = true);
 | |
|     tab.addEventListener("TabShow", tabShowCallback);
 | |
| 
 | |
|     let tabState = ss.getTabState(tab);
 | |
|     ss.setTabState(tab, tabState);
 | |
| 
 | |
|     tab.removeEventListener("TabShow", tabShowCallback);
 | |
|     ok(tab.hidden && !tabShown, "tab remains hidden");
 | |
| 
 | |
|     finish();
 | |
|   });
 | |
| }
 | |
| 
 | |
| // ----------
 | |
| function newWindowWithState(aState, aCallback) {
 | |
|   let opts = "chrome,all,dialog=no,height=800,width=800";
 | |
|   let win = window.openDialog(AppConstants.BROWSER_CHROME_URL, "_blank", opts);
 | |
| 
 | |
|   registerCleanupFunction(() => BrowserTestUtils.closeWindow(win));
 | |
| 
 | |
|   whenWindowLoaded(win, function onWindowLoaded(aWin) {
 | |
|     ss.setWindowState(aWin, JSON.stringify(aState), true);
 | |
|     executeSoon(() => aCallback(aWin));
 | |
|   });
 | |
| }
 | 
