OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Custom bindings for the automation API. | 5 // Custom bindings for the automation API. |
6 var AutomationNode = require('automationNode').AutomationNode; | 6 var AutomationNode = require('automationNode').AutomationNode; |
7 var AutomationTree = require('automationTree').AutomationTree; | 7 var AutomationTree = require('automationTree').AutomationTree; |
8 var automation = require('binding').Binding.create('automation'); | 8 var automation = require('binding').Binding.create('automation'); |
9 var automationInternal = | 9 var automationInternal = |
10 require('binding').Binding.create('automationInternal').generate(); | 10 require('binding').Binding.create('automationInternal').generate(); |
(...skipping 17 matching lines...) Expand all Loading... |
28 var createAutomationTreeID = function(pid, rid) { | 28 var createAutomationTreeID = function(pid, rid) { |
29 return pid + '_' + rid; | 29 return pid + '_' + rid; |
30 }; | 30 }; |
31 | 31 |
32 var DESKTOP_TREE_ID = createAutomationTreeID(0, 0); | 32 var DESKTOP_TREE_ID = createAutomationTreeID(0, 0); |
33 | 33 |
34 automation.registerCustomHook(function(bindingsAPI) { | 34 automation.registerCustomHook(function(bindingsAPI) { |
35 var apiFunctions = bindingsAPI.apiFunctions; | 35 var apiFunctions = bindingsAPI.apiFunctions; |
36 | 36 |
37 // TODO(aboxhall, dtseng): Make this return the speced AutomationRootNode obj. | 37 // TODO(aboxhall, dtseng): Make this return the speced AutomationRootNode obj. |
38 apiFunctions.setHandleRequest('getTree', function(callback) { | 38 apiFunctions.setHandleRequest('getTree', function getTree(tabId, callback) { |
39 // enableCurrentTab() ensures the renderer for the current tab has | 39 // enableTab() ensures the renderer for the active or specified tab has |
40 // accessibility enabled, and fetches its process and routing ids to use as | 40 // accessibility enabled, and fetches its process and routing ids to use as |
41 // a key in the idToAutomationTree map. The callback to enableCurrentTab is | 41 // a key in the idToAutomationTree map. The callback to enableActiveTab is |
42 // bound to the callback passed in to getTree(), so that once the tree is | 42 // bound to the callback passed in to getTree(), so that once the tree is |
43 // available (either due to having been cached earlier, or after an | 43 // available (either due to having been cached earlier, or after an |
44 // accessibility event occurs which causes the tree to be populated), the | 44 // accessibility event occurs which causes the tree to be populated), the |
45 // callback can be called. | 45 // callback can be called. |
46 automationInternal.enableCurrentTab(function(pid, rid) { | 46 automationInternal.enableTab(tabId, function onEnable(pid, rid) { |
47 if (lastError.hasError(chrome)) { | 47 if (lastError.hasError(chrome)) { |
48 callback(); | 48 callback(); |
49 return; | 49 return; |
50 } | 50 } |
51 var id = createAutomationTreeID(pid, rid); | 51 var id = createAutomationTreeID(pid, rid); |
52 var targetTree = idToAutomationTree[id]; | 52 var targetTree = idToAutomationTree[id]; |
53 if (!targetTree) { | 53 if (!targetTree) { |
54 // If we haven't cached the tree, hold the callback until the tree is | 54 // If we haven't cached the tree, hold the callback until the tree is |
55 // populated by the initial onAccessibilityEvent call. | 55 // populated by the initial onAccessibilityEvent call. |
56 if (id in idToCallback) | 56 if (id in idToCallback) |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 }); | 119 }); |
120 | 120 |
121 exports.binding = automation.generate(); | 121 exports.binding = automation.generate(); |
122 | 122 |
123 // Add additional accessibility bindings not specified in the automation IDL. | 123 // Add additional accessibility bindings not specified in the automation IDL. |
124 // Accessibility and automation share some APIs (see | 124 // Accessibility and automation share some APIs (see |
125 // ui/accessibility/ax_enums.idl). | 125 // ui/accessibility/ax_enums.idl). |
126 forEach(schema, function(k, v) { | 126 forEach(schema, function(k, v) { |
127 exports.binding[k] = v; | 127 exports.binding[k] = v; |
128 }); | 128 }); |
OLD | NEW |