blob: 5f8cedecf5e045d0321d894a8db270207ca7b143 [file] [log] [blame]
/*
* Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
* for details. All rights reserved. Use of this source code is governed by a
* BSD-style license that can be found in the LICENSE file.
*/
/**
* @description
*/
import "dart:html";
import "../../testcommon.dart";
main() {
document.body.setInnerHtml('''
<p>This test checks for a crash that once happened due to cloned nodes copying style
declaration pointers without retaining them.
</p>
<hr>
<p>PASS: You didn't crash.</p>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
<div style="width: 100px;">hello world</div>
''', treeSanitizer: new NullTreeSanitizer());
garbageCollect()
{
for (var i = 0; i < 10000; i++) {
var o = new Object();
}
}
// Create an army of clones, removing the originals.
var divClones = [];
var div;
while ((div=document.body.query('div')) != null) {
divClones.add(div.clone(false));
div.remove();
}
// Garbage collect to force destruction of the originals.
garbageCollect();
// Now try setting properties on the clones' style declarations.
for (var i = 0; i < divClones.length; i++) {
divClones[i].style.width = "100px";
}
}