// Copyright 2014 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. // This file has been auto-generated by {{code_generator}}. DO NOT MODIFY! #include "sky/engine/config.h" {% filter conditional(conditional_string) %} #include "{{v8_class}}.h" {% for filename in cpp_includes %} #include "{{filename}}" {% endfor %} namespace blink { {{v8_class}}::{{v8_class}}(v8::Handle callback, ScriptState* scriptState) : ActiveDOMCallback(scriptState->executionContext()) , m_scriptState(scriptState) { m_callback.set(scriptState->isolate(), callback); } {{v8_class}}::~{{v8_class}}() { } {% for method in methods if not method.is_custom %} {{method.cpp_type}} {{v8_class}}::{{method.name}}({{method.argument_declarations | join(', ')}}) { {% set return_default = 'return true' if method.idl_type == 'boolean' else 'return' %}{# void #} if (!canInvokeCallback()) {{return_default}}; if (m_scriptState->contextIsEmpty()) {{return_default}}; ScriptState::Scope scope(m_scriptState.get()); {% if method.call_with_this_handle %} v8::Handle thisHandle = thisValue.v8Value(); if (thisHandle.IsEmpty()) { if (!isScriptControllerTerminating()) CRASH(); {{return_default}}; } {% endif %} {% for argument in method.arguments %} v8::Handle {{argument.handle}} = {{argument.cpp_value_to_v8_value}}; if ({{argument.handle}}.IsEmpty()) { if (!isScriptControllerTerminating()) CRASH(); {{return_default}}; } {% endfor %} {% if method.arguments %} v8::Handle argv[] = { {{method.arguments | join(', ', 'handle')}} }; {% else %} {# Empty array initializers are illegal, and don't compile in MSVC. #} v8::Handle *argv = 0; {% endif %} {% set this_handle_parameter = 'thisHandle, ' if method.call_with_this_handle else 'm_scriptState->context()->Global(), ' %} {% if method.idl_type == 'boolean' %} v8::TryCatch exceptionCatcher; exceptionCatcher.SetVerbose(true); ScriptController::callFunction(m_scriptState->executionContext(), m_callback.newLocal(m_scriptState->isolate()), {{this_handle_parameter}}{{method.arguments | length}}, argv, m_scriptState->isolate()); return !exceptionCatcher.HasCaught(); {% else %}{# void #} ScriptController::callFunction(m_scriptState->executionContext(), m_callback.newLocal(m_scriptState->isolate()), {{this_handle_parameter}}{{method.arguments | length}}, argv, m_scriptState->isolate()); {% endif %} } {% endfor %} } // namespace blink {% endfilter %}