Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/renderer/extensions/automation_internal_custom_bindings.h" | 5 #include "chrome/renderer/extensions/automation_internal_custom_bindings.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 721 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 732 result.Set(v8::String::NewFromUtf8(isolate, attr_value.c_str())); | 732 result.Set(v8::String::NewFromUtf8(isolate, attr_value.c_str())); |
| 733 }); | 733 }); |
| 734 RouteNodeIDFunction( | 734 RouteNodeIDFunction( |
| 735 "GetNameFrom", [](v8::Isolate* isolate, v8::ReturnValue<v8::Value> result, | 735 "GetNameFrom", [](v8::Isolate* isolate, v8::ReturnValue<v8::Value> result, |
| 736 TreeCache* cache, ui::AXNode* node) { | 736 TreeCache* cache, ui::AXNode* node) { |
| 737 ui::AXNameFrom name_from = static_cast<ui::AXNameFrom>( | 737 ui::AXNameFrom name_from = static_cast<ui::AXNameFrom>( |
| 738 node->data().GetIntAttribute(ui::AX_ATTR_NAME_FROM)); | 738 node->data().GetIntAttribute(ui::AX_ATTR_NAME_FROM)); |
| 739 std::string name_from_str = ui::ToString(name_from); | 739 std::string name_from_str = ui::ToString(name_from); |
| 740 result.Set(v8::String::NewFromUtf8(isolate, name_from_str.c_str())); | 740 result.Set(v8::String::NewFromUtf8(isolate, name_from_str.c_str())); |
| 741 }); | 741 }); |
| 742 RouteNodeIDFunction("GetCustomActions", [](v8::Isolate* isolate, | |
| 743 v8::ReturnValue<v8::Value> result, | |
| 744 TreeCache* cache, | |
| 745 ui::AXNode* node) { | |
| 746 const std::vector<int32_t>& custom_action_ids = | |
| 747 node->data().GetIntListAttribute(ui::AX_ATTR_CUSTOM_ACTION_IDS); | |
| 748 if (custom_action_ids.empty()) { | |
| 749 result.SetUndefined(); | |
| 750 return; | |
| 751 } | |
| 752 | |
| 753 const std::vector<std::string>& custom_action_descriptions = | |
| 754 node->data().GetStringListAttribute( | |
| 755 ui::AX_ATTR_CUSTOM_ACTION_DESCRIPTIONS); | |
| 756 if (custom_action_ids.size() != custom_action_descriptions.size()) { | |
| 757 result.SetUndefined(); | |
|
David Tseng
2017/05/16 22:33:23
I would actually NOTREACHED here.
yawano
2017/06/02 09:02:38
Done.
| |
| 758 return; | |
| 759 } | |
| 760 | |
| 761 v8::Local<v8::Array> custom_actions( | |
| 762 v8::Array::New(isolate, custom_action_ids.size())); | |
| 763 for (size_t i = 0; i < custom_action_ids.size(); i++) { | |
| 764 v8::Local<v8::Object> custom_action(v8::Object::New(isolate)); | |
| 765 SafeSetV8Property(isolate, custom_action, "id", | |
| 766 v8::Integer::New(isolate, custom_action_ids[i])); | |
| 767 SafeSetV8Property(isolate, custom_action, "description", | |
| 768 v8::String::NewFromUtf8( | |
| 769 isolate, custom_action_descriptions[i].c_str())); | |
| 770 custom_actions->Set(static_cast<uint32_t>(i), custom_action); | |
| 771 } | |
| 772 result.Set(custom_actions); | |
| 773 }); | |
| 742 RouteNodeIDFunction("GetChecked", [](v8::Isolate* isolate, | 774 RouteNodeIDFunction("GetChecked", [](v8::Isolate* isolate, |
| 743 v8::ReturnValue<v8::Value> result, | 775 v8::ReturnValue<v8::Value> result, |
| 744 TreeCache* cache, ui::AXNode* node) { | 776 TreeCache* cache, ui::AXNode* node) { |
| 745 const ui::AXCheckedState checked_state = static_cast<ui::AXCheckedState>( | 777 const ui::AXCheckedState checked_state = static_cast<ui::AXCheckedState>( |
| 746 node->data().GetIntAttribute(ui::AX_ATTR_CHECKED_STATE)); | 778 node->data().GetIntAttribute(ui::AX_ATTR_CHECKED_STATE)); |
| 747 if (checked_state) { | 779 if (checked_state) { |
| 748 const std::string checked_str = ui::ToString(checked_state); | 780 const std::string checked_str = ui::ToString(checked_state); |
| 749 result.Set(v8::String::NewFromUtf8(isolate, checked_str.c_str())); | 781 result.Set(v8::String::NewFromUtf8(isolate, checked_str.c_str())); |
| 750 } | 782 } |
| 751 }); | 783 }); |
| (...skipping 677 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1429 for (auto id : ids) | 1461 for (auto id : ids) |
| 1430 nodes->AppendInteger(id); | 1462 nodes->AppendInteger(id); |
| 1431 args.Append(std::move(nodes)); | 1463 args.Append(std::move(nodes)); |
| 1432 } | 1464 } |
| 1433 | 1465 |
| 1434 bindings_system_->DispatchEventInContext("automationInternal.onNodesRemoved", | 1466 bindings_system_->DispatchEventInContext("automationInternal.onNodesRemoved", |
| 1435 &args, nullptr, context()); | 1467 &args, nullptr, context()); |
| 1436 } | 1468 } |
| 1437 | 1469 |
| 1438 } // namespace extensions | 1470 } // namespace extensions |
| OLD | NEW |