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..1cc6e97f6b25c7f74e466e7cf67c163c358d9cc8 100644 |
--- a/chrome/renderer/extensions/automation_internal_custom_bindings.cc |
+++ b/chrome/renderer/extensions/automation_internal_custom_bindings.cc |
@@ -30,6 +30,20 @@ |
namespace extensions { |
namespace { |
+ |
+// Helper to convert an enum to a V8 object. |
+template <typename EnumType> |
+v8::Local<v8::Object> ToEnumObject(v8::Isolate* isolate, |
+ EnumType start_after, |
+ EnumType end_at) { |
+ v8::Local<v8::Object> object = v8::Object::New(isolate); |
+ for (int i = start_after + 1; i <= end_at; ++i) { |
+ v8::Local<v8::String> value = v8::String::NewFromUtf8( |
+ isolate, ui::ToString(static_cast<EnumType>(i)).c_str()); |
+ object->Set(value, value); |
+ } |
+ return object; |
+} |
void ThrowInvalidArgumentsException( |
AutomationInternalCustomBindings* automation_bindings) { |
@@ -703,14 +717,6 @@ |
result.Set(v8::String::NewFromUtf8(isolate, attr_value.c_str())); |
}); |
- RouteNodeIDFunction( |
- "GetNameFrom", [](v8::Isolate* isolate, v8::ReturnValue<v8::Value> result, |
- TreeCache* cache, ui::AXNode* node) { |
- ui::AXNameFrom name_from = static_cast<ui::AXNameFrom>( |
- node->data().GetIntAttribute(ui::AX_ATTR_NAME_FROM)); |
- std::string name_from_str = ui::ToString(name_from); |
- result.Set(v8::String::NewFromUtf8(isolate, name_from_str.c_str())); |
- }); |
} |
AutomationInternalCustomBindings::~AutomationInternalCustomBindings() {} |
@@ -774,6 +780,22 @@ |
void AutomationInternalCustomBindings::GetSchemaAdditions( |
const v8::FunctionCallbackInfo<v8::Value>& args) { |
v8::Local<v8::Object> additions = v8::Object::New(GetIsolate()); |
+ |
+ additions->Set( |
+ v8::String::NewFromUtf8(GetIsolate(), "EventType"), |
+ ToEnumObject(GetIsolate(), ui::AX_EVENT_NONE, ui::AX_EVENT_LAST)); |
+ |
+ additions->Set( |
+ v8::String::NewFromUtf8(GetIsolate(), "RoleType"), |
+ ToEnumObject(GetIsolate(), ui::AX_ROLE_NONE, ui::AX_ROLE_LAST)); |
+ |
+ additions->Set( |
+ v8::String::NewFromUtf8(GetIsolate(), "StateType"), |
+ ToEnumObject(GetIsolate(), ui::AX_STATE_NONE, ui::AX_STATE_LAST)); |
+ |
+ additions->Set( |
+ v8::String::NewFromUtf8(GetIsolate(), "TreeChangeType"), |
+ ToEnumObject(GetIsolate(), ui::AX_MUTATION_NONE, ui::AX_MUTATION_LAST)); |
v8::Local<v8::Object> name_from_type(v8::Object::New(GetIsolate())); |
for (int i = ui::AX_NAME_FROM_NONE; i <= ui::AX_NAME_FROM_LAST; ++i) { |