Index: chrome/renderer/extensions/automation_internal_custom_bindings.cc |
diff --git a/chrome/renderer/extensions/automation_internal_custom_bindings.cc b/chrome/renderer/extensions/automation_internal_custom_bindings.cc |
index e56944b1f4928389aae3fb68e502e1dc620804e8..d975b88d74422fb7f350cf38a74d47881b7e1f01 100644 |
--- a/chrome/renderer/extensions/automation_internal_custom_bindings.cc |
+++ b/chrome/renderer/extensions/automation_internal_custom_bindings.cc |
@@ -711,6 +711,16 @@ AutomationInternalCustomBindings::AutomationInternalCustomBindings( |
std::string name_from_str = ui::ToString(name_from); |
result.Set(v8::String::NewFromUtf8(isolate, name_from_str.c_str())); |
}); |
+ RouteNodeIDFunction( |
+ "GetChecked", [](v8::Isolate* isolate, v8::ReturnValue<v8::Value> result, |
+ TreeCache* cache, ui::AXNode* node) { |
+ const auto checked_state = static_cast<ui::AXCheckedState>( |
+ node->data().GetIntAttribute(ui::AX_ATTR_CHECKED_STATE)); |
+ const char* checked_str = GetCheckedStateName(checked_state); |
+ if (checked_state) { |
+ result.Set(v8::String::NewFromUtf8(isolate, checked_str)); |
+ } |
+ }); |
} |
AutomationInternalCustomBindings::~AutomationInternalCustomBindings() {} |
@@ -1001,6 +1011,21 @@ void AutomationInternalCustomBindings::GetState( |
args.GetReturnValue().Set(state); |
} |
+const char* AutomationInternalCustomBindings::GetCheckedStateName( |
David Tseng
2017/03/13 18:10:54
ax_enums.h should generate this for you (ToString(
|
+ const ui::AXCheckedState checked_state) { |
+ switch (checked_state) { |
+ case ui::AX_CHECKED_STATE_NONE: |
+ return nullptr; |
+ case ui::AX_CHECKED_STATE_TRUE: |
+ return "true"; |
+ case ui::AX_CHECKED_STATE_MIXED: |
+ return "mixed"; |
+ default: |
+ break; |
+ } |
+ return "false"; |
+} |
+ |
void AutomationInternalCustomBindings::UpdateOverallTreeChangeObserverFilter() { |
tree_change_observer_overall_filter_ = 0; |
for (const auto& observer : tree_change_observers_) |