~oif-team/ubuntu/natty/qt4-x11/xi2.1

« back to all changes in this revision

Viewing changes to src/3rdparty/webkit/WebCore/page/AccessibilityObject.h

  • Committer: Bazaar Package Importer
  • Author(s): Alessandro Ghersi
  • Date: 2009-11-02 18:30:08 UTC
  • mfrom: (1.2.2 upstream)
  • mto: (15.2.5 experimental)
  • mto: This revision was merged to the branch mainline in revision 88.
  • Revision ID: james.westby@ubuntu.com-20091102183008-b6a4gcs128mvfb3m
Tags: upstream-4.6.0~beta1
ImportĀ upstreamĀ versionĀ 4.6.0~beta1

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Copyright (C) 2008 Apple Inc. All rights reserved.
3
 
 * Copyright (C) 2008 Nuanti Ltd.
4
 
 *
5
 
 * Redistribution and use in source and binary forms, with or without
6
 
 * modification, are permitted provided that the following conditions
7
 
 * are met:
8
 
 *
9
 
 * 1.  Redistributions of source code must retain the above copyright
10
 
 *     notice, this list of conditions and the following disclaimer.
11
 
 * 2.  Redistributions in binary form must reproduce the above copyright
12
 
 *     notice, this list of conditions and the following disclaimer in the
13
 
 *     documentation and/or other materials provided with the distribution.
14
 
 * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
15
 
 *     its contributors may be used to endorse or promote products derived
16
 
 *     from this software without specific prior written permission.
17
 
 *
18
 
 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
19
 
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20
 
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21
 
 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
22
 
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23
 
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24
 
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25
 
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
 
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27
 
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
 
 */
29
 
 
30
 
#ifndef AccessibilityObject_h
31
 
#define AccessibilityObject_h
32
 
 
33
 
#include "VisiblePosition.h"
34
 
#include <wtf/Platform.h>
35
 
#include <wtf/RefPtr.h>
36
 
#include <wtf/Vector.h>
37
 
 
38
 
#if PLATFORM(MAC)
39
 
#include <wtf/RetainPtr.h>
40
 
#elif PLATFORM(WIN)
41
 
#include "AccessibilityObjectWrapperWin.h"
42
 
#include "COMPtr.h"
43
 
#elif PLATFORM(CHROMIUM)
44
 
#include "AccessibilityObjectWrapper.h"
45
 
#endif
46
 
 
47
 
typedef struct _NSRange NSRange;
48
 
 
49
 
#ifdef __OBJC__
50
 
@class AccessibilityObjectWrapper;
51
 
@class NSArray;
52
 
@class NSAttributedString;
53
 
@class NSData;
54
 
@class NSMutableAttributedString;
55
 
@class NSString;
56
 
@class NSValue;
57
 
@class NSView;
58
 
#else
59
 
class NSArray;
60
 
class NSAttributedString;
61
 
class NSData;
62
 
class NSMutableAttributedString;
63
 
class NSString;
64
 
class NSValue;
65
 
class NSView;
66
 
#if PLATFORM(GTK)
67
 
typedef struct _AtkObject AtkObject;
68
 
typedef struct _AtkObject AccessibilityObjectWrapper;
69
 
#else
70
 
class AccessibilityObjectWrapper;
71
 
#endif
72
 
#endif
73
 
 
74
 
namespace WebCore {
75
 
 
76
 
class AXObjectCache;
77
 
class Element;
78
 
class Frame;
79
 
class FrameView;
80
 
class HTMLAnchorElement;
81
 
class HTMLAreaElement;
82
 
class IntPoint;
83
 
class IntSize;
84
 
class Node;
85
 
class RenderObject;
86
 
class Selection;
87
 
class String;
88
 
class Widget;
89
 
 
90
 
enum AccessibilityRole {
91
 
    UnknownRole = 1,
92
 
    ButtonRole,
93
 
    RadioButtonRole,
94
 
    CheckBoxRole,
95
 
    SliderRole,
96
 
    TabGroupRole,
97
 
    TextFieldRole,
98
 
    StaticTextRole,
99
 
    TextAreaRole,
100
 
    ScrollAreaRole,
101
 
