Commit f285a923 authored by Dan Elphick's avatar Dan Elphick Committed by Commit Bot

[v8] Fix uses of deprecated Object::Set in chromecast/renderer/extensions

This is basically the same as
https://chromium-review.googlesource.com/c/chromium/src/+/1552877 but
for chromecast/renderer.

Uses Context version of Object::Set and calls Check on the result in
cases where it cannot fail and CreateDataProperty for setting values in
Arrays to avoid potential modifications by user-scripts to the Array
prototype.

Bug: v8:7283
Change-Id: I0a66ed2205526ef30ce4357b0670cae67589aeb1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1583893
Auto-Submit: Dan Elphick <delphick@chromium.org>
Reviewed-by: default avatarLuke Halliwell <halliwell@chromium.org>
Commit-Queue: Dan Elphick <delphick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#654377}
parent 54f0f7fa
...@@ -674,11 +674,14 @@ void AutomationInternalCustomBindings::AddRoutes() { ...@@ -674,11 +674,14 @@ void AutomationInternalCustomBindings::AddRoutes() {
AutomationAXTreeWrapper* tree_wrapper, ui::AXNode* node) { AutomationAXTreeWrapper* tree_wrapper, ui::AXNode* node) {
const std::vector<int> line_starts = const std::vector<int> line_starts =
node->GetOrComputeLineStartOffsets(); node->GetOrComputeLineStartOffsets();
v8::Local<v8::Context> context = isolate->GetCurrentContext();
v8::Local<v8::Array> array_result( v8::Local<v8::Array> array_result(
v8::Array::New(isolate, line_starts.size())); v8::Array::New(isolate, line_starts.size()));
for (size_t i = 0; i < line_starts.size(); ++i) { for (size_t i = 0; i < line_starts.size(); ++i) {
array_result->Set(static_cast<uint32_t>(i), array_result
v8::Integer::New(isolate, line_starts[i])); ->CreateDataProperty(context, static_cast<uint32_t>(i),
v8::Integer::New(isolate, line_starts[i]))
.Check();
} }
result.Set(array_result); result.Set(array_result);
}); });
...@@ -838,11 +841,14 @@ void AutomationInternalCustomBindings::AddRoutes() { ...@@ -838,11 +841,14 @@ void AutomationInternalCustomBindings::AddRoutes() {
ui::ParseIntAttribute(attribute_name.c_str()); ui::ParseIntAttribute(attribute_name.c_str());
std::set<int32_t> ids = std::set<int32_t> ids =
tree->GetReverseRelations(attribute, node->id()); tree->GetReverseRelations(attribute, node->id());
v8::Local<v8::Context> context = isolate->GetCurrentContext();
v8::Local<v8::Array> array_result(v8::Array::New(isolate, ids.size())); v8::Local<v8::Array> array_result(v8::Array::New(isolate, ids.size()));
size_t count = 0; size_t count = 0;
for (int32_t id : ids) { for (int32_t id : ids) {
array_result->Set(static_cast<uint32_t>(count++), array_result
v8::Integer::New(isolate, id)); ->CreateDataProperty(context, static_cast<uint32_t>(count++),
v8::Integer::New(isolate, id))
.Check();
} }
result.Set(array_result); result.Set(array_result);
}); });
...@@ -876,11 +882,15 @@ void AutomationInternalCustomBindings::AddRoutes() { ...@@ -876,11 +882,15 @@ void AutomationInternalCustomBindings::AddRoutes() {
const std::vector<int32_t>& attr_value = const std::vector<int32_t>& attr_value =
node->data().GetIntListAttribute(attribute); node->data().GetIntListAttribute(attribute);
v8::Local<v8::Context> context = isolate->GetCurrentContext();
v8::Local<v8::Array> array_result( v8::Local<v8::Array> array_result(
v8::Array::New(isolate, attr_value.size())); v8::Array::New(isolate, attr_value.size()));
for (size_t i = 0; i < attr_value.size(); ++i) for (size_t i = 0; i < attr_value.size(); ++i) {
array_result->Set(static_cast<uint32_t>(i), array_result
v8::Integer::New(isolate, attr_value[i])); ->CreateDataProperty(context, static_cast<uint32_t>(i),
v8::Integer::New(isolate, attr_value[i]))
.Check();
}
result.Set(array_result); result.Set(array_result);
}); });
RouteNodeIDPlusAttributeFunction( RouteNodeIDPlusAttributeFunction(
...@@ -892,11 +902,14 @@ void AutomationInternalCustomBindings::AddRoutes() { ...@@ -892,11 +902,14 @@ void AutomationInternalCustomBindings::AddRoutes() {
ui::ParseIntListAttribute(attribute_name.c_str()); ui::ParseIntListAttribute(attribute_name.c_str());
std::set<int32_t> ids = std::set<int32_t> ids =
tree->GetReverseRelations(attribute, node->id()); tree->GetReverseRelations(attribute, node->id());
v8::Local<v8::Context> context = isolate->GetCurrentContext();
v8::Local<v8::Array> array_result(v8::Array::New(isolate, ids.size())); v8::Local<v8::Array> array_result(v8::Array::New(isolate, ids.size()));
size_t count = 0; size_t count = 0;
for (int32_t id : ids) { for (int32_t id : ids) {
array_result->Set(static_cast<uint32_t>(count++), array_result
v8::Integer::New(isolate, id)); ->CreateDataProperty(context, static_cast<uint32_t>(count++),
v8::Integer::New(isolate, id))
.Check();
} }
result.Set(array_result); result.Set(array_result);
}); });
...@@ -990,13 +1003,17 @@ void AutomationInternalCustomBindings::AddRoutes() { ...@@ -990,13 +1003,17 @@ void AutomationInternalCustomBindings::AddRoutes() {
return; return;
} }
v8::Local<v8::Context> context = isolate->GetCurrentContext();
v8::Local<v8::Array> custom_actions( v8::Local<v8::Array> custom_actions(
v8::Array::New(isolate, custom_action_ids.size())); v8::Array::New(isolate, custom_action_ids.size()));
for (size_t i = 0; i < custom_action_ids.size(); i++) { for (size_t i = 0; i < custom_action_ids.size(); i++) {
gin::DataObjectBuilder custom_action(isolate); gin::DataObjectBuilder custom_action(isolate);
custom_action.Set("id", custom_action_ids[i]); custom_action.Set("id", custom_action_ids[i]);
custom_action.Set("description", custom_action_descriptions[i]); custom_action.Set("description", custom_action_descriptions[i]);
custom_actions->Set(static_cast<uint32_t>(i), custom_action.Build()); custom_actions
->CreateDataProperty(context, static_cast<uint32_t>(i),
custom_action.Build())
.Check();
} }
result.Set(custom_actions); result.Set(custom_actions);
}); });
...@@ -1127,11 +1144,15 @@ void AutomationInternalCustomBindings::AddRoutes() { ...@@ -1127,11 +1144,15 @@ void AutomationInternalCustomBindings::AddRoutes() {
AutomationAXTreeWrapper* tree_wrapper, ui::AXNode* node) { AutomationAXTreeWrapper* tree_wrapper, ui::AXNode* node) {
std::vector<int32_t> col_headers; std::vector<int32_t> col_headers;
node->GetTableCellColHeaderNodeIds(&col_headers); node->GetTableCellColHeaderNodeIds(&col_headers);
v8::Local<v8::Context> context = isolate->GetCurrentContext();
v8::Local<v8::Array> array_result( v8::Local<v8::Array> array_result(
v8::Array::New(isolate, col_headers.size())); v8::Array::New(isolate, col_headers.size()));
for (size_t i = 0; i < col_headers.size(); ++i) for (size_t i = 0; i < col_headers.size(); ++i) {
array_result->Set(static_cast<uint32_t>(i), array_result
v8::Integer::New(isolate, col_headers[i])); ->CreateDataProperty(context, static_cast<uint32_t>(i),
v8::Integer::New(isolate, col_headers[i]))
.Check();
}
result.Set(array_result); result.Set(array_result);
}); });
RouteNodeIDFunction( RouteNodeIDFunction(
...@@ -1140,11 +1161,15 @@ void AutomationInternalCustomBindings::AddRoutes() { ...@@ -1140,11 +1161,15 @@ void AutomationInternalCustomBindings::AddRoutes() {
AutomationAXTreeWrapper* tree_wrapper, ui::AXNode* node) { AutomationAXTreeWrapper* tree_wrapper, ui::AXNode* node) {
std::vector<int32_t> row_headers; std::vector<int32_t> row_headers;
node->GetTableCellRowHeaderNodeIds(&row_headers); node->GetTableCellRowHeaderNodeIds(&row_headers);
v8::Local<v8::Context> context = isolate->GetCurrentContext();
v8::Local<v8::Array> array_result( v8::Local<v8::Array> array_result(
v8::Array::New(isolate, row_headers.size())); v8::Array::New(isolate, row_headers.size()));
for (size_t i = 0; i < row_headers.size(); ++i) for (size_t i = 0; i < row_headers.size(); ++i) {
array_result->Set(static_cast<uint32_t>(i), array_result
v8::Integer::New(isolate, row_headers[i])); ->CreateDataProperty(context, static_cast<uint32_t>(i),
v8::Integer::New(isolate, row_headers[i]))
.Check();
}
result.Set(array_result); result.Set(array_result);
}); });
RouteNodeIDFunction( RouteNodeIDFunction(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment