| OLD | NEW |
| 1 part of html_common; | 1 part of html_common; |
| 2 | 2 |
| 3 convertDartToNative_PrepareForStructuredClone(value) => | 3 convertDartToNative_PrepareForStructuredClone(value) => |
| 4 new _StructuredCloneDartium().convertDartToNative_PrepareForStructuredClone(
value); | 4 new _StructuredCloneDartium().convertDartToNative_PrepareForStructuredClone(
value); |
| 5 | 5 |
| 6 convertNativeToDart_AcceptStructuredClone(object, {mustCopy: false}) => | 6 convertNativeToDart_AcceptStructuredClone(object, {mustCopy: false}) => |
| 7 new _AcceptStructuredCloneDartium().convertNativeToDart_AcceptStructuredClon
e(object, mustCopy: mustCopy); | 7 new _AcceptStructuredCloneDartium().convertNativeToDart_AcceptStructuredClon
e(object, mustCopy: mustCopy); |
| 8 | 8 |
| 9 class _StructuredCloneDartium extends _StructuredClone { | 9 class _StructuredCloneDartium extends _StructuredClone { |
| 10 newJsMap() => new js.JsObject(js.context["Object"]); | 10 newJsMap() => new js.JsObject(js.context["Object"]); |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 try { | 115 try { |
| 116 if (jsObject is! js.JsObject || jsObject == null) { | 116 if (jsObject is! js.JsObject || jsObject == null) { |
| 117 // JS Interop converted the object to a Dart class e.g., Uint8ClampedList. | 117 // JS Interop converted the object to a Dart class e.g., Uint8ClampedList. |
| 118 // or it's a simple type. | 118 // or it's a simple type. |
| 119 return jsObject; | 119 return jsObject; |
| 120 } | 120 } |
| 121 | 121 |
| 122 var wrapper = js.getDartHtmlWrapperFor(jsObject); | 122 var wrapper = js.getDartHtmlWrapperFor(jsObject); |
| 123 // if we have a wrapper return the Dart instance. | 123 // if we have a wrapper return the Dart instance. |
| 124 if (wrapper != null) { | 124 if (wrapper != null) { |
| 125 var customElementClass = getCustomElementType(wrapper.blink_jsObject); | |
| 126 if (wrapper.runtimeType != customElementClass && customElementClass != nul
l) { | |
| 127 if (wrapper.runtimeType == HtmlElement && !wrapper.isBadUpgrade) { | |
| 128 // We're a Dart instance if it's HtmlElement and we have a customEleme
nt | |
| 129 // class then we need to upgrade. | |
| 130 if (customElementClass != null) { | |
| 131 var dartClass_instance; | |
| 132 try { | |
| 133 dartClass_instance = _blink.Blink_Utils.constructElement(customEle
mentClass, jsObject); | |
| 134 } finally { | |
| 135 dartClass_instance.blink_jsObject = jsObject; | |
| 136 return dartClass_instance; | |
| 137 } | |
| 138 } | |
| 139 } | |
| 140 } | |
| 141 | |
| 142 return wrapper; | 125 return wrapper; |
| 143 } | 126 } |
| 144 | 127 |
| 145 if (jsObject is js.JsArray) { | 128 if (jsObject is js.JsArray) { |
| 146 var wrappingList = new DartHtmlWrappingList(jsObject); | 129 var wrappingList = new DartHtmlWrappingList(jsObject); |
| 147 js.setDartHtmlWrapperFor(jsObject, wrappingList); | 130 js.setDartHtmlWrapperFor(jsObject, wrappingList); |
| 148 return wrappingList; | 131 return wrappingList; |
| 149 } | 132 } |
| 150 | 133 |
| 151 // Try the most general type conversions on it. | 134 // Try the most general type conversions on it. |
| (...skipping 21 matching lines...) Expand all Loading... |
| 173 | 156 |
| 174 var dartClass_instance; | 157 var dartClass_instance; |
| 175 var customElementClass = null; | 158 var customElementClass = null; |
| 176 var extendsTag = ""; | 159 var extendsTag = ""; |
| 177 var custom = getCustomElementEntry(jsObject); | 160 var custom = getCustomElementEntry(jsObject); |
| 178 if (custom != null) { | 161 if (custom != null) { |
| 179 customElementClass = custom['type']; | 162 customElementClass = custom['type']; |
| 180 extendsTag = custom['extends']; | 163 extendsTag = custom['extends']; |
| 181 } | 164 } |
| 182 | 165 |
| 183 // Custom Element to upgrade. | 166 // Only allow custom elements to be created in the html or svg default |
| 184 // Only allow custome elements to be created in the html or svg default | |
| 185 // namespace. | 167 // namespace. |
| 168 var func; |
| 186 var defaultNS = jsObject['namespaceURI'] == 'http://www.w3.org/1999/xhtml' |
| | 169 var defaultNS = jsObject['namespaceURI'] == 'http://www.w3.org/1999/xhtml' |
| |
| 187 jsObject['namespaceURI'] == 'http://www.w3.org/2000/svg'; | 170 jsObject['namespaceURI'] == 'http://www.w3.org/2000/svg'; |
| 188 if (customElementClass != null && extendsTag == "" && defaultNS) { | 171 if (customElementClass != null && extendsTag == "" && defaultNS) { |
| 189 try { | 172 // The customElementClass is known but we can't create the real class so |
| 190 dartClass_instance = _blink.Blink_Utils.constructElement(customElementCl
ass, jsObject); | 173 // create the HtmlElement and it will get upgraded when registerElement's |
| 191 } finally { | 174 // createdCallback is called. |
| 192 dartClass_instance.blink_jsObject = jsObject; | 175 func = getHtmlCreateFunction('HTMLElement'); |
| 193 js.setDartHtmlWrapperFor(jsObject, dartClass_instance); | |
| 194 } | |
| 195 } else { | 176 } else { |
| 196 var func = getHtmlCreateFunction(jsTypeName); | 177 func = getHtmlCreateFunction(jsTypeName); |
| 197 if (func == null) { | 178 if (func == null) { |
| 198 if (jsTypeName == 'auto-binding') { | 179 if (jsTypeName == 'auto-binding') { |
| 199 func = getHtmlCreateFunction("HTMLTemplateElement"); | 180 func = getHtmlCreateFunction('HTMLTemplateElement'); |
| 200 } else if (jsObject.toString() == "[object HTMLElement]") { | 181 } else if (jsObject.toString() == "[object HTMLElement]") { |
| 201 // One last ditch effort could be a JS custom element. | 182 // One last ditch effort could be a JS custom element. |
| 202 func = getHtmlCreateFunction("HTMLElement"); | 183 func = getHtmlCreateFunction('HTMLElement'); |
| 203 } | 184 } |
| 204 } | 185 } |
| 205 if (func != null) { | |
| 206 dartClass_instance = func(); | |
| 207 dartClass_instance.blink_jsObject = jsObject; | |
| 208 js.setDartHtmlWrapperFor(jsObject, dartClass_instance); | |
| 209 } | |
| 210 } | 186 } |
| 211 | 187 |
| 188 // Can we construct a Dart class? |
| 189 if (func != null) { |
| 190 dartClass_instance = func(); |
| 191 |
| 192 // Wrap our Dart instance in both directions. |
| 193 dartClass_instance.blink_jsObject = jsObject; |
| 194 js.setDartHtmlWrapperFor(jsObject, dartClass_instance); |
| 195 } |
| 196 |
| 212 // TODO(jacobr): cache that this is not a dart:html JS class. | 197 // TODO(jacobr): cache that this is not a dart:html JS class. |
| 213 return dartClass_instance; | 198 return dartClass_instance; |
| 214 } catch(e, stacktrace){ | 199 } catch(e, stacktrace){ |
| 215 if (interop_checks) { | 200 if (interop_checks) { |
| 216 if (e is DebugAssertException) | 201 if (e is DebugAssertException) |
| 217 window.console.log("${e.message}\n ${stacktrace}"); | 202 window.console.log("${e.message}\n ${stacktrace}"); |
| 218 else | 203 else |
| 219 window.console.log("${stacktrace}"); | 204 window.console.log("${stacktrace}"); |
| 220 } | 205 } |
| 221 } | 206 } |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 387 | 372 |
| 388 final js.JsArray blink_jsObject; | 373 final js.JsArray blink_jsObject; |
| 389 | 374 |
| 390 operator [](int index) => wrap_jso(js.JsNative.getArrayIndex(blink_jsObject, i
ndex)); | 375 operator [](int index) => wrap_jso(js.JsNative.getArrayIndex(blink_jsObject, i
ndex)); |
| 391 | 376 |
| 392 operator []=(int index, value) => blink_jsObject[index] = value; | 377 operator []=(int index, value) => blink_jsObject[index] = value; |
| 393 | 378 |
| 394 int get length => blink_jsObject.length; | 379 int get length => blink_jsObject.length; |
| 395 int set length(int newLength) => blink_jsObject.length = newLength; | 380 int set length(int newLength) => blink_jsObject.length = newLength; |
| 396 } | 381 } |
| OLD | NEW |