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

Side by Side Diff: trunk/src/content/shell/renderer/test_runner/web_ax_object_proxy.cc

Issue 464403003: Revert 289489 "Ensure there's no layout pending before accessing..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 4 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
« no previous file with comments | « no previous file | 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 // 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 #include "content/shell/renderer/test_runner/web_ax_object_proxy.h" 5 #include "content/shell/renderer/test_runner/web_ax_object_proxy.h"
6 6
7 #include "base/strings/stringprintf.h" 7 #include "base/strings/stringprintf.h"
8 #include "gin/handle.h" 8 #include "gin/handle.h"
9 #include "third_party/WebKit/public/platform/WebPoint.h" 9 #include "third_party/WebKit/public/platform/WebPoint.h"
10 #include "third_party/WebKit/public/platform/WebRect.h" 10 #include "third_party/WebKit/public/platform/WebRect.h"
(...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 .SetMethod("wordStart", &WebAXObjectProxy::WordStart) 549 .SetMethod("wordStart", &WebAXObjectProxy::WordStart)
550 .SetMethod("wordEnd", &WebAXObjectProxy::WordEnd) 550 .SetMethod("wordEnd", &WebAXObjectProxy::WordEnd)
551 // TODO(hajimehoshi): This is for backward compatibility. Remove them. 551 // TODO(hajimehoshi): This is for backward compatibility. Remove them.
552 .SetMethod("addNotificationListener", 552 .SetMethod("addNotificationListener",
553 &WebAXObjectProxy::SetNotificationListener) 553 &WebAXObjectProxy::SetNotificationListener)
554 .SetMethod("removeNotificationListener", 554 .SetMethod("removeNotificationListener",
555 &WebAXObjectProxy::UnsetNotificationListener); 555 &WebAXObjectProxy::UnsetNotificationListener);
556 } 556 }
557 557
558 v8::Handle<v8::Object> WebAXObjectProxy::GetChildAtIndex(unsigned index) { 558 v8::Handle<v8::Object> WebAXObjectProxy::GetChildAtIndex(unsigned index) {
559 return factory_->GetOrCreate(accessibility_object_.childAt(index)); 559 return factory_->GetOrCreate(accessibility_object().childAt(index));
560 } 560 }
561 561
562 bool WebAXObjectProxy::IsRoot() const { 562 bool WebAXObjectProxy::IsRoot() const {
563 return false; 563 return false;
564 } 564 }
565 565
566 bool WebAXObjectProxy::IsEqualToObject(const blink::WebAXObject& other) { 566 bool WebAXObjectProxy::IsEqualToObject(const blink::WebAXObject& other) {
567 return accessibility_object_.equals(other); 567 return accessibility_object().equals(other);
568 } 568 }
569 569
570 void WebAXObjectProxy::NotificationReceived( 570 void WebAXObjectProxy::NotificationReceived(
571 blink::WebFrame* frame, 571 blink::WebFrame* frame,
572 const std::string& notification_name) { 572 const std::string& notification_name) {
573 if (notification_callback_.IsEmpty()) 573 if (notification_callback_.IsEmpty())
574 return; 574 return;
575 575
576 v8::Handle<v8::Context> context = frame->mainWorldScriptContext(); 576 v8::Handle<v8::Context> context = frame->mainWorldScriptContext();
577 if (context.IsEmpty()) 577 if (context.IsEmpty())
(...skipping 11 matching lines...) Expand all
589 context->Global(), 589 context->Global(),
590 arraysize(argv), 590 arraysize(argv),
591 argv); 591 argv);
592 } 592 }
593 593
594 void WebAXObjectProxy::Reset() { 594 void WebAXObjectProxy::Reset() {
595 notification_callback_.Reset(); 595 notification_callback_.Reset();
596 } 596 }
597 597
598 std::string WebAXObjectProxy::Role() { 598 std::string WebAXObjectProxy::Role() {
599 accessibility_object_.updateLayoutAndCheckValidity(); 599 return GetRole(accessibility_object());
600 return GetRole(accessibility_object_);
601 } 600 }
602 601
603 std::string WebAXObjectProxy::Title() { 602 std::string WebAXObjectProxy::Title() {
604 accessibility_object_.updateLayoutAndCheckValidity(); 603 return GetTitle(accessibility_object());
605 return GetTitle(accessibility_object_);
606 } 604 }
607 605
608 std::string WebAXObjectProxy::Description() { 606 std::string WebAXObjectProxy::Description() {
609 accessibility_object_.updateLayoutAndCheckValidity(); 607 return GetDescription(accessibility_object());
610 return GetDescription(accessibility_object_);
611 } 608 }
612 609
613 std::string WebAXObjectProxy::HelpText() { 610 std::string WebAXObjectProxy::HelpText() {
614 accessibility_object_.updateLayoutAndCheckValidity(); 611 return GetHelpText(accessibility_object());
615 return GetHelpText(accessibility_object_);
616 } 612 }
617 613
618 std::string WebAXObjectProxy::StringValue() { 614 std::string WebAXObjectProxy::StringValue() {
619 accessibility_object_.updateLayoutAndCheckValidity(); 615 return GetStringValue(accessibility_object());
620 return GetStringValue(accessibility_object_);
621 } 616 }
622 617
623 int WebAXObjectProxy::X() { 618 int WebAXObjectProxy::X() {
624 accessibility_object_.updateLayoutAndCheckValidity(); 619 accessibility_object_.updateBackingStoreAndCheckValidity();
625 return accessibility_object_.boundingBoxRect().x; 620 return accessibility_object().boundingBoxRect().x;
626 } 621 }
627 622
628 int WebAXObjectProxy::Y() { 623 int WebAXObjectProxy::Y() {
629 accessibility_object_.updateLayoutAndCheckValidity(); 624 accessibility_object_.updateBackingStoreAndCheckValidity();
630 return accessibility_object_.boundingBoxRect().y; 625 return accessibility_object().boundingBoxRect().y;
631 } 626 }
632 627
633 int WebAXObjectProxy::Width() { 628 int WebAXObjectProxy::Width() {
634 accessibility_object_.updateLayoutAndCheckValidity(); 629 accessibility_object_.updateBackingStoreAndCheckValidity();
635 return accessibility_object_.boundingBoxRect().width; 630 return accessibility_object().boundingBoxRect().width;
636 } 631 }
637 632
638 int WebAXObjectProxy::Height() { 633 int WebAXObjectProxy::Height() {
639 accessibility_object_.updateLayoutAndCheckValidity(); 634 accessibility_object_.updateBackingStoreAndCheckValidity();
640 return accessibility_object_.boundingBoxRect().height; 635 return accessibility_object().boundingBoxRect().height;
641 } 636 }
642 637
643 int WebAXObjectProxy::IntValue() { 638 int WebAXObjectProxy::IntValue() {
644 accessibility_object_.updateLayoutAndCheckValidity(); 639 if (accessibility_object().supportsRangeValue())
645 if (accessibility_object_.supportsRangeValue()) 640 return accessibility_object().valueForRange();
646 return accessibility_object_.valueForRange(); 641 else if (accessibility_object().role() == blink::WebAXRoleHeading)
647 else if (accessibility_object_.role() == blink::WebAXRoleHeading) 642 return accessibility_object().headingLevel();
648 return accessibility_object_.headingLevel();
649 else 643 else
650 return atoi(accessibility_object_.stringValue().utf8().data()); 644 return atoi(accessibility_object().stringValue().utf8().data());
651 } 645 }
652 646
653 int WebAXObjectProxy::MinValue() { 647 int WebAXObjectProxy::MinValue() {
654 accessibility_object_.updateLayoutAndCheckValidity(); 648 return accessibility_object().minValueForRange();
655 return accessibility_object_.minValueForRange();
656 } 649 }
657 650
658 int WebAXObjectProxy::MaxValue() { 651 int WebAXObjectProxy::MaxValue() {
659 accessibility_object_.updateLayoutAndCheckValidity(); 652 return accessibility_object().maxValueForRange();
660 return accessibility_object_.maxValueForRange();
661 } 653 }
662 654
663 std::string WebAXObjectProxy::ValueDescription() { 655 std::string WebAXObjectProxy::ValueDescription() {
664 accessibility_object_.updateLayoutAndCheckValidity(); 656 return GetValueDescription(accessibility_object());
665 return GetValueDescription(accessibility_object_);
666 } 657 }
667 658
668 int WebAXObjectProxy::ChildrenCount() { 659 int WebAXObjectProxy::ChildrenCount() {
669 accessibility_object_.updateLayoutAndCheckValidity();
670 int count = 1; // Root object always has only one child, the WebView. 660 int count = 1; // Root object always has only one child, the WebView.
671 if (!IsRoot()) 661 if (!IsRoot())
672 count = accessibility_object_.childCount(); 662 count = accessibility_object().childCount();
673 return count; 663 return count;
674 } 664 }
675 665
676 int WebAXObjectProxy::InsertionPointLineNumber() { 666 int WebAXObjectProxy::InsertionPointLineNumber() {
677 accessibility_object_.updateLayoutAndCheckValidity(); 667 if (!accessibility_object().isFocused())
678 if (!accessibility_object_.isFocused())
679 return -1; 668 return -1;
680 return accessibility_object_.selectionEndLineNumber(); 669 return accessibility_object().selectionEndLineNumber();
681 } 670 }
682 671
683 std::string WebAXObjectProxy::SelectedTextRange() { 672 std::string WebAXObjectProxy::SelectedTextRange() {
684 accessibility_object_.updateLayoutAndCheckValidity(); 673 unsigned selection_start = accessibility_object().selectionStart();
685 unsigned selection_start = accessibility_object_.selectionStart(); 674 unsigned selection_end = accessibility_object().selectionEnd();
686 unsigned selection_end = accessibility_object_.selectionEnd();
687 return base::StringPrintf("{%d, %d}", 675 return base::StringPrintf("{%d, %d}",
688 selection_start, selection_end - selection_start); 676 selection_start, selection_end - selection_start);
689 } 677 }
690 678
691 bool WebAXObjectProxy::IsEnabled() { 679 bool WebAXObjectProxy::IsEnabled() {
692 accessibility_object_.updateLayoutAndCheckValidity(); 680 return accessibility_object().isEnabled();
693 return accessibility_object_.isEnabled();
694 } 681 }
695 682
696 bool WebAXObjectProxy::IsRequired() { 683 bool WebAXObjectProxy::IsRequired() {
697 accessibility_object_.updateLayoutAndCheckValidity(); 684 return accessibility_object().isRequired();
698 return accessibility_object_.isRequired();
699 } 685 }
700 686
701 bool WebAXObjectProxy::IsFocused() { 687 bool WebAXObjectProxy::IsFocused() {
702 accessibility_object_.updateLayoutAndCheckValidity(); 688 return accessibility_object().isFocused();
703 return accessibility_object_.isFocused();
704 } 689 }
705 690
706 bool WebAXObjectProxy::IsFocusable() { 691 bool WebAXObjectProxy::IsFocusable() {
707 accessibility_object_.updateLayoutAndCheckValidity(); 692 return accessibility_object().canSetFocusAttribute();
708 return accessibility_object_.canSetFocusAttribute();
709 } 693 }
710 694
711 bool WebAXObjectProxy::IsSelected() { 695 bool WebAXObjectProxy::IsSelected() {
712 accessibility_object_.updateLayoutAndCheckValidity(); 696 return accessibility_object().isSelected();
713 return accessibility_object_.isSelected();
714 } 697 }
715 698
716 bool WebAXObjectProxy::IsSelectable() { 699 bool WebAXObjectProxy::IsSelectable() {
717 accessibility_object_.updateLayoutAndCheckValidity(); 700 return accessibility_object().canSetSelectedAttribute();
718 return accessibility_object_.canSetSelectedAttribute();
719 } 701 }
720 702
721 bool WebAXObjectProxy::IsMultiSelectable() { 703 bool WebAXObjectProxy::IsMultiSelectable() {
722 accessibility_object_.updateLayoutAndCheckValidity(); 704 return accessibility_object().isMultiSelectable();
723 return accessibility_object_.isMultiSelectable();
724 } 705 }
725 706
726 bool WebAXObjectProxy::IsSelectedOptionActive() { 707 bool WebAXObjectProxy::IsSelectedOptionActive() {
727 accessibility_object_.updateLayoutAndCheckValidity(); 708 return accessibility_object().isSelectedOptionActive();
728 return accessibility_object_.isSelectedOptionActive();
729 } 709 }
730 710
731 bool WebAXObjectProxy::IsExpanded() { 711 bool WebAXObjectProxy::IsExpanded() {
732 accessibility_object_.updateLayoutAndCheckValidity(); 712 return !accessibility_object().isCollapsed();
733 return !accessibility_object_.isCollapsed();
734 } 713 }
735 714
736 bool WebAXObjectProxy::IsChecked() { 715 bool WebAXObjectProxy::IsChecked() {
737 accessibility_object_.updateLayoutAndCheckValidity(); 716 return accessibility_object().isChecked();
738 return accessibility_object_.isChecked();
739 } 717 }
740 718
741 bool WebAXObjectProxy::IsVisible() { 719 bool WebAXObjectProxy::IsVisible() {
742 accessibility_object_.updateLayoutAndCheckValidity(); 720 return accessibility_object().isVisible();
743 return accessibility_object_.isVisible();
744 } 721 }
745 722
746 bool WebAXObjectProxy::IsOffScreen() { 723 bool WebAXObjectProxy::IsOffScreen() {
747 accessibility_object_.updateLayoutAndCheckValidity(); 724 return accessibility_object().isOffScreen();
748 return accessibility_object_.isOffScreen();
749 } 725 }
750 726
751 bool WebAXObjectProxy::IsCollapsed() { 727 bool WebAXObjectProxy::IsCollapsed() {
752 accessibility_object_.updateLayoutAndCheckValidity(); 728 return accessibility_object().isCollapsed();
753 return accessibility_object_.isCollapsed();
754 } 729 }
755 730
756 bool WebAXObjectProxy::HasPopup() { 731 bool WebAXObjectProxy::HasPopup() {
757 accessibility_object_.updateLayoutAndCheckValidity(); 732 return accessibility_object().ariaHasPopup();
758 return accessibility_object_.ariaHasPopup();
759 } 733 }
760 734
761 bool WebAXObjectProxy::IsValid() { 735 bool WebAXObjectProxy::IsValid() {
762 accessibility_object_.updateLayoutAndCheckValidity(); 736 return !accessibility_object().isDetached();
763 return !accessibility_object_.isDetached();
764 } 737 }
765 738
766 bool WebAXObjectProxy::IsReadOnly() { 739 bool WebAXObjectProxy::IsReadOnly() {
767 accessibility_object_.updateLayoutAndCheckValidity(); 740 return accessibility_object().isReadOnly();
768 return accessibility_object_.isReadOnly();
769 } 741 }
770 742
771 std::string WebAXObjectProxy::Orientation() { 743 std::string WebAXObjectProxy::Orientation() {
772 accessibility_object_.updateLayoutAndCheckValidity(); 744 return GetOrientation(accessibility_object());
773 return GetOrientation(accessibility_object_);
774 } 745 }
775 746
776 int WebAXObjectProxy::ClickPointX() { 747 int WebAXObjectProxy::ClickPointX() {
777 accessibility_object_.updateLayoutAndCheckValidity(); 748 return accessibility_object().clickPoint().x;
778 return accessibility_object_.clickPoint().x;
779 } 749 }
780 750
781 int WebAXObjectProxy::ClickPointY() { 751 int WebAXObjectProxy::ClickPointY() {
782 accessibility_object_.updateLayoutAndCheckValidity(); 752 return accessibility_object().clickPoint().y;
783 return accessibility_object_.clickPoint().y;
784 } 753 }
785 754
786 int32_t WebAXObjectProxy::RowCount() { 755 int32_t WebAXObjectProxy::RowCount() {
787 accessibility_object_.updateLayoutAndCheckValidity(); 756 return static_cast<int32_t>(accessibility_object().rowCount());
788 return static_cast<int32_t>(accessibility_object_.rowCount());
789 } 757 }
790 758
791 int32_t WebAXObjectProxy::ColumnCount() { 759 int32_t WebAXObjectProxy::ColumnCount() {
792 accessibility_object_.updateLayoutAndCheckValidity(); 760 return static_cast<int32_t>(accessibility_object().columnCount());
793 return static_cast<int32_t>(accessibility_object_.columnCount());
794 } 761 }
795 762
796 bool WebAXObjectProxy::IsClickable() { 763 bool WebAXObjectProxy::IsClickable() {
797 accessibility_object_.updateLayoutAndCheckValidity(); 764 return accessibility_object().isClickable();
798 return accessibility_object_.isClickable();
799 } 765 }
800 766
801 std::string WebAXObjectProxy::AllAttributes() { 767 std::string WebAXObjectProxy::AllAttributes() {
802 accessibility_object_.updateLayoutAndCheckValidity(); 768 return GetAttributes(accessibility_object());
803 return GetAttributes(accessibility_object_);
804 } 769 }
805 770
806 std::string WebAXObjectProxy::AttributesOfChildren() { 771 std::string WebAXObjectProxy::AttributesOfChildren() {
807 accessibility_object_.updateLayoutAndCheckValidity();
808 AttributesCollector collector; 772 AttributesCollector collector;
809 unsigned size = accessibility_object_.childCount(); 773 unsigned size = accessibility_object().childCount();
810 for (unsigned i = 0; i < size; ++i) 774 for (unsigned i = 0; i < size; ++i)
811 collector.CollectAttributes(accessibility_object_.childAt(i)); 775 collector.CollectAttributes(accessibility_object().childAt(i));
812 return collector.attributes(); 776 return collector.attributes();
813 } 777 }
814 778
815 int WebAXObjectProxy::LineForIndex(int index) { 779 int WebAXObjectProxy::LineForIndex(int index) {
816 accessibility_object_.updateLayoutAndCheckValidity();
817 blink::WebVector<int> line_breaks; 780 blink::WebVector<int> line_breaks;
818 accessibility_object_.lineBreaks(line_breaks); 781 accessibility_object().lineBreaks(line_breaks);
819 int line = 0; 782 int line = 0;
820 int vector_size = static_cast<int>(line_breaks.size()); 783 int vector_size = static_cast<int>(line_breaks.size());
821 while (line < vector_size && line_breaks[line] <= index) 784 while (line < vector_size && line_breaks[line] <= index)
822 line++; 785 line++;
823 return line; 786 return line;
824 } 787 }
825 788
826 std::string WebAXObjectProxy::BoundsForRange(int start, int end) { 789 std::string WebAXObjectProxy::BoundsForRange(int start, int end) {
827 accessibility_object_.updateLayoutAndCheckValidity(); 790 if (accessibility_object().role() != blink::WebAXRoleStaticText)
828 if (accessibility_object_.role() != blink::WebAXRoleStaticText)
829 return std::string(); 791 return std::string();
830 792
831 if (!accessibility_object_.updateLayoutAndCheckValidity()) 793 if (!accessibility_object_.updateBackingStoreAndCheckValidity())
832 return std::string(); 794 return std::string();
833 795
834 int len = end - start; 796 int len = end - start;
835 797
836 // Get the bounds for each character and union them into one large rectangle. 798 // Get the bounds for each character and union them into one large rectangle.
837 // This is just for testing so it doesn't need to be efficient. 799 // This is just for testing so it doesn't need to be efficient.
838 blink::WebRect bounds = BoundsForCharacter(accessibility_object_, start); 800 blink::WebRect bounds = BoundsForCharacter(accessibility_object(), start);
839 for (int i = 1; i < len; i++) { 801 for (int i = 1; i < len; i++) {
840 blink::WebRect next = BoundsForCharacter(accessibility_object_, start + i); 802 blink::WebRect next = BoundsForCharacter(accessibility_object(), start + i);
841 int right = std::max(bounds.x + bounds.width, next.x + next.width); 803 int right = std::max(bounds.x + bounds.width, next.x + next.width);
842 int bottom = std::max(bounds.y + bounds.height, next.y + next.height); 804 int bottom = std::max(bounds.y + bounds.height, next.y + next.height);
843 bounds.x = std::min(bounds.x, next.x); 805 bounds.x = std::min(bounds.x, next.x);
844 bounds.y = std::min(bounds.y, next.y); 806 bounds.y = std::min(bounds.y, next.y);
845 bounds.width = right - bounds.x; 807 bounds.width = right - bounds.x;
846 bounds.height = bottom - bounds.y; 808 bounds.height = bottom - bounds.y;
847 } 809 }
848 810
849 return base::StringPrintf("{x: %d, y: %d, width: %d, height: %d}", 811 return base::StringPrintf("{x: %d, y: %d, width: %d, height: %d}",
850 bounds.x, bounds.y, bounds.width, bounds.height); 812 bounds.x, bounds.y, bounds.width, bounds.height);
851 } 813 }
852 814
853 v8::Handle<v8::Object> WebAXObjectProxy::ChildAtIndex(int index) { 815 v8::Handle<v8::Object> WebAXObjectProxy::ChildAtIndex(int index) {
854 accessibility_object_.updateLayoutAndCheckValidity();
855 return GetChildAtIndex(index); 816 return GetChildAtIndex(index);
856 } 817 }
857 818
858 v8::Handle<v8::Object> WebAXObjectProxy::ElementAtPoint(int x, int y) { 819 v8::Handle<v8::Object> WebAXObjectProxy::ElementAtPoint(int x, int y) {
859 accessibility_object_.updateLayoutAndCheckValidity();
860 blink::WebPoint point(x, y); 820 blink::WebPoint point(x, y);
861 blink::WebAXObject obj = accessibility_object_.hitTest(point); 821 blink::WebAXObject obj = accessibility_object().hitTest(point);
862 if (obj.isNull()) 822 if (obj.isNull())
863 return v8::Handle<v8::Object>(); 823 return v8::Handle<v8::Object>();
864 824
865 return factory_->GetOrCreate(obj); 825 return factory_->GetOrCreate(obj);
866 } 826 }
867 827
868 v8::Handle<v8::Object> WebAXObjectProxy::TableHeader() { 828 v8::Handle<v8::Object> WebAXObjectProxy::TableHeader() {
869 accessibility_object_.updateLayoutAndCheckValidity(); 829 blink::WebAXObject obj = accessibility_object().headerContainerObject();
870 blink::WebAXObject obj = accessibility_object_.headerContainerObject();
871 if (obj.isNull()) 830 if (obj.isNull())
872 return v8::Handle<v8::Object>(); 831 return v8::Handle<v8::Object>();
873 832
874 return factory_->GetOrCreate(obj); 833 return factory_->GetOrCreate(obj);
875 } 834 }
876 835
877 std::string WebAXObjectProxy::RowIndexRange() { 836 std::string WebAXObjectProxy::RowIndexRange() {
878 accessibility_object_.updateLayoutAndCheckValidity(); 837 unsigned row_index = accessibility_object().cellRowIndex();
879 unsigned row_index = accessibility_object_.cellRowIndex(); 838 unsigned row_span = accessibility_object().cellRowSpan();
880 unsigned row_span = accessibility_object_.cellRowSpan();
881 return base::StringPrintf("{%d, %d}", row_index, row_span); 839 return base::StringPrintf("{%d, %d}", row_index, row_span);
882 } 840 }
883 841
884 std::string WebAXObjectProxy::ColumnIndexRange() { 842 std::string WebAXObjectProxy::ColumnIndexRange() {
885 accessibility_object_.updateLayoutAndCheckValidity(); 843 unsigned column_index = accessibility_object().cellColumnIndex();
886 unsigned column_index = accessibility_object_.cellColumnIndex(); 844 unsigned column_span = accessibility_object().cellColumnSpan();
887 unsigned column_span = accessibility_object_.cellColumnSpan();
888 return base::StringPrintf("{%d, %d}", column_index, column_span); 845 return base::StringPrintf("{%d, %d}", column_index, column_span);
889 } 846 }
890 847
891 v8::Handle<v8::Object> WebAXObjectProxy::CellForColumnAndRow( 848 v8::Handle<v8::Object> WebAXObjectProxy::CellForColumnAndRow(
892 int column, int row) { 849 int column, int row) {
893 accessibility_object_.updateLayoutAndCheckValidity();
894 blink::WebAXObject obj = 850 blink::WebAXObject obj =
895 accessibility_object_.cellForColumnAndRow(column, row); 851 accessibility_object().cellForColumnAndRow(column, row);
896 if (obj.isNull()) 852 if (obj.isNull())
897 return v8::Handle<v8::Object>(); 853 return v8::Handle<v8::Object>();
898 854
899 return factory_->GetOrCreate(obj); 855 return factory_->GetOrCreate(obj);
900 } 856 }
901 857
902 v8::Handle<v8::Object> WebAXObjectProxy::TitleUIElement() { 858 v8::Handle<v8::Object> WebAXObjectProxy::TitleUIElement() {
903 accessibility_object_.updateLayoutAndCheckValidity(); 859 blink::WebAXObject obj = accessibility_object().titleUIElement();
904 blink::WebAXObject obj = accessibility_object_.titleUIElement();
905 if (obj.isNull()) 860 if (obj.isNull())
906 return v8::Handle<v8::Object>(); 861 return v8::Handle<v8::Object>();
907 862
908 return factory_->GetOrCreate(obj); 863 return factory_->GetOrCreate(obj);
909 } 864 }
910 865
911 void WebAXObjectProxy::SetSelectedTextRange(int selection_start, 866 void WebAXObjectProxy::SetSelectedTextRange(int selection_start,
912 int length) { 867 int length) {
913 accessibility_object_.updateLayoutAndCheckValidity(); 868 accessibility_object().setSelectedTextRange(selection_start,
914 accessibility_object_.setSelectedTextRange(selection_start,
915 selection_start + length); 869 selection_start + length);
916 } 870 }
917 871
918 bool WebAXObjectProxy::IsAttributeSettable(const std::string& attribute) { 872 bool WebAXObjectProxy::IsAttributeSettable(const std::string& attribute) {
919 accessibility_object_.updateLayoutAndCheckValidity();
920 bool settable = false; 873 bool settable = false;
921 if (attribute == "AXValue") 874 if (attribute == "AXValue")
922 settable = accessibility_object_.canSetValueAttribute(); 875 settable = accessibility_object().canSetValueAttribute();
923 return settable; 876 return settable;
924 } 877 }
925 878
926 bool WebAXObjectProxy::IsPressActionSupported() { 879 bool WebAXObjectProxy::IsPressActionSupported() {
927 accessibility_object_.updateLayoutAndCheckValidity(); 880 return accessibility_object().canPress();
928 return accessibility_object_.canPress();
929 } 881 }
930 882
931 bool WebAXObjectProxy::IsIncrementActionSupported() { 883 bool WebAXObjectProxy::IsIncrementActionSupported() {
932 accessibility_object_.updateLayoutAndCheckValidity(); 884 return accessibility_object().canIncrement();
933 return accessibility_object_.canIncrement();
934 } 885 }
935 886
936 bool WebAXObjectProxy::IsDecrementActionSupported() { 887 bool WebAXObjectProxy::IsDecrementActionSupported() {
937 accessibility_object_.updateLayoutAndCheckValidity(); 888 return accessibility_object().canDecrement();
938 return accessibility_object_.canDecrement();
939 } 889 }
940 890
941 v8::Handle<v8::Object> WebAXObjectProxy::ParentElement() { 891 v8::Handle<v8::Object> WebAXObjectProxy::ParentElement() {
942 accessibility_object_.updateLayoutAndCheckValidity(); 892 blink::WebAXObject parent_object = accessibility_object().parentObject();
943 blink::WebAXObject parent_object = accessibility_object_.parentObject();
944 while (parent_object.accessibilityIsIgnored()) 893 while (parent_object.accessibilityIsIgnored())
945 parent_object = parent_object.parentObject(); 894 parent_object = parent_object.parentObject();
946 return factory_->GetOrCreate(parent_object); 895 return factory_->GetOrCreate(parent_object);
947 } 896 }
948 897
949 void WebAXObjectProxy::Increment() { 898 void WebAXObjectProxy::Increment() {
950 accessibility_object_.updateLayoutAndCheckValidity(); 899 accessibility_object().increment();
951 accessibility_object_.increment();
952 } 900 }
953 901
954 void WebAXObjectProxy::Decrement() { 902 void WebAXObjectProxy::Decrement() {
955 accessibility_object_.updateLayoutAndCheckValidity(); 903 accessibility_object().decrement();
956 accessibility_object_.decrement();
957 } 904 }
958 905
959 void WebAXObjectProxy::ShowMenu() { 906 void WebAXObjectProxy::ShowMenu() {
960 } 907 }
961 908
962 void WebAXObjectProxy::Press() { 909 void WebAXObjectProxy::Press() {
963 accessibility_object_.updateLayoutAndCheckValidity(); 910 accessibility_object().press();
964 accessibility_object_.press();
965 } 911 }
966 912
967 bool WebAXObjectProxy::IsEqual(v8::Handle<v8::Object> proxy) { 913 bool WebAXObjectProxy::IsEqual(v8::Handle<v8::Object> proxy) {
968 WebAXObjectProxy* unwrapped_proxy = NULL; 914 WebAXObjectProxy* unwrapped_proxy = NULL;
969 if (!gin::ConvertFromV8(blink::mainThreadIsolate(), proxy, &unwrapped_proxy)) 915 if (!gin::ConvertFromV8(blink::mainThreadIsolate(), proxy, &unwrapped_proxy))
970 return false; 916 return false;
971 return unwrapped_proxy->IsEqualToObject(accessibility_object_); 917 return unwrapped_proxy->IsEqualToObject(accessibility_object_);
972 } 918 }
973 919
974 void WebAXObjectProxy::SetNotificationListener( 920 void WebAXObjectProxy::SetNotificationListener(
975 v8::Handle<v8::Function> callback) { 921 v8::Handle<v8::Function> callback) {
976 v8::Isolate* isolate = blink::mainThreadIsolate(); 922 v8::Isolate* isolate = blink::mainThreadIsolate();
977 notification_callback_.Reset(isolate, callback); 923 notification_callback_.Reset(isolate, callback);
978 } 924 }
979 925
980 void WebAXObjectProxy::UnsetNotificationListener() { 926 void WebAXObjectProxy::UnsetNotificationListener() {
981 notification_callback_.Reset(); 927 notification_callback_.Reset();
982 } 928 }
983 929
984 void WebAXObjectProxy::TakeFocus() { 930 void WebAXObjectProxy::TakeFocus() {
985 accessibility_object_.updateLayoutAndCheckValidity(); 931 accessibility_object().setFocused(true);
986 accessibility_object_.setFocused(true);
987 } 932 }
988 933
989 void WebAXObjectProxy::ScrollToMakeVisible() { 934 void WebAXObjectProxy::ScrollToMakeVisible() {
990 accessibility_object_.updateLayoutAndCheckValidity(); 935 accessibility_object().scrollToMakeVisible();
991 accessibility_object_.scrollToMakeVisible();
992 } 936 }
993 937
994 void WebAXObjectProxy::ScrollToMakeVisibleWithSubFocus(int x, int y, 938 void WebAXObjectProxy::ScrollToMakeVisibleWithSubFocus(int x, int y,
995 int width, int height) { 939 int width, int height) {
996 accessibility_object_.updateLayoutAndCheckValidity(); 940 accessibility_object().scrollToMakeVisibleWithSubFocus(
997 accessibility_object_.scrollToMakeVisibleWithSubFocus(
998 blink::WebRect(x, y, width, height)); 941 blink::WebRect(x, y, width, height));
999 } 942 }
1000 943
1001 void WebAXObjectProxy::ScrollToGlobalPoint(int x, int y) { 944 void WebAXObjectProxy::ScrollToGlobalPoint(int x, int y) {
1002 accessibility_object_.updateLayoutAndCheckValidity(); 945 accessibility_object().scrollToGlobalPoint(blink::WebPoint(x, y));
1003 accessibility_object_.scrollToGlobalPoint(blink::WebPoint(x, y));
1004 } 946 }
1005 947
1006 int WebAXObjectProxy::WordStart(int character_index) { 948 int WebAXObjectProxy::WordStart(int character_index) {
1007 accessibility_object_.updateLayoutAndCheckValidity(); 949 if (accessibility_object().role() != blink::WebAXRoleStaticText)
1008 if (accessibility_object_.role() != blink::WebAXRoleStaticText)
1009 return -1; 950 return -1;
1010 951
1011 int word_start, word_end; 952 int word_start, word_end;
1012 GetBoundariesForOneWord(accessibility_object_, character_index, 953 GetBoundariesForOneWord(accessibility_object(), character_index,
1013 word_start, word_end); 954 word_start, word_end);
1014 return word_start; 955 return word_start;
1015 } 956 }
1016 957
1017 int WebAXObjectProxy::WordEnd(int character_index) { 958 int WebAXObjectProxy::WordEnd(int character_index) {
1018 accessibility_object_.updateLayoutAndCheckValidity(); 959 if (accessibility_object().role() != blink::WebAXRoleStaticText)
1019 if (accessibility_object_.role() != blink::WebAXRoleStaticText)
1020 return -1; 960 return -1;
1021 961
1022 int word_start, word_end; 962 int word_start, word_end;
1023 GetBoundariesForOneWord(accessibility_object_, character_index, 963 GetBoundariesForOneWord(accessibility_object(), character_index,
1024 word_start, word_end); 964 word_start, word_end);
1025 return word_end; 965 return word_end;
1026 } 966 }
1027 967
1028 RootWebAXObjectProxy::RootWebAXObjectProxy( 968 RootWebAXObjectProxy::RootWebAXObjectProxy(
1029 const blink::WebAXObject &object, Factory *factory) 969 const blink::WebAXObject &object, Factory *factory)
1030 : WebAXObjectProxy(object, factory) { 970 : WebAXObjectProxy(object, factory) {
1031 } 971 }
1032 972
1033 v8::Handle<v8::Object> RootWebAXObjectProxy::GetChildAtIndex(unsigned index) { 973 v8::Handle<v8::Object> RootWebAXObjectProxy::GetChildAtIndex(unsigned index) {
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
1097 v8::Handle<v8::Value> value_handle = gin::CreateHandle( 1037 v8::Handle<v8::Value> value_handle = gin::CreateHandle(
1098 isolate, new RootWebAXObjectProxy(object, this)).ToV8(); 1038 isolate, new RootWebAXObjectProxy(object, this)).ToV8();
1099 if (value_handle.IsEmpty()) 1039 if (value_handle.IsEmpty())
1100 return v8::Handle<v8::Object>(); 1040 return v8::Handle<v8::Object>();
1101 v8::Handle<v8::Object> handle = value_handle->ToObject(); 1041 v8::Handle<v8::Object> handle = value_handle->ToObject();
1102 elements_.Append(handle); 1042 elements_.Append(handle);
1103 return handle; 1043 return handle;
1104 } 1044 }
1105 1045
1106 } // namespace content 1046 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698