Fix mutation observer test bug dartbug.com/15497

BUG=
R=blois@google.com

Review URL: https://codereview.chromium.org//102373007

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31143 260f80e4-7a28-3924-810f-c04153c831b5
This commit is contained in:
jacobr@google.com 2013-12-13 19:28:53 +00:00
parent 408427e80d
commit 25238b3af9
2 changed files with 13 additions and 3 deletions

View file

@ -6,9 +6,6 @@ event_test: Skip # Issue 1996
interactive_test: Skip # Must be run manually.
dromaeo_smoke_test: Skip # Issue 14521, 8257
[ $compiler == dart2js && $csp && $runtime == drt ]
mutationobserver_test: Skip # http://dartbug.com/15497
[ $compiler == dart2js && $csp ]
custom/js_custom_test: Fail # Issue 14643

View file

@ -7,6 +7,16 @@ import '../../pkg/unittest/lib/unittest.dart';
import '../../pkg/unittest/lib/html_individual_config.dart';
import 'dart:html';
// MutationObservers sometimes do not fire if the node being observed is GCed
// so we keep around references to all nodes we have created mutation
// observers for. As a side note, this behavior only manifests in content_shell
// and not chrome and the behavior goes away in content_shell if the flag
// -js-flags="--gc_global" is passed to content_shell. Note: the gc behavior
// only has been detected when running dart2js but could equally reasonably
// impact the dartvm as well unless it is specified that mutation events must
// be delivered even if the object the events are for has already been GCed.
var keepAlive = [];
/**
* Test suite for Mutation Observers. This is just a small set of sanity
* checks, not a complete test suite.
@ -61,6 +71,7 @@ main() {
test('direct-parallel options-named', () {
expect(() {
var container = new DivElement();
keepAlive.add(container);
var div1 = new DivElement();
var div2 = new DivElement();
var mutationObserver = new MutationObserver(
@ -75,6 +86,7 @@ main() {
test('direct-nested options-named', () {
expect(() {
var container = new DivElement();
keepAlive.add(container);
var div1 = new DivElement();
var div2 = new DivElement();
var mutationObserver =
@ -89,6 +101,7 @@ main() {
test('subtree options-named', () {
expect(() {
var container = new DivElement();
keepAlive.add(container);
var div1 = new DivElement();
var div2 = new DivElement();
var mutationObserver = new MutationObserver(