Index: sdk/lib/html/dartium/html_dartium.dart |
diff --git a/sdk/lib/html/dartium/html_dartium.dart b/sdk/lib/html/dartium/html_dartium.dart |
index 388e2a5b59b0393efeb108aa36961b6cba80059f..6d84226de82586655c9f7a3df4df51566f9711e0 100644 |
--- a/sdk/lib/html/dartium/html_dartium.dart |
+++ b/sdk/lib/html/dartium/html_dartium.dart |
@@ -1206,6 +1206,22 @@ wrap_jso(jsObject) { |
var wrapper = js.getDartHtmlWrapperFor(jsObject); |
// if we have a wrapper return the Dart instance. |
if (wrapper != null) { |
+ if (wrapper.runtimeType == HtmlElement && !wrapper._isBadUpgrade) { |
+ // We're a Dart instance but we need to upgrade. |
+ var customElementClass = _getCustomElementType(wrapper); |
+ if (customElementClass != null) { |
+ var dartClass_instance; |
+ try { |
+ dartClass_instance = _blink.Blink_Utils.constructElement(customElementClass, jsObject); |
+ } finally { |
+ dartClass_instance.blink_jsObject = jsObject; |
+ jsObject['dart_class'] = dartClass_instance; |
+ js.setDartHtmlWrapperFor(jsObject, dartClass_instance); |
+ return dartClass_instance; |
+ } |
+ } |
+ } |
+ |
return wrapper; |
} |
@@ -37186,10 +37202,10 @@ class Url extends DartHtmlDomObject implements UrlUtils { |
if ((blob_OR_source_OR_stream is Blob || blob_OR_source_OR_stream == null)) { |
return _blink.BlinkURL.instance.createObjectURL_Callback_1_(unwrap_jso(blob_OR_source_OR_stream)); |
} |
- if ((blob_OR_source_OR_stream is MediaSource)) { |
+ if ((blob_OR_source_OR_stream is MediaStream)) { |
return _blink.BlinkURL.instance.createObjectURL_Callback_1_(unwrap_jso(blob_OR_source_OR_stream)); |
} |
- if ((blob_OR_source_OR_stream is MediaStream)) { |
+ if ((blob_OR_source_OR_stream is MediaSource)) { |
return _blink.BlinkURL.instance.createObjectURL_Callback_1_(unwrap_jso(blob_OR_source_OR_stream)); |
} |
throw new ArgumentError("Incorrect number or type of arguments"); |