blob: 72c3cd0d2ff372f104b38c8319a9177dc10e1df2 [file] [log] [blame]
{# Note that goog.provide is understood by the Closure Compiler even if the
Closure base library is unavailable. See https://crbug.com/898692 #}
goog.provide('{{module.namespace}}.{{interface.name}}');
goog.provide('{{module.namespace}}.{{interface.name}}Interface');
goog.provide('{{module.namespace}}.{{interface.name}}Request');
goog.provide('{{module.namespace}}.{{interface.name}}Proxy');
goog.provide('{{module.namespace}}.{{interface.name}}CallbackRouter');
{% macro generateInterfaceClassBody() -%}
{%- for method in interface.methods %}
/**
{%- for parameter in method.parameters %}
* @param { {{parameter.kind|lite_closure_type_with_nullability}} } {{parameter.name|sanitize_identifier}}
{%- endfor -%}
{%- if method.response_parameters != None %}
{%- if method.response_parameters|length == 0 %}
* @return {Promise}
{%- else %}
* @return {Promise<{
{%- for response_parameter in method.response_parameters %}
{{response_parameter.name}}: {{response_parameter.kind|lite_closure_type_with_nullability}},
{%- endfor %}
* }>}
{%- endif %}
{%- endif %}
*/
{{method.name}}(
{%- for parameter in method.parameters -%}
{{parameter.name|sanitize_identifier}}{% if not loop.last %}, {% endif %}
{%- endfor -%}
) {}
{%- endfor %}
{%- endmacro %}
/** @interface */
{{module.namespace}}.{{interface.name}}Interface = class {
{{ generateInterfaceClassBody() }}
};
{{module.namespace}}.{{interface.name}}Request = class {
/** @param {!MojoHandle} handle */
constructor(handle) {}
};
/** @implements { {{module.namespace}}.{{interface.name}}Interface } */
{{module.namespace}}.{{interface.name}}Proxy = class {
constructor() {
/** @public {!mojo.internal.ConnectionErrorEventRouter} */
this.onConnectionError;
}
{{ generateInterfaceClassBody() }}
/**
* @return {!{{module.namespace}}.{{interface.name}}Request}
*/
createRequest() {}
/**
* @return {Promise}
*/
flushForTesting() {}
};
{{module.namespace}}.{{interface.name}} = class {
/** @param {!{{module.namespace}}.{{interface.name}}Interface} impl */
constructor(impl) {}
/**
* @param {!MojoHandle} handle
*/
bindHandle(handle) {}
/**
* @return {!{{module.namespace}}.{{interface.name}}Proxy }
*/
static getProxy() {}
/**
* @return {!{{module.namespace}}.{{interface.name}}Proxy }
*/
createProxy() {}
};
/** @const {!string} */
{{module.namespace}}.{{interface.name}}.$interfaceName;
{{module.namespace}}.{{interface.name}}CallbackRouter = class {
constructor() {
{%- for method in interface.methods %}
/** @public {!mojo.internal.InterfaceCallbackTarget} */
this.{{method.name}};
{%- endfor %}
}
/**
* @param {!MojoHandle} handle
*/
bindHandle(handle) {}
/**
* @return {!{{module.namespace}}.{{interface.name}}Proxy }
*/
createProxy() {}
/**
* @param {number} id An ID returned by a prior call to addListener.
* @return {boolean} True iff the identified listener was found and removed.
*/
removeListener(id) {}
};
{#--- Enum definitions #}
{% for enum in interface.enums %}
/** @enum {number} */
{{module.namespace}}.{{interface.name}}.{{enum.name}} = {};
{%- for field in enum.fields %}
{{module.namespace}}.{{interface.name}}.{{enum.name}}.{{field.name}};
{%- endfor %}
{%- endfor %}