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 844fd87dd09790dbc38ce9615333ee5698240fdd..aa3f199343c1dc0612c6e69743b1d5397a534020 100644 |
--- a/chrome/renderer/extensions/automation_internal_custom_bindings.cc |
+++ b/chrome/renderer/extensions/automation_internal_custom_bindings.cc |
@@ -116,6 +116,14 @@ AutomationInternalCustomBindings::AutomationInternalCustomBindings( |
ROUTE_FUNCTION(StartCachingAccessibilityTrees); |
ROUTE_FUNCTION(DestroyAccessibilityTree); |
ROUTE_FUNCTION(GetRootID); |
+ ROUTE_FUNCTION(GetDocURL); |
David Tseng
2015/10/19 18:21:38
I would like to see us to re-use get*Attribute her
|
+ ROUTE_FUNCTION(GetDocTitle); |
+ ROUTE_FUNCTION(GetDocLoaded); |
+ ROUTE_FUNCTION(GetDocLoadingProgress); |
+ ROUTE_FUNCTION(GetAnchorObjectID); |
+ ROUTE_FUNCTION(GetAnchorOffset); |
+ ROUTE_FUNCTION(GetFocusObjectID); |
+ ROUTE_FUNCTION(GetFocusOffset); |
ROUTE_FUNCTION(GetParentID); |
ROUTE_FUNCTION(GetChildCount); |
ROUTE_FUNCTION(GetChildIDAtIndex); |
@@ -237,6 +245,142 @@ void AutomationInternalCustomBindings::GetRootID( |
args.GetReturnValue().Set(v8::Integer::New(GetIsolate(), root_id)); |
} |
+void AutomationInternalCustomBindings::GetDocURL( |
+ const v8::FunctionCallbackInfo<v8::Value>& args) { |
+ if (args.Length() != 1 || !args[0]->IsNumber()) { |
+ ThrowInvalidArgumentsException(args); |
+ return; |
+ } |
+ |
+ int tree_id = args[0]->Int32Value(); |
+ const auto iter = tree_id_to_tree_cache_map_.find(tree_id); |
+ if (iter == tree_id_to_tree_cache_map_.end()) |
+ return; |
+ |
+ TreeCache* cache = iter->second; |
+ args.GetReturnValue().Set( |
+ v8::String::NewFromUtf8(GetIsolate(), cache->tree.data().url.c_str())); |
+} |
+ |
+void AutomationInternalCustomBindings::GetDocTitle( |
+ const v8::FunctionCallbackInfo<v8::Value>& args) { |
+ if (args.Length() != 1 || !args[0]->IsNumber()) { |
+ ThrowInvalidArgumentsException(args); |
+ return; |
+ } |
+ |
+ int tree_id = args[0]->Int32Value(); |
+ const auto iter = tree_id_to_tree_cache_map_.find(tree_id); |
+ if (iter == tree_id_to_tree_cache_map_.end()) |
+ return; |
+ |
+ TreeCache* cache = iter->second; |
+ args.GetReturnValue().Set( |
+ v8::String::NewFromUtf8(GetIsolate(), cache->tree.data().title.c_str())); |
+} |
+ |
+void AutomationInternalCustomBindings::GetDocLoaded( |
+ const v8::FunctionCallbackInfo<v8::Value>& args) { |
+ if (args.Length() != 1 || !args[0]->IsNumber()) { |
+ ThrowInvalidArgumentsException(args); |
+ return; |
+ } |
+ |
+ int tree_id = args[0]->Int32Value(); |
+ const auto iter = tree_id_to_tree_cache_map_.find(tree_id); |
+ if (iter == tree_id_to_tree_cache_map_.end()) |
+ return; |
+ |
+ TreeCache* cache = iter->second; |
+ args.GetReturnValue().Set( |
+ v8::Boolean::New(GetIsolate(), cache->tree.data().loaded)); |
+} |
+ |
+void AutomationInternalCustomBindings::GetDocLoadingProgress( |
+ const v8::FunctionCallbackInfo<v8::Value>& args) { |
+ if (args.Length() != 1 || !args[0]->IsNumber()) { |
+ ThrowInvalidArgumentsException(args); |
+ return; |
+ } |
+ |
+ int tree_id = args[0]->Int32Value(); |
+ const auto iter = tree_id_to_tree_cache_map_.find(tree_id); |
+ if (iter == tree_id_to_tree_cache_map_.end()) |
+ return; |
+ |
+ TreeCache* cache = iter->second; |
+ args.GetReturnValue().Set( |
+ v8::Number::New(GetIsolate(), cache->tree.data().loading_progress)); |
+} |
+ |
+void AutomationInternalCustomBindings::GetAnchorObjectID( |
+ const v8::FunctionCallbackInfo<v8::Value>& args) { |
+ if (args.Length() != 1 || !args[0]->IsNumber()) { |
+ ThrowInvalidArgumentsException(args); |
+ return; |
+ } |
+ |
+ int tree_id = args[0]->Int32Value(); |
+ const auto iter = tree_id_to_tree_cache_map_.find(tree_id); |
+ if (iter == tree_id_to_tree_cache_map_.end()) |
+ return; |
+ |
+ TreeCache* cache = iter->second; |
+ args.GetReturnValue().Set( |
+ v8::Number::New(GetIsolate(), cache->tree.data().sel_anchor_object_id)); |
+} |
+ |
+void AutomationInternalCustomBindings::GetAnchorOffset( |
+ const v8::FunctionCallbackInfo<v8::Value>& args) { |
+ if (args.Length() != 1 || !args[0]->IsNumber()) { |
+ ThrowInvalidArgumentsException(args); |
+ return; |
+ } |
+ |
+ int tree_id = args[0]->Int32Value(); |
+ const auto iter = tree_id_to_tree_cache_map_.find(tree_id); |
+ if (iter == tree_id_to_tree_cache_map_.end()) |
+ return; |
+ |
+ TreeCache* cache = iter->second; |
+ args.GetReturnValue().Set( |
+ v8::Number::New(GetIsolate(), cache->tree.data().sel_anchor_offset)); |
+} |
+ |
+void AutomationInternalCustomBindings::GetFocusObjectID( |
+ const v8::FunctionCallbackInfo<v8::Value>& args) { |
+ if (args.Length() != 1 || !args[0]->IsNumber()) { |
+ ThrowInvalidArgumentsException(args); |
+ return; |
+ } |
+ |
+ int tree_id = args[0]->Int32Value(); |
+ const auto iter = tree_id_to_tree_cache_map_.find(tree_id); |
+ if (iter == tree_id_to_tree_cache_map_.end()) |
+ return; |
+ |
+ TreeCache* cache = iter->second; |
+ args.GetReturnValue().Set( |
+ v8::Number::New(GetIsolate(), cache->tree.data().sel_focus_object_id)); |
+} |
+ |
+void AutomationInternalCustomBindings::GetFocusOffset( |
+ const v8::FunctionCallbackInfo<v8::Value>& args) { |
+ if (args.Length() != 1 || !args[0]->IsNumber()) { |
+ ThrowInvalidArgumentsException(args); |
+ return; |
+ } |
+ |
+ int tree_id = args[0]->Int32Value(); |
+ const auto iter = tree_id_to_tree_cache_map_.find(tree_id); |
+ if (iter == tree_id_to_tree_cache_map_.end()) |
+ return; |
+ |
+ TreeCache* cache = iter->second; |
+ args.GetReturnValue().Set( |
+ v8::Number::New(GetIsolate(), cache->tree.data().sel_focus_offset)); |
+} |
+ |
void AutomationInternalCustomBindings::GetParentID( |
const v8::FunctionCallbackInfo<v8::Value>& args) { |
ui::AXNode* node = nullptr; |
@@ -561,6 +705,8 @@ void AutomationInternalCustomBindings::OnAccessibilityEvent( |
context()->DispatchEvent("automationInternal.onAccessibilityEvent", args); |
} |
+void AutomationInternalCustomBindings::OnTreeDataChanged(ui::AXTree* tree) {} |
+ |
void AutomationInternalCustomBindings::OnNodeWillBeDeleted(ui::AXTree* tree, |
ui::AXNode* node) { |
SendTreeChangeEvent( |