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 |
| 398 // To preserve identity, if we already have a wrapper for this, return it. |
| 399 var existing; |
| 400 if (jsObject is! js.JsArray) { |
| 401 var existing = jsObject['dartClass_instance']; |
| 402 try { |
| 403 if (unwrap_jso(existing) == jsObject) { |
| 404 return existing; |
| 405 } |
| 406 } catch(e) {} |
| 407 } |
397 // Try the most general type conversions on it. | 408 // Try the most general type conversions on it. |
398 // TODO(alanknight): We may be able to do better. This maintains identity, | 409 // 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 | 410 // 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. | 411 // this conversion handles, how does that work? e.g. a list of maps of eleme
nts. |
401 var converted = convertNativeToDart_SerializedScriptValue(jsObject); | 412 var converted = convertNativeToDart_SerializedScriptValue(jsObject); |
402 if (!identical(converted, jsObject)) { | 413 if (!identical(converted, jsObject)) { |
403 return converted; | 414 return converted; |
404 } | 415 } |
405 var constructor = jsObject['constructor']; | 416 var constructor = jsObject['constructor']; |
406 if (__interop_checks) { | 417 if (__interop_checks) { |
407 debug_or_assert("constructor != null", constructor != null); | 418 debug_or_assert("constructor != null", constructor != null); |
408 } | 419 } |
409 var jsTypeName = constructor['name']; | 420 var jsTypeName = constructor['name']; |
410 if (__interop_checks) { | 421 if (__interop_checks) { |
411 debug_or_assert("constructor != null && jsTypeName.length > 0", constructo
r != null && jsTypeName.length > 0); | 422 debug_or_assert("constructor != null && jsTypeName.length > 0", constructo
r != null && jsTypeName.length > 0); |
412 } | 423 } |
413 | 424 |
414 var dartClass_instance; | 425 var dartClass_instance; |
415 if (jsObject.hasProperty('dart_class')) { | 426 if (jsObject.hasProperty('dart_class')) { |
416 // Got a dart_class (it's a custom element) use it it's already set up. | 427 // Got a dart_class (it's a custom element) use it it's already set up. |
417 dartClass_instance = jsObject['dart_class']; | 428 dartClass_instance = jsObject['dart_class']; |
418 } else { | 429 } else { |
419 var func = getHtmlCreateFunction(jsTypeName); | 430 var func = getHtmlCreateFunction(jsTypeName); |
420 if (func != null) { | 431 if (func != null) { |
421 dartClass_instance = func(); | 432 dartClass_instance = func(); |
422 dartClass_instance.blink_jsObject = jsObject; | 433 dartClass_instance.blink_jsObject = jsObject; |
| 434 jsObject['dartClass_instance'] = dartClass_instance; |
423 } | 435 } |
424 } | 436 } |
425 return dartClass_instance; | 437 return dartClass_instance; |
426 } catch(e, stacktrace){ | 438 } catch(e, stacktrace){ |
427 if (__interop_checks) { | 439 if (__interop_checks) { |
428 if (e is DebugAssertException) | 440 if (e is DebugAssertException) |
429 window.console.log("${e.message}\n ${stacktrace}"); | 441 window.console.log("${e.message}\n ${stacktrace}"); |
430 else | 442 else |
431 window.console.log("${stacktrace}"); | 443 window.console.log("${stacktrace}"); |
432 } | 444 } |
433 } | 445 } |
434 | 446 |
435 return null; | 447 return null; |
436 } | 448 } |
437 | 449 |
| 450 |
438 /** | 451 /** |
439 * Create Dart class that maps to the JS Type that is the JS type being | 452 * Create Dart class that maps to the JS Type that is the JS type being |
440 * extended using JS interop createCallback (we need the base type of the | 453 * extended using JS interop createCallback (we need the base type of the |
441 * custom element) not the Dart created constructor. | 454 * custom element) not the Dart created constructor. |
442 */ | 455 */ |
443 wrap_jso_custom_element(jsObject) { | 456 wrap_jso_custom_element(jsObject) { |
444 try { | 457 try { |
445 if (jsObject is! js.JsObject) { | 458 if (jsObject is! js.JsObject) { |
446 // JS Interop converted the object to a Dart class e.g., Uint8ClampedList. | 459 // JS Interop converted the object to a Dart class e.g., Uint8ClampedList. |
447 return jsObject; | 460 return jsObject; |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
542 class JsoNativeFieldWrapper extends NativeFieldWrapperClass2 {} | 555 class JsoNativeFieldWrapper extends NativeFieldWrapperClass2 {} |
543 | 556 |
544 unwrap_jso(dartClass_instance) => dartClass_instance; | 557 unwrap_jso(dartClass_instance) => dartClass_instance; |
545 wrap_jso(jsObject) => jsObject; | 558 wrap_jso(jsObject) => jsObject; |
546 make_dart_rectangle(r) => r; | 559 make_dart_rectangle(r) => r; |
547 convertDartToNative_Dictionary(Map dict) => dict; | 560 convertDartToNative_Dictionary(Map dict) => dict; |
548 List convertDartToNative_StringArray(List<String> input) => input; | 561 List convertDartToNative_StringArray(List<String> input) => input; |
549 convertDartToNative_List(List input) => input; | 562 convertDartToNative_List(List input) => input; |
550 | 563 |
551 $endif | 564 $endif |
OLD | NEW |