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

Side by Side Diff: Source/modules/accessibility/AXNodeObject.cpp

Issue 1022673003: Implementation of new roles added in ARIA 1.1 draft. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebasing change to latest Created 5 years, 9 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012, Google Inc. All rights reserved. 2 * Copyright (C) 2012, Google 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 676 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 bool AXNodeObject::isChecked() const 687 bool AXNodeObject::isChecked() const
688 { 688 {
689 Node* node = this->node(); 689 Node* node = this->node();
690 if (!node) 690 if (!node)
691 return false; 691 return false;
692 692
693 // First test for native checkedness semantics 693 // First test for native checkedness semantics
694 if (isHTMLInputElement(*node)) 694 if (isHTMLInputElement(*node))
695 return toHTMLInputElement(*node).shouldAppearChecked(); 695 return toHTMLInputElement(*node).shouldAppearChecked();
696 696
697 // Else, if this is an ARIA checkbox or radio OR ARIA role menuitemcheckbox 697 // Else, if this is an ARIA role checkbox or radio or menuitemcheckbox
698 // or menuitemradio, respect the aria-checked attribute 698 // or menuitemradio or switch, respect the aria-checked attribute
699 AccessibilityRole ariaRole = ariaRoleAttribute(); 699 switch (ariaRoleAttribute()) {
700 if (ariaRole == RadioButtonRole || ariaRole == CheckBoxRole 700 case CheckBoxRole:
701 || ariaRole == MenuItemCheckBoxRole || ariaRole == MenuItemRadioRole) { 701 case MenuItemCheckBoxRole:
702 case MenuItemRadioRole:
703 case RadioButtonRole:
704 case SwitchRole:
702 if (equalIgnoringCase(getAttribute(aria_checkedAttr), "true")) 705 if (equalIgnoringCase(getAttribute(aria_checkedAttr), "true"))
703 return true; 706 return true;
704 return false; 707 return false;
708 default:
709 break;
705 } 710 }
706 711
707 // Otherwise it's not checked 712 // Otherwise it's not checked
708 return false; 713 return false;
709 } 714 }
710 715
711 bool AXNodeObject::isClickable() const 716 bool AXNodeObject::isClickable() const
712 { 717 {
713 if (node()) { 718 if (node()) {
714 if (node()->isElementNode() && toElement(node())->isDisabledFormControl( )) 719 if (node()->isElementNode() && toElement(node())->isDisabledFormControl( ))
(...skipping 698 matching lines...) Expand 10 before | Expand all | Expand 10 after
1413 case ButtonRole: 1418 case ButtonRole:
1414 case ToggleButtonRole: 1419 case ToggleButtonRole:
1415 case CheckBoxRole: 1420 case CheckBoxRole:
1416 case ListBoxOptionRole: 1421 case ListBoxOptionRole:
1417 case ListItemRole: 1422 case ListItemRole:
1418 case MenuButtonRole: 1423 case MenuButtonRole:
1419 case MenuItemRole: 1424 case MenuItemRole:
1420 case MenuItemCheckBoxRole: 1425 case MenuItemCheckBoxRole:
1421 case MenuItemRadioRole: 1426 case MenuItemRadioRole:
1422 case RadioButtonRole: 1427 case RadioButtonRole:
1428 case SwitchRole:
1423 case TabRole: 1429 case TabRole:
1424 return textUnderElement(mode); 1430 return textUnderElement(mode);
1425 // SVGRoots should not use the text under itself as a title. That could incl ude the text of objects like <text>. 1431 // SVGRoots should not use the text under itself as a title. That could incl ude the text of objects like <text>.
1426 case SVGRootRole: 1432 case SVGRootRole:
1427 return String(); 1433 return String();
1428 case FigureRole: { 1434 case FigureRole: {
1429 AXObject* figcaption = findChildWithTagName(figcaptionTag); 1435 AXObject* figcaption = findChildWithTagName(figcaptionTag);
1430 if (figcaption) 1436 if (figcaption)
1431 return figcaption->textUnderElement(); 1437 return figcaption->textUnderElement();
1432 } 1438 }
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
1668 if (!node() && !isAXLayoutObject()) 1674 if (!node() && !isAXLayoutObject())
1669 return false; 1675 return false;
1670 1676
1671 // Elements that should not have children 1677 // Elements that should not have children
1672 switch (roleValue()) { 1678 switch (roleValue()) {
1673 case ImageRole: 1679 case ImageRole:
1674 case ButtonRole: 1680 case ButtonRole:
1675 case PopUpButtonRole: 1681 case PopUpButtonRole:
1676 case CheckBoxRole: 1682 case CheckBoxRole:
1677 case RadioButtonRole: 1683 case RadioButtonRole:
1684 case SwitchRole:
1678 case TabRole: 1685 case TabRole:
1679 case ToggleButtonRole: 1686 case ToggleButtonRole:
1680 case ListBoxOptionRole: 1687 case ListBoxOptionRole:
1681 case ScrollBarRole: 1688 case ScrollBarRole:
1682 return false; 1689 return false;
1683 case StaticTextRole: 1690 case StaticTextRole:
1684 if (!axObjectCache()->inlineTextBoxAccessibilityEnabled()) 1691 if (!axObjectCache()->inlineTextBoxAccessibilityEnabled())
1685 return false; 1692 return false;
1686 default: 1693 default:
1687 return true; 1694 return true;
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
1988 float range = maxValueForRange() - minValueForRange(); 1995 float range = maxValueForRange() - minValueForRange();
1989 float value = valueForRange(); 1996 float value = valueForRange();
1990 1997
1991 value += range * (percentChange / 100); 1998 value += range * (percentChange / 100);
1992 setValue(String::number(value)); 1999 setValue(String::number(value));
1993 2000
1994 axObjectCache()->postNotification(node(), AXObjectCacheImpl::AXValueChanged, true); 2001 axObjectCache()->postNotification(node(), AXObjectCacheImpl::AXValueChanged, true);
1995 } 2002 }
1996 2003
1997 } // namespace blink 2004 } // namespace blink
OLDNEW
« no previous file with comments | « Source/modules/accessibility/AXLayoutObject.cpp ('k') | Source/modules/accessibility/AXObject.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698