    PopUpButtonRole,
102
 
    MenuButtonRole,
103
 
    TableRole,
104
 
    ApplicationRole,
105
 
    GroupRole,
106
 
    RadioGroupRole,
107
 
    ListRole,
108
 
    ScrollBarRole,
109
 
    ValueIndicatorRole,
110
 
    ImageRole,
111
 
    MenuBarRole,
112
 
    MenuRole,
113
 
    MenuItemRole,
114
 
    ColumnRole,
115
 
    RowRole,
116
 
    ToolbarRole,
117
 
    BusyIndicatorRole,
118
 
    ProgressIndicatorRole,
119
 
    WindowRole,
120
 
    DrawerRole,
121
 
    SystemWideRole,
122
 
    OutlineRole,
123
 
    IncrementorRole,
124
 
    BrowserRole,
125
 
    ComboBoxRole,
126
 
    SplitGroupRole,
127
 
    SplitterRole,
128
 
    ColorWellRole,
129
 
    GrowAreaRole,
130
 
    SheetRole,
131
 
    HelpTagRole,
132
 
    MatteRole,
133
 
    RulerRole,
134
 
    RulerMarkerRole,
135
 
    LinkRole,
136
 
    DisclosureTriangleRole,
137
 
    GridRole,
138
 
    CellRole, 
139
 
    // AppKit includes SortButtonRole but it is misnamed and really a subrole of ButtonRole so we do not include it here.
140
 
 
141
 
    // WebCore-specific roles
142
 
    WebCoreLinkRole,
143
 
    ImageMapLinkRole,
144
 
    ImageMapRole,
145
 
    ListMarkerRole,
146
 
    WebAreaRole,
147
 
    HeadingRole,
148
 
    ListBoxRole,
149
 
    ListBoxOptionRole,
150
 
    TableHeaderContainerRole,
151
 
    DefinitionListTermRole,
152
 
    DefinitionListDefinitionRole
153
 
};
154
 
 
155
 
struct VisiblePositionRange {
156
 
 
157
 
    VisiblePosition start;
158
 
    VisiblePosition end;
159
 
 
160
 
    VisiblePositionRange() {}
161
 
 
162
 
    VisiblePositionRange(const VisiblePosition& s, const VisiblePosition& e)
163
 
        : start(s)
164
 
        , end(e)
165
 
    { }
166
 
 
167
 
    bool isNull() const { return start.isNull() || end.isNull(); }
168
 
};
169
 
 
170
 
struct PlainTextRange {
171
 
        
172
 
    unsigned start;
173
 
    unsigned length;
174
 
    
175
 
    PlainTextRange()
176
 
        : start(0)
177
 
        , length(0)
178
 
    { }
179
 
    
180
 
    PlainTextRange(unsigned s, unsigned l)
181
 
        : start(s)
182
 
        , length(l)
183
 
    { }
184
 
    
185
 
    bool isNull() const { return start == 0 && length == 0; }
186
 
};
187
 
 
188
 
class AccessibilityObject : public RefCounted<AccessibilityObject> {
189
 
protected:
190
 
    AccessibilityObject();
191
 
public:
192
 
    virtual ~AccessibilityObject();
193
 
        
194
 
    typedef Vector<RefPtr<AccessibilityObject> > AccessibilityChildrenVector;
195
 
    
196
 
    virtual bool isAccessibilityRenderObject() const { return false; };
197
 
    virtual bool isAnchor() const { return false; };
198
 
    virtual bool isAttachment() const { return false; };
199
 
    virtual bool isHeading() const { return false; };
200
 
    virtual bool isLink() const { return false; };
201
 
    virtual bool isImage() const { return false; };
202
 
    virtual bool isNativeImage() const { return false; };
203
 
    virtual bool isImageButton() const { return false; };
204
 
    virtual bool isPasswordField() const { return false; };
205
 
    virtual bool isTextControl() const { return false; };
206
 
    virtual bool isNativeTextControl() const { return false; };
207
 
    virtual bool isWebArea() const { return false; };
208
 
    virtual bool isCheckboxOrRadio() const { return false; };
209
 
