| OLD | NEW | 
|     1 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file |     1 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file | 
|     2 // for details. All rights reserved. Use of this source code is governed by a |     2 // for details. All rights reserved. Use of this source code is governed by a | 
|     3 // BSD-style license that can be found in the LICENSE file. |     3 // BSD-style license that can be found in the LICENSE file. | 
|     4  |     4  | 
|     5 /** |     5 /** | 
|     6  * Support for interoperating with JavaScript. |     6  * Support for interoperating with JavaScript. | 
|     7  * |     7  * | 
|     8  * This library provides access to JavaScript objects from Dart, allowing |     8  * This library provides access to JavaScript objects from Dart, allowing | 
|     9  * Dart code to get and set properties, and call methods of JavaScript objects |     9  * Dart code to get and set properties, and call methods of JavaScript objects | 
|    10  * and invoke JavaScript functions. The library takes care of converting |    10  * and invoke JavaScript functions. The library takes care of converting | 
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|    69  * * `TypedData`, including its subclasses like `Int32List`, but _not_ |    69  * * `TypedData`, including its subclasses like `Int32List`, but _not_ | 
|    70  *   `ByteBuffer` |    70  *   `ByteBuffer` | 
|    71  * * `Window` |    71  * * `Window` | 
|    72  * |    72  * | 
|    73  * ## Converting collections with JsObject.jsify() |    73  * ## Converting collections with JsObject.jsify() | 
|    74  * |    74  * | 
|    75  * To create a JavaScript collection from a Dart collection use the |    75  * To create a JavaScript collection from a Dart collection use the | 
|    76  * [JsObject.jsify] constructor, which converts Dart [Map]s and [Iterable]s |    76  * [JsObject.jsify] constructor, which converts Dart [Map]s and [Iterable]s | 
|    77  * into JavaScript Objects and Arrays. |    77  * into JavaScript Objects and Arrays. | 
|    78  * |    78  * | 
|    79  * The following expression creats a new JavaScript object with the properties |    79  * The following expression creates a new JavaScript object with the properties | 
|    80  * `a` and `b` defined: |    80  * `a` and `b` defined: | 
|    81  * |    81  * | 
|    82  *     var jsMap = new JsObject.jsify({'a': 1, 'b': 2}); |    82  *     var jsMap = new JsObject.jsify({'a': 1, 'b': 2}); | 
|    83  * |    83  * | 
|    84  * This expression creates a JavaScript array: |    84  * This expression creates a JavaScript array: | 
|    85  * |    85  * | 
|    86  *     var jsArray = new JsObject.jsify([1, 2, 3]); |    86  *     var jsArray = new JsObject.jsify([1, 2, 3]); | 
|    87  */ |    87  */ | 
|    88 library dart.js; |    88 library dart.js; | 
|    89  |    89  | 
| (...skipping 1586 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1676 } |  1676 } | 
|  1677  |  1677  | 
|  1678 /// Cached JSFunction associated with the Dart function when "this" is |  1678 /// Cached JSFunction associated with the Dart function when "this" is | 
|  1679 /// captured. |  1679 /// captured. | 
|  1680 Expando<JSFunction> _interopCaptureThisExpando = new Expando<JSFunction>(); |  1680 Expando<JSFunction> _interopCaptureThisExpando = new Expando<JSFunction>(); | 
|  1681  |  1681  | 
|  1682 /// Returns a [Function] that when called from JavaScript captures its 'this' |  1682 /// Returns a [Function] that when called from JavaScript captures its 'this' | 
|  1683 /// binding and calls [f] with the value of this passed as the first argument. |  1683 /// binding and calls [f] with the value of this passed as the first argument. | 
|  1684 /// When called from Dart, [null] will be passed as the first argument. |  1684 /// When called from Dart, [null] will be passed as the first argument. | 
|  1685 /// |  1685 /// | 
|  1686 /// See the documention for [allowInterop]. This method should only be used with |  1686 /// See the documentation for [allowInterop]. This method should only be used | 
|  1687 /// package:js Dart-JavaScript interop. |  1687 /// with package:js Dart-JavaScript interop. | 
|  1688 JSFunction allowInteropCaptureThis(Function f) { |  1688 JSFunction allowInteropCaptureThis(Function f) { | 
|  1689   if (f is JSFunction) { |  1689   if (f is JSFunction) { | 
|  1690     // Behavior when the function is already a JS function is unspecified. |  1690     // Behavior when the function is already a JS function is unspecified. | 
|  1691     throw new ArgumentError( |  1691     throw new ArgumentError( | 
|  1692         "Function is already a JS function so cannot capture this."); |  1692         "Function is already a JS function so cannot capture this."); | 
|  1693     return f; |  1693     return f; | 
|  1694   } else { |  1694   } else { | 
|  1695     var ret = _interopCaptureThisExpando[f]; |  1695     var ret = _interopCaptureThisExpando[f]; | 
|  1696     if (ret == null) { |  1696     if (ret == null) { | 
|  1697       // TODO(jacobr): we could optimize this. |  1697       // TODO(jacobr): we could optimize this. | 
|  1698       ret = JSFunction._createWithThis(f); |  1698       ret = JSFunction._createWithThis(f); | 
|  1699       _interopCaptureThisExpando[f] = ret; |  1699       _interopCaptureThisExpando[f] = ret; | 
|  1700     } |  1700     } | 
|  1701     return ret; |  1701     return ret; | 
|  1702   } |  1702   } | 
|  1703 } |  1703 } | 
| OLD | NEW |