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

Side by Side Diff: Source/web/WebAccessibilityObject.cpp

Issue 23726007: Remove old accessibility enums, finish renaming public interface. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Remove unnecessary include Created 7 years, 3 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
(Empty)
1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met:
7 *
8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above
11 * copyright notice, this list of conditions and the following disclaimer
12 * in the documentation and/or other materials provided with the
13 * distribution.
14 * * Neither the name of Google Inc. nor the names of its
15 * contributors may be used to endorse or promote products derived from
16 * this software without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31 #include "config.h"
32 #include "WebAccessibilityObject.h"
33
34 #include "HTMLNames.h"
35 #include "WebDocument.h"
36 #include "WebNode.h"
37 #include "core/accessibility/AXObjectCache.h"
38 #include "core/accessibility/AccessibilityObject.h"
39 #include "core/accessibility/AccessibilityTable.h"
40 #include "core/accessibility/AccessibilityTableCell.h"
41 #include "core/accessibility/AccessibilityTableColumn.h"
42 #include "core/accessibility/AccessibilityTableRow.h"
43 #include "core/css/CSSPrimitiveValueMappings.h"
44 #include "core/dom/Document.h"
45 #include "core/dom/Node.h"
46 #include "core/page/EventHandler.h"
47 #include "core/page/FrameView.h"
48 #include "core/platform/PlatformKeyboardEvent.h"
49 #include "core/rendering/style/RenderStyle.h"
50 #include "public/platform/WebPoint.h"
51 #include "public/platform/WebRect.h"
52 #include "public/platform/WebString.h"
53 #include "public/platform/WebURL.h"
54 #include "wtf/text/StringBuilder.h"
55
56 using namespace WebCore;
57
58 namespace WebKit {
59
60 void WebAccessibilityObject::reset()
61 {
62 m_private.reset();
63 }
64
65 void WebAccessibilityObject::assign(const WebKit::WebAccessibilityObject& other)
66 {
67 m_private = other.m_private;
68 }
69
70 bool WebAccessibilityObject::equals(const WebAccessibilityObject& n) const
71 {
72 return m_private.get() == n.m_private.get();
73 }
74
75 // static
76 void WebAccessibilityObject::enableAccessibility()
77 {
78 AXObjectCache::enableAccessibility();
79 }
80
81 // static
82 bool WebAccessibilityObject::accessibilityEnabled()
83 {
84 return AXObjectCache::accessibilityEnabled();
85 }
86
87 void WebAccessibilityObject::startCachingComputedObjectAttributesUntilTreeMutate s()
88 {
89 m_private->axObjectCache()->startCachingComputedObjectAttributesUntilTreeMut ates();
90 }
91
92 void WebAccessibilityObject::stopCachingComputedObjectAttributes()
93 {
94 m_private->axObjectCache()->stopCachingComputedObjectAttributes();
95 }
96
97 bool WebAccessibilityObject::isDetached() const
98 {
99 if (m_private.isNull())
100 return true;
101
102 return m_private->isDetached();
103 }
104
105 int WebAccessibilityObject::axID() const
106 {
107 if (isDetached())
108 return -1;
109
110 return m_private->axObjectID();
111 }
112
113 bool WebAccessibilityObject::updateBackingStoreAndCheckValidity()
114 {
115 if (!isDetached())
116 m_private->updateBackingStore();
117 return !isDetached();
118 }
119
120 WebString WebAccessibilityObject::accessibilityDescription() const
121 {
122 if (isDetached())
123 return WebString();
124
125 return m_private->accessibilityDescription();
126 }
127
128 WebString WebAccessibilityObject::actionVerb() const
129 {
130 if (isDetached())
131 return WebString();
132
133 return m_private->actionVerb();
134 }
135
136 bool WebAccessibilityObject::canDecrement() const
137 {
138 if (isDetached())
139 return false;
140
141 return m_private->isSlider();
142 }
143
144 bool WebAccessibilityObject::canIncrement() const
145 {
146 if (isDetached())
147 return false;
148
149 return m_private->isSlider();
150 }
151
152 bool WebAccessibilityObject::canPress() const
153 {
154 if (isDetached())
155 return false;
156
157 return m_private->actionElement() || m_private->isButton() || m_private->isM enuRelated();
158 }
159
160 bool WebAccessibilityObject::canSetFocusAttribute() const
161 {
162 if (isDetached())
163 return false;
164
165 return m_private->canSetFocusAttribute();
166 }
167
168 bool WebAccessibilityObject::canSetValueAttribute() const
169 {
170 if (isDetached())
171 return false;
172
173 return m_private->canSetValueAttribute();
174 }
175
176 unsigned WebAccessibilityObject::childCount() const
177 {
178 if (isDetached())
179 return 0;
180
181 return m_private->children().size();
182 }
183
184 WebAccessibilityObject WebAccessibilityObject::childAt(unsigned index) const
185 {
186 if (isDetached())
187 return WebAccessibilityObject();
188
189 if (m_private->children().size() <= index)
190 return WebAccessibilityObject();
191
192 return WebAccessibilityObject(m_private->children()[index]);
193 }
194
195 WebAccessibilityObject WebAccessibilityObject::parentObject() const
196 {
197 if (isDetached())
198 return WebAccessibilityObject();
199
200 return WebAccessibilityObject(m_private->parentObject());
201 }
202
203 bool WebAccessibilityObject::canSetSelectedAttribute() const
204 {
205 if (isDetached())
206 return 0;
207
208 return m_private->canSetSelectedAttribute();
209 }
210
211 bool WebAccessibilityObject::isAnchor() const
212 {
213 if (isDetached())
214 return 0;
215
216 return m_private->isAnchor();
217 }
218
219 bool WebAccessibilityObject::isAriaReadOnly() const
220 {
221 if (isDetached())
222 return 0;
223
224 return equalIgnoringCase(m_private->getAttribute(HTMLNames::aria_readonlyAtt r), "true");
225 }
226
227 bool WebAccessibilityObject::isButtonStateMixed() const
228 {
229 if (isDetached())
230 return 0;
231
232 return m_private->checkboxOrRadioValue() == ButtonStateMixed;
233 }
234
235 bool WebAccessibilityObject::isChecked() const
236 {
237 if (isDetached())
238 return 0;
239
240 return m_private->isChecked();
241 }
242
243 bool WebAccessibilityObject::isClickable() const
244 {
245 if (isDetached())
246 return 0;
247
248 return m_private->isClickable();
249 }
250
251 bool WebAccessibilityObject::isCollapsed() const
252 {
253 if (isDetached())
254 return 0;
255
256 return m_private->isCollapsed();
257 }
258
259 bool WebAccessibilityObject::isControl() const
260 {
261 if (isDetached())
262 return 0;
263
264 return m_private->isControl();
265 }
266
267 bool WebAccessibilityObject::isEnabled() const
268 {
269 if (isDetached())
270 return 0;
271
272 return m_private->isEnabled();
273 }
274
275 bool WebAccessibilityObject::isFocused() const
276 {
277 if (isDetached())
278 return 0;
279
280 return m_private->isFocused();
281 }
282
283 bool WebAccessibilityObject::isHovered() const
284 {
285 if (isDetached())
286 return 0;
287
288 return m_private->isHovered();
289 }
290
291 bool WebAccessibilityObject::isIndeterminate() const
292 {
293 if (isDetached())
294 return 0;
295
296 return m_private->isIndeterminate();
297 }
298
299 bool WebAccessibilityObject::isLinked() const
300 {
301 if (isDetached())
302 return 0;
303
304 return m_private->isLinked();
305 }
306
307 bool WebAccessibilityObject::isLoaded() const
308 {
309 if (isDetached())
310 return 0;
311
312 return m_private->isLoaded();
313 }
314
315 bool WebAccessibilityObject::isMultiSelectable() const
316 {
317 if (isDetached())
318 return 0;
319
320 return m_private->isMultiSelectable();
321 }
322
323 bool WebAccessibilityObject::isOffScreen() const
324 {
325 if (isDetached())
326 return 0;
327
328 return m_private->isOffScreen();
329 }
330
331 bool WebAccessibilityObject::isPasswordField() const
332 {
333 if (isDetached())
334 return 0;
335
336 return m_private->isPasswordField();
337 }
338
339 bool WebAccessibilityObject::isPressed() const
340 {
341 if (isDetached())
342 return 0;
343
344 return m_private->isPressed();
345 }
346
347 bool WebAccessibilityObject::isReadOnly() const
348 {
349 if (isDetached())
350 return 0;
351
352 return m_private->isReadOnly();
353 }
354
355 bool WebAccessibilityObject::isRequired() const
356 {
357 if (isDetached())
358 return 0;
359
360 return m_private->isRequired();
361 }
362
363 bool WebAccessibilityObject::isSelected() const
364 {
365 if (isDetached())
366 return 0;
367
368 return m_private->isSelected();
369 }
370
371 bool WebAccessibilityObject::isSelectedOptionActive() const
372 {
373 if (isDetached())
374 return false;
375
376 return m_private->isSelectedOptionActive();
377 }
378
379 bool WebAccessibilityObject::isVertical() const
380 {
381 if (isDetached())
382 return 0;
383
384 return m_private->orientation() == AccessibilityOrientationVertical;
385 }
386
387 bool WebAccessibilityObject::isVisible() const
388 {
389 if (isDetached())
390 return 0;
391
392 return m_private->isVisible();
393 }
394
395 bool WebAccessibilityObject::isVisited() const
396 {
397 if (isDetached())
398 return 0;
399
400 return m_private->isVisited();
401 }
402
403 WebString WebAccessibilityObject::accessKey() const
404 {
405 if (isDetached())
406 return WebString();
407
408 return WebString(m_private->accessKey());
409 }
410
411 bool WebAccessibilityObject::ariaHasPopup() const
412 {
413 if (isDetached())
414 return 0;
415
416 return m_private->ariaHasPopup();
417 }
418
419 bool WebAccessibilityObject::ariaLiveRegionAtomic() const
420 {
421 if (isDetached())
422 return 0;
423
424 return m_private->ariaLiveRegionAtomic();
425 }
426
427 bool WebAccessibilityObject::ariaLiveRegionBusy() const
428 {
429 if (isDetached())
430 return 0;
431
432 return m_private->ariaLiveRegionBusy();
433 }
434
435 WebString WebAccessibilityObject::ariaLiveRegionRelevant() const
436 {
437 if (isDetached())
438 return WebString();
439
440 return m_private->ariaLiveRegionRelevant();
441 }
442
443 WebString WebAccessibilityObject::ariaLiveRegionStatus() const
444 {
445 if (isDetached())
446 return WebString();
447
448 return m_private->ariaLiveRegionStatus();
449 }
450
451 WebRect WebAccessibilityObject::boundingBoxRect() const
452 {
453 if (isDetached())
454 return WebRect();
455
456 return pixelSnappedIntRect(m_private->elementRect());
457 }
458
459 bool WebAccessibilityObject::canvasHasFallbackContent() const
460 {
461 if (isDetached())
462 return false;
463
464 return m_private->canvasHasFallbackContent();
465 }
466
467 WebPoint WebAccessibilityObject::clickPoint() const
468 {
469 if (isDetached())
470 return WebPoint();
471
472 return WebPoint(m_private->clickPoint());
473 }
474
475 void WebAccessibilityObject::colorValue(int& r, int& g, int& b) const
476 {
477 if (isDetached())
478 return;
479
480 m_private->colorValue(r, g, b);
481 }
482
483 double WebAccessibilityObject::estimatedLoadingProgress() const
484 {
485 if (isDetached())
486 return 0.0;
487
488 return m_private->estimatedLoadingProgress();
489 }
490
491 WebString WebAccessibilityObject::helpText() const
492 {
493 if (isDetached())
494 return WebString();
495
496 return m_private->helpText();
497 }
498
499 int WebAccessibilityObject::headingLevel() const
500 {
501 if (isDetached())
502 return 0;
503
504 return m_private->headingLevel();
505 }
506
507 int WebAccessibilityObject::hierarchicalLevel() const
508 {
509 if (isDetached())
510 return 0;
511
512 return m_private->hierarchicalLevel();
513 }
514
515 WebAccessibilityObject WebAccessibilityObject::hitTest(const WebPoint& point) co nst
516 {
517 if (isDetached())
518 return WebAccessibilityObject();
519
520 IntPoint contentsPoint = m_private->documentFrameView()->windowToContents(po int);
521 RefPtr<AccessibilityObject> hit = m_private->accessibilityHitTest(contentsPo int);
522
523 if (hit)
524 return WebAccessibilityObject(hit);
525
526 if (m_private->elementRect().contains(contentsPoint))
527 return *this;
528
529 return WebAccessibilityObject();
530 }
531
532 WebString WebAccessibilityObject::keyboardShortcut() const
533 {
534 if (isDetached())
535 return WebString();
536
537 String accessKey = m_private->accessKey();
538 if (accessKey.isNull())
539 return WebString();
540
541 DEFINE_STATIC_LOCAL(String, modifierString, ());
542 if (modifierString.isNull()) {
543 unsigned modifiers = EventHandler::accessKeyModifiers();
544 // Follow the same order as Mozilla MSAA implementation:
545 // Ctrl+Alt+Shift+Meta+key. MSDN states that keyboard shortcut strings
546 // should not be localized and defines the separator as "+".
547 StringBuilder modifierStringBuilder;
548 if (modifiers & PlatformEvent::CtrlKey)
549 modifierStringBuilder.appendLiteral("Ctrl+");
550 if (modifiers & PlatformEvent::AltKey)
551 modifierStringBuilder.appendLiteral("Alt+");
552 if (modifiers & PlatformEvent::ShiftKey)
553 modifierStringBuilder.appendLiteral("Shift+");
554 if (modifiers & PlatformEvent::MetaKey)
555 modifierStringBuilder.appendLiteral("Win+");
556 modifierString = modifierStringBuilder.toString();
557 }
558
559 return String(modifierString + accessKey);
560 }
561
562 bool WebAccessibilityObject::performDefaultAction() const
563 {
564 if (isDetached())
565 return false;
566
567 return m_private->performDefaultAction();
568 }
569
570 bool WebAccessibilityObject::increment() const
571 {
572 if (isDetached())
573 return false;
574
575 if (canIncrement()) {
576 m_private->increment();
577 return true;
578 }
579 return false;
580 }
581
582 bool WebAccessibilityObject::decrement() const
583 {
584 if (isDetached())
585 return false;
586
587 if (canDecrement()) {
588 m_private->decrement();
589 return true;
590 }
591 return false;
592 }
593
594 bool WebAccessibilityObject::press() const
595 {
596 if (isDetached())
597 return false;
598
599 return m_private->press();
600 }
601
602 // Deprecated in favor of role().
603 WebAccessibilityRole WebAccessibilityObject::roleValue() const
604 {
605 if (isDetached())
606 return WebKit::WebAccessibilityRoleUnknown;
607
608 return static_cast<WebAccessibilityRole>(m_private->roleValue());
609 }
610
611 WebAXRole WebAccessibilityObject::role() const
612 {
613 if (isDetached())
614 return WebKit::WebAXRoleUnknown;
615
616 return static_cast<WebAXRole>(m_private->roleValue());
617 }
618
619 unsigned WebAccessibilityObject::selectionEnd() const
620 {
621 if (isDetached())
622 return 0;
623
624 return m_private->selectedTextRange().start + m_private->selectedTextRange() .length;
625 }
626
627 unsigned WebAccessibilityObject::selectionStart() const
628 {
629 if (isDetached())
630 return 0;
631
632 return m_private->selectedTextRange().start;
633 }
634
635 unsigned WebAccessibilityObject::selectionEndLineNumber() const
636 {
637 if (isDetached())
638 return 0;
639
640 VisiblePosition position = m_private->visiblePositionForIndex(selectionEnd() );
641 int lineNumber = m_private->lineForPosition(position);
642 if (lineNumber < 0)
643 return 0;
644 return lineNumber;
645 }
646
647 unsigned WebAccessibilityObject::selectionStartLineNumber() const
648 {
649 if (isDetached())
650 return 0;
651
652 VisiblePosition position = m_private->visiblePositionForIndex(selectionStart ());
653 int lineNumber = m_private->lineForPosition(position);
654 if (lineNumber < 0)
655 return 0;
656 return lineNumber;
657 }
658
659 void WebAccessibilityObject::setFocused(bool on) const
660 {
661 if (!isDetached())
662 m_private->setFocused(on);
663 }
664
665 void WebAccessibilityObject::setSelectedTextRange(int selectionStart, int select ionEnd) const
666 {
667 if (isDetached())
668 return;
669
670 m_private->setSelectedTextRange(PlainTextRange(selectionStart, selectionEnd - selectionStart));
671 }
672
673 WebString WebAccessibilityObject::stringValue() const
674 {
675 if (isDetached())
676 return WebString();
677
678 return m_private->stringValue();
679 }
680
681 WebString WebAccessibilityObject::title() const
682 {
683 if (isDetached())
684 return WebString();
685
686 return m_private->title();
687 }
688
689 WebAccessibilityObject WebAccessibilityObject::titleUIElement() const
690 {
691 if (isDetached())
692 return WebAccessibilityObject();
693
694 if (!m_private->exposesTitleUIElement())
695 return WebAccessibilityObject();
696
697 return WebAccessibilityObject(m_private->titleUIElement());
698 }
699
700 WebURL WebAccessibilityObject::url() const
701 {
702 if (isDetached())
703 return WebURL();
704
705 return m_private->url();
706 }
707
708 bool WebAccessibilityObject::supportsRangeValue() const
709 {
710 if (isDetached())
711 return false;
712
713 return m_private->supportsRangeValue();
714 }
715
716 WebString WebAccessibilityObject::valueDescription() const
717 {
718 if (isDetached())
719 return WebString();
720
721 return m_private->valueDescription();
722 }
723
724 float WebAccessibilityObject::valueForRange() const
725 {
726 if (isDetached())
727 return 0.0;
728
729 return m_private->valueForRange();
730 }
731
732 float WebAccessibilityObject::maxValueForRange() const
733 {
734 if (isDetached())
735 return 0.0;
736
737 return m_private->maxValueForRange();
738 }
739
740 float WebAccessibilityObject::minValueForRange() const
741 {
742 if (isDetached())
743 return 0.0;
744
745 return m_private->minValueForRange();
746 }
747
748 WebNode WebAccessibilityObject::node() const
749 {
750 if (isDetached())
751 return WebNode();
752
753 Node* node = m_private->node();
754 if (!node)
755 return WebNode();
756
757 return WebNode(node);
758 }
759
760 WebDocument WebAccessibilityObject::document() const
761 {
762 if (isDetached())
763 return WebDocument();
764
765 Document* document = m_private->document();
766 if (!document)
767 return WebDocument();
768
769 return WebDocument(document);
770 }
771
772 bool WebAccessibilityObject::hasComputedStyle() const
773 {
774 if (isDetached())
775 return false;
776
777 Document* document = m_private->document();
778 if (document)
779 document->updateStyleIfNeeded();
780
781 Node* node = m_private->node();
782 if (!node)
783 return false;
784
785 return node->computedStyle();
786 }
787
788 WebString WebAccessibilityObject::computedStyleDisplay() const
789 {
790 if (isDetached())
791 return WebString();
792
793 Document* document = m_private->document();
794 if (document)
795 document->updateStyleIfNeeded();
796
797 Node* node = m_private->node();
798 if (!node)
799 return WebString();
800
801 RenderStyle* renderStyle = node->computedStyle();
802 if (!renderStyle)
803 return WebString();
804
805 return WebString(CSSPrimitiveValue::create(renderStyle->display())->getStrin gValue());
806 }
807
808 bool WebAccessibilityObject::accessibilityIsIgnored() const
809 {
810 if (isDetached())
811 return false;
812
813 return m_private->accessibilityIsIgnored();
814 }
815
816 bool WebAccessibilityObject::lineBreaks(WebVector<int>& result) const
817 {
818 if (isDetached())
819 return false;
820
821 Vector<int> lineBreaksVector;
822 m_private->lineBreaks(lineBreaksVector);
823
824 size_t vectorSize = lineBreaksVector.size();
825 WebVector<int> lineBreaksWebVector(vectorSize);
826 for (size_t i = 0; i< vectorSize; i++)
827 lineBreaksWebVector[i] = lineBreaksVector[i];
828 result.swap(lineBreaksWebVector);
829
830 return true;
831 }
832
833 unsigned WebAccessibilityObject::columnCount() const
834 {
835 if (isDetached())
836 return false;
837
838 if (!m_private->isAccessibilityTable())
839 return 0;
840
841 return static_cast<WebCore::AccessibilityTable*>(m_private.get())->columnCou nt();
842 }
843
844 unsigned WebAccessibilityObject::rowCount() const
845 {
846 if (isDetached())
847 return false;
848
849 if (!m_private->isAccessibilityTable())
850 return 0;
851
852 return static_cast<WebCore::AccessibilityTable*>(m_private.get())->rowCount( );
853 }
854
855 WebAccessibilityObject WebAccessibilityObject::cellForColumnAndRow(unsigned colu mn, unsigned row) const
856 {
857 if (isDetached())
858 return WebAccessibilityObject();
859
860 if (!m_private->isAccessibilityTable())
861 return WebAccessibilityObject();
862
863 WebCore::AccessibilityTableCell* cell = static_cast<WebCore::AccessibilityTa ble*>(m_private.get())->cellForColumnAndRow(column, row);
864 return WebAccessibilityObject(static_cast<WebCore::AccessibilityObject*>(cel l));
865 }
866
867 WebAccessibilityObject WebAccessibilityObject::headerContainerObject() const
868 {
869 if (isDetached())
870 return WebAccessibilityObject();
871
872 if (!m_private->isAccessibilityTable())
873 return WebAccessibilityObject();
874
875 return WebAccessibilityObject(static_cast<WebCore::AccessibilityTable*>(m_pr ivate.get())->headerContainer());
876 }
877
878 WebAccessibilityObject WebAccessibilityObject::rowAtIndex(unsigned int rowIndex) const
879 {
880 if (isDetached())
881 return WebAccessibilityObject();
882
883 if (!m_private->isAccessibilityTable())
884 return WebAccessibilityObject();
885
886 const AccessibilityObject::AccessibilityChildrenVector& rows = static_cast<W ebCore::AccessibilityTable*>(m_private.get())->rows();
887 if (rowIndex < rows.size())
888 return WebAccessibilityObject(rows[rowIndex]);
889
890 return WebAccessibilityObject();
891 }
892
893 WebAccessibilityObject WebAccessibilityObject::columnAtIndex(unsigned int column Index) const
894 {
895 if (isDetached())
896 return WebAccessibilityObject();
897
898 if (!m_private->isAccessibilityTable())
899 return WebAccessibilityObject();
900
901 const AccessibilityObject::AccessibilityChildrenVector& columns = static_cas t<WebCore::AccessibilityTable*>(m_private.get())->columns();
902 if (columnIndex < columns.size())
903 return WebAccessibilityObject(columns[columnIndex]);
904
905 return WebAccessibilityObject();
906 }
907
908 unsigned WebAccessibilityObject::rowIndex() const
909 {
910 if (isDetached())
911 return 0;
912
913 if (!m_private->isTableRow())
914 return 0;
915
916 return static_cast<WebCore::AccessibilityTableRow*>(m_private.get())->rowInd ex();
917 }
918
919 WebAccessibilityObject WebAccessibilityObject::rowHeader() const
920 {
921 if (isDetached())
922 return WebAccessibilityObject();
923
924 if (!m_private->isTableRow())
925 return WebAccessibilityObject();
926
927 return WebAccessibilityObject(static_cast<WebCore::AccessibilityTableRow*>(m _private.get())->headerObject());
928 }
929
930 unsigned WebAccessibilityObject::columnIndex() const
931 {
932 if (isDetached())
933 return 0;
934
935 if (m_private->roleValue() != ColumnRole)
936 return 0;
937
938 return static_cast<WebCore::AccessibilityTableColumn*>(m_private.get())->col umnIndex();
939 }
940
941 WebAccessibilityObject WebAccessibilityObject::columnHeader() const
942 {
943 if (isDetached())
944 return WebAccessibilityObject();
945
946 if (m_private->roleValue() != ColumnRole)
947 return WebAccessibilityObject();
948
949 return WebAccessibilityObject(static_cast<WebCore::AccessibilityTableColumn* >(m_private.get())->headerObject());
950 }
951
952 unsigned WebAccessibilityObject::cellColumnIndex() const
953 {
954 if (isDetached())
955 return 0;
956
957 if (!m_private->isTableCell())
958 return 0;
959
960 pair<unsigned, unsigned> columnRange;
961 static_cast<WebCore::AccessibilityTableCell*>(m_private.get())->columnIndexR ange(columnRange);
962 return columnRange.first;
963 }
964
965 unsigned WebAccessibilityObject::cellColumnSpan() const
966 {
967 if (isDetached())
968 return 0;
969
970 if (!m_private->isTableCell())
971 return 0;
972
973 pair<unsigned, unsigned> columnRange;
974 static_cast<WebCore::AccessibilityTableCell*>(m_private.get())->columnIndexR ange(columnRange);
975 return columnRange.second;
976 }
977
978 unsigned WebAccessibilityObject::cellRowIndex() const
979 {
980 if (isDetached())
981 return 0;
982
983 if (!m_private->isTableCell())
984 return 0;
985
986 pair<unsigned, unsigned> rowRange;
987 static_cast<WebCore::AccessibilityTableCell*>(m_private.get())->rowIndexRang e(rowRange);
988 return rowRange.first;
989 }
990
991 unsigned WebAccessibilityObject::cellRowSpan() const
992 {
993 if (isDetached())
994 return 0;
995
996 if (!m_private->isTableCell())
997 return 0;
998
999 pair<unsigned, unsigned> rowRange;
1000 static_cast<WebCore::AccessibilityTableCell*>(m_private.get())->rowIndexRang e(rowRange);
1001 return rowRange.second;
1002 }
1003
1004 void WebAccessibilityObject::scrollToMakeVisible() const
1005 {
1006 if (!isDetached())
1007 m_private->scrollToMakeVisible();
1008 }
1009
1010 void WebAccessibilityObject::scrollToMakeVisibleWithSubFocus(const WebRect& subf ocus) const
1011 {
1012 if (!isDetached())
1013 m_private->scrollToMakeVisibleWithSubFocus(subfocus);
1014 }
1015
1016 void WebAccessibilityObject::scrollToGlobalPoint(const WebPoint& point) const
1017 {
1018 if (!isDetached())
1019 m_private->scrollToGlobalPoint(point);
1020 }
1021
1022 WebAccessibilityObject::WebAccessibilityObject(const WTF::PassRefPtr<WebCore::Ac cessibilityObject>& object)
1023 : m_private(object)
1024 {
1025 }
1026
1027 WebAccessibilityObject& WebAccessibilityObject::operator=(const WTF::PassRefPtr< WebCore::AccessibilityObject>& object)
1028 {
1029 m_private = object;
1030 return *this;
1031 }
1032
1033 WebAccessibilityObject::operator WTF::PassRefPtr<WebCore::AccessibilityObject>() const
1034 {
1035 return m_private.get();
1036 }
1037
1038 } // namespace WebKit
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698