diff --git a/sdk/lib/html/dart2js/html_dart2js.dart b/sdk/lib/html/dart2js/html_dart2js.dart index a5179d76064..ec0a8078043 100644 --- a/sdk/lib/html/dart2js/html_dart2js.dart +++ b/sdk/lib/html/dart2js/html_dart2js.dart @@ -18415,6 +18415,11 @@ class MessageEvent extends Event native "MessageEvent" { if (source == null) { source = window; } + if (!Device.isIE) { + return JS('MessageEvent', 'new MessageEvent(#, {bubbles: #, cancelable: #, data: #, origin: #, lastEventId: #, source: #, ports: #})', + type, canBubble, cancelable, data, origin, lastEventId, source, + messagePorts); + } var event = document._createEvent("MessageEvent"); event._initMessageEvent(type, canBubble, cancelable, data, origin, lastEventId, source, messagePorts); diff --git a/tests/html/html.status b/tests/html/html.status index 78d0d173925..88c75015643 100644 --- a/tests/html/html.status +++ b/tests/html/html.status @@ -400,8 +400,6 @@ speechrecognition_test/supported: Fail websql_test/supported: Fail [ $runtime == ff ] -messageevent_test: RuntimeError # Issue 15651 -serialized_script_value_test: RuntimeError # Issue 15651 client_rect_test: Fail # Issue 16890 [ $runtime == ff ] diff --git a/tests/html/messageevent_test.dart b/tests/html/messageevent_test.dart index a4361892452..9ef36819ffc 100644 --- a/tests/html/messageevent_test.dart +++ b/tests/html/messageevent_test.dart @@ -6,7 +6,7 @@ import 'dart:html'; main() { useHtmlConfiguration(); - test('MessageEvent.initMessageEvent', () { + test('new MessageEvent', () { final event = new MessageEvent('type', cancelable: true, data: 'data', origin: 'origin', lastEventId: 'lastEventId'); diff --git a/tools/dom/templates/html/impl/impl_MessageEvent.darttemplate b/tools/dom/templates/html/impl/impl_MessageEvent.darttemplate index 8a16f106de3..c4396645387 100644 --- a/tools/dom/templates/html/impl/impl_MessageEvent.darttemplate +++ b/tools/dom/templates/html/impl/impl_MessageEvent.darttemplate @@ -14,6 +14,14 @@ $(ANNOTATIONS)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC { if (source == null) { source = window; } +$if DART2JS + if (!Device.isIE) { // TODO: This if check should be removed once IE + // implements the constructor. + return JS('MessageEvent', 'new MessageEvent(#, {bubbles: #, cancelable: #, data: #, origin: #, lastEventId: #, source: #, ports: #})', + type, canBubble, cancelable, data, origin, lastEventId, source, + messagePorts); + } +$endif var event = document._createEvent("MessageEvent"); event._initMessageEvent(type, canBubble, cancelable, data, origin, lastEventId, source, messagePorts);