    virtual bool isListBox() const { return roleValue() == ListBoxRole; };
210
 
    virtual bool isMenuRelated() const { return false; }
211
 
    virtual bool isMenu() const { return false; }
212
 
    virtual bool isMenuBar() const { return false; }
213
 
    virtual bool isMenuButton() const { return false; }
214
 
    virtual bool isMenuItem() const { return false; }
215
 
    virtual bool isFileUploadButton() const { return false; };
216
 
    virtual bool isProgressIndicator() const { return false; };
217
 
    virtual bool isSlider() const { return false; };
218
 
    virtual bool isControl() const { return false; };
219
 
    virtual bool isList() const { return false; };
220
 
    virtual bool isDataTable() const { return false; };
221
 
    virtual bool isTableRow() const { return false; };
222
 
    virtual bool isTableColumn() const { return false; };
223
 
    virtual bool isTableCell() const { return false; };
224
 
    virtual bool isFieldset() const { return false; };
225
 
    virtual bool isGroup() const { return false; };
226
 
    
227
 
    virtual bool isChecked() const { return false; };
228
 
    virtual bool isEnabled() const { return false; };
229
 
    virtual bool isSelected() const { return false; };
230
 
    virtual bool isFocused() const { return false; };
231
 
    virtual bool isHovered() const { return false; };
232
 
    virtual bool isIndeterminate() const { return false; };
233
 
    virtual bool isLoaded() const { return false; };
234
 
    virtual bool isMultiSelect() const { return false; };
235
 
    virtual bool isOffScreen() const { return false; };
236
 
    virtual bool isPressed() const { return false; };
237
 
    virtual bool isReadOnly() const { return false; };
238
 
    virtual bool isVisited() const { return false; };
239
 
 
240
 
    virtual bool canSetFocusAttribute() const { return false; };
241
 
    virtual bool canSetTextRangeAttributes() const { return false; };
242
 
    virtual bool canSetValueAttribute() const { return false; };
243
 
    virtual bool canSetSelectedAttribute() const { return false; }
244
 
    virtual bool canSetSelectedChildrenAttribute() const { return false; }
245
 
    
246
 
    virtual bool hasIntValue() const { return false; };
247
 
 
248
 
    bool accessibilityShouldUseUniqueId() const { return true; };
249
 
    virtual bool accessibilityIsIgnored() const  { return true; };
250
 
 
251
 
    virtual int intValue() const;
252
 
    virtual float valueForRange() const { return 0.0f; }
253
 
    virtual float maxValueForRange() const { return 0.0f; }
254
 
    virtual float minValueForRange() const {return 0.0f; }
255
 
    virtual int layoutCount() const;
256
 
    static bool isARIAControl(AccessibilityRole);
257
 
    static bool isARIAInput(AccessibilityRole);
258
 
    unsigned axObjectID() const;
259
 
    
260
 
    virtual AccessibilityObject* doAccessibilityHitTest(const IntPoint&) const;
261
 
    virtual AccessibilityObject* focusedUIElement() const;
262
 
    virtual AccessibilityObject* firstChild() const;
263
 
    virtual AccessibilityObject* lastChild() const;
264
 
    virtual AccessibilityObject* previousSibling() const;
265
 
    virtual AccessibilityObject* nextSibling() const;
266
 
    virtual AccessibilityObject* parentObject() const;
267
 
    virtual AccessibilityObject* parentObjectUnignored() const;
268
 
    virtual AccessibilityObject* observableObject() const;
269
 
    virtual void linkedUIElements(AccessibilityChildrenVector&) const;
270
 
    virtual AccessibilityObject* titleUIElement() const;
271
 
    virtual AccessibilityRole ariaRoleAttribute() const;
272
 
    virtual bool isPresentationalChildOfAriaRole() const;
273
 
    virtual bool ariaRoleHasPresentationalChildren() const;
274
 
 
275
 
    virtual AccessibilityRole roleValue() const;
276
 
    virtual AXObjectCache* axObjectCache() const;
277
 
    
278
 
    virtual Element* anchorElement() const;
279
 
    virtual Element* actionElement() const;
280
 
    virtual IntRect boundingBoxRect() const;
281
 
