Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(79)

Unified Diff: extensions/renderer/safe_builtins.cc

Issue 1167423002: Use V8 Maybe APIs in extensions/renderer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « extensions/renderer/runtime_custom_bindings.cc ('k') | extensions/renderer/script_context.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: extensions/renderer/safe_builtins.cc
diff --git a/extensions/renderer/safe_builtins.cc b/extensions/renderer/safe_builtins.cc
index c3b22df0fc97f4d4e103c991c0d929089b32a745..7227319f4915201c6bbce77163a512a6ba262a5f 100644
--- a/extensions/renderer/safe_builtins.cc
+++ b/extensions/renderer/safe_builtins.cc
@@ -8,6 +8,7 @@
#include "base/stl_util.h"
#include "base/strings/stringprintf.h"
#include "extensions/renderer/script_context.h"
+#include "extensions/renderer/v8_maybe_helpers.h"
namespace extensions {
@@ -123,8 +124,9 @@ const char kScript[] =
"}());\n";
v8::Local<v8::String> MakeKey(const char* name, v8::Isolate* isolate) {
- return v8::String::NewFromUtf8(
- isolate, base::StringPrintf("%s::%s", kClassName, name).c_str());
+ std::string key = base::StringPrintf("%s::%s", kClassName, name);
+ CHECK(key.size() < v8::String::kMaxLength);
+ return ToV8String(isolate, key.c_str());
}
void SaveImpl(const char* name,
@@ -150,9 +152,10 @@ class ExtensionImpl : public v8::Extension {
v8::Local<v8::FunctionTemplate> GetNativeFunctionTemplate(
v8::Isolate* isolate,
v8::Local<v8::String> name) override {
- if (name->Equals(v8::String::NewFromUtf8(isolate, "Apply")))
+ v8::Local<v8::Context> context = isolate->GetCurrentContext();
+ if (CheckV8Call(name->Equals(context, ToV8String(isolate, "Apply"))))
return v8::FunctionTemplate::New(isolate, Apply);
- if (name->Equals(v8::String::NewFromUtf8(isolate, "Save")))
+ if (CheckV8Call(name->Equals(context, ToV8String(isolate, "Save"))))
return v8::FunctionTemplate::New(isolate, Save);
NOTREACHED() << *v8::String::Utf8Value(name);
return v8::Local<v8::FunctionTemplate>();
@@ -170,27 +173,28 @@ class ExtensionImpl : public v8::Extension {
recv = v8::Local<v8::Object>::Cast(info[1]);
} else if (info[1]->IsString()) {
recv = v8::StringObject::New(v8::Local<v8::String>::Cast(info[1]))
- ->ToObject(info.GetIsolate());
+ .As<v8::Object>();
} else {
info.GetIsolate()->ThrowException(
- v8::Exception::TypeError(v8::String::NewFromUtf8(
+ v8::Exception::TypeError(ToV8String(
info.GetIsolate(),
"The first argument is the receiver and must be an object")));
return;
}
v8::Local<v8::Object> args = v8::Local<v8::Object>::Cast(info[2]);
- int first_arg_index = info[3]->ToInt32(info.GetIsolate())->Value();
- int args_length = info[4]->ToInt32(info.GetIsolate())->Value();
+ int first_arg_index = info[3].As<v8::Int32>()->Value();
+ int args_length = info[4].As<v8::Int32>()->Value();
+ v8::Local<v8::Context> context = info.GetIsolate()->GetCurrentContext();
int argc = args_length - first_arg_index;
scoped_ptr<v8::Local<v8::Value> []> argv(new v8::Local<v8::Value>[argc]);
for (int i = 0; i < argc; ++i) {
- CHECK(args->Has(i + first_arg_index));
- argv[i] = args->Get(i + first_arg_index);
+ CHECK(CheckV8Call(args->Has(context, i + first_arg_index)));
+ argv[i] = args->Get(context, i + first_arg_index).ToLocalChecked();
}
- v8::Local<v8::Value> return_value = function->Call(recv, argc, argv.get());
- if (!return_value.IsEmpty())
+ v8::Local<v8::Value> return_value;
+ if (function->Call(context, recv, argc, argv.get()).ToLocal(&return_value))
info.GetReturnValue().Set(return_value);
}
« no previous file with comments | « extensions/renderer/runtime_custom_bindings.cc ('k') | extensions/renderer/script_context.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698