| Index: third_party/WebKit/Source/bindings/core/v8/V8BindingForCore.h
|
| diff --git a/third_party/WebKit/Source/bindings/core/v8/V8BindingForCore.h b/third_party/WebKit/Source/bindings/core/v8/V8BindingForCore.h
|
| index a5433d25adaa8db5013332de1ea20bb8d19c1c55..a8bdd423856eeaedc604926c1c1dea938ef031e1 100644
|
| --- a/third_party/WebKit/Source/bindings/core/v8/V8BindingForCore.h
|
| +++ b/third_party/WebKit/Source/bindings/core/v8/V8BindingForCore.h
|
| @@ -40,6 +40,7 @@
|
| #include "bindings/core/v8/ScriptState.h"
|
| #include "bindings/core/v8/ScriptValue.h"
|
| #include "bindings/core/v8/ScriptWrappable.h"
|
| +#include "bindings/core/v8/ToV8ForCore.h"
|
| #include "bindings/core/v8/V8Binding.h"
|
| #include "bindings/core/v8/V8BindingMacros.h"
|
| #include "bindings/core/v8/V8PerIsolateData.h"
|
| @@ -49,6 +50,7 @@
|
| #include "bindings/core/v8/V8ValueCache.h"
|
| #include "core/CoreExport.h"
|
| #include "core/dom/ArrayBufferViewHelpers.h"
|
| +#include "core/dom/Node.h"
|
| #include "platform/heap/Handle.h"
|
| #include "platform/wtf/text/AtomicString.h"
|
| #include "platform/wtf/text/StringView.h"
|
| @@ -63,6 +65,7 @@ namespace blink {
|
|
|
| class DOMWindow;
|
| class EventListener;
|
| +class EventTarget;
|
| class ExceptionState;
|
| class ExecutionContext;
|
| class FlexibleArrayBufferView;
|
| @@ -72,6 +75,88 @@ class LocalFrame;
|
| class NodeFilter;
|
| class XPathNSResolver;
|
|
|
| +template <typename CallbackInfo>
|
| +inline void V8SetReturnValue(const CallbackInfo& callback_info,
|
| + DOMWindow* impl) {
|
| + V8SetReturnValue(callback_info, ToV8(impl, callback_info.Holder(),
|
| + callback_info.GetIsolate()));
|
| +}
|
| +
|
| +template <typename CallbackInfo>
|
| +inline void V8SetReturnValue(const CallbackInfo& callback_info,
|
| + EventTarget* impl) {
|
| + V8SetReturnValue(callback_info, ToV8(impl, callback_info.Holder(),
|
| + callback_info.GetIsolate()));
|
| +}
|
| +
|
| +template <typename CallbackInfo>
|
| +inline void V8SetReturnValue(const CallbackInfo& callback_info, Node* impl) {
|
| + V8SetReturnValue(callback_info, static_cast<ScriptWrappable*>(impl));
|
| +}
|
| +
|
| +template <typename CallbackInfo>
|
| +inline void V8SetReturnValueForMainWorld(const CallbackInfo& callback_info,
|
| + DOMWindow* impl) {
|
| + V8SetReturnValue(callback_info, ToV8(impl, callback_info.Holder(),
|
| + callback_info.GetIsolate()));
|
| +}
|
| +
|
| +template <typename CallbackInfo>
|
| +inline void V8SetReturnValueForMainWorld(const CallbackInfo& callback_info,
|
| + EventTarget* impl) {
|
| + V8SetReturnValue(callback_info, ToV8(impl, callback_info.Holder(),
|
| + callback_info.GetIsolate()));
|
| +}
|
| +
|
| +template <typename CallbackInfo>
|
| +inline void V8SetReturnValueForMainWorld(const CallbackInfo& callback_info,
|
| + Node* impl) {
|
| + // Since EventTarget has a special version of ToV8 and V8EventTarget.h
|
| + // defines its own v8SetReturnValue family, which are slow, we need to
|
| + // override them with optimized versions for Node and its subclasses.
|
| + // Without this overload, V8SetReturnValueForMainWorld for Node would be
|
| + // very slow.
|
| + //
|
| + // class hierarchy:
|
| + // ScriptWrappable <-- EventTarget <--+-- Node <-- ...
|
| + // +-- Window
|
| + // overloads:
|
| + // V8SetReturnValueForMainWorld(ScriptWrappable*)
|
| + // Optimized and very fast.
|
| + // V8SetReturnValueForMainWorld(EventTarget*)
|
| + // Uses custom ToV8 function and slow.
|
| + // V8SetReturnValueForMainWorld(Node*)
|
| + // Optimized and very fast.
|
| + // V8SetReturnValueForMainWorld(Window*)
|
| + // Uses custom ToV8 function and slow.
|
| + V8SetReturnValueForMainWorld(callback_info,
|
| + static_cast<ScriptWrappable*>(impl));
|
| +}
|
| +
|
| +template <typename CallbackInfo>
|
| +inline void V8SetReturnValueFast(const CallbackInfo& callback_info,
|
| + DOMWindow* impl,
|
| + const ScriptWrappable*) {
|
| + V8SetReturnValue(callback_info, ToV8(impl, callback_info.Holder(),
|
| + callback_info.GetIsolate()));
|
| +}
|
| +
|
| +template <typename CallbackInfo>
|
| +inline void V8SetReturnValueFast(const CallbackInfo& callback_info,
|
| + EventTarget* impl,
|
| + const ScriptWrappable*) {
|
| + V8SetReturnValue(callback_info, ToV8(impl, callback_info.Holder(),
|
| + callback_info.GetIsolate()));
|
| +}
|
| +
|
| +template <typename CallbackInfo>
|
| +inline void V8SetReturnValueFast(const CallbackInfo& callback_info,
|
| + Node* impl,
|
| + const ScriptWrappable* wrappable) {
|
| + V8SetReturnValueFast(callback_info, static_cast<ScriptWrappable*>(impl),
|
| + wrappable);
|
| +}
|
| +
|
| template <typename CallbackInfo, typename T>
|
| inline void V8SetReturnValue(const CallbackInfo& callbackInfo,
|
| NotShared<T> notShared) {
|
|
|