| Index: sdk/lib/html/html_common/conversions_dartium.dart
|
| diff --git a/sdk/lib/html/html_common/conversions_dartium.dart b/sdk/lib/html/html_common/conversions_dartium.dart
|
| index 1ed1e1348bc7e99415693b7b4965eae05555d696..bdf8e9c17dfa7aa0ae02a71381af48610ac225b3 100644
|
| --- a/sdk/lib/html/html_common/conversions_dartium.dart
|
| +++ b/sdk/lib/html/html_common/conversions_dartium.dart
|
| @@ -122,23 +122,6 @@ wrap_jso(jsObject) {
|
| var wrapper = js.getDartHtmlWrapperFor(jsObject);
|
| // if we have a wrapper return the Dart instance.
|
| if (wrapper != null) {
|
| - var customElementClass = getCustomElementType(wrapper.blink_jsObject);
|
| - if (wrapper.runtimeType != customElementClass && customElementClass != null) {
|
| - if (wrapper.runtimeType == HtmlElement && !wrapper.isBadUpgrade) {
|
| - // We're a Dart instance if it's HtmlElement and we have a customElement
|
| - // class then we need to upgrade.
|
| - if (customElementClass != null) {
|
| - var dartClass_instance;
|
| - try {
|
| - dartClass_instance = _blink.Blink_Utils.constructElement(customElementClass, jsObject);
|
| - } finally {
|
| - dartClass_instance.blink_jsObject = jsObject;
|
| - return dartClass_instance;
|
| - }
|
| - }
|
| - }
|
| - }
|
| -
|
| return wrapper;
|
| }
|
|
|
| @@ -180,33 +163,35 @@ wrap_jso(jsObject) {
|
| extendsTag = custom['extends'];
|
| }
|
|
|
| - // Custom Element to upgrade.
|
| - // Only allow custome elements to be created in the html or svg default
|
| + // Only allow custom elements to be created in the html or svg default
|
| // namespace.
|
| + var func;
|
| var defaultNS = jsObject['namespaceURI'] == 'http://www.w3.org/1999/xhtml' ||
|
| jsObject['namespaceURI'] == 'http://www.w3.org/2000/svg';
|
| if (customElementClass != null && extendsTag == "" && defaultNS) {
|
| - try {
|
| - dartClass_instance = _blink.Blink_Utils.constructElement(customElementClass, jsObject);
|
| - } finally {
|
| - dartClass_instance.blink_jsObject = jsObject;
|
| - js.setDartHtmlWrapperFor(jsObject, dartClass_instance);
|
| - }
|
| + // The customElementClass is known but we can't create the real class so
|
| + // create the HtmlElement and it will get upgraded when registerElement's
|
| + // createdCallback is called.
|
| + func = getHtmlCreateFunction('HTMLElement');
|
| } else {
|
| - var func = getHtmlCreateFunction(jsTypeName);
|
| + func = getHtmlCreateFunction(jsTypeName);
|
| if (func == null) {
|
| if (jsTypeName == 'auto-binding') {
|
| - func = getHtmlCreateFunction("HTMLTemplateElement");
|
| + func = getHtmlCreateFunction('HTMLTemplateElement');
|
| } else if (jsObject.toString() == "[object HTMLElement]") {
|
| // One last ditch effort could be a JS custom element.
|
| - func = getHtmlCreateFunction("HTMLElement");
|
| + func = getHtmlCreateFunction('HTMLElement');
|
| }
|
| }
|
| - if (func != null) {
|
| - dartClass_instance = func();
|
| - dartClass_instance.blink_jsObject = jsObject;
|
| - js.setDartHtmlWrapperFor(jsObject, dartClass_instance);
|
| - }
|
| + }
|
| +
|
| + // Can we construct a Dart class?
|
| + if (func != null) {
|
| + dartClass_instance = func();
|
| +
|
| + // Wrap our Dart instance in both directions.
|
| + dartClass_instance.blink_jsObject = jsObject;
|
| + js.setDartHtmlWrapperFor(jsObject, dartClass_instance);
|
| }
|
|
|
| // TODO(jacobr): cache that this is not a dart:html JS class.
|
|
|