| 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 var AutomationEvent = require('automationEvent').AutomationEvent; | 5 var AutomationEvent = require('automationEvent').AutomationEvent; |
| 6 var automationInternal = | 6 var automationInternal = |
| 7 require('binding').Binding.create('automationInternal').generate(); | 7 require('binding').Binding.create('automationInternal').generate(); |
| 8 var exceptionHandler = require('uncaught_exception_handler'); | 8 var exceptionHandler = require('uncaught_exception_handler'); |
| 9 var IsInteractPermitted = | 9 var IsInteractPermitted = |
| 10 requireNative('automationInternal').IsInteractPermitted; | 10 requireNative('automationInternal').IsInteractPermitted; |
| (...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 217 | 217 |
| 218 /** | 218 /** |
| 219 * @param {number} axTreeID The id of the accessibility tree. | 219 * @param {number} axTreeID The id of the accessibility tree. |
| 220 * @param {number} nodeID The id of a node. | 220 * @param {number} nodeID The id of a node. |
| 221 * @param {string} attr The name of an HTML attribute. | 221 * @param {string} attr The name of an HTML attribute. |
| 222 * @return {?string} The value of this attribute, or undefined if the tree, | 222 * @return {?string} The value of this attribute, or undefined if the tree, |
| 223 * node, or attribute wasn't found. | 223 * node, or attribute wasn't found. |
| 224 */ | 224 */ |
| 225 var GetHtmlAttribute = requireNative('automationInternal').GetHtmlAttribute; | 225 var GetHtmlAttribute = requireNative('automationInternal').GetHtmlAttribute; |
| 226 | 226 |
| 227 /** | |
| 228 * @param {number} axTreeID The id of the accessibility tree. | |
| 229 * @param {number} nodeID The id of a node. | |
| 230 * @return {automation.NameFromType} The source of the node's name. | |
| 231 */ | |
| 232 var GetNameFrom = requireNative('automationInternal').GetNameFrom; | |
| 233 | |
| 234 var lastError = require('lastError'); | 227 var lastError = require('lastError'); |
| 235 var logging = requireNative('logging'); | 228 var logging = requireNative('logging'); |
| 229 var schema = requireNative('automationInternal').GetSchemaAdditions(); |
| 236 var utils = require('utils'); | 230 var utils = require('utils'); |
| 237 | 231 |
| 238 /** | 232 /** |
| 239 * A single node in the Automation tree. | 233 * A single node in the Automation tree. |
| 240 * @param {AutomationRootNodeImpl} root The root of the tree. | 234 * @param {AutomationRootNodeImpl} root The root of the tree. |
| 241 * @constructor | 235 * @constructor |
| 242 */ | 236 */ |
| 243 function AutomationNodeImpl(root) { | 237 function AutomationNodeImpl(root) { |
| 244 this.rootImpl = root; | 238 this.rootImpl = root; |
| 245 this.hostNode_ = null; | 239 this.hostNode_ = null; |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 358 get nextSibling() { | 352 get nextSibling() { |
| 359 var parent = this.parent; | 353 var parent = this.parent; |
| 360 if (!parent) | 354 if (!parent) |
| 361 return undefined; | 355 return undefined; |
| 362 parent = privates(parent).impl; | 356 parent = privates(parent).impl; |
| 363 var indexInParent = GetIndexInParent(this.treeID, this.id); | 357 var indexInParent = GetIndexInParent(this.treeID, this.id); |
| 364 return this.rootImpl.get( | 358 return this.rootImpl.get( |
| 365 GetChildIDAtIndex(parent.treeID, parent.id, indexInParent + 1)); | 359 GetChildIDAtIndex(parent.treeID, parent.id, indexInParent + 1)); |
| 366 }, | 360 }, |
| 367 | 361 |
| 368 get nameFrom() { | |
| 369 return GetNameFrom(this.treeID, this.id); | |
| 370 }, | |
| 371 | |
| 372 doDefault: function() { | 362 doDefault: function() { |
| 373 this.performAction_('doDefault'); | 363 this.performAction_('doDefault'); |
| 374 }, | 364 }, |
| 375 | 365 |
| 376 focus: function() { | 366 focus: function() { |
| 377 this.performAction_('focus'); | 367 this.performAction_('focus'); |
| 378 }, | 368 }, |
| 379 | 369 |
| 380 getImageData: function(maxWidth, maxHeight) { | 370 getImageData: function(maxWidth, maxHeight) { |
| 381 this.performAction_('getImageData', | 371 this.performAction_('getImageData', |
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 672 return false; | 662 return false; |
| 673 } | 663 } |
| 674 } | 664 } |
| 675 } | 665 } |
| 676 return true; | 666 return true; |
| 677 } | 667 } |
| 678 }; | 668 }; |
| 679 | 669 |
| 680 var stringAttributes = [ | 670 var stringAttributes = [ |
| 681 'accessKey', | 671 'accessKey', |
| 672 'action', |
| 682 'ariaInvalidValue', | 673 'ariaInvalidValue', |
| 674 'autoComplete', |
| 683 'containerLiveRelevant', | 675 'containerLiveRelevant', |
| 684 'containerLiveStatus', | 676 'containerLiveStatus', |
| 685 'description', | 677 'description', |
| 686 'display', | 678 'display', |
| 679 'dropeffect', |
| 680 'help', |
| 681 'htmlTag', |
| 687 'imageDataUrl', | 682 'imageDataUrl', |
| 688 'language', | 683 'language', |
| 689 'liveRelevant', | 684 'liveRelevant', |
| 690 'liveStatus', | 685 'liveStatus', |
| 691 'name', | 686 'name', |
| 692 'placeholder', | 687 'placeholder', |
| 688 'shortcut', |
| 693 'textInputType', | 689 'textInputType', |
| 694 'url', | 690 'url', |
| 695 'value']; | 691 'value']; |
| 696 | 692 |
| 697 var boolAttributes = [ | 693 var boolAttributes = [ |
| 698 'ariaReadonly', | 694 'ariaReadonly', |
| 699 'buttonMixed', | 695 'buttonMixed', |
| 696 'canSetValue', |
| 697 'canvasHasFallback', |
| 700 'containerLiveAtomic', | 698 'containerLiveAtomic', |
| 701 'containerLiveBusy', | 699 'containerLiveBusy', |
| 700 'grabbed', |
| 701 'isAxTreeHost', |
| 702 'liveAtomic', | 702 'liveAtomic', |
| 703 'liveBusy']; | 703 'liveBusy', |
| 704 'updateLocationOnly']; |
| 704 | 705 |
| 705 var intAttributes = [ | 706 var intAttributes = [ |
| 706 'backgroundColor', | 707 'backgroundColor', |
| 707 'color', | 708 'color', |
| 708 'colorValue', | 709 'colorValue', |
| 710 'descriptionFrom', |
| 709 'hierarchicalLevel', | 711 'hierarchicalLevel', |
| 712 'invalidState', |
| 713 'nameFrom', |
| 710 'posInSet', | 714 'posInSet', |
| 711 'scrollX', | 715 'scrollX', |
| 712 'scrollXMax', | 716 'scrollXMax', |
| 713 'scrollXMin', | 717 'scrollXMin', |
| 714 'scrollY', | 718 'scrollY', |
| 715 'scrollYMax', | 719 'scrollYMax', |
| 716 'scrollYMin', | 720 'scrollYMin', |
| 717 'setSize', | 721 'setSize', |
| 722 'sortDirection', |
| 718 'tableCellColumnIndex', | 723 'tableCellColumnIndex', |
| 719 'tableCellColumnSpan', | 724 'tableCellColumnSpan', |
| 720 'tableCellRowIndex', | 725 'tableCellRowIndex', |
| 721 'tableCellRowSpan', | 726 'tableCellRowSpan', |
| 722 'tableColumnCount', | 727 'tableColumnCount', |
| 723 'tableColumnIndex', | 728 'tableColumnIndex', |
| 724 'tableRowCount', | 729 'tableRowCount', |
| 725 'tableRowIndex', | 730 'tableRowIndex', |
| 731 'textDirection', |
| 726 'textSelEnd', | 732 'textSelEnd', |
| 727 'textSelStart']; | 733 'textSelStart', |
| 734 'textStyle']; |
| 728 | 735 |
| 729 var nodeRefAttributes = [ | 736 var nodeRefAttributes = [ |
| 730 ['activedescendantId', 'activeDescendant'], | 737 ['activedescendantId', 'activeDescendant'], |
| 731 ['nextOnLineId', 'nextOnLine'], | 738 ['nextOnLineId', 'nextOnLine'], |
| 732 ['previousOnLineId', 'previousOnLine'], | 739 ['previousOnLineId', 'previousOnLine'], |
| 733 ['tableColumnHeaderId', 'tableColumnHeader'], | 740 ['tableColumnHeaderId', 'tableColumnHeader'], |
| 734 ['tableHeaderId', 'tableHeader'], | 741 ['tableHeaderId', 'tableHeader'], |
| 735 ['tableRowHeaderId', 'tableRowHeader']]; | 742 ['tableRowHeaderId', 'tableRowHeader'], |
| 743 ['titleUiElement', 'titleUIElement']]; |
| 736 | 744 |
| 737 var intListAttributes = [ | 745 var intListAttributes = [ |
| 746 'characterOffsets', |
| 738 'lineBreaks', | 747 'lineBreaks', |
| 739 'markerEnds', | 748 'markerEnds', |
| 740 'markerStarts', | 749 'markerStarts', |
| 741 'markerTypes', | 750 'markerTypes', |
| 742 'wordEnds', | 751 'wordEnds', |
| 743 'wordStarts']; | 752 'wordStarts']; |
| 744 | 753 |
| 745 var nodeRefListAttributes = [ | 754 var nodeRefListAttributes = [ |
| 755 ['cellIds', 'cells'], |
| 746 ['controlsIds', 'controls'], | 756 ['controlsIds', 'controls'], |
| 747 ['describedbyIds', 'describedBy'], | 757 ['describedbyIds', 'describedBy'], |
| 748 ['flowtoIds', 'flowTo'], | 758 ['flowtoIds', 'flowTo'], |
| 749 ['labelledbyIds', 'labelledBy']]; | 759 ['labelledbyIds', 'labelledBy'], |
| 760 ['uniqueCellIds', 'uniqueCells']]; |
| 750 | 761 |
| 751 var floatAttributes = [ | 762 var floatAttributes = [ |
| 752 'valueForRange', | 763 'valueForRange', |
| 753 'minValueForRange', | 764 'minValueForRange', |
| 754 'maxValueForRange']; | 765 'maxValueForRange', |
| 766 'fontSize']; |
| 755 | 767 |
| 756 var htmlAttributes = [ | 768 var htmlAttributes = [ |
| 757 ['type', 'inputType']]; | 769 ['type', 'inputType']]; |
| 758 | 770 |
| 759 var publicAttributes = []; | 771 var publicAttributes = []; |
| 760 | 772 |
| 761 $Array.forEach(stringAttributes, function(attributeName) { | 773 $Array.forEach(stringAttributes, function(attributeName) { |
| 762 $Array.push(publicAttributes, attributeName); | 774 $Array.push(publicAttributes, attributeName); |
| 763 $Object.defineProperty(AutomationNodeImpl.prototype, attributeName, { | 775 $Object.defineProperty(AutomationNodeImpl.prototype, attributeName, { |
| 764 __proto__: null, | 776 __proto__: null, |
| (...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1017 return obj; | 1029 return obj; |
| 1018 }, | 1030 }, |
| 1019 | 1031 |
| 1020 remove: function(id) { | 1032 remove: function(id) { |
| 1021 if (this.axNodeDataCache_[id]) | 1033 if (this.axNodeDataCache_[id]) |
| 1022 privates(this.axNodeDataCache_[id]).impl.detach(); | 1034 privates(this.axNodeDataCache_[id]).impl.detach(); |
| 1023 delete this.axNodeDataCache_[id]; | 1035 delete this.axNodeDataCache_[id]; |
| 1024 }, | 1036 }, |
| 1025 | 1037 |
| 1026 destroy: function() { | 1038 destroy: function() { |
| 1027 this.dispatchEvent('destroyed', 'none'); | 1039 this.dispatchEvent(schema.EventType.destroyed, 'none'); |
| 1028 for (var id in this.axNodeDataCache_) | 1040 for (var id in this.axNodeDataCache_) |
| 1029 this.remove(id); | 1041 this.remove(id); |
| 1030 this.detach(); | 1042 this.detach(); |
| 1031 }, | 1043 }, |
| 1032 | 1044 |
| 1033 setHostNode(hostNode) { | 1045 setHostNode(hostNode) { |
| 1034 this.hostNode_ = hostNode; | 1046 this.hostNode_ = hostNode; |
| 1035 }, | 1047 }, |
| 1036 | 1048 |
| 1037 onAccessibilityEvent: function(eventParams) { | 1049 onAccessibilityEvent: function(eventParams) { |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1101 'previousSibling', | 1113 'previousSibling', |
| 1102 'nextSibling', | 1114 'nextSibling', |
| 1103 'isRootNode', | 1115 'isRootNode', |
| 1104 'role', | 1116 'role', |
| 1105 'state', | 1117 'state', |
| 1106 'location', | 1118 'location', |
| 1107 'indexInParent', | 1119 'indexInParent', |
| 1108 'lineStartOffsets', | 1120 'lineStartOffsets', |
| 1109 'root', | 1121 'root', |
| 1110 'htmlAttributes', | 1122 'htmlAttributes', |
| 1111 'nameFrom', | |
| 1112 ]), | 1123 ]), |
| 1113 }); | 1124 }); |
| 1114 | 1125 |
| 1115 function AutomationRootNode() { | 1126 function AutomationRootNode() { |
| 1116 privates(AutomationRootNode).constructPrivate(this, arguments); | 1127 privates(AutomationRootNode).constructPrivate(this, arguments); |
| 1117 } | 1128 } |
| 1118 utils.expose(AutomationRootNode, AutomationRootNodeImpl, { | 1129 utils.expose(AutomationRootNode, AutomationRootNodeImpl, { |
| 1119 superclass: AutomationNode, | 1130 superclass: AutomationNode, |
| 1120 readonly: [ | 1131 readonly: [ |
| 1121 'chromeChannel', | 1132 'chromeChannel', |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1139 utils.defineProperty(AutomationRootNode, 'getOrCreate', function(treeID) { | 1150 utils.defineProperty(AutomationRootNode, 'getOrCreate', function(treeID) { |
| 1140 return AutomationRootNodeImpl.getOrCreate(treeID); | 1151 return AutomationRootNodeImpl.getOrCreate(treeID); |
| 1141 }); | 1152 }); |
| 1142 | 1153 |
| 1143 utils.defineProperty(AutomationRootNode, 'destroy', function(treeID) { | 1154 utils.defineProperty(AutomationRootNode, 'destroy', function(treeID) { |
| 1144 AutomationRootNodeImpl.destroy(treeID); | 1155 AutomationRootNodeImpl.destroy(treeID); |
| 1145 }); | 1156 }); |
| 1146 | 1157 |
| 1147 exports.$set('AutomationNode', AutomationNode); | 1158 exports.$set('AutomationNode', AutomationNode); |
| 1148 exports.$set('AutomationRootNode', AutomationRootNode); | 1159 exports.$set('AutomationRootNode', AutomationRootNode); |
| OLD | NEW |