OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/test_runner/web_ax_object_proxy.h" | 5 #include "components/test_runner/web_ax_object_proxy.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
10 #include "base/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" |
(...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
505 } | 505 } |
506 | 506 |
507 std::string attributes() const { return attributes_; } | 507 std::string attributes() const { return attributes_; } |
508 | 508 |
509 private: | 509 private: |
510 std::string attributes_; | 510 std::string attributes_; |
511 | 511 |
512 DISALLOW_COPY_AND_ASSIGN(AttributesCollector); | 512 DISALLOW_COPY_AND_ASSIGN(AttributesCollector); |
513 }; | 513 }; |
514 | 514 |
| 515 class SparseAttributeAdapter : public blink::WebAXSparseAttributeClient { |
| 516 public: |
| 517 SparseAttributeAdapter() {} |
| 518 ~SparseAttributeAdapter() override {} |
| 519 |
| 520 std::map<blink::WebAXBoolAttribute, bool> bool_attributes; |
| 521 std::map<blink::WebAXStringAttribute, blink::WebString> string_attributes; |
| 522 std::map<blink::WebAXObjectAttribute, blink::WebAXObject> object_attributes; |
| 523 std::map<blink::WebAXObjectVectorAttribute, |
| 524 blink::WebVector<blink::WebAXObject>> |
| 525 object_vector_attributes; |
| 526 |
| 527 private: |
| 528 void addBoolAttribute(blink::WebAXBoolAttribute attribute, |
| 529 bool value) override { |
| 530 bool_attributes[attribute] = value; |
| 531 } |
| 532 |
| 533 void addStringAttribute(blink::WebAXStringAttribute attribute, |
| 534 const blink::WebString& value) override { |
| 535 string_attributes[attribute] = value; |
| 536 } |
| 537 |
| 538 void addObjectAttribute(blink::WebAXObjectAttribute attribute, |
| 539 const blink::WebAXObject& value) override { |
| 540 object_attributes[attribute] = value; |
| 541 } |
| 542 |
| 543 void addObjectVectorAttribute( |
| 544 blink::WebAXObjectVectorAttribute attribute, |
| 545 const blink::WebVector<blink::WebAXObject>& value) override { |
| 546 object_vector_attributes[attribute] = value; |
| 547 } |
| 548 }; |
| 549 |
515 } // namespace | 550 } // namespace |
516 | 551 |
517 gin::WrapperInfo WebAXObjectProxy::kWrapperInfo = { | 552 gin::WrapperInfo WebAXObjectProxy::kWrapperInfo = { |
518 gin::kEmbedderNativeGin}; | 553 gin::kEmbedderNativeGin}; |
519 | 554 |
520 WebAXObjectProxy::WebAXObjectProxy(const blink::WebAXObject& object, | 555 WebAXObjectProxy::WebAXObjectProxy(const blink::WebAXObject& object, |
521 WebAXObjectProxy::Factory* factory) | 556 WebAXObjectProxy::Factory* factory) |
522 : accessibility_object_(object), | 557 : accessibility_object_(object), |
523 factory_(factory) { | 558 factory_(factory) { |
524 } | 559 } |
(...skipping 568 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1093 accessibility_object_.updateLayoutAndCheckValidity(); | 1128 accessibility_object_.updateLayoutAndCheckValidity(); |
1094 return accessibility_object_.isClickable(); | 1129 return accessibility_object_.isClickable(); |
1095 } | 1130 } |
1096 | 1131 |
1097 bool WebAXObjectProxy::IsButtonStateMixed() { | 1132 bool WebAXObjectProxy::IsButtonStateMixed() { |
1098 accessibility_object_.updateLayoutAndCheckValidity(); | 1133 accessibility_object_.updateLayoutAndCheckValidity(); |
1099 return accessibility_object_.isButtonStateMixed(); | 1134 return accessibility_object_.isButtonStateMixed(); |
1100 } | 1135 } |
1101 | 1136 |
1102 v8::Local<v8::Object> WebAXObjectProxy::AriaControlsElementAtIndex( | 1137 v8::Local<v8::Object> WebAXObjectProxy::AriaControlsElementAtIndex( |
1103 unsigned index) | 1138 unsigned index) { |
1104 { | |
1105 accessibility_object_.updateLayoutAndCheckValidity(); | 1139 accessibility_object_.updateLayoutAndCheckValidity(); |
1106 blink::WebVector<blink::WebAXObject> elements; | 1140 SparseAttributeAdapter attribute_adapter; |
1107 accessibility_object_.ariaControls(elements); | 1141 accessibility_object_.getSparseAXAttributes(attribute_adapter); |
| 1142 blink::WebVector<blink::WebAXObject> elements = |
| 1143 attribute_adapter.object_vector_attributes |
| 1144 [blink::WebAXObjectVectorAttribute::AriaControls]; |
1108 size_t elementCount = elements.size(); | 1145 size_t elementCount = elements.size(); |
1109 if (index >= elementCount) | 1146 if (index >= elementCount) |
1110 return v8::Local<v8::Object>(); | 1147 return v8::Local<v8::Object>(); |
1111 | 1148 |
1112 return factory_->GetOrCreate(elements[index]); | 1149 return factory_->GetOrCreate(elements[index]); |
1113 } | 1150 } |
1114 | 1151 |
1115 v8::Local<v8::Object> WebAXObjectProxy::AriaFlowToElementAtIndex( | 1152 v8::Local<v8::Object> WebAXObjectProxy::AriaFlowToElementAtIndex( |
1116 unsigned index) | 1153 unsigned index) { |
1117 { | |
1118 accessibility_object_.updateLayoutAndCheckValidity(); | 1154 accessibility_object_.updateLayoutAndCheckValidity(); |
1119 blink::WebVector<blink::WebAXObject> elements; | 1155 SparseAttributeAdapter attribute_adapter; |
1120 accessibility_object_.ariaFlowTo(elements); | 1156 accessibility_object_.getSparseAXAttributes(attribute_adapter); |
| 1157 blink::WebVector<blink::WebAXObject> elements = |
| 1158 attribute_adapter.object_vector_attributes |
| 1159 [blink::WebAXObjectVectorAttribute::AriaFlowTo]; |
1121 size_t elementCount = elements.size(); | 1160 size_t elementCount = elements.size(); |
1122 if (index >= elementCount) | 1161 if (index >= elementCount) |
1123 return v8::Local<v8::Object>(); | 1162 return v8::Local<v8::Object>(); |
1124 | 1163 |
1125 return factory_->GetOrCreate(elements[index]); | 1164 return factory_->GetOrCreate(elements[index]); |
1126 } | 1165 } |
1127 | 1166 |
1128 v8::Local<v8::Object> WebAXObjectProxy::AriaOwnsElementAtIndex(unsigned index) | 1167 v8::Local<v8::Object> WebAXObjectProxy::AriaOwnsElementAtIndex(unsigned index) |
1129 { | 1168 { |
1130 accessibility_object_.updateLayoutAndCheckValidity(); | 1169 accessibility_object_.updateLayoutAndCheckValidity(); |
(...skipping 582 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1713 v8::Local<v8::Value> value_handle = gin::CreateHandle( | 1752 v8::Local<v8::Value> value_handle = gin::CreateHandle( |
1714 isolate, new WebAXObjectProxy(object, this)).ToV8(); | 1753 isolate, new WebAXObjectProxy(object, this)).ToV8(); |
1715 if (value_handle.IsEmpty()) | 1754 if (value_handle.IsEmpty()) |
1716 return v8::Local<v8::Object>(); | 1755 return v8::Local<v8::Object>(); |
1717 v8::Local<v8::Object> handle = value_handle->ToObject(isolate); | 1756 v8::Local<v8::Object> handle = value_handle->ToObject(isolate); |
1718 elements_.Append(handle); | 1757 elements_.Append(handle); |
1719 return handle; | 1758 return handle; |
1720 } | 1759 } |
1721 | 1760 |
1722 } // namespace test_runner | 1761 } // namespace test_runner |
OLD | NEW |