| 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 37406710aeac9b360070aa115883a852fa224bf6..2e068b27fb64b85ddeed94dbf7f4c576357198c3 100644
|
| --- a/chrome/renderer/extensions/automation_internal_custom_bindings.cc
|
| +++ b/chrome/renderer/extensions/automation_internal_custom_bindings.cc
|
| @@ -8,9 +8,29 @@
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/values.h"
|
| #include "chrome/common/extensions/manifest_handlers/automation.h"
|
| +#include "content/public/renderer/v8_value_converter.h"
|
| #include "extensions/common/extension.h"
|
| #include "extensions/common/manifest.h"
|
| #include "extensions/renderer/script_context.h"
|
| +#include "ui/accessibility/ax_enums.h"
|
| +
|
| +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;
|
| +}
|
| +
|
| +} // namespace
|
|
|
| namespace extensions {
|
|
|
| @@ -20,6 +40,10 @@ AutomationInternalCustomBindings::AutomationInternalCustomBindings(
|
| "IsInteractPermitted",
|
| base::Bind(&AutomationInternalCustomBindings::IsInteractPermitted,
|
| base::Unretained(this)));
|
| + RouteFunction(
|
| + "GetSchemaAdditions",
|
| + base::Bind(&AutomationInternalCustomBindings::GetSchemaAdditions,
|
| + base::Unretained(this)));
|
| }
|
|
|
| AutomationInternalCustomBindings::~AutomationInternalCustomBindings() {
|
| @@ -35,4 +59,23 @@ void AutomationInternalCustomBindings::IsInteractPermitted(
|
| v8::Boolean::New(GetIsolate(), automation_info->interact));
|
| }
|
|
|
| +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));
|
| +
|
| + args.GetReturnValue().Set(additions);
|
| +}
|
| +
|
| } // namespace extensions
|
|
|