Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(94)

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/ui/treeoutline.js

Issue 2671203002: DevTools: Added ARIA roles & states to treeoutline (Closed)
Patch Set: updated Layout tests with expected ARIA attributes Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/WebKit/Source/devtools/front_end/ui/ARIAUtils.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2007 Apple Inc. All rights reserved. 2 * Copyright (C) 2007 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 30 matching lines...) Expand all
41 this._comparator = null; 41 this._comparator = null;
42 42
43 this.contentElement = this._rootElement._childrenListNode; 43 this.contentElement = this._rootElement._childrenListNode;
44 this.contentElement.addEventListener('keydown', this._treeKeyDown.bind(this) , true); 44 this.contentElement.addEventListener('keydown', this._treeKeyDown.bind(this) , true);
45 45
46 this._focusable = true; 46 this._focusable = true;
47 this.setFocusable(this._focusable); 47 this.setFocusable(this._focusable);
48 if (this._focusable) 48 if (this._focusable)
49 this.contentElement.setAttribute('tabIndex', -1); 49 this.contentElement.setAttribute('tabIndex', -1);
50 this.element = this.contentElement; 50 this.element = this.contentElement;
51 UI.ARIAUtils.markAsTree(this.element);
51 52
52 // Adjust to allow computing margin-left for the selection element. 53 // Adjust to allow computing margin-left for the selection element.
53 // Check the padding-left for the li element for correct value. 54 // Check the padding-left for the li element for correct value.
54 this._paddingSize = 0; 55 this._paddingSize = 0;
55 } 56 }
56 57
57 _createRootElement() { 58 _createRootElement() {
58 this._rootElement = new UI.TreeElement(); 59 this._rootElement = new UI.TreeElement();
59 this._rootElement.treeOutline = this; 60 this._rootElement.treeOutline = this;
60 this._rootElement.root = true; 61 this._rootElement.root = true;
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 this._boundOnBlur = this._onBlur.bind(this); 330 this._boundOnBlur = this._onBlur.bind(this);
330 331
331 this._listItemNode = createElement('li'); 332 this._listItemNode = createElement('li');
332 this._titleElement = this._listItemNode.createChild('span', 'tree-element-ti tle'); 333 this._titleElement = this._listItemNode.createChild('span', 'tree-element-ti tle');
333 this._listItemNode.treeElement = this; 334 this._listItemNode.treeElement = this;
334 if (title) 335 if (title)
335 this.title = title; 336 this.title = title;
336 this._listItemNode.addEventListener('mousedown', this._handleMouseDown.bind( this), false); 337 this._listItemNode.addEventListener('mousedown', this._handleMouseDown.bind( this), false);
337 this._listItemNode.addEventListener('click', this._treeElementToggled.bind(t his), false); 338 this._listItemNode.addEventListener('click', this._treeElementToggled.bind(t his), false);
338 this._listItemNode.addEventListener('dblclick', this._handleDoubleClick.bind (this), false); 339 this._listItemNode.addEventListener('dblclick', this._handleDoubleClick.bind (this), false);
340 UI.ARIAUtils.markAsTreeitem(this._listItemNode);
339 341
340 this._childrenListNode = createElement('ol'); 342 this._childrenListNode = createElement('ol');
341 this._childrenListNode.parentTreeElement = this; 343 this._childrenListNode.parentTreeElement = this;
342 this._childrenListNode.classList.add('children'); 344 this._childrenListNode.classList.add('children');
345 UI.ARIAUtils.markAsGroup(this._childrenListNode);
343 346
344 this._hidden = false; 347 this._hidden = false;
345 this._selectable = true; 348 this._selectable = true;
346 this.expanded = false; 349 this.expanded = false;
347 this.selected = false; 350 this.selected = false;
348 this.setExpandable(expandable || false); 351 this.setExpandable(expandable || false);
349 this._collapsible = true; 352 this._collapsible = true;
350 } 353 }
351 354
352 /** 355 /**
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
698 /** 701 /**
699 * @param {boolean} expandable 702 * @param {boolean} expandable
700 */ 703 */
701 setExpandable(expandable) { 704 setExpandable(expandable) {
702 if (this._expandable === expandable) 705 if (this._expandable === expandable)
703 return; 706 return;
704 707
705 this._expandable = expandable; 708 this._expandable = expandable;
706 709
707 this._listItemNode.classList.toggle('parent', expandable); 710 this._listItemNode.classList.toggle('parent', expandable);
708 if (!expandable) 711 if (!expandable) {
709 this.collapse(); 712 this.collapse();
713 UI.ARIAUtils.unsetExpanded(this._listItemNode);
714 } else {
715 UI.ARIAUtils.setExpanded(this._listItemNode, false);
716 }
710 } 717 }
711 718
712 /** 719 /**
713 * @param {boolean} collapsible 720 * @param {boolean} collapsible
714 */ 721 */
715 setCollapsible(collapsible) { 722 setCollapsible(collapsible) {
716 if (this._collapsible === collapsible) 723 if (this._collapsible === collapsible)
717 return; 724 return;
718 725
719 this._collapsible = collapsible; 726 this._collapsible = collapsible;
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
831 _detach() { 838 _detach() {
832 this._listItemNode.remove(); 839 this._listItemNode.remove();
833 this._childrenListNode.remove(); 840 this._childrenListNode.remove();
834 } 841 }
835 842
836 collapse() { 843 collapse() {
837 if (!this.expanded || !this._collapsible) 844 if (!this.expanded || !this._collapsible)
838 return; 845 return;
839 this._listItemNode.classList.remove('expanded'); 846 this._listItemNode.classList.remove('expanded');
840 this._childrenListNode.classList.remove('expanded'); 847 this._childrenListNode.classList.remove('expanded');
848 UI.ARIAUtils.setExpanded(this._listItemNode, false);
841 this.expanded = false; 849 this.expanded = false;
842 this.oncollapse(); 850 this.oncollapse();
843 if (this.treeOutline) 851 if (this.treeOutline)
844 this.treeOutline.dispatchEventToListeners(UI.TreeOutline.Events.ElementCol lapsed, this); 852 this.treeOutline.dispatchEventToListeners(UI.TreeOutline.Events.ElementCol lapsed, this);
845 } 853 }
846 854
847 collapseRecursively() { 855 collapseRecursively() {
848 var item = this; 856 var item = this;
849 while (item) { 857 while (item) {
850 if (item.expanded) 858 if (item.expanded)
851 item.collapse(); 859 item.collapse();
852 item = item.traverseNextTreeElement(false, this, true); 860 item = item.traverseNextTreeElement(false, this, true);
853 } 861 }
854 } 862 }
855 863
856 expand() { 864 expand() {
857 if (!this._expandable || (this.expanded && this._children)) 865 if (!this._expandable || (this.expanded && this._children))
858 return; 866 return;
859 867
860 // Set this before onpopulate. Since onpopulate can add elements, this makes 868 // Set this before onpopulate. Since onpopulate can add elements, this makes
861 // sure the expanded flag is true before calling those functions. This preve nts the possibility 869 // sure the expanded flag is true before calling those functions. This preve nts the possibility
862 // of an infinite loop if onpopulate were to call expand. 870 // of an infinite loop if onpopulate were to call expand.
863 871
864 this.expanded = true; 872 this.expanded = true;
865 873
866 this._populateIfNeeded(); 874 this._populateIfNeeded();
867 this._listItemNode.classList.add('expanded'); 875 this._listItemNode.classList.add('expanded');
868 this._childrenListNode.classList.add('expanded'); 876 this._childrenListNode.classList.add('expanded');
877 UI.ARIAUtils.setExpanded(this._listItemNode, true);
869 878
870 if (this.treeOutline) { 879 if (this.treeOutline) {
871 this.onexpand(); 880 this.onexpand();
872 this.treeOutline.dispatchEventToListeners(UI.TreeOutline.Events.ElementExp anded, this); 881 this.treeOutline.dispatchEventToListeners(UI.TreeOutline.Events.ElementExp anded, this);
873 } 882 }
874 } 883 }
875 884
876 /** 885 /**
877 * @param {number=} maxDepth 886 * @param {number=} maxDepth
878 */ 887 */
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
1215 UI.TreeElement._ArrowToggleWidth = 10; 1224 UI.TreeElement._ArrowToggleWidth = 10;
1216 1225
1217 (function() { 1226 (function() {
1218 var img = new Image(); 1227 var img = new Image();
1219 if (window.devicePixelRatio > 1) 1228 if (window.devicePixelRatio > 1)
1220 img.src = 'Images/treeoutlineTriangles_2x.png'; 1229 img.src = 'Images/treeoutlineTriangles_2x.png';
1221 else 1230 else
1222 img.src = 'Images/treeoutlineTriangles.png'; 1231 img.src = 'Images/treeoutlineTriangles.png';
1223 UI.TreeElement._imagePreload = img; 1232 UI.TreeElement._imagePreload = img;
1224 })(); 1233 })();
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/devtools/front_end/ui/ARIAUtils.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698