| Index: third_party/WebKit/Source/bindings/core/v8/V8BindingMacros.h
|
| diff --git a/third_party/WebKit/Source/bindings/core/v8/V8BindingMacros.h b/third_party/WebKit/Source/bindings/core/v8/V8BindingMacros.h
|
| index 3b55b06f35914fa096a57ab701b88beba9dff105..c4ca60586ae1f8a165efc57b82d0c5b102091db6 100644
|
| --- a/third_party/WebKit/Source/bindings/core/v8/V8BindingMacros.h
|
| +++ b/third_party/WebKit/Source/bindings/core/v8/V8BindingMacros.h
|
| @@ -31,6 +31,10 @@
|
| #ifndef V8BindingMacros_h
|
| #define V8BindingMacros_h
|
|
|
| +#include "bindings/core/v8/ScriptState.h"
|
| +#include "bindings/core/v8/ScriptValue.h"
|
| +#include <v8.h>
|
| +
|
| namespace blink {
|
|
|
| // type is an instance of class template V8StringResource<>,
|
| @@ -103,6 +107,28 @@ inline v8::Local<T> v8CallOrCrash(v8::MaybeLocal<T> maybeLocal)
|
| return maybeLocal.ToLocalChecked();
|
| }
|
|
|
| +v8::MaybeLocal<v8::Value> v8CallExtra(ScriptState* scriptState, const char* name, size_t numArgs, v8::Local<v8::Value>* args)
|
| +{
|
| + v8::Isolate* isolate = scriptState->isolate();
|
| + v8::Local<v8::Context> context = scriptState->context();
|
| + v8::Local<v8::Value> undefined = v8::Undefined(isolate);
|
| + v8::Local<v8::Value> functionValue = scriptState->getFromExtrasExports(name).v8Value();
|
| + v8::Local<v8::Function> function = functionValue.As<v8::Function>();
|
| + return function->Call(context, undefined, numArgs, args);
|
| +}
|
| +
|
| +template <size_t N>
|
| +v8::MaybeLocal<v8::Value> v8CallExtra(ScriptState* scriptState, const char* name, v8::Local<v8::Value>(&args)[N])
|
| +{
|
| + return v8CallExtra(scriptState, name, N, args);
|
| +}
|
| +
|
| +template <size_t N>
|
| +v8::Local<v8::Value> v8CallExtraOrCrash(ScriptState* scriptState, const char* name, v8::Local<v8::Value>(&args)[N])
|
| +{
|
| + return v8CallOrCrash(v8CallExtra(scriptState, name, N, args));
|
| +}
|
| +
|
| // The last "else" is to avoid dangling else problem.
|
| #define V8_CALL(outVariable, handle, methodCall, failureExpression) \
|
| if (handle.IsEmpty() || !v8Call(handle->methodCall, outVariable)) { \
|
|
|