| 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 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 354 | 354 |
| 355 // List of known tagName to DartClass for custom elements, used for upgrade. | 355 // List of known tagName to DartClass for custom elements, used for upgrade. |
| 356 var _knownCustomElements = new Map<String, Map<Type, String>>(); | 356 var _knownCustomElements = new Map<String, Map<Type, String>>(); |
| 357 | 357 |
| 358 void _addCustomElementType(String tagName, Type dartClass, [String extendTag]) { | 358 void _addCustomElementType(String tagName, Type dartClass, [String extendTag]) { |
| 359 _knownCustomElements[tagName] = | 359 _knownCustomElements[tagName] = |
| 360 {'type': dartClass, 'extends': extendTag != null ? extendTag : "" }; | 360 {'type': dartClass, 'extends': extendTag != null ? extendTag : "" }; |
| 361 } | 361 } |
| 362 | 362 |
| 363 Type _getCustomElementType(object) { | 363 Type _getCustomElementType(object) { |
| 364 var entry = _knownCustomElements[_getCustomElementName(object)]; | 364 var entry = _getCustomElementEntry(object); |
| 365 if (entry != null) { | 365 if (entry != null) { |
| 366 return entry['type']; | 366 return entry['type']; |
| 367 } | 367 } |
| 368 return null; | 368 return null; |
| 369 } | 369 } |
| 370 | 370 |
| 371 String _getCustomElementExtends(object) { | 371 String _getCustomElementExtends(object) { |
| 372 var entry = _knownCustomElements[_getCustomElementName(object)]; | 372 var entry = _getCustomElementEntry(object); |
| 373 if (entry != null) { | 373 if (entry != null) { |
| 374 return entry['extends']; | 374 return entry['extends']; |
| 375 } | 375 } |
| 376 return null; | 376 return null; |
| 377 } | 377 } |
| 378 | 378 |
| 379 _getCustomElement(object) => _knownCustomElements[_getCustomElementName(object)]
; | 379 _getCustomElementEntry(element) { |
| 380 var hasAttribute = false; |
| 381 |
| 382 var jsObject; |
| 383 var tag = ""; |
| 384 var runtimeType = element.runtimeType; |
| 385 if (runtimeType == HtmlElement) { |
| 386 tag = element.localName; |
| 387 } else if (runtimeType == TemplateElement) { |
| 388 // Data binding with a Dart class. |
| 389 tag = element.attributes['is']; |
| 390 } else if (runtimeType == js.JsObjectImpl) { |
| 391 // It's a Polymer core element (written in JS). |
| 392 // Make sure it's an element anything else we can ignore. |
| 393 if (element.hasProperty('nodeType') && element['nodeType'] == 1) { |
| 394 if (js.JsNative.callMethod(element, 'hasAttribute', ['is'])) { |
| 395 hasAttribute = true; |
| 396 // It's data binding use the is attribute. |
| 397 tag = js.JsNative.callMethod(element, 'getAttribute', ['is']); |
| 398 } else { |
| 399 // It's a custom element we want the local name. |
| 400 tag = element['localName']; |
| 401 } |
| 402 } |
| 403 } else { |
| 404 throw new UnsupportedError('Element is incorrect type. Got ${runtimeType}, e
xpected HtmlElement/HtmlTemplate/JsObjectImpl.'); |
| 405 } |
| 406 |
| 407 var entry = _knownCustomElements[tag]; |
| 408 if (entry != null) { |
| 409 // If there's an 'is' attribute then check if the extends tag registered |
| 410 // matches the tag if so then return the entry that's registered for this |
| 411 // extendsTag or if there's no 'is' tag then return the entry found. |
| 412 if ((hasAttribute && entry['extends'] == tag) || !hasAttribute) { |
| 413 return entry; |
| 414 } |
| 415 } |
| 416 |
| 417 return null; |
| 418 } |
| 380 | 419 |
| 381 // Return the tag name or is attribute of the custom element or data binding. | 420 // Return the tag name or is attribute of the custom element or data binding. |
| 382 String _getCustomElementName(element) { | 421 String _getCustomElementName(element) { |
| 383 var jsObject; | 422 var jsObject; |
| 384 var tag = ""; | 423 var tag = ""; |
| 385 var runtimeType = element.runtimeType; | 424 var runtimeType = element.runtimeType; |
| 386 if (runtimeType == HtmlElement) { | 425 if (runtimeType == HtmlElement) { |
| 387 tag = element.localName; | 426 tag = element.localName; |
| 388 } else if (runtimeType == TemplateElement) { | 427 } else if (runtimeType == TemplateElement) { |
| 389 // Data binding with a Dart class. | 428 // Data binding with a Dart class. |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 444 try { | 483 try { |
| 445 if (jsObject is! js.JsObject || jsObject == null) { | 484 if (jsObject is! js.JsObject || jsObject == null) { |
| 446 // JS Interop converted the object to a Dart class e.g., Uint8ClampedList. | 485 // JS Interop converted the object to a Dart class e.g., Uint8ClampedList. |
| 447 // or it's a simple type. | 486 // or it's a simple type. |
| 448 return jsObject; | 487 return jsObject; |
| 449 } | 488 } |
| 450 | 489 |
| 451 var wrapper = js.getDartHtmlWrapperFor(jsObject); | 490 var wrapper = js.getDartHtmlWrapperFor(jsObject); |
| 452 // if we have a wrapper return the Dart instance. | 491 // if we have a wrapper return the Dart instance. |
| 453 if (wrapper != null) { | 492 if (wrapper != null) { |
| 454 if (wrapper.runtimeType == HtmlElement && !wrapper._isBadUpgrade) { | 493 var customElementClass = _getCustomElementType(wrapper.blink_jsObject); |
| 455 // We're a Dart instance but we need to upgrade. | 494 if (wrapper.runtimeType != customElementClass && customElementClass != nul
l) { |
| 456 var customElementClass = _getCustomElementType(wrapper); | 495 if (wrapper.runtimeType == HtmlElement && !wrapper._isBadUpgrade) { |
| 457 if (customElementClass != null) { | 496 // We're a Dart instance if it's HtmlElement and we have a customEleme
nt |
| 458 var dartClass_instance; | 497 // class then we need to upgrade. |
| 459 try { | 498 if (customElementClass != null) { |
| 460 dartClass_instance = _blink.Blink_Utils.constructElement(customEleme
ntClass, jsObject); | 499 var dartClass_instance; |
| 461 } finally { | 500 try { |
| 462 dartClass_instance.blink_jsObject = jsObject; | 501 dartClass_instance = _blink.Blink_Utils.constructElement(customEle
mentClass, jsObject); |
| 463 jsObject['dart_class'] = dartClass_instance; | 502 } finally { |
| 464 js.setDartHtmlWrapperFor(jsObject, dartClass_instance); | 503 dartClass_instance.blink_jsObject = jsObject; |
| 465 return dartClass_instance; | 504 return dartClass_instance; |
| 505 } |
| 466 } | 506 } |
| 467 } | 507 } |
| 468 } | 508 } |
| 469 | 509 |
| 470 return wrapper; | 510 return wrapper; |
| 471 } | 511 } |
| 472 | 512 |
| 473 if (jsObject is js.JsArray) { | 513 if (jsObject is js.JsArray) { |
| 474 var wrappingList = new _DartHtmlWrappingList(jsObject); | 514 var wrappingList = new _DartHtmlWrappingList(jsObject); |
| 475 js.setDartHtmlWrapperFor(jsObject, wrappingList); | 515 js.setDartHtmlWrapperFor(jsObject, wrappingList); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 493 return jsObject; | 533 return jsObject; |
| 494 } | 534 } |
| 495 var jsTypeName = js.JsNative.getProperty(constructor, 'name'); | 535 var jsTypeName = js.JsNative.getProperty(constructor, 'name'); |
| 496 if (jsTypeName is! String || jsTypeName.length == 0) { | 536 if (jsTypeName is! String || jsTypeName.length == 0) { |
| 497 // Not an html type. | 537 // Not an html type. |
| 498 js.setDartHtmlWrapperFor(jsObject, jsObject); | 538 js.setDartHtmlWrapperFor(jsObject, jsObject); |
| 499 return jsObject; | 539 return jsObject; |
| 500 } | 540 } |
| 501 | 541 |
| 502 var dartClass_instance; | 542 var dartClass_instance; |
| 503 if (jsObject.hasProperty('dart_class')) { | 543 var customElementClass = null; |
| 504 // Got a dart_class (it's a custom element) use it it's already set up | 544 var extendsTag = ""; |
| 505 // make sure it's upgraded. | 545 var custom = _getCustomElementEntry(jsObject); |
| 506 dartClass_instance = _upgradeHtmlElement(jsObject['dart_class']); | 546 if (custom != null) { |
| 547 customElementClass = custom['type']; |
| 548 extendsTag = custom['extends']; |
| 549 } |
| 550 |
| 551 // Custom Element to upgrade. |
| 552 if (customElementClass != null && extendsTag == "") { |
| 553 try { |
| 554 dartClass_instance = _blink.Blink_Utils.constructElement(customElementCl
ass, jsObject); |
| 555 } finally { |
| 556 dartClass_instance.blink_jsObject = jsObject; |
| 557 js.setDartHtmlWrapperFor(jsObject, dartClass_instance); |
| 558 } |
| 507 } else { | 559 } else { |
| 508 var customElementClass = null; | 560 var func = getHtmlCreateFunction(jsTypeName); |
| 509 var extendsTag = ""; | 561 if (func == null) { |
| 510 var custom = _getCustomElement(jsObject); | |
| 511 if (custom != null) { | |
| 512 customElementClass = custom['type']; | |
| 513 extendsTag = custom['extends']; | |
| 514 } | |
| 515 // Custom Element to upgrade. | |
| 516 if (jsTypeName == 'HTMLElement' && customElementClass != null && extendsTa
g == "") { | |
| 517 try { | |
| 518 dartClass_instance = _blink.Blink_Utils.constructElement(customElement
Class, jsObject); | |
| 519 } finally { | |
| 520 dartClass_instance.blink_jsObject = jsObject; | |
| 521 jsObject['dart_class'] = dartClass_instance; | |
| 522 js.setDartHtmlWrapperFor(jsObject, dartClass_instance); | |
| 523 } | |
| 524 } else { | |
| 525 // TODO(terry): Verify with jakemacd that this is right? | |
| 526 // If we every get an auto-binding we're matching previous non-JS Intero
p | |
| 527 // did to return a TemplateElement. | |
| 528 if (jsTypeName == 'auto-binding') { | 562 if (jsTypeName == 'auto-binding') { |
| 529 jsTypeName = "HTMLTemplateElement"; | 563 func = getHtmlCreateFunction("HTMLTemplateElement"); |
| 530 } | 564 } else if (jsObject.toString() == "[object HTMLElement]") { |
| 531 | |
| 532 var func = getHtmlCreateFunction(jsTypeName); | |
| 533 if (func == null) { | |
| 534 // One last ditch effort could be a JS custom element. | 565 // One last ditch effort could be a JS custom element. |
| 535 if (jsObject.toString() == "[object HTMLElement]") { | 566 func = getHtmlCreateFunction("HTMLElement"); |
| 536 func = getHtmlCreateFunction("HTMLElement"); | |
| 537 } | |
| 538 } | |
| 539 if (func != null) { | |
| 540 dartClass_instance = func(); | |
| 541 dartClass_instance.blink_jsObject = jsObject; | |
| 542 js.setDartHtmlWrapperFor(jsObject, dartClass_instance); | |
| 543 } | 567 } |
| 544 } | 568 } |
| 569 if (func != null) { |
| 570 dartClass_instance = func(); |
| 571 dartClass_instance.blink_jsObject = jsObject; |
| 572 js.setDartHtmlWrapperFor(jsObject, dartClass_instance); |
| 573 } |
| 545 } | 574 } |
| 575 |
| 546 // TODO(jacobr): cache that this is not a dart:html JS class. | 576 // TODO(jacobr): cache that this is not a dart:html JS class. |
| 547 return dartClass_instance; | 577 return dartClass_instance; |
| 548 } catch(e, stacktrace){ | 578 } catch(e, stacktrace){ |
| 549 if (__interop_checks) { | 579 if (__interop_checks) { |
| 550 if (e is DebugAssertException) | 580 if (e is DebugAssertException) |
| 551 window.console.log("${e.message}\n ${stacktrace}"); | 581 window.console.log("${e.message}\n ${stacktrace}"); |
| 552 else | 582 else |
| 553 window.console.log("${stacktrace}"); | 583 window.console.log("${stacktrace}"); |
| 554 } | 584 } |
| 555 } | 585 } |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 667 | 697 |
| 668 // Custom Element to upgrade. | 698 // Custom Element to upgrade. |
| 669 if (customElementClass != null) { | 699 if (customElementClass != null) { |
| 670 var jsObject = dartInstance.blink_jsObject; | 700 var jsObject = dartInstance.blink_jsObject; |
| 671 try { | 701 try { |
| 672 dartInstance = _blink.Blink_Utils.constructElement(customElementClass, j
sObject); | 702 dartInstance = _blink.Blink_Utils.constructElement(customElementClass, j
sObject); |
| 673 } catch (e) { | 703 } catch (e) { |
| 674 dartInstance._badUpgrade(); | 704 dartInstance._badUpgrade(); |
| 675 } finally { | 705 } finally { |
| 676 dartInstance.blink_jsObject = jsObject; | 706 dartInstance.blink_jsObject = jsObject; |
| 677 jsObject['dart_class'] = dartInstance; | |
| 678 js.setDartHtmlWrapperFor(jsObject, dartInstance); | 707 js.setDartHtmlWrapperFor(jsObject, dartInstance); |
| 679 } | 708 } |
| 680 } | 709 } |
| 681 } | 710 } |
| 682 | 711 |
| 683 return dartInstance; | 712 return dartInstance; |
| 684 } | 713 } |
| 685 | 714 |
| 686 class DebugAssertException implements Exception { | 715 class DebugAssertException implements Exception { |
| 687 String message; | 716 String message; |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 788 | 817 |
| 789 unwrap_jso(dartClass_instance) => dartClass_instance; | 818 unwrap_jso(dartClass_instance) => dartClass_instance; |
| 790 wrap_jso(jsObject) => jsObject; | 819 wrap_jso(jsObject) => jsObject; |
| 791 make_dart_rectangle(r) => r; | 820 make_dart_rectangle(r) => r; |
| 792 convertDartToNative_Dictionary(Map dict) => dict; | 821 convertDartToNative_Dictionary(Map dict) => dict; |
| 793 List convertDartToNative_StringArray(List<String> input) => input; | 822 List convertDartToNative_StringArray(List<String> input) => input; |
| 794 convertDartToNative_List(List input) => input; | 823 convertDartToNative_List(List input) => input; |
| 795 createCustomUpgrader(Type customElementClass, $this) => $this; | 824 createCustomUpgrader(Type customElementClass, $this) => $this; |
| 796 | 825 |
| 797 $endif | 826 $endif |
| OLD | NEW |