forked from mirrors/gecko-dev
		
	 640fe52298
			
		
	
	
		640fe52298
		
	
	
	
	
		
			
			MozReview-Commit-ID: F6xUXCgdRE4 --HG-- extra : rebase_source : 65de1b0aba412d9044b5196115f74276caa058f2
		
			
				
	
	
		
			68 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* This Source Code Form is subject to the terms of the Mozilla Public
 | |
|  * License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
|  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| const PREF_ACCESSIBILITY_FORCE_DISABLED = "accessibility.force_disabled";
 | |
| 
 | |
| function checkAccessibilityState(accessibility, expected) {
 | |
|   const { enabled, canBeDisabled, canBeEnabled } = accessibility;
 | |
|   is(enabled, expected.enabled, "Enabled state is correct.");
 | |
|   is(canBeDisabled, expected.canBeDisabled, "canBeDisabled state is correct.");
 | |
|   is(canBeEnabled, expected.canBeEnabled, "canBeEnabled state is correct.");
 | |
| }
 | |
| 
 | |
| // Simple checks for the AccessibilityActor and AccessibleWalkerActor
 | |
| 
 | |
| add_task(async function() {
 | |
|   const { walker: domWalker, client, accessibility} = await initAccessibilityFrontForUrl(
 | |
|     "data:text/html;charset=utf-8,<title>test</title><div></div>");
 | |
| 
 | |
|   ok(accessibility, "The AccessibilityFront was created");
 | |
|   ok(accessibility.getWalker, "The getWalker method exists");
 | |
| 
 | |
|   let a11yWalker = await accessibility.getWalker();
 | |
|   ok(a11yWalker, "The AccessibleWalkerFront was returned");
 | |
| 
 | |
|   checkAccessibilityState(accessibility,
 | |
|     { enabled: false, canBeDisabled: true, canBeEnabled: true });
 | |
| 
 | |
|   info("Force disable accessibility service: updates canBeEnabled flag");
 | |
|   let onEvent = accessibility.once("can-be-enabled-change");
 | |
|   Services.prefs.setIntPref(PREF_ACCESSIBILITY_FORCE_DISABLED, 1);
 | |
|   await onEvent;
 | |
|   checkAccessibilityState(accessibility,
 | |
|     { enabled: false, canBeDisabled: true, canBeEnabled: false });
 | |
| 
 | |
|   info("Clear force disable accessibility service: updates canBeEnabled flag");
 | |
|   onEvent = accessibility.once("can-be-enabled-change");
 | |
|   Services.prefs.clearUserPref(PREF_ACCESSIBILITY_FORCE_DISABLED);
 | |
|   await onEvent;
 | |
|   checkAccessibilityState(accessibility,
 | |
|     { enabled: false, canBeDisabled: true, canBeEnabled: true });
 | |
| 
 | |
|   info("Initialize accessibility service");
 | |
|   const initEvent = accessibility.once("init");
 | |
|   await accessibility.enable();
 | |
|   await waitForA11yInit();
 | |
|   await initEvent;
 | |
|   checkAccessibilityState(accessibility,
 | |
|     { enabled: true, canBeDisabled: true, canBeEnabled: true });
 | |
| 
 | |
|   a11yWalker = await accessibility.getWalker();
 | |
|   const rootNode = await domWalker.getRootNode();
 | |
|   const a11yDoc = await a11yWalker.getAccessibleFor(rootNode);
 | |
|   ok(a11yDoc, "Accessible document actor is created");
 | |
| 
 | |
|   info("Shutdown accessibility service");
 | |
|   const shutdownEvent = accessibility.once("shutdown");
 | |
|   await accessibility.disable();
 | |
|   await waitForA11yShutdown();
 | |
|   await shutdownEvent;
 | |
|   checkAccessibilityState(accessibility,
 | |
|     { enabled: false, canBeDisabled: true, canBeEnabled: true });
 | |
| 
 | |
|   await client.close();
 | |
|   gBrowser.removeCurrentTab();
 | |
| });
 |