From 665ba650bb16f19652d92ec2032d2f2e8fd3937a Mon Sep 17 00:00:00 2001 From: "jmesserly@google.com" Date: Tue, 8 Jul 2014 08:37:14 +0000 Subject: [PATCH] fix js_interop_test for browsers without Object.observe the test assumed Dart timing, which would be next microtask, but since this is a JS element it is updated later. Review URL: https://codereview.chromium.org//372193003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@38054 260f80e4-7a28-3924-810f-c04153c831b5 --- pkg/polymer/test/js_interop_test.dart | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pkg/polymer/test/js_interop_test.dart b/pkg/polymer/test/js_interop_test.dart index e4bc6aa5307..154cd01d8a2 100644 --- a/pkg/polymer/test/js_interop_test.dart +++ b/pkg/polymer/test/js_interop_test.dart @@ -95,13 +95,22 @@ main() => initPolymer().run(() { // Text will update asynchronously expect(jsElem.shadowRoot.text, 'FOOBAR:40'); - return new Future(() { + return _onTextChanged(jsElem.shadowRoot).then((_) { expect(jsElem.shadowRoot.text, 'FOOBAR:42'); }); }); }); }); +Future> _onTextChanged(Node node) { + var completer = new Completer(); + new MutationObserver((mutations, observer) { + observer.disconnect(); + completer.complete(mutations); + })..observe(node, characterData: true, subtree: true); + return completer.future; +} + testInterop(jsElem) { expect(jsElem.shadowRoot.text, 'FOOBAR'); var interop = new JsObject.fromBrowserObject(jsElem);