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: Source/core/accessibility/AccessibilityNodeObject.cpp

Issue 19510005: [oilpan] Completely move HTMLFormControlElement's hierarchy to the managed heap Base URL: svn://svn.chromium.org/blink/branches/oilpan
Patch Set: Created 7 years, 5 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 | Annotate | Revision Log
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 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 if (ariaRole != UnknownRole) 176 if (ariaRole != UnknownRole)
177 return ariaRole; 177 return ariaRole;
178 178
179 if (node()->isLink()) 179 if (node()->isLink())
180 return WebCoreLinkRole; 180 return WebCoreLinkRole;
181 if (node()->isTextNode()) 181 if (node()->isTextNode())
182 return StaticTextRole; 182 return StaticTextRole;
183 if (node()->hasTagName(buttonTag)) 183 if (node()->hasTagName(buttonTag))
184 return buttonRoleType(); 184 return buttonRoleType();
185 if (node()->hasTagName(inputTag)) { 185 if (node()->hasTagName(inputTag)) {
186 HTMLInputElement* input = static_cast<HTMLInputElement*>(node()); 186 Handle<HTMLInputElement> input(static_cast<HTMLInputElement*>(node()));
187 if (input->isCheckbox()) 187 if (input->isCheckbox())
188 return CheckBoxRole; 188 return CheckBoxRole;
189 if (input->isRadioButton()) 189 if (input->isRadioButton())
190 return RadioButtonRole; 190 return RadioButtonRole;
191 if (input->isTextButton()) 191 if (input->isTextButton())
192 return buttonRoleType(); 192 return buttonRoleType();
193 if (input->isRangeControl()) 193 if (input->isRangeControl())
194 return SliderRole; 194 return SliderRole;
195 195
196 #if ENABLE(INPUT_TYPE_COLOR) 196 #if ENABLE(INPUT_TYPE_COLOR)
197 const AtomicString& type = input->getAttribute(typeAttr); 197 const AtomicString& type = input->getAttribute(typeAttr);
198 if (equalIgnoringCase(type, "color")) 198 if (equalIgnoringCase(type, "color"))
199 return ColorWellRole; 199 return ColorWellRole;
200 #endif 200 #endif
201 201
202 return TextFieldRole; 202 return TextFieldRole;
203 } 203 }
204 if (node()->hasTagName(selectTag)) { 204 if (node()->hasTagName(selectTag)) {
205 HTMLSelectElement* selectElement = toHTMLSelectElement(node()); 205 Handle<HTMLSelectElement> selectElement = toHTMLSelectElement(node());
206 return selectElement->multiple() ? ListBoxRole : PopUpButtonRole; 206 return selectElement->multiple() ? ListBoxRole : PopUpButtonRole;
207 } 207 }
208 if (node()->hasTagName(textareaTag)) 208 if (node()->hasTagName(textareaTag))
209 return TextAreaRole; 209 return TextAreaRole;
210 if (headingLevel()) 210 if (headingLevel())
211 return HeadingRole; 211 return HeadingRole;
212 if (node()->hasTagName(divTag)) 212 if (node()->hasTagName(divTag))
213 return DivRole; 213 return DivRole;
214 if (node()->hasTagName(pTag)) 214 if (node()->hasTagName(pTag))
215 return ParagraphRole; 215 return ParagraphRole;
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 return isNativeImage() && isButton(); 527 return isNativeImage() && isButton();
528 } 528 }
529 529
530 bool AccessibilityNodeObject::isInputImage() const 530 bool AccessibilityNodeObject::isInputImage() const
531 { 531 {
532 Node* node = this->node(); 532 Node* node = this->node();
533 if (!node) 533 if (!node)
534 return false; 534 return false;
535 535
536 if (roleValue() == ButtonRole && node->hasTagName(inputTag)) { 536 if (roleValue() == ButtonRole && node->hasTagName(inputTag)) {
537 HTMLInputElement* input = static_cast<HTMLInputElement*>(node); 537 Handle<HTMLInputElement> input(static_cast<HTMLInputElement*>(node));
538 return input->isImageButton(); 538 return input->isImageButton();
539 } 539 }
540 540
541 return false; 541 return false;
542 } 542 }
543 543
544 bool AccessibilityNodeObject::isLink() const 544 bool AccessibilityNodeObject::isLink() const
545 { 545 {
546 return roleValue() == WebCoreLinkRole; 546 return roleValue() == WebCoreLinkRole;
547 } 547 }
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
589 589
590 return node() && node()->hasTagName(selectTag) && toHTMLSelectElement(node() )->multiple(); 590 return node() && node()->hasTagName(selectTag) && toHTMLSelectElement(node() )->multiple();
591 } 591 }
592 592
593 bool AccessibilityNodeObject::isNativeCheckboxOrRadio() const 593 bool AccessibilityNodeObject::isNativeCheckboxOrRadio() const
594 { 594 {
595 Node* node = this->node(); 595 Node* node = this->node();
596 if (!node) 596 if (!node)
597 return false; 597 return false;
598 598
599 HTMLInputElement* input = node->toInputElement(); 599 Handle<HTMLInputElement> input = node->toInputElement();
600 if (input) 600 if (input)
601 return input->isCheckbox() || input->isRadioButton(); 601 return input->isCheckbox() || input->isRadioButton();
602 602
603 return false; 603 return false;
604 } 604 }
605 605
606 bool AccessibilityNodeObject::isNativeImage() const 606 bool AccessibilityNodeObject::isNativeImage() const
607 { 607 {
608 Node* node = this->node(); 608 Node* node = this->node();
609 if (!node) 609 if (!node)
610 return false; 610 return false;
611 611
612 if (node->hasTagName(imgTag)) 612 if (node->hasTagName(imgTag))
613 return true; 613 return true;
614 614
615 if (node->hasTagName(appletTag) || node->hasTagName(embedTag) || node->hasTa gName(objectTag)) 615 if (node->hasTagName(appletTag) || node->hasTagName(embedTag) || node->hasTa gName(objectTag))
616 return true; 616 return true;
617 617
618 if (node->hasTagName(inputTag)) { 618 if (node->hasTagName(inputTag)) {
619 HTMLInputElement* input = static_cast<HTMLInputElement*>(node); 619 Handle<HTMLInputElement> input(static_cast<HTMLInputElement*>(node));
620 return input->isImageButton(); 620 return input->isImageButton();
621 } 621 }
622 622
623 return false; 623 return false;
624 } 624 }
625 625
626 bool AccessibilityNodeObject::isNativeTextControl() const 626 bool AccessibilityNodeObject::isNativeTextControl() const
627 { 627 {
628 Node* node = this->node(); 628 Node* node = this->node();
629 if (!node) 629 if (!node)
630 return false; 630 return false;
631 631
632 if (node->hasTagName(textareaTag)) 632 if (node->hasTagName(textareaTag))
633 return true; 633 return true;
634 634
635 if (node->hasTagName(inputTag)) { 635 if (node->hasTagName(inputTag)) {
636 HTMLInputElement* input = static_cast<HTMLInputElement*>(node); 636 Handle<HTMLInputElement> input(static_cast<HTMLInputElement*>(node));
637 return input->isText() || input->isNumberField(); 637 return input->isText() || input->isNumberField();
638 } 638 }
639 639
640 return false; 640 return false;
641 } 641 }
642 642
643 bool AccessibilityNodeObject::isPasswordField() const 643 bool AccessibilityNodeObject::isPasswordField() const
644 { 644 {
645 Node* node = this->node(); 645 Node* node = this->node();
646 if (!node || !node->isHTMLElement()) 646 if (!node || !node->isHTMLElement())
647 return false; 647 return false;
648 648
649 if (ariaRoleAttribute() != UnknownRole) 649 if (ariaRoleAttribute() != UnknownRole)
650 return false; 650 return false;
651 651
652 HTMLInputElement* inputElement = node->toInputElement(); 652 Handle<HTMLInputElement> inputElement = node->toInputElement();
653 if (!inputElement) 653 if (!inputElement)
654 return false; 654 return false;
655 655
656 return inputElement->isPasswordField(); 656 return inputElement->isPasswordField();
657 } 657 }
658 658
659 bool AccessibilityNodeObject::isProgressIndicator() const 659 bool AccessibilityNodeObject::isProgressIndicator() const
660 { 660 {
661 return roleValue() == ProgressIndicatorRole; 661 return roleValue() == ProgressIndicatorRole;
662 } 662 }
663 663
664 bool AccessibilityNodeObject::isSearchField() const 664 bool AccessibilityNodeObject::isSearchField() const
665 { 665 {
666 Node* node = this->node(); 666 Node* node = this->node();
667 if (!node) 667 if (!node)
668 return false; 668 return false;
669 669
670 HTMLInputElement* inputElement = node->toInputElement(); 670 Handle<HTMLInputElement> inputElement = node->toInputElement();
671 if (!inputElement) 671 if (!inputElement)
672 return false; 672 return false;
673 673
674 if (inputElement->isSearchField()) 674 if (inputElement->isSearchField())
675 return true; 675 return true;
676 676
677 // Some websites don't label their search fields as such. However, they will 677 // Some websites don't label their search fields as such. However, they will
678 // use the word "search" in either the form or input type. This won't catch every case, 678 // use the word "search" in either the form or input type. This won't catch every case,
679 // but it will catch google.com for example. 679 // but it will catch google.com for example.
680 680
(...skipping 15 matching lines...) Expand all
696 return roleValue() == SliderRole; 696 return roleValue() == SliderRole;
697 } 697 }
698 698
699 bool AccessibilityNodeObject::isChecked() const 699 bool AccessibilityNodeObject::isChecked() const
700 { 700 {
701 Node* node = this->node(); 701 Node* node = this->node();
702 if (!node) 702 if (!node)
703 return false; 703 return false;
704 704
705 // First test for native checkedness semantics 705 // First test for native checkedness semantics
706 HTMLInputElement* inputElement = node->toInputElement(); 706 Handle<HTMLInputElement> inputElement = node->toInputElement();
707 if (inputElement) 707 if (inputElement)
708 return inputElement->shouldAppearChecked(); 708 return inputElement->shouldAppearChecked();
709 709
710 // Else, if this is an ARIA checkbox or radio, respect the aria-checked attr ibute 710 // Else, if this is an ARIA checkbox or radio, respect the aria-checked attr ibute
711 AccessibilityRole ariaRole = ariaRoleAttribute(); 711 AccessibilityRole ariaRole = ariaRoleAttribute();
712 if (ariaRole == RadioButtonRole || ariaRole == CheckBoxRole) { 712 if (ariaRole == RadioButtonRole || ariaRole == CheckBoxRole) {
713 if (equalIgnoringCase(getAttribute(aria_checkedAttr), "true")) 713 if (equalIgnoringCase(getAttribute(aria_checkedAttr), "true"))
714 return true; 714 return true;
715 return false; 715 return false;
716 } 716 }
(...skipping 13 matching lines...) Expand all
730 730
731 return !toElement(node)->isDisabledFormControl(); 731 return !toElement(node)->isDisabledFormControl();
732 } 732 }
733 733
734 bool AccessibilityNodeObject::isIndeterminate() const 734 bool AccessibilityNodeObject::isIndeterminate() const
735 { 735 {
736 Node* node = this->node(); 736 Node* node = this->node();
737 if (!node) 737 if (!node)
738 return false; 738 return false;
739 739
740 HTMLInputElement* inputElement = node->toInputElement(); 740 Handle<HTMLInputElement> inputElement = node->toInputElement();
741 if (!inputElement) 741 if (!inputElement)
742 return false; 742 return false;
743 743
744 return inputElement->shouldAppearIndeterminate(); 744 return inputElement->shouldAppearIndeterminate();
745 } 745 }
746 746
747 bool AccessibilityNodeObject::isPressed() const 747 bool AccessibilityNodeObject::isPressed() const
748 { 748 {
749 if (!isButton()) 749 if (!isButton())
750 return false; 750 return false;
(...skipping 15 matching lines...) Expand all
766 bool AccessibilityNodeObject::isReadOnly() const 766 bool AccessibilityNodeObject::isReadOnly() const
767 { 767 {
768 Node* node = this->node(); 768 Node* node = this->node();
769 if (!node) 769 if (!node)
770 return true; 770 return true;
771 771
772 if (node->hasTagName(textareaTag)) 772 if (node->hasTagName(textareaTag))
773 return static_cast<HTMLTextAreaElement*>(node)->isReadOnly(); 773 return static_cast<HTMLTextAreaElement*>(node)->isReadOnly();
774 774
775 if (node->hasTagName(inputTag)) { 775 if (node->hasTagName(inputTag)) {
776 HTMLInputElement* input = static_cast<HTMLInputElement*>(node); 776 Handle<HTMLInputElement> input(static_cast<HTMLInputElement*>(node));
777 if (input->isTextField()) 777 if (input->isTextField())
778 return input->isReadOnly(); 778 return input->isReadOnly();
779 } 779 }
780 780
781 return !node->rendererIsEditable(); 781 return !node->rendererIsEditable();
782 } 782 }
783 783
784 bool AccessibilityNodeObject::isRequired() const 784 bool AccessibilityNodeObject::isRequired() const
785 { 785 {
786 if (equalIgnoringCase(getAttribute(aria_requiredAttr), "true")) 786 if (equalIgnoringCase(getAttribute(aria_requiredAttr), "true"))
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
929 r = 0; 929 r = 0;
930 g = 0; 930 g = 0;
931 b = 0; 931 b = 0;
932 932
933 if (!isColorWell()) 933 if (!isColorWell())
934 return; 934 return;
935 935
936 if (!node() || !node()->hasTagName(inputTag)) 936 if (!node() || !node()->hasTagName(inputTag))
937 return; 937 return;
938 938
939 HTMLInputElement* input = static_cast<HTMLInputElement*>(node()); 939 Handle<HTMLInputElement> input(static_cast<HTMLInputElement*>(node()));
940 const AtomicString& type = input->getAttribute(typeAttr); 940 const AtomicString& type = input->getAttribute(typeAttr);
941 if (!equalIgnoringCase(type, "color")) 941 if (!equalIgnoringCase(type, "color"))
942 return; 942 return;
943 943
944 // HTMLInputElement::value always returns a string parseable by Color(). 944 // HTMLInputElement::value always returns a string parseable by Color().
945 Color color(input->value()); 945 Color color(input->value());
946 r = color.red(); 946 r = color.red();
947 g = color.green(); 947 g = color.green();
948 b = color.blue(); 948 b = color.blue();
949 } 949 }
950 950
951 String AccessibilityNodeObject::valueDescription() const 951 String AccessibilityNodeObject::valueDescription() const
952 { 952 {
953 if (!isARIARange()) 953 if (!isARIARange())
954 return String(); 954 return String();
955 955
956 return getAttribute(aria_valuetextAttr).string(); 956 return getAttribute(aria_valuetextAttr).string();
957 } 957 }
958 958
959 float AccessibilityNodeObject::valueForRange() const 959 float AccessibilityNodeObject::valueForRange() const
960 { 960 {
961 if (node() && node()->hasTagName(inputTag)) { 961 if (node() && node()->hasTagName(inputTag)) {
962 HTMLInputElement* input = static_cast<HTMLInputElement*>(node()); 962 Handle<HTMLInputElement> input(static_cast<HTMLInputElement*>(node()));
963 if (input->isRangeControl()) 963 if (input->isRangeControl())
964 return input->valueAsNumber(); 964 return input->valueAsNumber();
965 } 965 }
966 966
967 if (!isARIARange()) 967 if (!isARIARange())
968 return 0.0f; 968 return 0.0f;
969 969
970 return getAttribute(aria_valuenowAttr).toFloat(); 970 return getAttribute(aria_valuenowAttr).toFloat();
971 } 971 }
972 972
973 float AccessibilityNodeObject::maxValueForRange() const 973 float AccessibilityNodeObject::maxValueForRange() const
974 { 974 {
975 if (node() && node()->hasTagName(inputTag)) { 975 if (node() && node()->hasTagName(inputTag)) {
976 HTMLInputElement* input = static_cast<HTMLInputElement*>(node()); 976 Handle<HTMLInputElement> input(static_cast<HTMLInputElement*>(node()));
977 if (input->isRangeControl()) 977 if (input->isRangeControl())
978 return input->maximum(); 978 return input->maximum();
979 } 979 }
980 980
981 if (!isARIARange()) 981 if (!isARIARange())
982 return 0.0f; 982 return 0.0f;
983 983
984 return getAttribute(aria_valuemaxAttr).toFloat(); 984 return getAttribute(aria_valuemaxAttr).toFloat();
985 } 985 }
986 986
987 float AccessibilityNodeObject::minValueForRange() const 987 float AccessibilityNodeObject::minValueForRange() const
988 { 988 {
989 if (node() && node()->hasTagName(inputTag)) { 989 if (node() && node()->hasTagName(inputTag)) {
990 HTMLInputElement* input = static_cast<HTMLInputElement*>(node()); 990 Handle<HTMLInputElement> input(static_cast<HTMLInputElement*>(node()));
991 if (input->isRangeControl()) 991 if (input->isRangeControl())
992 return input->minimum(); 992 return input->minimum();
993 } 993 }
994 994
995 if (!isARIARange()) 995 if (!isARIARange())
996 return 0.0f; 996 return 0.0f;
997 997
998 return getAttribute(aria_valueminAttr).toFloat(); 998 return getAttribute(aria_valueminAttr).toFloat();
999 } 999 }
1000 1000
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1049 String staticText = text(); 1049 String staticText = text();
1050 if (!staticText.length()) 1050 if (!staticText.length())
1051 staticText = textUnderElement(); 1051 staticText = textUnderElement();
1052 return staticText; 1052 return staticText;
1053 } 1053 }
1054 1054
1055 if (node->isTextNode()) 1055 if (node->isTextNode())
1056 return textUnderElement(); 1056 return textUnderElement();
1057 1057
1058 if (node->hasTagName(selectTag)) { 1058 if (node->hasTagName(selectTag)) {
1059 HTMLSelectElement* selectElement = toHTMLSelectElement(node); 1059 Handle<HTMLSelectElement> selectElement = toHTMLSelectElement(node);
1060 int selectedIndex = selectElement->selectedIndex(); 1060 int selectedIndex = selectElement->selectedIndex();
1061 const Vector<HTMLElement*> listItems = selectElement->listItems(); 1061 const Vector<HTMLElement*> listItems = selectElement->listItems();
1062 if (selectedIndex >= 0 && static_cast<size_t>(selectedIndex) < listItems .size()) { 1062 if (selectedIndex >= 0 && static_cast<size_t>(selectedIndex) < listItems .size()) {
1063 const AtomicString& overriddenDescription = listItems[selectedIndex] ->fastGetAttribute(aria_labelAttr); 1063 const AtomicString& overriddenDescription = listItems[selectedIndex] ->fastGetAttribute(aria_labelAttr);
1064 if (!overriddenDescription.isNull()) 1064 if (!overriddenDescription.isNull())
1065 return overriddenDescription; 1065 return overriddenDescription;
1066 } 1066 }
1067 if (!selectElement->multiple()) 1067 if (!selectElement->multiple())
1068 return selectElement->value(); 1068 return selectElement->value();
1069 return String(); 1069 return String();
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
1200 } 1200 }
1201 1201
1202 String AccessibilityNodeObject::title() const 1202 String AccessibilityNodeObject::title() const
1203 { 1203 {
1204 Node* node = this->node(); 1204 Node* node = this->node();
1205 if (!node) 1205 if (!node)
1206 return String(); 1206 return String();
1207 1207
1208 bool isInputTag = node->hasTagName(inputTag); 1208 bool isInputTag = node->hasTagName(inputTag);
1209 if (isInputTag) { 1209 if (isInputTag) {
1210 HTMLInputElement* input = static_cast<HTMLInputElement*>(node); 1210 Handle<HTMLInputElement> input(static_cast<HTMLInputElement*>(node));
1211 if (input->isTextButton()) 1211 if (input->isTextButton())
1212 return input->valueWithDefault(); 1212 return input->valueWithDefault();
1213 } 1213 }
1214 1214
1215 if (isInputTag || AccessibilityObject::isARIAInput(ariaRoleAttribute()) || i sControl()) { 1215 if (isInputTag || AccessibilityObject::isARIAInput(ariaRoleAttribute()) || i sControl()) {
1216 HTMLLabelElement* label = labelForElement(toElement(node)); 1216 HTMLLabelElement* label = labelForElement(toElement(node));
1217 if (label && !exposesTitleUIElement()) 1217 if (label && !exposesTitleUIElement())
1218 return label->innerText(); 1218 return label->innerText();
1219 } 1219 }
1220 1220
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
1456 } 1456 }
1457 } 1457 }
1458 1458
1459 Element* AccessibilityNodeObject::actionElement() const 1459 Element* AccessibilityNodeObject::actionElement() const
1460 { 1460 {
1461 Node* node = this->node(); 1461 Node* node = this->node();
1462 if (!node) 1462 if (!node)
1463 return 0; 1463 return 0;
1464 1464
1465 if (node->hasTagName(inputTag)) { 1465 if (node->hasTagName(inputTag)) {
1466 HTMLInputElement* input = static_cast<HTMLInputElement*>(node); 1466 Handle<HTMLInputElement> input(static_cast<HTMLInputElement*>(node));
1467 if (!input->isDisabledFormControl() && (isCheckboxOrRadio() || input->is TextButton())) 1467 if (!input->isDisabledFormControl() && (isCheckboxOrRadio() || input->is TextButton()))
1468 return input; 1468 return input.raw();
1469 } else if (node->hasTagName(buttonTag)) 1469 } else if (node->hasTagName(buttonTag))
1470 return toElement(node); 1470 return toElement(node);
1471 1471
1472 if (isFileUploadButton()) 1472 if (isFileUploadButton())
1473 return toElement(node); 1473 return toElement(node);
1474 1474
1475 if (AccessibilityObject::isARIAInput(ariaRoleAttribute())) 1475 if (AccessibilityObject::isARIAInput(ariaRoleAttribute()))
1476 return toElement(node); 1476 return toElement(node);
1477 1477
1478 if (isImageButton()) 1478 if (isImageButton())
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
1733 } 1733 }
1734 1734
1735 void AccessibilityNodeObject::visibleText(Vector<AccessibilityText>& textOrder) const 1735 void AccessibilityNodeObject::visibleText(Vector<AccessibilityText>& textOrder) const
1736 { 1736 {
1737 Node* node = this->node(); 1737 Node* node = this->node();
1738 if (!node) 1738 if (!node)
1739 return; 1739 return;
1740 1740
1741 bool isInputTag = node->hasTagName(inputTag); 1741 bool isInputTag = node->hasTagName(inputTag);
1742 if (isInputTag) { 1742 if (isInputTag) {
1743 HTMLInputElement* input = static_cast<HTMLInputElement*>(node); 1743 Handle<HTMLInputElement> input(static_cast<HTMLInputElement*>(node));
1744 if (input->isTextButton()) { 1744 if (input->isTextButton()) {
1745 textOrder.append(AccessibilityText(input->valueWithDefault(), Visibl eText)); 1745 textOrder.append(AccessibilityText(input->valueWithDefault(), Visibl eText));
1746 return; 1746 return;
1747 } 1747 }
1748 } 1748 }
1749 1749
1750 // If this node isn't rendered, there's no inner text we can extract from a select element. 1750 // If this node isn't rendered, there's no inner text we can extract from a select element.
1751 if (!isAccessibilityRenderObject() && node->hasTagName(selectTag)) 1751 if (!isAccessibilityRenderObject() && node->hasTagName(selectTag))
1752 return; 1752 return;
1753 1753
(...skipping 24 matching lines...) Expand all
1778 useTextUnderElement = true; 1778 useTextUnderElement = true;
1779 1779
1780 if (useTextUnderElement) { 1780 if (useTextUnderElement) {
1781 String text = textUnderElement(); 1781 String text = textUnderElement();
1782 if (!text.isEmpty()) 1782 if (!text.isEmpty())
1783 textOrder.append(AccessibilityText(text, ChildrenText)); 1783 textOrder.append(AccessibilityText(text, ChildrenText));
1784 } 1784 }
1785 } 1785 }
1786 1786
1787 } // namespace WebCore 1787 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/accessibility/AccessibilityListBoxOption.cpp ('k') | Source/core/accessibility/AccessibilityRenderObject.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698