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

Side by Side Diff: Source/modules/accessibility/AXObject.h

Issue 1185343003: Implements the ability to get and set the caret position and the current selection from anywhere in… (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fixed some compiler errors. Created 5 years, 6 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) 2008, 2009, 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2008, 2009, 2011 Apple Inc. All rights reserved.
3 * Copyright (C) 2008 Nuanti Ltd. 3 * Copyright (C) 2008 Nuanti Ltd.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 8 *
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 IgnoredReason(AXIgnoredReason r, const AXObject* obj) 348 IgnoredReason(AXIgnoredReason r, const AXObject* obj)
349 : reason(r) 349 : reason(r)
350 , relatedObject(obj) 350 , relatedObject(obj)
351 { } 351 { }
352 }; 352 };
353 353
354 class MODULES_EXPORT AXObject : public RefCounted<AXObject> { 354 class MODULES_EXPORT AXObject : public RefCounted<AXObject> {
355 public: 355 public:
356 typedef Vector<RefPtr<AXObject>> AccessibilityChildrenVector; 356 typedef Vector<RefPtr<AXObject>> AccessibilityChildrenVector;
357 357
358 struct PlainTextRange { 358 struct AXRange {
359 // The deepest descendant in which the range starts.
360 // (nullptr means the current object.)
361 RefPtrWillBePersistent<AXObject> anchorObject;
362 // The number of characters and child objects in the anchor object
363 // before the range starts.
364 int anchorOffset;
365 // The deepest descendant in which the range ends.
366 // (nullptr means the current object.)
367 RefPtrWillBePersistent<AXObject> focusObject;
368 // The number of characters and child objects in the focus object
369 // before the range ends.
370 int focusOffset;
359 371
360 unsigned start; 372 AXRange()
361 unsigned length; 373 : anchorObject(nullptr)
362 374 , anchorOffset(-1)
363 PlainTextRange() 375 , focusObject(nullptr)
364 : start(0) 376 , focusOffset(-1)
365 , length(0)
366 { } 377 { }
367 378
368 PlainTextRange(unsigned s, unsigned l) 379 AXRange(int startOffset, int endOffset)
369 : start(s) 380 : anchorObject(nullptr)
370 , length(l) 381 , anchorOffset(startOffset)
382 , focusObject(nullptr)
383 , focusOffset(endOffset)
371 { } 384 { }
372 385
373 bool isNull() const { return !start && !length; } 386 AXRange(PassRefPtrWillBeRawPtr<AXObject> anchorObject, int anchorOffset,
387 PassRefPtrWillBeRawPtr<AXObject> focusObject, int focusOffset)
388 : anchorObject(anchorObject)
389 , anchorOffset(anchorOffset)
390 , focusObject(focusObject)
391 , focusOffset(focusOffset)
392 { }
393
394 bool isNull() const { return anchorOffset < 0 || focusOffset < 0; }
395 // Determines if the range only refers to text offsets under the current object.
396 bool isSimple() const { return !anchorObject || !focusObject; }
374 }; 397 };
375 398
376 protected: 399 protected:
377 AXObject(AXObjectCacheImpl*); 400 AXObject(AXObjectCacheImpl*);
378 401
379 public: 402 public:
380 virtual ~AXObject(); 403 virtual ~AXObject();
381 404
382 // After constructing an AXObject, it must be given a 405 // After constructing an AXObject, it must be given a
383 // unique ID, then added to AXObjectCacheImpl, and finally init() must 406 // unique ID, then added to AXObjectCacheImpl, and finally init() must
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
576 599
577 // Walk the AXObjects on the same line. This is supported on any 600 // Walk the AXObjects on the same line. This is supported on any
578 // object type but primarily intended to be used for inline text boxes. 601 // object type but primarily intended to be used for inline text boxes.
579 virtual AXObject* nextOnLine() const { return nullptr; } 602 virtual AXObject* nextOnLine() const { return nullptr; }
580 virtual AXObject* previousOnLine() const { return nullptr; } 603 virtual AXObject* previousOnLine() const { return nullptr; }
581 604
582 // For an inline text box. 605 // For an inline text box.
583 // The integer horizontal pixel offset of each character in the string; nega tive values for RTL. 606 // The integer horizontal pixel offset of each character in the string; nega tive values for RTL.
584 virtual void textCharacterOffsets(Vector<int>&) const { } 607 virtual void textCharacterOffsets(Vector<int>&) const { }
585 // The start and end character offset of each word in the inline text box. 608 // The start and end character offset of each word in the inline text box.
586 virtual void wordBoundaries(Vector<PlainTextRange>& words) const { } 609 virtual void wordBoundaries(Vector<AXRange>& words) const { }
587 610
588 // Properties of interactive elements. 611 // Properties of interactive elements.
589 virtual String actionVerb() const; 612 virtual String actionVerb() const;
590 virtual AccessibilityButtonState checkboxOrRadioValue() const; 613 virtual AccessibilityButtonState checkboxOrRadioValue() const;
591 virtual InvalidState invalidState() const { return InvalidStateUndefined; } 614 virtual InvalidState invalidState() const { return InvalidStateUndefined; }
592 // Only used when invalidState() returns InvalidStateOther. 615 // Only used when invalidState() returns InvalidStateOther.
593 virtual String ariaInvalidValue() const { return String(); } 616 virtual String ariaInvalidValue() const { return String(); }
594 virtual String valueDescription() const { return String(); } 617 virtual String valueDescription() const { return String(); }
595 virtual float valueForRange() const { return 0.0f; } 618 virtual float valueForRange() const { return 0.0f; }
596 virtual float maxValueForRange() const { return 0.0f; } 619 virtual float maxValueForRange() const { return 0.0f; }
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
690 virtual LayoutObject* layoutObject() const { return 0; } 713 virtual LayoutObject* layoutObject() const { return 0; }
691 virtual Document* document() const; 714 virtual Document* document() const;
692 virtual FrameView* documentFrameView() const; 715 virtual FrameView* documentFrameView() const;
693 virtual Element* anchorElement() const { return 0; } 716 virtual Element* anchorElement() const { return 0; }
694 virtual Element* actionElement() const { return 0; } 717 virtual Element* actionElement() const { return 0; }
695 virtual Widget* widgetForAttachmentView() const { return 0; } 718 virtual Widget* widgetForAttachmentView() const { return 0; }
696 String language() const; 719 String language() const;
697 bool hasAttribute(const QualifiedName&) const; 720 bool hasAttribute(const QualifiedName&) const;
698 const AtomicString& getAttribute(const QualifiedName&) const; 721 const AtomicString& getAttribute(const QualifiedName&) const;
699 722
700 // Selected text. 723 //
701 virtual PlainTextRange selectedTextRange() const { return PlainTextRange(); } 724 // Methods that retrieve or manipulate the current selection.
725 //
726
727 // Get the current selection from anywhere in the accessibility tree.
728 virtual AXRange selection() const { return AXRange(); }
729 // Gets only the start and end offsets of the selection computed using the
730 // current object as the starting point. Returns a null selection if there i s
731 // no selection in the subtree rooted at this object.
732 virtual AXRange selectionUnderObject() const { return AXRange(); }
733 virtual void setSelection(const AXRange&) { }
702 734
703 // Scrollable containers. 735 // Scrollable containers.
704 bool isScrollableContainer() const; 736 bool isScrollableContainer() const;
705 IntPoint scrollOffset() const; 737 IntPoint scrollOffset() const;
706 IntPoint minimumScrollOffset() const; 738 IntPoint minimumScrollOffset() const;
707 IntPoint maximumScrollOffset() const; 739 IntPoint maximumScrollOffset() const;
708 void setScrollOffset(const IntPoint&) const; 740 void setScrollOffset(const IntPoint&) const;
709 741
710 // If this object itself scrolls, return its ScrollableArea. 742 // If this object itself scrolls, return its ScrollableArea.
711 virtual ScrollableArea* getScrollableAreaIfScrollable() const { return 0; } 743 virtual ScrollableArea* getScrollableAreaIfScrollable() const { return 0; }
712 744
713 // Modify or take an action on an object. 745 // Modify or take an action on an object.
714 virtual void increment() { } 746 virtual void increment() { }
715 virtual void decrement() { } 747 virtual void decrement() { }
716 bool performDefaultAction() const { return press(); } 748 bool performDefaultAction() const { return press(); }
717 virtual bool press() const; 749 virtual bool press() const;
718 // Make this object visible by scrolling as many nested scrollable views as needed. 750 // Make this object visible by scrolling as many nested scrollable views as needed.
719 void scrollToMakeVisible() const; 751 void scrollToMakeVisible() const;
720 // Same, but if the whole object can't be made visible, try for this subrect , in local coordinates. 752 // Same, but if the whole object can't be made visible, try for this subrect , in local coordinates.
721 void scrollToMakeVisibleWithSubFocus(const IntRect&) const; 753 void scrollToMakeVisibleWithSubFocus(const IntRect&) const;
722 // Scroll this object to a given point in global coordinates of the top-leve l window. 754 // Scroll this object to a given point in global coordinates of the top-leve l window.
723 void scrollToGlobalPoint(const IntPoint&) const; 755 void scrollToGlobalPoint(const IntPoint&) const;
724 virtual void setFocused(bool) { } 756 virtual void setFocused(bool) { }
725 virtual void setSelected(bool) { } 757 virtual void setSelected(bool) { }
726 void setSelectedText(const String&) { } 758 void setSelectedText(const String&) { }
727 virtual void setSelectedTextRange(const PlainTextRange&) { }
728 virtual void setValue(const String&) { } 759 virtual void setValue(const String&) { }
729 virtual void setValue(float) { } 760 virtual void setValue(float) { }
730 761
731 // Notifications that this object may have changed. 762 // Notifications that this object may have changed.
732 virtual void childrenChanged() { } 763 virtual void childrenChanged() { }
733 virtual void handleActiveDescendantChanged() { } 764 virtual void handleActiveDescendantChanged() { }
734 virtual void handleAriaExpandedChanged() { } 765 virtual void handleAriaExpandedChanged() { }
735 void notifyIfIgnoredValueChanged(); 766 void notifyIfIgnoredValueChanged();
736 virtual void selectionChanged(); 767 virtual void selectionChanged();
737 virtual void textChanged() { } 768 virtual void textChanged() { }
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
793 static bool includesARIAWidgetRole(const String&); 824 static bool includesARIAWidgetRole(const String&);
794 static bool hasInteractiveARIAAttribute(const Element&); 825 static bool hasInteractiveARIAAttribute(const Element&);
795 }; 826 };
796 827
797 #define DEFINE_AX_OBJECT_TYPE_CASTS(thisType, predicate) \ 828 #define DEFINE_AX_OBJECT_TYPE_CASTS(thisType, predicate) \
798 DEFINE_TYPE_CASTS(thisType, AXObject, object, object->predicate, object.pred icate) 829 DEFINE_TYPE_CASTS(thisType, AXObject, object, object->predicate, object.pred icate)
799 830
800 } // namespace blink 831 } // namespace blink
801 832
802 #endif // AXObject_h 833 #endif // AXObject_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698