OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 // DO NOT EDIT | 5 // DO NOT EDIT |
6 // Auto-generated dart:html library. | 6 // Auto-generated dart:html library. |
7 | 7 |
8 /** | 8 /** |
9 * HTML elements and other resources for web-based applications that need to | 9 * HTML elements and other resources for web-based applications that need to |
10 * interact with the browser and the DOM (Document Object Model). | 10 * interact with the browser and the DOM (Document Object Model). |
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
387 /** | 387 /** |
388 * Create Dart class that maps to the JS Type, add the JsObject as an expando | 388 * Create Dart class that maps to the JS Type, add the JsObject as an expando |
389 * on the Dart class and return the created Dart class. | 389 * on the Dart class and return the created Dart class. |
390 */ | 390 */ |
391 wrap_jso(jsObject) { | 391 wrap_jso(jsObject) { |
392 try { | 392 try { |
393 if (jsObject is! js.JsObject) { | 393 if (jsObject is! js.JsObject) { |
394 // JS Interop converted the object to a Dart class e.g., Uint8ClampedList. | 394 // JS Interop converted the object to a Dart class e.g., Uint8ClampedList. |
395 return jsObject; | 395 return jsObject; |
396 } | 396 } |
| 397 // Try the most general type conversions on it. |
| 398 // TODO(alanknight): We may be able to do better. This maintains identity, |
| 399 // which is useful, but expensive. And if we nest something that only |
| 400 // this conversion handles, how does that work? e.g. a list of maps of eleme
nts. |
| 401 var converted = convertNativeToDart_SerializedScriptValue(jsObject); |
| 402 if (!identical(converted, jsObject)) { |
| 403 return converted; |
| 404 } |
397 var constructor = jsObject['constructor']; | 405 var constructor = jsObject['constructor']; |
398 if (__interop_checks) { | 406 if (__interop_checks) { |
399 if (jsObject is js.JsArray) { | |
400 return jsObject; | |
401 } | |
402 | |
403 debug_or_assert("constructor != null", constructor != null); | 407 debug_or_assert("constructor != null", constructor != null); |
404 } | 408 } |
405 if (constructor == js.context['Object']) { | |
406 return convertNativeObjectToDartMap(jsObject); | |
407 } | |
408 if (constructor == js.context['Promise']) { | |
409 return convertNativePromiseToDartFuture(jsObject); | |
410 } | |
411 var jsTypeName = constructor['name']; | 409 var jsTypeName = constructor['name']; |
412 if (__interop_checks) { | 410 if (__interop_checks) { |
413 debug_or_assert("constructor != null && jsTypeName.length > 0", constructo
r != null && jsTypeName.length > 0); | 411 debug_or_assert("constructor != null && jsTypeName.length > 0", constructo
r != null && jsTypeName.length > 0); |
414 } | 412 } |
415 | 413 |
416 var dartClass_instance; | 414 var dartClass_instance; |
417 if (jsObject.hasProperty('dart_class')) { | 415 if (jsObject.hasProperty('dart_class')) { |
418 // Got a dart_class (it's a custom element) use it it's already set up. | 416 // Got a dart_class (it's a custom element) use it it's already set up. |
419 dartClass_instance = jsObject['dart_class']; | 417 dartClass_instance = jsObject['dart_class']; |
420 } else { | 418 } else { |
(...skipping 10 matching lines...) Expand all Loading... |
431 window.console.log("${e.message}\n ${stacktrace}"); | 429 window.console.log("${e.message}\n ${stacktrace}"); |
432 else | 430 else |
433 window.console.log("${stacktrace}"); | 431 window.console.log("${stacktrace}"); |
434 } | 432 } |
435 } | 433 } |
436 | 434 |
437 return null; | 435 return null; |
438 } | 436 } |
439 | 437 |
440 /** | 438 /** |
441 * Create Dart class that maps to the JS Type that is the JS type being | 439 * Create Dart class that maps to the JS Type that is the JS type being |
442 * extended using JS interop createCallback (we need the base type of the | 440 * extended using JS interop createCallback (we need the base type of the |
443 * custom element) not the Dart created constructor. | 441 * custom element) not the Dart created constructor. |
444 */ | 442 */ |
445 wrap_jso_custom_element(jsObject) { | 443 wrap_jso_custom_element(jsObject) { |
446 try { | 444 try { |
447 if (jsObject is! js.JsObject) { | 445 if (jsObject is! js.JsObject) { |
448 // JS Interop converted the object to a Dart class e.g., Uint8ClampedList. | 446 // JS Interop converted the object to a Dart class e.g., Uint8ClampedList. |
449 return jsObject; | 447 return jsObject; |
450 } | 448 } |
451 | 449 |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
508 var result = new Map(); | 506 var result = new Map(); |
509 var keys = js.context['Object'].callMethod('keys', [jsObject]); | 507 var keys = js.context['Object'].callMethod('keys', [jsObject]); |
510 for (var key in keys) { | 508 for (var key in keys) { |
511 result[key] = wrap_jso(jsObject[key]); | 509 result[key] = wrap_jso(jsObject[key]); |
512 } | 510 } |
513 return result; | 511 return result; |
514 } | 512 } |
515 | 513 |
516 // Converts a flat Dart map into a JavaScript object with properties this is | 514 // Converts a flat Dart map into a JavaScript object with properties this is |
517 // is the Dartium only version it uses dart:js. | 515 // is the Dartium only version it uses dart:js. |
| 516 // TODO(alanknight): This could probably be unified with the dart2js conversions |
| 517 // code in html_common and be more general. |
518 convertDartToNative_Dictionary(Map dict) { | 518 convertDartToNative_Dictionary(Map dict) { |
519 if (dict == null) return null; | 519 if (dict == null) return null; |
520 var jsObject = new js.JsObject(js.context['Object']); | 520 var jsObject = new js.JsObject(js.context['Object']); |
521 dict.forEach((String key, value) { | 521 dict.forEach((String key, value) { |
522 if (value is List) { | 522 if (value is List) { |
523 var jsArray = new js.JsArray(); | 523 var jsArray = new js.JsArray(); |
524 value.forEach((elem) { | 524 value.forEach((elem) { |
525 jsArray.add(elem is Map ? convertDartToNative_Dictionary(elem): elem); | 525 jsArray.add(elem is Map ? convertDartToNative_Dictionary(elem): elem); |
526 }); | 526 }); |
527 jsObject[key] = jsArray; | 527 jsObject[key] = jsArray; |
528 } else { | 528 } else { |
529 jsObject[key] = value; | 529 jsObject[key] = value; |
530 } | 530 } |
531 }); | 531 }); |
532 return jsObject; | 532 return jsObject; |
533 } | 533 } |
534 | 534 |
535 // Converts a Dart list into a JsArray. For the Dartium version only. | 535 // Converts a Dart list into a JsArray. For the Dartium version only. |
536 convertDartToNative_List(List input) => new js.JsArray()..addAll(input); | 536 convertDartToNative_List(List input) => new js.JsArray()..addAll(input); |
537 | 537 |
538 // Conversion function place holder (currently not used in dart2js or dartium). | 538 // Conversion function place holder (currently not used in dart2js or dartium). |
539 List convertDartToNative_StringArray(List<String> input) => input; | 539 List convertDartToNative_StringArray(List<String> input) => input; |
540 | 540 |
541 Future convertNativePromiseToDartFuture(js.JsObject promise) { | |
542 var completer = new Completer(); | |
543 var newPromise = promise | |
544 .callMethod("then", [(result) => completer.complete(result)]) | |
545 .callMethod("catch", [(result) => completer.completeError(result)]); | |
546 return completer.future; | |
547 } | |
548 | |
549 $else | 541 $else |
550 class JsoNativeFieldWrapper extends NativeFieldWrapperClass2 {} | 542 class JsoNativeFieldWrapper extends NativeFieldWrapperClass2 {} |
551 | 543 |
552 unwrap_jso(dartClass_instance) => dartClass_instance; | 544 unwrap_jso(dartClass_instance) => dartClass_instance; |
553 wrap_jso(jsObject) => jsObject; | 545 wrap_jso(jsObject) => jsObject; |
554 make_dart_rectangle(r) => r; | 546 make_dart_rectangle(r) => r; |
555 convertDartToNative_Dictionary(Map dict) => dict; | 547 convertDartToNative_Dictionary(Map dict) => dict; |
556 List convertDartToNative_StringArray(List<String> input) => input; | 548 List convertDartToNative_StringArray(List<String> input) => input; |
557 convertDartToNative_List(List input) => input; | 549 convertDartToNative_List(List input) => input; |
558 | 550 |
559 $endif | 551 $endif |
OLD | NEW |