| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library mutationobserver_test; | 5 library mutationobserver_test; |
| 6 import '../../pkg/unittest/lib/unittest.dart'; | 6 import '../../pkg/unittest/lib/unittest.dart'; |
| 7 import '../../pkg/unittest/lib/html_individual_config.dart'; | 7 import '../../pkg/unittest/lib/html_individual_config.dart'; |
| 8 import 'dart:html'; | 8 import 'dart:html'; |
| 9 | 9 |
| 10 // MutationObservers sometimes do not fire if the node being observed is GCed | 10 // Due to https://code.google.com/p/chromium/issues/detail?id=329103 |
| 11 // mutationObservers sometimes do not fire if the node being observed is GCed |
| 11 // so we keep around references to all nodes we have created mutation | 12 // so we keep around references to all nodes we have created mutation |
| 12 // observers for. As a side note, this behavior only manifests in content_shell | 13 // observers for. |
| 13 // and not chrome and the behavior goes away in content_shell if the flag | |
| 14 // -js-flags="--gc_global" is passed to content_shell. Note: the gc behavior | |
| 15 // only has been detected when running dart2js but could equally reasonably | |
| 16 // impact the dartvm as well unless it is specified that mutation events must | |
| 17 // be delivered even if the object the events are for has already been GCed. | |
| 18 var keepAlive = []; | 14 var keepAlive = []; |
| 19 | 15 |
| 20 /** | 16 /** |
| 21 * Test suite for Mutation Observers. This is just a small set of sanity | 17 * Test suite for Mutation Observers. This is just a small set of sanity |
| 22 * checks, not a complete test suite. | 18 * checks, not a complete test suite. |
| 23 */ | 19 */ |
| 24 main() { | 20 main() { |
| 25 useHtmlIndividualConfiguration(); | 21 useHtmlIndividualConfiguration(); |
| 26 | 22 |
| 27 group('supported', () { | 23 group('supported', () { |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 var mutationObserver = new MutationObserver( | 103 var mutationObserver = new MutationObserver( |
| 108 mutationCallback(2, orderedEquals([div1, div2]))); | 104 mutationCallback(2, orderedEquals([div1, div2]))); |
| 109 mutationObserver.observe(container, childList: true, subtree: true); | 105 mutationObserver.observe(container, childList: true, subtree: true); |
| 110 | 106 |
| 111 container.append(div1); | 107 container.append(div1); |
| 112 div1.append(div2); | 108 div1.append(div2); |
| 113 }, expectation); | 109 }, expectation); |
| 114 }); | 110 }); |
| 115 }); | 111 }); |
| 116 } | 112 } |
| OLD | NEW |