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() {
AutomationAXTreeWrapper* tree_wrapper, ui::AXNode* node) {
const std::vector<int> line_starts =
node->GetOrComputeLineStartOffsets();
v8::Local<v8::Context> context = isolate->GetCurrentContext();
v8::Local<v8::Array> array_result(
v8::Array::New(isolate, line_starts.size()));
for (size_t i = 0; i < line_starts.size(); ++i) {
array_result->Set(static_cast<uint32_t>(i),
v8::Integer::New(isolate, line_starts[i]));
array_result
->CreateDataProperty(context, static_cast<uint32_t>(i),
v8::Integer::New(isolate, line_starts[i]))
.Check();
}
result.Set(array_result);
});
......@@ -838,11 +841,14 @@ void AutomationInternalCustomBindings::AddRoutes() {
ui::ParseIntAttribute(attribute_name.c_str());
std::set<int32_t> ids =
tree->GetReverseRelations(attribute, node->id());
v8::Local<v8::Context> context = isolate->GetCurrentContext();
v8::Local<v8::Array> array_result(v8::Array::New(isolate, ids.size()));
size_t count = 0;
for (int32_t id : ids) {
array_result->Set(static_cast<uint32_t>(count++),
v8::Integer::New(isolate, id));
array_result
->CreateDataProperty(context, static_cast<uint32_t>(count++),
v8::Integer::New(isolate, id))
.Check();
}
result.Set(array_result);
});
......@@ -876,11 +882,15 @@ void AutomationInternalCustomBindings::AddRoutes() {
const std::vector<int32_t>& attr_value =
node->data().GetIntListAttribute(attribute);
v8::Local<v8::Context> context = isolate->GetCurrentContext();
v8::Local<v8::Array> array_result(
v8::Array::New(isolate, attr_value.size()));
for (size_t i = 0; i < attr_value.size(); ++i)
array_result->Set(static_cast<uint32_t>(i),
v8::Integer::New(isolate, attr_value[i]));
for (size_t i = 0; i < attr_value.size(); ++i) {
array_result
->CreateDataProperty(context, static_cast<uint32_t>(i),
v8::Integer::New(isolate, attr_value[i]))
.Check();
}
result.Set(array_result);
});
RouteNodeIDPlusAttributeFunction(
......@@ -892,11 +902,14 @@ void AutomationInternalCustomBindings::AddRoutes() {
ui::ParseIntListAttribute(attribute_name.c_str());
std::set<int32_t> ids =
tree->GetReverseRelations(attribute, node->id());
v8::Local<v8::Context> context = isolate->GetCurrentContext();
v8::Local<v8::Array> array_result(v8::Array::New(isolate, ids.size()));
size_t count = 0;
for (int32_t id : ids) {
array_result->Set(static_cast<uint32_t>(count++),
v8::Integer::New(isolate, id));
array_result
->CreateDataProperty(context, static_cast<uint32_t>(count++),
v8::Integer::New(isolate, id))
.Check();
}
result.Set(array_result);
});
......@@ -990,13 +1003,17 @@ void AutomationInternalCustomBindings::AddRoutes() {
return;
}
v8::Local<v8::Context> context = isolate->GetCurrentContext();
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());
custom_actions
->CreateDataProperty(context, static_cast<uint32_t>(i),
custom_action.Build())
.Check();
}
result.Set(custom_actions);
});
......@@ -1127,11 +1144,15 @@ void AutomationInternalCustomBindings::AddRoutes() {
AutomationAXTreeWrapper* tree_wrapper, ui::AXNode* node) {
std::vector<int32_t> col_headers;
node->GetTableCellColHeaderNodeIds(&col_headers);
v8::Local<v8::Context> context = isolate->GetCurrentContext();
v8::Local<v8::Array> array_result(
v8::Array::New(isolate, col_headers.size()));
for (size_t i = 0; i < col_headers.size(); ++i)
array_result->Set(static_cast<uint32_t>(i),
v8::Integer::New(isolate, col_headers[i]));
for (size_t i = 0; i < col_headers.size(); ++i) {
array_result
->CreateDataProperty(context, static_cast<uint32_t>(i),
v8::Integer::New(isolate, col_headers[i]))
.Check();
}
result.Set(array_result);
});
RouteNodeIDFunction(
......@@ -1140,11 +1161,15 @@ void AutomationInternalCustomBindings::AddRoutes() {
AutomationAXTreeWrapper* tree_wrapper, ui::AXNode* node) {
std::vector<int32_t> row_headers;
node->GetTableCellRowHeaderNodeIds(&row_headers);
v8::Local<v8::Context> context = isolate->GetCurrentContext();
v8::Local<v8::Array> array_result(
v8::Array::New(isolate, row_headers.size()));
for (size_t i = 0; i < row_headers.size(); ++i)
array_result->Set(static_cast<uint32_t>(i),
v8::Integer::New(isolate, row_headers[i]));
for (size_t i = 0; i < row_headers.size(); ++i) {
array_result
->CreateDataProperty(context, static_cast<uint32_t>(i),
v8::Integer::New(isolate, row_headers[i]))
.Check();
}
result.Set(array_result);
});
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