blob: 3a399c62046b844bc91f5a3285f294169751ca86 [file] [log] [blame]
{#
# Copyright 2016 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#}
{% extends "callback-interface-base.h.template" %}
{% block includes %}
#include "cobalt/script/wrappable.h"
#include "cobalt/script/javascriptcore/jsc_callback_interface.h"
#include "third_party/WebKit/Source/JavaScriptCore/runtime/JSObject.h"
{% for include in header_includes %}
#include "{{include}}"
{% endfor %}
{% endblock includes %}
{% block implementation %}
namespace cobalt {
{% for component in components %}
namespace {{component}} {
{% endfor %}
class {{binding_class}} : public {{impl_class}} {
public:
{{binding_class}}(JSC::JSObject* implementing_object);
{% for operation in operations %}
{% for overload in operation.overloads %}
{{overload.type}} {{overload.name}}(
const scoped_refptr<script::Wrappable>& callback_this,
{% for arg in overload.arguments %}
{{arg.arg_type}} {{arg.name}},
{% endfor %}
bool* had_exception) const OVERRIDE;
{% endfor %}
{% endfor %}
JSC::JSObject* implementing_object() const { return implementing_object_; }
private:
JSC::JSObject* implementing_object_;
};
{% for component in components %}
} // namespace {{component}}
{% endfor %}
namespace script {
// Explicit instantiation of CallbackInterfaceTraits struct so we can infer
// the type of the generated class from the type of the callback interface.
template<>
struct CallbackInterfaceTraits<{{fully_qualified_impl_class}}> {
typedef {{fully_qualified_binding_class}} JSCCallbackInterfaceClass;
};
} // namespace script
} // namespace cobalt
{% endblock implementation %}