OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |