Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Unified Diff: mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl

Issue 1433183002: Generate Mojom Types for Dart (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Simplify identifier_store for Go and Dart Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl
diff --git a/mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl b/mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl
index 5960c4a336bf8a39cfaaf2d3a58c8e6cd0e9ae92..4398d66f45156a41ad376bbb9a7a927cc4008de6 100644
--- a/mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl
+++ b/mojo/public/tools/bindings/generators/dart_templates/interface_definition.tmpl
@@ -8,9 +8,37 @@ const String {{interface|name}}Name =
{#--- Interface Enums #}
{%- from "enum_definition.tmpl" import enum_def -%}
{%- for enum in interface.enums %}
- {{ enum_def(enum) }}
+ {{ enum_def(enum, typepkg, package) }}
{%- endfor %}
+{{ mojom_type_macros.writeMojomTypeDef(interface, typepkg, package) }}
+
+class _{{interface|name}}ServiceDescription extends {{descpkg}}ServiceDescription {
zra 2015/11/24 17:34:44 Should this be extends or implements?
alexfandrianto 2015/12/18 01:53:19 It doesn't matter, but I think the preference was
+ // Avoid infinite loop by overriding serviceDescription field.
zra 2015/11/24 17:34:44 I don't understand this comment.
alexfandrianto 2015/12/18 01:53:19 It's not needed anymore.
+ final {{descpkg}}ServiceDescription serviceDescription = null;
+{% if should_gen_mojom_types -%}
+ dynamic getTopLevelInterface([Function responseFactory = null]) {
+ return {{interface|mojom_type_identifier}}();
+ }
+ dynamic getTypeDefinition(String typeKey,[Function responseFactory = null]) {
+ return getAllMojomTypeDefinitions()[typeKey];
+ }
+ dynamic getAllTypeDefinitions([Function responseFactory = null]) {
+ return getAllMojomTypeDefinitions();
+ }
+{%- else -%}
+ dynamic getTopLevelInterface([Function responseFactory = null]) {
+ return null;
+ }
+ dynamic getTypeDefinition(String typeKey,[Function responseFactory = null]) {
+ return null;
+ }
+ dynamic getAllTypeDefinitions([Function responseFactory = null]) {
+ return null;
+ }
+{%- endif %}
+}
+
abstract class {{interface|name}} {
{%- for method in interface.methods %}
{%- if method.response_parameters == None %}
@@ -53,6 +81,9 @@ class {{interface|name}}ProxyImpl extends bindings.Proxy {
String get name => {{interface|name}}Name;
+ {{descpkg}}ServiceDescription get serviceDescription =>
+ new _{{interface|name}}ServiceDescription();
+
void handleResponse(bindings.ServiceMessage message) {
switch (message.header.type) {
{%- for method in interface.methods %}
@@ -300,4 +331,7 @@ class {{interface|name}}Stub extends bindings.Stub {
}
int get version => {{interface.version}};
+
+ {{descpkg}}ServiceDescription get serviceDescription =>
+ new _{{interface|name}}ServiceDescription();
}

Powered by Google App Engine
This is Rietveld 408576698