forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			89 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* Any copyright is dedicated to the Public Domain.
 | |
|  * http://creativecommons.org/publicdomain/zero/1.0/ */
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| const TEST_JSON_URL = URL_ROOT_SSL + "valid_json.json";
 | |
| const EMPTY_PAGE = URL_ROOT_SSL + "empty.html";
 | |
| const SW = URL_ROOT_SSL + "passthrough-sw.js";
 | |
| 
 | |
| add_task(async function() {
 | |
|   info("Test valid JSON with service worker started");
 | |
| 
 | |
|   await SpecialPowers.pushPrefEnv({
 | |
|     set: [
 | |
|       ["dom.serviceWorkers.exemptFromPerDomainMax", true],
 | |
|       ["dom.serviceWorkers.enabled", true],
 | |
|       ["dom.serviceWorkers.testing.enabled", true],
 | |
|     ],
 | |
|   });
 | |
| 
 | |
|   const swTab = BrowserTestUtils.addTab(gBrowser, EMPTY_PAGE);
 | |
|   const browser = gBrowser.getBrowserForTab(swTab);
 | |
|   await BrowserTestUtils.browserLoaded(browser);
 | |
|   await SpecialPowers.spawn(
 | |
|     browser,
 | |
|     [{ script: SW, scope: TEST_JSON_URL }],
 | |
|     async opts => {
 | |
|       const reg = await content.navigator.serviceWorker.register(opts.script, {
 | |
|         scope: opts.scope,
 | |
|       });
 | |
|       return new content.window.Promise(resolve => {
 | |
|         const worker = reg.installing;
 | |
|         if (worker.state === "activated") {
 | |
|           resolve();
 | |
|           return;
 | |
|         }
 | |
|         worker.addEventListener("statechange", evt => {
 | |
|           if (worker.state === "activated") {
 | |
|             resolve();
 | |
|           }
 | |
|         });
 | |
|       });
 | |
|     }
 | |
|   );
 | |
| 
 | |
|   const tab = await addJsonViewTab(TEST_JSON_URL);
 | |
| 
 | |
|   ok(
 | |
|     tab.linkedBrowser.contentPrincipal.isNullPrincipal,
 | |
|     "Should have null principal"
 | |
|   );
 | |
| 
 | |
|   is(await countRows(), 3, "There must be three rows");
 | |
| 
 | |
|   const objectCellCount = await getElementCount(
 | |
|     ".jsonPanelBox .treeTable .objectCell"
 | |
|   );
 | |
|   is(objectCellCount, 1, "There must be one object cell");
 | |
| 
 | |
|   const objectCellText = await getElementText(
 | |
|     ".jsonPanelBox .treeTable .objectCell"
 | |
|   );
 | |
|   is(objectCellText, "", "The summary is hidden when object is expanded");
 | |
| 
 | |
|   // Clicking the value does not collapse it (so that it can be selected and copied).
 | |
|   await clickJsonNode(".jsonPanelBox .treeTable .treeValueCell");
 | |
|   is(await countRows(), 3, "There must still be three rows");
 | |
| 
 | |
|   // Clicking the label collapses the auto-expanded node.
 | |
|   await clickJsonNode(".jsonPanelBox .treeTable .treeLabel");
 | |
|   is(await countRows(), 1, "There must be one row");
 | |
| 
 | |
|   await SpecialPowers.spawn(
 | |
|     browser,
 | |
|     [{ script: SW, scope: TEST_JSON_URL }],
 | |
|     async opts => {
 | |
|       const reg = await content.navigator.serviceWorker.getRegistration(
 | |
|         opts.scope
 | |
|       );
 | |
|       await reg.unregister();
 | |
|     }
 | |
|   );
 | |
| 
 | |
|   BrowserTestUtils.removeTab(swTab);
 | |
| });
 | |
| 
 | |
| function countRows() {
 | |
|   return getElementCount(".jsonPanelBox .treeTable .treeRow");
 | |
| }
 | 
