| 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 ce09ccf05b082f754c313902a1966c4ba8d95778..cb26e431e744906cd2bfd03b4ab865eeb0761616 100644 | 
| --- a/chrome/renderer/extensions/automation_internal_custom_bindings.cc | 
| +++ b/chrome/renderer/extensions/automation_internal_custom_bindings.cc | 
| @@ -694,6 +694,35 @@ AutomationInternalCustomBindings::AutomationInternalCustomBindings( | 
| ui::AX_TEXT_STYLE_LINE_THROUGH) != 0; | 
| result.Set(v8::Boolean::New(isolate, value)); | 
| }); | 
| +  RouteNodeIDFunction( | 
| +      "GetCustomActions", | 
| +      [](v8::Isolate* isolate, v8::ReturnValue<v8::Value> result, | 
| +         TreeCache* cache, ui::AXNode* node) { | 
| +        const std::vector<int32_t>& custom_action_ids = | 
| +            node->data().GetIntListAttribute(ui::AX_ATTR_CUSTOM_ACTION_IDS); | 
| +        if (custom_action_ids.empty()) { | 
| +          result.SetUndefined(); | 
| +          return; | 
| +        } | 
| + | 
| +        const std::vector<std::string>& custom_action_descriptions = | 
| +            node->data().GetStringListAttribute( | 
| +                ui::AX_ATTR_CUSTOM_ACTION_DESCRIPTIONS); | 
| +        if (custom_action_ids.size() != custom_action_descriptions.size()) { | 
| +          NOTREACHED(); | 
| +          return; | 
| +        } | 
| + | 
| +        v8::Local<v8::Array> custom_actions( | 
| +            v8::Array::New(isolate, custom_action_ids.size())); | 
| +        for (size_t i = 0; i < custom_action_ids.size(); i++) { | 
| +          gin::DataObjectBuilder custom_action(isolate); | 
| +          custom_action.Set("id", custom_action_ids[i]); | 
| +          custom_action.Set("description", custom_action_descriptions[i]); | 
| +          custom_actions->Set(static_cast<uint32_t>(i), custom_action.Build()); | 
| +        } | 
| +        result.Set(custom_actions); | 
| +      }); | 
| RouteNodeIDFunction("GetChecked", [](v8::Isolate* isolate, | 
| v8::ReturnValue<v8::Value> result, | 
| TreeCache* cache, ui::AXNode* node) { | 
|  |