    virtual IntRect elementRect() const;
282
 
    virtual IntSize size() const;
283
 
    IntPoint clickPoint() const;
284
 
    
285
 
    virtual KURL url() const;
286
 
    virtual PlainTextRange selectedTextRange() const;
287
 
    virtual Selection selection() const;
288
 
    unsigned selectionStart() const;
289
 
    unsigned selectionEnd() const;
290
 
    virtual String stringValue() const;
291
 
    virtual String ariaAccessiblityName(const String&) const;
292
 
    virtual String ariaLabeledByAttribute() const;
293
 
    virtual String title() const;
294
 
    virtual String ariaDescribedByAttribute() const;
295
 
    virtual String accessibilityDescription() const;
296
 
    virtual String helpText() const;
297
 
    virtual String textUnderElement() const;
298
 
    virtual String text() const;
299
 
    virtual int textLength() const;
300
 
    virtual PassRefPtr<Range> ariaSelectedTextDOMRange() const;
301
 
    virtual String selectedText() const;
302
 
    virtual const AtomicString& accessKey() const;
303
 
    const String& actionVerb() const;
304
 
    virtual Widget* widget() const;
305
 
    virtual Widget* widgetForAttachmentView() const;
306
 
    virtual Document* document() const { return 0; }
307
 
    virtual FrameView* topDocumentFrameView() const { return 0; }
308
 
    virtual FrameView* documentFrameView() const;
309
 
 
310
 
    void setAXObjectID(unsigned);
311
 
    virtual void setFocused(bool);
312
 
    virtual void setSelectedText(const String&);
313
 
    virtual void setSelectedTextRange(const PlainTextRange&);
314
 
    virtual void setValue(const String&);
315
 
    virtual void setSelected(bool);
316
 
    
317
 
    virtual void detach();
318
 
    virtual void makeRangeVisible(const PlainTextRange&);
319
 
    virtual bool press() const;
320
 
    bool performDefaultAction() const { return press(); }
321
 
    
322
 
    virtual void childrenChanged();
323
 
    virtual const AccessibilityChildrenVector& children() { return m_children; }
324
 
    virtual void addChildren();
325
 
    virtual bool canHaveChildren() const { return true; }
326
 
    virtual bool hasChildren() const { return m_haveChildren; };
327
 
    virtual void selectedChildren(AccessibilityChildrenVector&);
328
 
    virtual void visibleChildren(AccessibilityChildrenVector&);
329
 
    virtual bool shouldFocusActiveDescendant() const { return false; }
330
 
    virtual AccessibilityObject* activeDescendant() const { return 0; }    
331
 
    virtual void handleActiveDescendantChanged() { }
332
 
 
333
 
    virtual VisiblePositionRange visiblePositionRange() const;
334
 
    virtual VisiblePositionRange visiblePositionRangeForLine(unsigned) const;
335
 
    
336
 
    VisiblePositionRange visiblePositionRangeForUnorderedPositions(const VisiblePosition&, const VisiblePosition&) const;
337
 
    VisiblePositionRange positionOfLeftWord(const VisiblePosition&) const;
338
 
    VisiblePositionRange positionOfRightWord(const VisiblePosition&) const;
339
 
    VisiblePositionRange leftLineVisiblePositionRange(const VisiblePosition&) const;
340
 
    VisiblePositionRange rightLineVisiblePositionRange(const VisiblePosition&) const;
341
 
    VisiblePositionRange sentenceForPosition(const VisiblePosition&) const;
342
 
    VisiblePositionRange paragraphForPosition(const VisiblePosition&) const;
343
 
    VisiblePositionRange styleRangeForPosition(const VisiblePosition&) const;
344
 
    VisiblePositionRange visiblePositionRangeForRange(const PlainTextRange&) const;
345
 
 
346
 
    String stringForVisiblePositionRange(const VisiblePositionRange&) const;
347
 
    virtual IntRect boundsForVisiblePositionRange(const VisiblePositionRange&) const;    
348
 
    int lengthForVisiblePositionRange(const VisiblePositionRange&) const;
349
 
    virtual void setSelectedVisiblePositionRange(const VisiblePositionRange&) const;
350
 
 
351
 
