Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / mojo / public / tools / bindings / generators / js_templates / interface_definition.tmpl
index b41929c..27c7cf3 100644 (file)
@@ -1,4 +1,3 @@
-{%- set namespace_as_string = namespace|replace(".","::") %}
 {%- for method in interface.methods %}
   var k{{interface.name}}_{{method.name}}_Name = {{method.ordinal}};
 {%- endfor %}
@@ -7,8 +6,6 @@
     this.receiver_ = receiver;
   }
 
-  {{interface.name}}Proxy.NAME_ = '{{namespace_as_string}}::{{interface.name}}';
-
 {%- for method in interface.methods %}
   {{interface.name}}Proxy.prototype.{{method.name|stylize_method}} = function(
 {%- for parameter in method.parameters -%}
           codec.kMessageExpectsResponse, 0);
       builder.encodeStruct({{interface.name}}_{{method.name}}_Params, params);
       var message = builder.finish();
-      this.receiver_.acceptWithResponder(message, {
-          accept: function(message) {
-            var reader = new codec.MessageReader(message);
-            var responseParams =
-                reader.decodeStruct({{interface.name}}_{{method.name}}_ResponseParams);
-            resolve(responseParams);
-          },
-          reject: function(result) {
-            reject(Error("Connection error: " + result));
-          },
-      }).catch(reject);
+      this.receiver_.acceptAndExpectResponse(message).then(function(message) {
+        var reader = new codec.MessageReader(message);
+        var responseParams =
+            reader.decodeStruct({{interface.name}}_{{method.name}}_ResponseParams);
+        resolve(responseParams);
+      }).catch(function(result) {
+        reject(Error("Connection error: " + result));
+      });
     }.bind(this));
 {%- endif %}
   };
@@ -54,8 +48,6 @@
   function {{interface.name}}Stub() {
   }
 
-  {{interface.name}}Stub.NAME_ = '{{namespace_as_string}}::{{interface.name}}';
-
   {{interface.name}}Stub.prototype.accept = function(message) {
     var reader = new codec.MessageReader(message);
     switch (reader.messageName) {
@@ -108,6 +100,24 @@ params.{{parameter.name}}{% if not loop.last %}, {% endif -%}
     }
   };
 
+  function {{interface.name}}DelegatingStub() {
+  }
+
+  {{interface.name}}DelegatingStub.prototype =
+      Object.create({{interface.name}}Stub.prototype);
+
+  {{interface.name}}DelegatingStub.prototype.callDelegateMethod$ = function(methodName, args) {
+    var method = this.delegate$ && this.delegate$[methodName];
+    return method && method.apply(this.delegate$, args);
+  }
+
+{%- for method in interface.methods %}
+{%-   set method_name = method.name|stylize_method %}
+  {{interface.name}}DelegatingStub.prototype.{{method_name}} = function() {
+    return this.callDelegateMethod$("{{method_name}}", arguments);
+  }
+{%- endfor %}
+
 {#--- Validation #}
 
   function validate{{interface.name}}Request(messageValidator) {
@@ -157,22 +167,30 @@ params.{{parameter.name}}{% if not loop.last %}, {% endif -%}
 {%- endif %}
   }
 
+  var {{interface.name}} = {
+    name: '{{namespace|replace(".","::")}}::{{interface.name}}',
+    proxyClass: {{interface.name}}Proxy,
+    stubClass: {{interface.name}}Stub,
+    delegatingStubClass: {{interface.name}}DelegatingStub,
+    validateRequest: validate{{interface.name}}Request,
+{%- if interface|has_callbacks %}
+    validateResponse: validate{{interface.name}}Response,
+{%- else %}
+    validateResponse: null,
+{%- endif %}
+  };
+{#--- Interface Constants #}
+{%- for constant in interface.constants %}
+  {{interface.name}}.{{constant.name}} = {{constant.value|expression_to_text}},
+{%-   endfor %}
+{#--- Interface Enums #}
+{%- from "enum_definition.tmpl" import enum_def -%}
+{%- for enum in interface.enums %}
+  {{ enum_def("%s.%s"|format(interface.name, enum.name), enum) }}
+{%-  endfor %}
   {{interface.name}}Stub.prototype.validator = validate{{interface.name}}Request;
 {%- if interface|has_callbacks %}
   {{interface.name}}Proxy.prototype.validator = validate{{interface.name}}Response;
 {%- else %}
   {{interface.name}}Proxy.prototype.validator = null;
-{%- endif -%}
-
-{#--- Enums #}
-{%  from "enum_definition.tmpl" import enum_def -%}
-{%  for enum in interface.enums %}
-  {{enum_def("%sProxy.%s"|format(interface.name, enum.name), enum, module)}}
-  {{interface.name}}Stub.{{enum.name}} = {{interface.name}}Proxy.{{enum.name}};
-{%-  endfor %}
-
-{#--- Constants. #}
-{%  for constant in interface.constants %}
-  {{interface.name}}Proxy.{{constant.name}} = {{constant.value|expression_to_text}};
-  {{interface.name}}Stub.{{constant.name}} = {{interface.name}}Proxy.{{constant.name}};
-{%-  endfor %}
+{%- endif %}