diff options
author | benwells@chromium.org <benwells@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-09 01:20:11 +0000 |
---|---|---|
committer | benwells@chromium.org <benwells@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-09 01:20:11 +0000 |
commit | f71a002f5b53aede5a18936bf4a0f390ed97b059 (patch) | |
tree | 98b43f60f8f3a621248a295f2be0e83e79bc96a0 | |
parent | d47452089e4889d2732a9ef6c54bfb3b922fa406 (diff) | |
download | chromium_src-f71a002f5b53aede5a18936bf4a0f390ed97b059.zip chromium_src-f71a002f5b53aede5a18936bf4a0f390ed97b059.tar.gz chromium_src-f71a002f5b53aede5a18936bf4a0f390ed97b059.tar.bz2 |
Fix some dart generator bugs and expand chrome:dart generator tests
The bug was found while creating the integration test for the dart version of the v2 app apis.
These tests now cover all the types of things which are used in
app_window.idl, app_runtime.idl and file_system.idl
BUG=None
Review URL: https://chromiumcodereview.appspot.com/14011002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@199083 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | tools/json_schema_compiler/dart_generator.py | 16 | ||||
-rwxr-xr-x | tools/json_schema_compiler/dart_generator_test.py | 15 | ||||
-rw-r--r-- | tools/json_schema_compiler/dart_test/basic_event.dart | 40 | ||||
-rw-r--r-- | tools/json_schema_compiler/dart_test/basic_event.idl | 10 | ||||
-rw-r--r-- | tools/json_schema_compiler/dart_test/basic_function.dart | 29 | ||||
-rw-r--r-- | tools/json_schema_compiler/dart_test/basic_function.idl | 13 | ||||
-rw-r--r-- | tools/json_schema_compiler/dart_test/dictionaries.dart | 12 | ||||
-rw-r--r-- | tools/json_schema_compiler/dart_test/enums.idl | 11 | ||||
-rw-r--r-- | tools/json_schema_compiler/dart_test/events.dart | 282 | ||||
-rw-r--r-- | tools/json_schema_compiler/dart_test/events.idl | 55 | ||||
-rw-r--r-- | tools/json_schema_compiler/dart_test/functions.dart | 93 | ||||
-rw-r--r-- | tools/json_schema_compiler/dart_test/functions.idl | 54 | ||||
-rw-r--r-- | tools/json_schema_compiler/dart_test/operatable_type.dart | 49 | ||||
-rw-r--r-- | tools/json_schema_compiler/dart_test/operatable_type.idl | 23 |
14 files changed, 588 insertions, 114 deletions
diff --git a/tools/json_schema_compiler/dart_generator.py b/tools/json_schema_compiler/dart_generator.py index d40cc73..aa73124 100644 --- a/tools/json_schema_compiler/dart_generator.py +++ b/tools/json_schema_compiler/dart_generator.py @@ -208,16 +208,18 @@ class _Generator(object): (type_name, prop.name, type_name, prop.name)) elif self._IsSerializableObjectType(prop.type_): c.Append("%s get %s => new %s._proxy(JS('', '#.%s', " - "this._jsObject));" - % (type_name, prop.name, type_name, prop.name)) + "this._jsObject));" % + (type_name, prop.name, type_name, prop.name)) elif self._IsListOfSerializableObjects(prop.type_): (c.Sblock('%s get %s {' % (type_name, prop.name)) .Append('%s __proxy_%s = new %s();' % (type_name, prop.name, type_name)) - .Sblock("for (var o in JS('List', '#.%s', this._jsObject)) {" % - prop.name) - .Append('__proxy_%s.add(new %s._proxy(o));' % (prop.name, - self._GetDartType(prop.type_.item_type))) + .Append("int count = JS('int', '#.%s.length', this._jsObject);" % + prop.name) + .Sblock("for (int i = 0; i < count; i++) {") + .Append("var item = JS('', '#.%s', this._jsObject);" % prop.name) + .Append('__proxy_%s.add(new %s._proxy(item));' % (prop.name, + self._GetDartType(prop.type_.item_type))) .Eblock('}') .Append('return __proxy_%s;' % prop.name) .Eblock('}') @@ -437,7 +439,7 @@ class _Generator(object): (c.Sblock('%s %s(void callback(%s)) {' % (ret_type, event_func, param_list)) .Concat(self._GenerateProxiedFunction(event, 'callback')) - .Append('super.%s(callback);' % event_func) + .Append('super.%s(__proxy_callback);' % event_func) .Eblock('}') ) else: diff --git a/tools/json_schema_compiler/dart_generator_test.py b/tools/json_schema_compiler/dart_generator_test.py index 283918d..65ec7f1 100755 --- a/tools/json_schema_compiler/dart_generator_test.py +++ b/tools/json_schema_compiler/dart_generator_test.py @@ -50,12 +50,6 @@ class DartTest(unittest.TestCase): # Increase the maximum diff amount to see the full diff on a failed test. self.maxDiff = 2000 - def testBasicEvent(self): - self._RunTest('basic_event') - - def testBasicFunction(self): - self._RunTest('basic_function') - def testComments(self): self._RunTest('comments') @@ -68,6 +62,15 @@ class DartTest(unittest.TestCase): def testEmptyType(self): self._RunTest('empty_type') + def testEvents(self): + self._RunTest('enums') + + def testEvents(self): + self._RunTest('events') + + def testBasicFunction(self): + self._RunTest('functions') + def testOpratableType(self): self._RunTest('operatable_type') diff --git a/tools/json_schema_compiler/dart_test/basic_event.dart b/tools/json_schema_compiler/dart_test/basic_event.dart deleted file mode 100644 index 905ab7f..0000000 --- a/tools/json_schema_compiler/dart_test/basic_event.dart +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -// Generated from namespace: basic_event - -part of chrome; -/** - * Events - */ - -/// Documentation for basicEvent. -class Event_basic_event_basicEvent extends Event { - void addListener(void callback()) => super.addListener(callback); - - void removeListener(void callback()) => super.removeListener(callback); - - bool hasListener(void callback()) => super.hasListener(callback); - - Event_basic_event_basicEvent(jsObject) : super._(jsObject, 0); -} - -/** - * Functions - */ - -class API_basic_event { - /* - * API connection - */ - Object _jsObject; - - /* - * Events - */ - Event_basic_event_basicEvent basicEvent; - API_basic_event(this._jsObject) { - basicEvent = new Event_basic_event_basicEvent(JS('', '#.basicEvent', this._jsObject)); - } -} diff --git a/tools/json_schema_compiler/dart_test/basic_event.idl b/tools/json_schema_compiler/dart_test/basic_event.idl deleted file mode 100644 index 8e5e13c..0000000 --- a/tools/json_schema_compiler/dart_test/basic_event.idl +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -namespace basic_event { - interface Events { - // Documentation for basicEvent. - static void basicEvent(); - }; -}; diff --git a/tools/json_schema_compiler/dart_test/basic_function.dart b/tools/json_schema_compiler/dart_test/basic_function.dart deleted file mode 100644 index 3eb7947..0000000 --- a/tools/json_schema_compiler/dart_test/basic_function.dart +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -// Generated from namespace: basic_function - -part of chrome; -/** - * Functions - */ - -class API_basic_function { - /* - * API connection - */ - Object _jsObject; - - /* - * Functions - */ - /// Documentation for the basic function, foo(). - void foo() => JS('void', '#.foo()', this._jsObject); - - /// Documentation for the basic static function, staticFoo(). - void staticFoo() => JS('void', '#.staticFoo()', this._jsObject); - - API_basic_function(this._jsObject) { - } -} diff --git a/tools/json_schema_compiler/dart_test/basic_function.idl b/tools/json_schema_compiler/dart_test/basic_function.idl deleted file mode 100644 index 29f62be..0000000 --- a/tools/json_schema_compiler/dart_test/basic_function.idl +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -namespace basic_function { - interface Functions { - // Documentation for the basic function, foo(). - void foo(); - - // Documentation for the basic static function, staticFoo(). - static void staticFoo(); - }; -}; diff --git a/tools/json_schema_compiler/dart_test/dictionaries.dart b/tools/json_schema_compiler/dart_test/dictionaries.dart index 770efa6..11f2e73 100644 --- a/tools/json_schema_compiler/dart_test/dictionaries.dart +++ b/tools/json_schema_compiler/dart_test/dictionaries.dart @@ -157,8 +157,10 @@ class DictionariesOuterType extends ChromeObject { /// Documentation for the array of InnerTypes items. List<DictionariesInnerType> get items { List<DictionariesInnerType> __proxy_items = new List<DictionariesInnerType>(); - for (var o in JS('List', '#.items', this._jsObject)) { - __proxy_items.add(new DictionariesInnerType._proxy(o)); + int count = JS('int', '#.items.length', this._jsObject); + for (int i = 0; i < count; i++) { + var item = JS('', '#.items', this._jsObject); + __proxy_items.add(new DictionariesInnerType._proxy(item)); } return __proxy_items; } @@ -170,8 +172,10 @@ class DictionariesOuterType extends ChromeObject { /// Documentation for the optional array of Inner Types oitems. List<DictionariesInnerType> get oitems { List<DictionariesInnerType> __proxy_oitems = new List<DictionariesInnerType>(); - for (var o in JS('List', '#.oitems', this._jsObject)) { - __proxy_oitems.add(new DictionariesInnerType._proxy(o)); + int count = JS('int', '#.oitems.length', this._jsObject); + for (int i = 0; i < count; i++) { + var item = JS('', '#.oitems', this._jsObject); + __proxy_oitems.add(new DictionariesInnerType._proxy(item)); } return __proxy_oitems; } diff --git a/tools/json_schema_compiler/dart_test/enums.idl b/tools/json_schema_compiler/dart_test/enums.idl new file mode 100644 index 0000000..18ea85a --- /dev/null +++ b/tools/json_schema_compiler/dart_test/enums.idl @@ -0,0 +1,11 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +namespace enums { + // A basic enumeration. + enum Enum1 { a, b }; + + // Another basic enumeration. + enum Enum2 { ab, bc, de, ef, fg, hi }; +}; diff --git a/tools/json_schema_compiler/dart_test/events.dart b/tools/json_schema_compiler/dart_test/events.dart new file mode 100644 index 0000000..6aa5c07 --- /dev/null +++ b/tools/json_schema_compiler/dart_test/events.dart @@ -0,0 +1,282 @@ +// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +// Generated from namespace: events + +part of chrome; + +/** + * Types + */ + +class EventsEventArgumentElement extends ChromeObject { + /* + * Public constructor + */ + EventsEventArgumentElement({String elementStringArg}) { + if (?elementStringArg) + this.elementStringArg = elementStringArg; + } + + /* + * Private constructor + */ + EventsEventArgumentElement._proxy(_jsObject) : super._proxy(_jsObject); + + /* + * Public accessors + */ + String get elementStringArg => JS('String', '#.elementStringArg', this._jsObject); + + void set elementStringArg(String elementStringArg) { + JS('void', '#.elementStringArg = #', this._jsObject, elementStringArg); + } + +} + +class EventsEventArgument extends ChromeObject { + /* + * Public constructor + */ + EventsEventArgument({FileEntry entryArg, String stringArg, int intArg, List<EventsEventArgumentElement> elements, FileEntry optionalEntryArg, String optionalStringArg, int optionalIntArg, List<EventsEventArgumentElement> optionalElements}) { + if (?entryArg) + this.entryArg = entryArg; + if (?stringArg) + this.stringArg = stringArg; + if (?intArg) + this.intArg = intArg; + if (?elements) + this.elements = elements; + if (?optionalEntryArg) + this.optionalEntryArg = optionalEntryArg; + if (?optionalStringArg) + this.optionalStringArg = optionalStringArg; + if (?optionalIntArg) + this.optionalIntArg = optionalIntArg; + if (?optionalElements) + this.optionalElements = optionalElements; + } + + /* + * Private constructor + */ + EventsEventArgument._proxy(_jsObject) : super._proxy(_jsObject); + + /* + * Public accessors + */ + /// A file entry + FileEntry get entryArg => JS('FileEntry', '#.entryArg', this._jsObject); + + void set entryArg(FileEntry entryArg) { + JS('void', '#.entryArg = #', this._jsObject, convertArgument(entryArg)); + } + + /// A string + String get stringArg => JS('String', '#.stringArg', this._jsObject); + + void set stringArg(String stringArg) { + JS('void', '#.stringArg = #', this._jsObject, stringArg); + } + + /// A primitive + int get intArg => JS('int', '#.intArg', this._jsObject); + + void set intArg(int intArg) { + JS('void', '#.intArg = #', this._jsObject, intArg); + } + + /// An array + List<EventsEventArgumentElement> get elements { + List<EventsEventArgumentElement> __proxy_elements = new List<EventsEventArgumentElement>(); + int count = JS('int', '#.elements.length', this._jsObject); + for (int i = 0; i < count; i++) { + var item = JS('', '#.elements', this._jsObject); + __proxy_elements.add(new EventsEventArgumentElement._proxy(item)); + } + return __proxy_elements; + } + + void set elements(List<EventsEventArgumentElement> elements) { + JS('void', '#.elements = #', this._jsObject, convertArgument(elements)); + } + + /// Optional file entry + FileEntry get optionalEntryArg => JS('FileEntry', '#.optionalEntryArg', this._jsObject); + + void set optionalEntryArg(FileEntry optionalEntryArg) { + JS('void', '#.optionalEntryArg = #', this._jsObject, convertArgument(optionalEntryArg)); + } + + /// A string + String get optionalStringArg => JS('String', '#.optionalStringArg', this._jsObject); + + void set optionalStringArg(String optionalStringArg) { + JS('void', '#.optionalStringArg = #', this._jsObject, optionalStringArg); + } + + /// A primitive + int get optionalIntArg => JS('int', '#.optionalIntArg', this._jsObject); + + void set optionalIntArg(int optionalIntArg) { + JS('void', '#.optionalIntArg = #', this._jsObject, optionalIntArg); + } + + /// An array + List<EventsEventArgumentElement> get optionalElements { + List<EventsEventArgumentElement> __proxy_optionalElements = new List<EventsEventArgumentElement>(); + int count = JS('int', '#.optionalElements.length', this._jsObject); + for (int i = 0; i < count; i++) { + var item = JS('', '#.optionalElements', this._jsObject); + __proxy_optionalElements.add(new EventsEventArgumentElement._proxy(item)); + } + return __proxy_optionalElements; + } + + void set optionalElements(List<EventsEventArgumentElement> optionalElements) { + JS('void', '#.optionalElements = #', this._jsObject, convertArgument(optionalElements)); + } + +} + +/** + * Events + */ + +/// Documentation for the first basic event. +class Event_events_firstBasicEvent extends Event { + void addListener(void callback()) => super.addListener(callback); + + void removeListener(void callback()) => super.removeListener(callback); + + bool hasListener(void callback()) => super.hasListener(callback); + + Event_events_firstBasicEvent(jsObject) : super._(jsObject, 0); +} + +/// Documentation for the second basic event. +class Event_events_secondBasicEvent extends Event { + void addListener(void callback()) => super.addListener(callback); + + void removeListener(void callback()) => super.removeListener(callback); + + bool hasListener(void callback()) => super.hasListener(callback); + + Event_events_secondBasicEvent(jsObject) : super._(jsObject, 0); +} + +/// Documentation for an event with a non-optional primitive argument. +class Event_events_nonOptionalPrimitiveArgEvent extends Event { + void addListener(void callback(int argument)) => super.addListener(callback); + + void removeListener(void callback(int argument)) => super.removeListener(callback); + + bool hasListener(void callback(int argument)) => super.hasListener(callback); + + Event_events_nonOptionalPrimitiveArgEvent(jsObject) : super._(jsObject, 1); +} + +/// Documentation for an event with an optional primitive argument. +class Event_events_optionalPrimitiveArgEvent extends Event { + void addListener(void callback(int argument)) => super.addListener(callback); + + void removeListener(void callback(int argument)) => super.removeListener(callback); + + bool hasListener(void callback(int argument)) => super.hasListener(callback); + + Event_events_optionalPrimitiveArgEvent(jsObject) : super._(jsObject, 1); +} + +/// Documentation for an event with a non-optional dictionary argument. +class Event_events_nonOptionalDictArgEvent extends Event { + void addListener(void callback(EventsEventArgument argument)) { + void __proxy_callback(argument) { + if (?callback) { + callback(new EventsEventArgument._proxy(argument)); + } + } + super.addListener(__proxy_callback); + } + + void removeListener(void callback(EventsEventArgument argument)) { + void __proxy_callback(argument) { + if (?callback) { + callback(new EventsEventArgument._proxy(argument)); + } + } + super.removeListener(__proxy_callback); + } + + bool hasListener(void callback(EventsEventArgument argument)) { + void __proxy_callback(argument) { + if (?callback) { + callback(new EventsEventArgument._proxy(argument)); + } + } + super.hasListener(__proxy_callback); + } + + Event_events_nonOptionalDictArgEvent(jsObject) : super._(jsObject, 1); +} + +/// Documentation for an event with a optional dictionary argument. +class Event_events_optionalDictArgEvent extends Event { + void addListener(void callback(EventsEventArgument argument)) { + void __proxy_callback(argument) { + if (?callback) { + callback(new EventsEventArgument._proxy(argument)); + } + } + super.addListener(__proxy_callback); + } + + void removeListener(void callback(EventsEventArgument argument)) { + void __proxy_callback(argument) { + if (?callback) { + callback(new EventsEventArgument._proxy(argument)); + } + } + super.removeListener(__proxy_callback); + } + + bool hasListener(void callback(EventsEventArgument argument)) { + void __proxy_callback(argument) { + if (?callback) { + callback(new EventsEventArgument._proxy(argument)); + } + } + super.hasListener(__proxy_callback); + } + + Event_events_optionalDictArgEvent(jsObject) : super._(jsObject, 1); +} + +/** + * Functions + */ + +class API_events { + /* + * API connection + */ + Object _jsObject; + + /* + * Events + */ + Event_events_firstBasicEvent firstBasicEvent; + Event_events_secondBasicEvent secondBasicEvent; + Event_events_nonOptionalPrimitiveArgEvent nonOptionalPrimitiveArgEvent; + Event_events_optionalPrimitiveArgEvent optionalPrimitiveArgEvent; + Event_events_nonOptionalDictArgEvent nonOptionalDictArgEvent; + Event_events_optionalDictArgEvent optionalDictArgEvent; + API_events(this._jsObject) { + firstBasicEvent = new Event_events_firstBasicEvent(JS('', '#.firstBasicEvent', this._jsObject)); + secondBasicEvent = new Event_events_secondBasicEvent(JS('', '#.secondBasicEvent', this._jsObject)); + nonOptionalPrimitiveArgEvent = new Event_events_nonOptionalPrimitiveArgEvent(JS('', '#.nonOptionalPrimitiveArgEvent', this._jsObject)); + optionalPrimitiveArgEvent = new Event_events_optionalPrimitiveArgEvent(JS('', '#.optionalPrimitiveArgEvent', this._jsObject)); + nonOptionalDictArgEvent = new Event_events_nonOptionalDictArgEvent(JS('', '#.nonOptionalDictArgEvent', this._jsObject)); + optionalDictArgEvent = new Event_events_optionalDictArgEvent(JS('', '#.optionalDictArgEvent', this._jsObject)); + } +} diff --git a/tools/json_schema_compiler/dart_test/events.idl b/tools/json_schema_compiler/dart_test/events.idl new file mode 100644 index 0000000..54c711a --- /dev/null +++ b/tools/json_schema_compiler/dart_test/events.idl @@ -0,0 +1,55 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +namespace events { + dictionary EventArgumentElement { + DOMString elementStringArg; + }; + + dictionary EventArgument { + // A file entry + [instanceOf=FileEntry] object entryArg; + + // A string + DOMString stringArg; + + // A primitive + int intArg; + + // An array + EventArgumentElement[] elements; + + // Optional file entry + [instanceOf=FileEntry] object? optionalEntryArg; + + // A string + DOMString? optionalStringArg; + + // A primitive + int? optionalIntArg; + + // An array + EventArgumentElement[]? optionalElements; + }; + + interface Events { + // Documentation for the first basic event. + static void firstBasicEvent(); + + // Documentation for the second basic event. + static void secondBasicEvent(); + + // Documentation for an event with a non-optional primitive argument. + static void nonOptionalPrimitiveArgEvent(int argument); + + // Documentation for an event with an optional primitive argument. + static void optionalPrimitiveArgEvent(optional int argument); + + // Documentation for an event with a non-optional dictionary argument. + static void nonOptionalDictArgEvent(EventArgument argument); + + // Documentation for an event with a optional dictionary argument. + static void optionalDictArgEvent(EventArgument argument); + }; +}; diff --git a/tools/json_schema_compiler/dart_test/functions.dart b/tools/json_schema_compiler/dart_test/functions.dart new file mode 100644 index 0000000..6c31c81 --- /dev/null +++ b/tools/json_schema_compiler/dart_test/functions.dart @@ -0,0 +1,93 @@ +// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +// Generated from namespace: functions + +part of chrome; + +/** + * Types + */ + +class FunctionsDictType extends ChromeObject { + /* + * Private constructor + */ + FunctionsDictType._proxy(_jsObject) : super._proxy(_jsObject); + + /* + * Public accessors + */ + /// A field. + int get a => JS('int', '#.a', this._jsObject); + + void set a(int a) { + JS('void', '#.a = #', this._jsObject, a); + } + + + /* + * Methods + */ + /// A parameter. + void voidFunc() => JS('void', '#.voidFunc()', this._jsObject); + +} + +/** + * Functions + */ + +class API_functions { + /* + * API connection + */ + Object _jsObject; + + /* + * Functions + */ + /// Simple function. + void voidFunc() => JS('void', '#.voidFunc()', this._jsObject); + + /// Function taking a non-optional argument. + void argFunc(String s) => JS('void', '#.argFunc(#)', this._jsObject, s); + + /// Function taking an optional argument. + void optionalArgFunc([String s]) => JS('void', '#.optionalArgFunc(#)', this._jsObject, s); + + /// Function taking a non-optional dictionary argument. + void dictArgFunc(FunctionsDictType d) => JS('void', '#.dictArgFunc(#)', this._jsObject, convertArgument(d)); + + /// Function taking an optional dictionary argument. + void optionalDictArgFunc([FunctionsDictType d]) => JS('void', '#.optionalDictArgFunc(#)', this._jsObject, convertArgument(d)); + + /// Function taking an entry argument. + void entryArgFunc(Object entry) => JS('void', '#.entryArgFunc(#)', this._jsObject, convertArgument(entry)); + + /// Function taking a simple callback. + void callbackFunc(void c()) => JS('void', '#.callbackFunc(#)', this._jsObject, convertDartClosureToJS(c, 0)); + + /// Function taking an optional simple callback. + void optionalCallbackFunc([void c()]) => JS('void', '#.optionalCallbackFunc(#)', this._jsObject, convertDartClosureToJS(c, 0)); + + /// Function taking a primitive callback. + void primitiveCallbackFunc(void c(int i)) => JS('void', '#.primitiveCallbackFunc(#)', this._jsObject, convertDartClosureToJS(c, 1)); + + /// Function taking a dictionary callback. + void dictCallbackFunc(void c(DictType dict)) { + void __proxy_callback(dict) { + if (?c) { + c(new DictType._proxy(dict)); + } + } + JS('void', '#.dictCallbackFunc(#)', this._jsObject, convertDartClosureToJS(__proxy_callback, 1)); + } + + /// Function returning a dictionary. + FunctionsDictType dictRetFunc() => new FunctionsDictType._proxy(JS('', '#.dictRetFunc()', this._jsObject)); + + API_functions(this._jsObject) { + } +} diff --git a/tools/json_schema_compiler/dart_test/functions.idl b/tools/json_schema_compiler/dart_test/functions.idl new file mode 100644 index 0000000..e2283c6 --- /dev/null +++ b/tools/json_schema_compiler/dart_test/functions.idl @@ -0,0 +1,54 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +namespace functions { + callback SimpleCallback = void (); + + callback PrimitiveCallback = void (int i); + + callback DictCallback = void ([instanceOf=DictType] object dict); + + dictionary DictType { + // A field. + int a; + + // A parameter. + static void voidFunc(); + }; + + interface Functions { + // Simple function. + static void voidFunc(); + + // Function taking a non-optional argument. + static void argFunc(DOMString s); + + // Function taking an optional argument. + static void optionalArgFunc(optional DOMString s); + + // Function taking a non-optional dictionary argument. + static void dictArgFunc(DictType d); + + // Function taking an optional dictionary argument. + static void optionalDictArgFunc(optional DictType d); + + // Function taking an entry argument. + static void entryArgFunc([intanceOf=FileEntry] object entry); + + // Function taking a simple callback. + static void callbackFunc(SimpleCallback c); + + // Function taking an optional simple callback. + static void optionalCallbackFunc(optional SimpleCallback c); + + // Function taking a primitive callback. + static void primitiveCallbackFunc(PrimitiveCallback c); + + // Function taking a dictionary callback. + static void dictCallbackFunc(DictCallback c); + + // Function returning a dictionary. + static DictType dictRetFunc(); + }; +}; diff --git a/tools/json_schema_compiler/dart_test/operatable_type.dart b/tools/json_schema_compiler/dart_test/operatable_type.dart index 9e3d708..d60c9d3 100644 --- a/tools/json_schema_compiler/dart_test/operatable_type.dart +++ b/tools/json_schema_compiler/dart_test/operatable_type.dart @@ -10,6 +10,39 @@ part of chrome; * Types */ +class Operatable_typeDictType extends ChromeObject { + /* + * Public constructor + */ + Operatable_typeDictType({int x, int y}) { + if (?x) + this.x = x; + if (?y) + this.y = y; + } + + /* + * Private constructor + */ + Operatable_typeDictType._proxy(_jsObject) : super._proxy(_jsObject); + + /* + * Public accessors + */ + int get x => JS('int', '#.x', this._jsObject); + + void set x(int x) { + JS('void', '#.x = #', this._jsObject, x); + } + + int get y => JS('int', '#.y', this._jsObject); + + void set y(int y) { + JS('void', '#.y = #', this._jsObject, y); + } + +} + class Operatable_typeOperatableType extends ChromeObject { /* * Private constructor @@ -30,8 +63,20 @@ class Operatable_typeOperatableType extends ChromeObject { /* * Methods */ - /// Documentation for staticFoo. - void staticFoo() => JS('void', '#.staticFoo()', this._jsObject); + /// Function returning nothing, taking nothing. + void voidFunc() => JS('void', '#.voidFunc()', this._jsObject); + + /// Function returning primitive type. + int intRetFunc() => new int._proxy(JS('', '#.intRetFunc()', this._jsObject)); + + /// Function returning dictionary. + Operatable_typeDictType dictRetFunc() => new Operatable_typeDictType._proxy(JS('', '#.dictRetFunc()', this._jsObject)); + + /// Function taking primitive type. + void intArgFunc(int i) => JS('void', '#.intArgFunc(#)', this._jsObject, i); + + /// Function taking dict type. + void dictArgFunc(Operatable_typeDictType d) => JS('void', '#.dictArgFunc(#)', this._jsObject, convertArgument(d)); } diff --git a/tools/json_schema_compiler/dart_test/operatable_type.idl b/tools/json_schema_compiler/dart_test/operatable_type.idl index 64dd382..74ce534 100644 --- a/tools/json_schema_compiler/dart_test/operatable_type.idl +++ b/tools/json_schema_compiler/dart_test/operatable_type.idl @@ -3,12 +3,29 @@ // found in the LICENSE file. namespace operatable_type { + dictionary DictType { + int x; + int y; + }; + // Documentation for OperatableType. dictionary OperatableType { // Documentation for the String t. DOMString t; - // Documentation for staticFoo. - static void staticFoo(); + // Function returning nothing, taking nothing. + static void voidFunc(); + + // Function returning primitive type. + static int intRetFunc(); + + // Function returning dictionary. + static DictType dictRetFunc(); + + // Function taking primitive type. + static void intArgFunc(int i); + + // Function taking dict type. + static void dictArgFunc(DictType d); }; -}; +};
\ No newline at end of file |