blob: 979ec6f5877b0c42f7cd0112338dd467baa222f5 [file] [log] [blame]
// Copyright 2014 The Dartium 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_dart}}. DO NOT MODIFY!
#include "sky/engine/config.h"
#include "{{dart_class}}.h"
{% for filename in cpp_includes %}
#include "{{filename}}"
{% endfor %}
#include "sky/engine/tonic/dart_api_scope.h"
#include "sky/engine/tonic/dart_converter.h"
#include "sky/engine/tonic/dart_isolate_scope.h"
namespace blink {
{% for method in methods if not method.custom %}
{{method.cpp_type}} {{dart_class}}::{{method.name}}({{method.argument_declarations | join(', ')}})
{
{% set return_default = 'return true'
if method.idl_type == 'boolean' else 'return' %}{# void #}
if (!callback_.IsIsolateAlive())
{{return_default}};
DartIsolateScope scope(callback_.GetIsolate());
DartApiScope apiScope;
{% if method.call_with_this_handle %}
// FIXME: we ignore thisValue which may or may not be correct for Dart.
{% endif %}
{% for argument in method.arguments %}
Dart_Handle {{argument.handle}} = {{argument.cpp_value_to_dart_value}};
if (Dart_IsError({{argument.handle}}))
{{return_default}};
{% endfor %}
{% if method.arguments %}
Dart_Handle arguments[] = { {{method.arguments | join(', ', attribute='handle')}} };
{% else %}
Dart_Handle *arguments = 0;
{% endif %}
{% set return_with = 'return'
if method.idl_type == 'boolean' else '' %}{# void #}
{{return_with}} callback_.handleEvent({{method.arguments | length}}, arguments);
}
{% endfor %}
} // namespace blink