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

Side by Side Diff: third_party/WebKit/Source/modules/accessibility/AXObjectCacheImpl.cpp

Issue 2805493002: Boolean properties for Accessibility Object Model Phase 1 (Closed)
Patch Set: Address feedback Created 3 years, 8 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) 2014, Google Inc. All rights reserved. 2 * Copyright (C) 2014, Google 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 12 matching lines...) Expand all
23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */ 27 */
28 28
29 #include "modules/accessibility/AXObjectCacheImpl.h" 29 #include "modules/accessibility/AXObjectCacheImpl.h"
30 30
31 #include "core/HTMLNames.h" 31 #include "core/HTMLNames.h"
32 #include "core/InputTypeNames.h" 32 #include "core/InputTypeNames.h"
33 #include "core/dom/AccessibleNode.h"
33 #include "core/dom/Document.h" 34 #include "core/dom/Document.h"
34 #include "core/dom/TaskRunnerHelper.h" 35 #include "core/dom/TaskRunnerHelper.h"
35 #include "core/editing/EditingUtilities.h" 36 #include "core/editing/EditingUtilities.h"
36 #include "core/frame/FrameView.h" 37 #include "core/frame/FrameView.h"
37 #include "core/frame/LocalFrame.h" 38 #include "core/frame/LocalFrame.h"
38 #include "core/frame/Settings.h" 39 #include "core/frame/Settings.h"
39 #include "core/html/HTMLAreaElement.h" 40 #include "core/html/HTMLAreaElement.h"
40 #include "core/html/HTMLCanvasElement.h" 41 #include "core/html/HTMLCanvasElement.h"
41 #include "core/html/HTMLImageElement.h" 42 #include "core/html/HTMLImageElement.h"
42 #include "core/html/HTMLInputElement.h" 43 #include "core/html/HTMLInputElement.h"
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 AXObjectCacheImpl::AXObjectCacheImpl(Document& document) 95 AXObjectCacheImpl::AXObjectCacheImpl(Document& document)
95 : document_(document), 96 : document_(document),
96 modification_count_(0), 97 modification_count_(0),
97 notification_post_timer_( 98 notification_post_timer_(
98 TaskRunnerHelper::Get(TaskType::kUnspecedTimer, &document), 99 TaskRunnerHelper::Get(TaskType::kUnspecedTimer, &document),
99 this, 100 this,
100 &AXObjectCacheImpl::NotificationPostTimerFired) {} 101 &AXObjectCacheImpl::NotificationPostTimerFired) {}
101 102
102 AXObjectCacheImpl::~AXObjectCacheImpl() { 103 AXObjectCacheImpl::~AXObjectCacheImpl() {
103 #if DCHECK_IS_ON() 104 #if DCHECK_IS_ON()
104 DCHECK(has_been_disposed_); 105 DCHECK(m_hasBeenDisposed);
105 #endif 106 #endif
106 } 107 }
107 108
108 void AXObjectCacheImpl::Dispose() { 109 void AXObjectCacheImpl::Dispose() {
109 notification_post_timer_.Stop(); 110 notification_post_timer_.Stop();
110 111
111 for (auto& entry : objects_) { 112 for (auto& entry : objects_) {
112 AXObject* obj = entry.value; 113 AXObject* obj = entry.value;
113 obj->Detach(); 114 obj->Detach();
114 RemoveAXID(obj); 115 RemoveAXID(obj);
115 } 116 }
116 117
117 #if DCHECK_IS_ON() 118 #if DCHECK_IS_ON()
118 has_been_disposed_ = true; 119 m_hasBeenDisposed = true;
119 #endif 120 #endif
120 } 121 }
121 122
122 AXObject* AXObjectCacheImpl::Root() { 123 AXObject* AXObjectCacheImpl::Root() {
123 return GetOrCreate(document_); 124 return GetOrCreate(document_);
124 } 125 }
125 126
126 AXObject* AXObjectCacheImpl::FocusedImageMapUIElement( 127 AXObject* AXObjectCacheImpl::FocusedImageMapUIElement(
127 HTMLAreaElement* area_element) { 128 HTMLAreaElement* area_element) {
128 // Find the corresponding accessibility object for the HTMLAreaElement. This 129 // Find the corresponding accessibility object for the HTMLAreaElement. This
(...skipping 499 matching lines...) Expand 10 before | Expand all | Expand 10 after
628 629
629 if (!obj->AxObjectID()) 630 if (!obj->AxObjectID())
630 continue; 631 continue;
631 632
632 if (obj->IsDetached()) 633 if (obj->IsDetached())
633 continue; 634 continue;
634 635
635 #if DCHECK_IS_ON() 636 #if DCHECK_IS_ON()
636 // Make sure none of the layout views are in the process of being layed out. 637 // Make sure none of the layout views are in the process of being layed out.
637 // Notifications should only be sent after the layoutObject has finished 638 // Notifications should only be sent after the layoutObject has finished
638 if (obj->IsAXLayoutObject()) { 639 if (obj->isAXLayoutObject()) {
639 AXLayoutObject* layout_obj = ToAXLayoutObject(obj); 640 AXLayoutObject* layoutObj = toAXLayoutObject(obj);
640 LayoutObject* layout_object = layout_obj->GetLayoutObject(); 641 LayoutObject* layoutObject = layoutObj->getLayoutObject();
641 if (layout_object && layout_object->View()) 642 if (layoutObject && layoutObject->view())
642 DCHECK(!layout_object->View()->GetLayoutState()); 643 DCHECK(!layoutObject->view()->layoutState());
643 } 644 }
644 #endif 645 #endif
645 646
646 AXNotification notification = notifications_to_post_[i].second; 647 AXNotification notification = notifications_to_post_[i].second;
647 PostPlatformNotification(obj, notification); 648 PostPlatformNotification(obj, notification);
648 649
649 if (notification == kAXChildrenChanged && obj->ParentObjectIfExists() && 650 if (notification == kAXChildrenChanged && obj->ParentObjectIfExists() &&
650 obj->LastKnownIsIgnoredValue() != obj->AccessibilityIsIgnored()) 651 obj->LastKnownIsIgnoredValue() != obj->AccessibilityIsIgnored())
651 ChildrenChanged(obj->ParentObject()); 652 ChildrenChanged(obj->ParentObject());
652 } 653 }
(...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after
1087 return ax_object && ax_object->IsTextControl(); 1088 return ax_object && ax_object->IsTextControl();
1088 } 1089 }
1089 1090
1090 bool IsNodeAriaVisible(Node* node) { 1091 bool IsNodeAriaVisible(Node* node) {
1091 if (!node) 1092 if (!node)
1092 return false; 1093 return false;
1093 1094
1094 if (!node->IsElementNode()) 1095 if (!node->IsElementNode())
1095 return false; 1096 return false;
1096 1097
1097 return EqualIgnoringASCIICase(ToElement(node)->getAttribute(aria_hiddenAttr), 1098 bool is_null = true;
1098 "false"); 1099 bool hidden = AccessibleNode::GetProperty(
1100 ToElement(node), AOMBooleanProperty::kHidden, is_null);
1101 return !is_null && !hidden;
1099 } 1102 }
1100 1103
1101 void AXObjectCacheImpl::PostPlatformNotification(AXObject* obj, 1104 void AXObjectCacheImpl::PostPlatformNotification(AXObject* obj,
1102 AXNotification notification) { 1105 AXNotification notification) {
1103 if (!obj || !obj->GetDocument() || !obj->DocumentFrameView() || 1106 if (!obj || !obj->GetDocument() || !obj->DocumentFrameView() ||
1104 !obj->DocumentFrameView()->GetFrame().GetPage()) 1107 !obj->DocumentFrameView()->GetFrame().GetPage())
1105 return; 1108 return;
1106 1109
1107 ChromeClient& client = 1110 ChromeClient& client =
1108 obj->GetDocument()->AxObjectCacheOwner().GetPage()->GetChromeClient(); 1111 obj->GetDocument()->AxObjectCacheOwner().GetPage()->GetChromeClient();
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
1249 visitor->Trace(document_); 1252 visitor->Trace(document_);
1250 visitor->Trace(node_object_mapping_); 1253 visitor->Trace(node_object_mapping_);
1251 1254
1252 visitor->Trace(objects_); 1255 visitor->Trace(objects_);
1253 visitor->Trace(notifications_to_post_); 1256 visitor->Trace(notifications_to_post_);
1254 1257
1255 AXObjectCache::Trace(visitor); 1258 AXObjectCache::Trace(visitor);
1256 } 1259 }
1257 1260
1258 } // namespace blink 1261 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698