    virtual VisiblePosition visiblePositionForPoint(const IntPoint&) const;
352
 
    VisiblePosition nextVisiblePosition(const VisiblePosition&) const;
353
 
    VisiblePosition previousVisiblePosition(const VisiblePosition&) const;
354
 
    VisiblePosition nextWordEnd(const VisiblePosition&) const;
355
 
    VisiblePosition previousWordStart(const VisiblePosition&) const;
356
 
    VisiblePosition nextLineEndPosition(const VisiblePosition&) const;
357
 
    VisiblePosition previousLineStartPosition(const VisiblePosition&) const;
358
 
    VisiblePosition nextSentenceEndPosition(const VisiblePosition&) const;
359
 
    VisiblePosition previousSentenceStartPosition(const VisiblePosition&) const;
360
 
    VisiblePosition nextParagraphEndPosition(const VisiblePosition&) const;
361
 
    VisiblePosition previousParagraphStartPosition(const VisiblePosition&) const;
362
 
    virtual VisiblePosition visiblePositionForIndex(unsigned indexValue, bool lastIndexOK) const;
363
 
    
364
 
    virtual VisiblePosition visiblePositionForIndex(int) const;
365
 
    virtual int indexForVisiblePosition(const VisiblePosition&) const;
366
 
 
367
 
    AccessibilityObject* accessibilityObjectForPosition(const VisiblePosition&) const;
368
 
    int lineForPosition(const VisiblePosition&) const;
369
 
    PlainTextRange plainTextRangeForVisiblePositionRange(const VisiblePositionRange&) const;
370
 
    virtual int index(const VisiblePosition&) const;
371
 
 
372
 
    virtual PlainTextRange doAXRangeForLine(unsigned) const;
373
 
    PlainTextRange doAXRangeForPosition(const IntPoint&) const;
374
 
    virtual PlainTextRange doAXRangeForIndex(unsigned) const;
375
 
    PlainTextRange doAXStyleRangeForIndex(unsigned) const;
376
 
 
377
 
    virtual String doAXStringForRange(const PlainTextRange&) const;
378
 
    virtual IntRect doAXBoundsForRange(const PlainTextRange&) const;
379
 
 
380
 
    unsigned doAXLineForIndex(unsigned);
381
 
 
382
 
#if HAVE(ACCESSIBILITY)
383
 
#if PLATFORM(GTK)
384
 
    AccessibilityObjectWrapper* wrapper() const;
385
 
    void setWrapper(AccessibilityObjectWrapper*);
386
 
#else
387
 
    AccessibilityObjectWrapper* wrapper() const { return m_wrapper.get(); }
388
 
    void setWrapper(AccessibilityObjectWrapper* wrapper) 
389
 
    {
390
 
        m_wrapper = wrapper;
391
 
    }
392
 
#endif
393
 
#endif
394
 
 
395
 
    // a platform-specific method for determining if an attachment is ignored
396
 
#if HAVE(ACCESSIBILITY)
397
 
    bool accessibilityIgnoreAttachment() const;
398
 
#else
399
 
    bool accessibilityIgnoreAttachment() const { return true; }
400
 
#endif
401
 
 
402
 
protected:
403
 
    unsigned m_id;
404
 
    AccessibilityChildrenVector m_children;
405
 
    mutable bool m_haveChildren;
406
 
    
407
 
    virtual void clearChildren();
408
 
    virtual void removeAXObjectID();
409
 
    virtual bool isDetached() const { return true; }
410
 
 
411
 
#if PLATFORM(MAC)
412
 
    RetainPtr<AccessibilityObjectWrapper> m_wrapper;
413
 
#elif PLATFORM(WIN)
414
 
    COMPtr<AccessibilityObjectWrapper> m_wrapper;
415
 
#elif PLATFORM(GTK)
416
 
    AtkObject* m_wrapper;
417
 
#elif PLATFORM(CHROMIUM)
418
 
    RefPtr<AccessibilityObjectWrapper> m_wrapper;
419
 
#endif
420
 
};
421
 
 
422
 
} // namespace WebCore
423
 
 
424
 
#endif // AccessibilityObject_h