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

Side by Side Diff: Source/core/accessibility/AccessibilityRenderObject.h

Issue 14740025: Simplify and add caching for accessible bounding box calculation. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Update comment Created 7 years, 7 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) 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2008 Apple 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 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 class VisibleSelection; 56 class VisibleSelection;
57 class Widget; 57 class Widget;
58 58
59 class AccessibilityRenderObject : public AccessibilityNodeObject { 59 class AccessibilityRenderObject : public AccessibilityNodeObject {
60 protected: 60 protected:
61 explicit AccessibilityRenderObject(RenderObject*); 61 explicit AccessibilityRenderObject(RenderObject*);
62 public: 62 public:
63 static PassRefPtr<AccessibilityRenderObject> create(RenderObject*); 63 static PassRefPtr<AccessibilityRenderObject> create(RenderObject*);
64 virtual ~AccessibilityRenderObject(); 64 virtual ~AccessibilityRenderObject();
65 65
66 RenderObject* m_renderer;
67
68 // Public, overridden from AccessibilityObject. 66 // Public, overridden from AccessibilityObject.
69 virtual RenderObject* renderer() const { return m_renderer; } 67 virtual RenderObject* renderer() const { return m_renderer; }
70 virtual LayoutRect elementRect() const; 68 virtual LayoutRect elementRect();
Julien - ping for review 2013/05/03 20:54:20 FWIW I would have kept this const because you stil
dmazzoni 2013/05/06 04:58:01 Great idea, that simplifies things a lot.
71 69
72 // DEPRECATED - investigate and remove. 70 // DEPRECATED - investigate and remove.
73 virtual int layoutCount() const; 71 virtual int layoutCount() const;
74 72
75 void setRenderer(RenderObject*); 73 void setRenderer(RenderObject*);
76 RenderBoxModelObject* renderBoxModelObject() const; 74 RenderBoxModelObject* renderBoxModelObject() const;
77 RenderView* topRenderer() const; 75 RenderView* topRenderer() const;
78 Document* topDocument() const; 76 Document* topDocument() const;
79 HTMLLabelElement* labelElementContainer() const; 77 HTMLLabelElement* labelElementContainer() const;
80 bool shouldNotifyActiveDescendant() const; 78 bool shouldNotifyActiveDescendant() const;
81 bool needsToUpdateChildren() const { return m_childrenDirty; } 79 bool needsToUpdateChildren() const { return m_childrenDirty; }
82 ScrollableArea* getScrollableAreaIfScrollable() const; 80 ScrollableArea* getScrollableAreaIfScrollable() const;
83 virtual AccessibilityRole determineAccessibilityRole(); 81 virtual AccessibilityRole determineAccessibilityRole();
84 82
85 protected: 83 protected:
84 RenderObject* m_renderer;
85 LayoutRect m_cachedElementRect;
86 LayoutRect m_cachedFrameRect;
87 bool m_cachedElementRectDirty;
88
86 // 89 //
87 // Overridden from AccessibilityObject. 90 // Overridden from AccessibilityObject.
88 // 91 //
89 92
90 virtual void init(); 93 virtual void init();
91 virtual void detach(); 94 virtual void detach();
92 virtual bool isDetached() const { return !m_renderer; } 95 virtual bool isDetached() const { return !m_renderer; }
93 virtual bool isAccessibilityRenderObject() const { return true; } 96 virtual bool isAccessibilityRenderObject() const { return true; }
94 97
95 // Check object role or purpose. 98 // Check object role or purpose.
(...skipping 27 matching lines...) Expand all
123 // Whether objects are ignored, i.e. not included in the tree. 126 // Whether objects are ignored, i.e. not included in the tree.
124 virtual AccessibilityObjectInclusion defaultObjectInclusion() const; 127 virtual AccessibilityObjectInclusion defaultObjectInclusion() const;
125 virtual bool computeAccessibilityIsIgnored() const; 128 virtual bool computeAccessibilityIsIgnored() const;
126 129
127 // Properties of static elements. 130 // Properties of static elements.
128 virtual const AtomicString& accessKey() const; 131 virtual const AtomicString& accessKey() const;
129 virtual AccessibilityObject* correspondingControlForLabelElement() const; 132 virtual AccessibilityObject* correspondingControlForLabelElement() const;
130 virtual AccessibilityObject* correspondingLabelForControlElement() const; 133 virtual AccessibilityObject* correspondingLabelForControlElement() const;
131 virtual bool exposesTitleUIElement() const; 134 virtual bool exposesTitleUIElement() const;
132 virtual void linkedUIElements(AccessibilityChildrenVector&) const; 135 virtual void linkedUIElements(AccessibilityChildrenVector&) const;
133 virtual AccessibilityOrientation orientation() const; 136 virtual AccessibilityOrientation orientation();
134 virtual void tabChildren(AccessibilityChildrenVector&); 137 virtual void tabChildren(AccessibilityChildrenVector&);
135 virtual String text() const; 138 virtual String text() const;
136 virtual int textLength() const; 139 virtual int textLength() const;
137 virtual AccessibilityObject* titleUIElement() const; 140 virtual AccessibilityObject* titleUIElement() const;
138 virtual KURL url() const; 141 virtual KURL url() const;
139 virtual void visibleChildren(AccessibilityChildrenVector&); 142 virtual void visibleChildren(AccessibilityChildrenVector&);
140 143
141 // Properties of interactive elements. 144 // Properties of interactive elements.
142 virtual const String& actionVerb() const; 145 virtual const String& actionVerb() const;
143 LayoutRect checkboxOrRadioRect() const;
144 virtual void selectedChildren(AccessibilityChildrenVector&); 146 virtual void selectedChildren(AccessibilityChildrenVector&);
145 virtual String stringValue() const; 147 virtual String stringValue() const;
146 148
147 // ARIA attributes. 149 // ARIA attributes.
148 virtual AccessibilityObject* activeDescendant() const; 150 virtual AccessibilityObject* activeDescendant() const;
149 virtual void ariaFlowToElements(AccessibilityChildrenVector&) const; 151 virtual void ariaFlowToElements(AccessibilityChildrenVector&) const;
150 virtual bool ariaHasPopup() const; 152 virtual bool ariaHasPopup() const;
151 virtual void ariaOwnsElements(AccessibilityChildrenVector&) const; 153 virtual void ariaOwnsElements(AccessibilityChildrenVector&) const;
152 virtual bool ariaRoleHasPresentationalChildren() const; 154 virtual bool ariaRoleHasPresentationalChildren() const;
153 virtual void determineARIADropEffects(Vector<String>&); 155 virtual void determineARIADropEffects(Vector<String>&);
(...skipping 10 matching lines...) Expand all
164 virtual const AtomicString& ariaLiveRegionRelevant() const; 166 virtual const AtomicString& ariaLiveRegionRelevant() const;
165 virtual bool ariaLiveRegionAtomic() const; 167 virtual bool ariaLiveRegionAtomic() const;
166 virtual bool ariaLiveRegionBusy() const; 168 virtual bool ariaLiveRegionBusy() const;
167 169
168 // Accessibility Text. 170 // Accessibility Text.
169 virtual String textUnderElement() const; 171 virtual String textUnderElement() const;
170 172
171 // Accessibility Text - (To be deprecated). 173 // Accessibility Text - (To be deprecated).
172 virtual String helpText() const; 174 virtual String helpText() const;
173 175
174 // Position and size. 176 // Location and click point in frame-relative coordinates.
175 virtual LayoutRect boundingBoxRect() const; 177 virtual void updateCachedElementRect();
178 virtual void markCachedElementRectDirty();
176 virtual IntPoint clickPoint(); 179 virtual IntPoint clickPoint();
177 180
178 // Hit testing. 181 // Hit testing.
179 virtual AccessibilityObject* accessibilityHitTest(const IntPoint&) const; 182 virtual AccessibilityObject* accessibilityHitTest(const IntPoint&) const;
180 virtual AccessibilityObject* elementAccessibilityHitTest(const IntPoint&) co nst; 183 virtual AccessibilityObject* elementAccessibilityHitTest(const IntPoint&);
181 184
182 // High-level accessibility tree access. Other modules should only use these functions. 185 // High-level accessibility tree access. Other modules should only use these functions.
183 virtual AccessibilityObject* parentObject() const; 186 virtual AccessibilityObject* parentObject() const;
184 virtual AccessibilityObject* parentObjectIfExists() const; 187 virtual AccessibilityObject* parentObjectIfExists() const;
185 188
186 // Low-level accessibility tree exploration, only for use within the accessi bility module. 189 // Low-level accessibility tree exploration, only for use within the accessi bility module.
187 virtual AccessibilityObject* firstChild() const; 190 virtual AccessibilityObject* firstChild() const;
188 virtual AccessibilityObject* lastChild() const; 191 virtual AccessibilityObject* lastChild() const;
189 virtual AccessibilityObject* previousSibling() const; 192 virtual AccessibilityObject* previousSibling() const;
190 virtual AccessibilityObject* nextSibling() const; 193 virtual AccessibilityObject* nextSibling() const;
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 void addRadioButtonGroupMembers(AccessibilityChildrenVector& linkedUIElement s) const; 257 void addRadioButtonGroupMembers(AccessibilityChildrenVector& linkedUIElement s) const;
255 AccessibilityObject* internalLinkElement() const; 258 AccessibilityObject* internalLinkElement() const;
256 AccessibilityObject* accessibilityImageMapHitTest(HTMLAreaElement*, const In tPoint&) const; 259 AccessibilityObject* accessibilityImageMapHitTest(HTMLAreaElement*, const In tPoint&) const;
257 AccessibilityObject* accessibilityParentForImageMap(HTMLMapElement*) const; 260 AccessibilityObject* accessibilityParentForImageMap(HTMLMapElement*) const;
258 bool renderObjectIsObservable(RenderObject*) const; 261 bool renderObjectIsObservable(RenderObject*) const;
259 RenderObject* renderParentObject() const; 262 RenderObject* renderParentObject() const;
260 bool isDescendantOfElementType(const QualifiedName& tagName) const; 263 bool isDescendantOfElementType(const QualifiedName& tagName) const;
261 bool isSVGImage() const; 264 bool isSVGImage() const;
262 void detachRemoteSVGRoot(); 265 void detachRemoteSVGRoot();
263 AccessibilitySVGRoot* remoteSVGRootElement() const; 266 AccessibilitySVGRoot* remoteSVGRootElement() const;
264 AccessibilityObject* remoteSVGElementHitTest(const IntPoint&) const; 267 AccessibilityObject* remoteSVGElementHitTest(const IntPoint&);
265 void offsetBoundingBoxForRemoteSVGElement(LayoutRect&) const; 268 void offsetBoundingBoxForRemoteSVGElement(LayoutRect&) const;
266 void addHiddenChildren(); 269 void addHiddenChildren();
267 void addTextFieldChildren(); 270 void addTextFieldChildren();
268 void addImageMapChildren(); 271 void addImageMapChildren();
269 void addCanvasChildren(); 272 void addCanvasChildren();
270 void addAttachmentChildren(); 273 void addAttachmentChildren();
271 void addRemoteSVGChildren(); 274 void addRemoteSVGChildren();
272 void ariaSelectedRows(AccessibilityChildrenVector&); 275 void ariaSelectedRows(AccessibilityChildrenVector&);
273 bool elementAttributeValue(const QualifiedName&) const; 276 bool elementAttributeValue(const QualifiedName&) const;
274 bool inheritsPresentationalRole() const; 277 bool inheritsPresentationalRole() const;
278 LayoutRect computeElementRect();
Julien - ping for review 2013/05/03 20:54:20 This method should really be const as you wouldn't
dmazzoni 2013/05/06 04:58:01 Done.
275 }; 279 };
276 280
277 inline AccessibilityRenderObject* toAccessibilityRenderObject(AccessibilityObjec t* object) 281 inline AccessibilityRenderObject* toAccessibilityRenderObject(AccessibilityObjec t* object)
278 { 282 {
279 ASSERT_WITH_SECURITY_IMPLICATION(!object || object->isAccessibilityRenderObj ect()); 283 ASSERT_WITH_SECURITY_IMPLICATION(!object || object->isAccessibilityRenderObj ect());
280 return static_cast<AccessibilityRenderObject*>(object); 284 return static_cast<AccessibilityRenderObject*>(object);
281 } 285 }
282 286
283 inline const AccessibilityRenderObject* toAccessibilityRenderObject(const Access ibilityObject* object) 287 inline const AccessibilityRenderObject* toAccessibilityRenderObject(const Access ibilityObject* object)
284 { 288 {
285 ASSERT_WITH_SECURITY_IMPLICATION(!object || object->isAccessibilityRenderObj ect()); 289 ASSERT_WITH_SECURITY_IMPLICATION(!object || object->isAccessibilityRenderObj ect());
286 return static_cast<const AccessibilityRenderObject*>(object); 290 return static_cast<const AccessibilityRenderObject*>(object);
287 } 291 }
288 292
289 // This will catch anyone doing an unnecessary cast. 293 // This will catch anyone doing an unnecessary cast.
290 void toAccessibilityRenderObject(const AccessibilityRenderObject*); 294 void toAccessibilityRenderObject(const AccessibilityRenderObject*);
291 295
292 } // namespace WebCore 296 } // namespace WebCore
293 297
294 #endif // AccessibilityRenderObject_h 298 #endif // AccessibilityRenderObject_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698