blob: 8f63850b2049584889b99737af86a7f4252a2b44 [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_V8_SET_RETURN_VALUE_FOR_CORE_H_
#define THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_V8_SET_RETURN_VALUE_FOR_CORE_H_
#include "third_party/blink/renderer/bindings/core/v8/js_event_handler.h"
#include "third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h"
#include "third_party/blink/renderer/bindings/core/v8/script_value.h"
#include "third_party/blink/renderer/platform/bindings/v8_set_return_value.h"
namespace blink {
namespace bindings {
class NativeValueTraitsStringAdapter;
// ScriptValue
template <typename CallbackInfo, typename... ExtraArgs>
void V8SetReturnValue(const CallbackInfo& info,
const ScriptValue& value,
ExtraArgs... extra_args) {
// Ignore all |extra_args| given as inputs for optimization.
V8SetReturnValue(info, value.V8Value());
}
// String types
template <typename CallbackInfo>
void V8SetReturnValue(const CallbackInfo& info,
const NativeValueTraitsStringAdapter& value,
v8::Isolate* isolate,
V8ReturnValue::NonNullable) {
V8SetReturnValue(info, static_cast<String>(value), isolate,
V8ReturnValue::kNonNullable);
}
template <typename CallbackInfo>
void V8SetReturnValue(const CallbackInfo& info,
const NativeValueTraitsStringAdapter& value,
v8::Isolate* isolate,
V8ReturnValue::Nullable) {
V8SetReturnValue(info, static_cast<String>(value), isolate,
V8ReturnValue::kNullable);
}
// EventListener
template <typename CallbackInfo>
void V8SetReturnValue(const CallbackInfo& info,
const EventListener* value,
v8::Isolate* isolate,
EventTarget* event_target) {
EventListener* event_listener = const_cast<EventListener*>(value);
info.GetReturnValue().Set(
JSEventHandler::AsV8Value(isolate, event_target, event_listener));
}
} // namespace bindings
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_V8_SET_RETURN_VALUE_FOR_CORE_H_