Index: tools/dom/templates/html/impl/impl_Window.darttemplate |
diff --git a/tools/dom/templates/html/impl/impl_Window.darttemplate b/tools/dom/templates/html/impl/impl_Window.darttemplate |
index a45122ab68f53c799e218fe1167cf95a05a131f3..7ddeaada1264ece71d0bbb284525d94408af0334 100644 |
--- a/tools/dom/templates/html/impl/impl_Window.darttemplate |
+++ b/tools/dom/templates/html/impl/impl_Window.darttemplate |
@@ -292,6 +292,7 @@ $if DART2JS |
$endif |
} |
+$if DART2JS |
class _BeforeUnloadEvent extends _WrappedEvent implements BeforeUnloadEvent { |
String _returnValue; |
@@ -301,15 +302,14 @@ class _BeforeUnloadEvent extends _WrappedEvent implements BeforeUnloadEvent { |
void set returnValue(String value) { |
_returnValue = value; |
-$if DART2JS |
// FF and IE use the value as the return value, Chrome will return this from |
// the event callback function. |
if (JS('bool', '("returnValue" in #)', wrapped)) { |
JS('void', '#.returnValue = #', wrapped, value); |
} |
-$endif |
} |
} |
+$endif |
class _BeforeUnloadEventStreamProvider implements |
EventStreamProvider<BeforeUnloadEvent> { |
@@ -318,8 +318,10 @@ class _BeforeUnloadEventStreamProvider implements |
const _BeforeUnloadEventStreamProvider(this._eventType); |
Stream<BeforeUnloadEvent> forTarget(EventTarget e, {bool useCapture: false}) { |
- var controller = new StreamController(sync: true); |
var stream = new _EventStream(e, _eventType, useCapture); |
+$if DART2JS |
+ var controller = new StreamController(sync: true); |
+ |
stream.listen((event) { |
var wrapped = new _BeforeUnloadEvent(event); |
controller.add(wrapped); |
@@ -327,6 +329,9 @@ class _BeforeUnloadEventStreamProvider implements |
}); |
return controller.stream; |
+$else |
+ return stream; |
+$endif |
} |
String getEventType(EventTarget target) { |