| 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 689 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 700 } | 700 } |
| 701 | 701 |
| 702 _callDartFunctionFast(callback, List arguments) { | 702 _callDartFunctionFast(callback, List arguments) { |
| 703 return Function.apply(callback, arguments); | 703 return Function.apply(callback, arguments); |
| 704 } | 704 } |
| 705 | 705 |
| 706 _callDartFunctionFastCaptureThis(callback, self, List arguments) { | 706 _callDartFunctionFastCaptureThis(callback, self, List arguments) { |
| 707 return Function.apply(callback, [self]..addAll(arguments)); | 707 return Function.apply(callback, [self]..addAll(arguments)); |
| 708 } | 708 } |
| 709 | 709 |
| 710 Function /*=F*/ allowInterop/*<F extends Function>*/(Function /*=F*/ f) { | 710 Function/*=F*/ allowInterop/*<F extends Function>*/(Function/*=F*/ f) { |
| 711 if (JS('bool', 'typeof(#) == "function"', f)) { | 711 if (JS('bool', 'typeof(#) == "function"', f)) { |
| 712 // Already supports interop, just use the existing function. | 712 // Already supports interop, just use the existing function. |
| 713 return f; | 713 return f; |
| 714 } else { | 714 } else { |
| 715 return _convertDartFunctionFast(f); | 715 return _convertDartFunctionFast(f); |
| 716 } | 716 } |
| 717 } | 717 } |
| 718 | 718 |
| 719 Function allowInteropCaptureThis(Function f) { | 719 Function allowInteropCaptureThis(Function f) { |
| 720 if (JS('bool', 'typeof(#) == "function"', f)) { | 720 if (JS('bool', 'typeof(#) == "function"', f)) { |
| 721 // Behavior when the function is already a JS function is unspecified. | 721 // Behavior when the function is already a JS function is unspecified. |
| 722 throw new ArgumentError( | 722 throw new ArgumentError( |
| 723 "Function is already a JS function so cannot capture this."); | 723 "Function is already a JS function so cannot capture this."); |
| 724 return f; | 724 return f; |
| 725 } else { | 725 } else { |
| 726 return _convertDartFunctionFastCaptureThis(f); | 726 return _convertDartFunctionFastCaptureThis(f); |
| 727 } | 727 } |
| 728 } | 728 } |
| OLD | NEW |