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

Unified Diff: pkg/dev_compiler/tool/input_sdk/lib/js/dart2js/js_dart2js.dart

Issue 2587203002: Correct handling of cross-frame functions in ddc. (Closed)
Patch Set: Created 4 years 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: pkg/dev_compiler/tool/input_sdk/lib/js/dart2js/js_dart2js.dart
diff --git a/pkg/dev_compiler/tool/input_sdk/lib/js/dart2js/js_dart2js.dart b/pkg/dev_compiler/tool/input_sdk/lib/js/dart2js/js_dart2js.dart
index 34636a74f6367b505999dd2cb60d94479357ea54..3fc25adc692f40fcbae963abe66fc4bdfbca3dbe 100644
--- a/pkg/dev_compiler/tool/input_sdk/lib/js/dart2js/js_dart2js.dart
+++ b/pkg/dev_compiler/tool/input_sdk/lib/js/dart2js/js_dart2js.dart
@@ -273,7 +273,7 @@ class JsObject {
}
if (args != null) args = new List.from(args.map(_convertToJS));
var fn = JS('', '#[#]', _jsObject, method);
- if (!JS('bool', '# instanceof Function', fn)) {
+ if (JS('bool', 'typeof(#) !== "function"', fn)) {
throw new NoSuchMethodError(_jsObject, new Symbol(method), args, {});
}
return _convertToDart(JS('', '#.apply(#, #)', fn, _jsObject, args));
@@ -435,10 +435,12 @@ bool _isBrowserType(o) => JS('bool',
'# instanceof Blob || '
'# instanceof Event || '
'(window.KeyRange && # instanceof KeyRange) || '
+ '(window.IDBKeyRange && # instanceof IDBKeyRange) || '
'# instanceof ImageData || '
'# instanceof Node || '
- '(window.TypedData && # instanceof TypedData) || '
- '# instanceof Window', o, o, o, o, o, o, o);
+ // Int8Array.__proto__ is TypedArray.
+ '(window.Int8Array && # instanceof Int8Array.__proto__) || '
+ '# instanceof Window', o, o, o, o, o, o, o, o);
class _DartObject {
final _dartObj;
@@ -491,11 +493,13 @@ Object _convertToDart(o) {
JS('bool', 'dart.jsobject != dart.getReifiedType(#)', o)) {
return o._dartObj;
} else {
- return _putIfAbsent(_dartProxies, o, _wrapToDart);
+ return _wrapToDart(o);
}
}
-JsObject _wrapToDart(o) {
+JsObject _wrapToDart(o) => _putIfAbsent(_dartProxies, o, _wrapToDartHelper);
+
+JsObject _wrapToDartHelper(o) {
if (JS('bool', 'typeof # == "function"', o)) {
return new JsFunction._fromJs(o);
}

Powered by Google App Engine
This is Rietveld 408576698