blob: 517dbe2ce3d1b58807fed497250e855bd738c10d [file] [log] [blame]
<!DOCTYPE html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<body></body>
<script>
test(function() {
const iframe = document.createElement('iframe');
document.body.appendChild(iframe);
const element = iframe.contentDocument.createElement("div");
const keyframes = [];
keyframes.__defineGetter__(0,()=>{
document.body.removeChild(iframe);
return { transform: 'translate3D(0, -300px, 0)' };
});
const animation = element.animate(keyframes, {
duration: 3000,
iterations: Infinity,
timeline: null
});
assert_equals(animation, null);
}, "Check that removing a parent iframe during keyframe parsing " +
"doesn't crash when calling animate with options");
test(function() {
const iframe = document.createElement('iframe');
document.body.appendChild(iframe);
const element = iframe.contentDocument.createElement("div");
const options = {
iterations: Infinity,
timeline: null
};
let getterCalled = false;
options.__defineGetter__('duration', () => {
document.body.removeChild(iframe);
getterCalled = true;
return 3000;
});
assert_false(getterCalled);
const animation = element.animate(
{ transform: 'translate3D(0, -300px, 0)' }, options);
assert_true(getterCalled);
assert_equals(animation, null);
}, "Check that removing a parent iframe during options parsing " +
"doesn't crash");
test(function() {
const iframe = document.createElement('iframe');
document.body.appendChild(iframe);
const element = iframe.contentDocument.createElement("div");
const keyframes = [];
keyframes.__defineGetter__(0,()=>{
document.body.removeChild(iframe);
return { transform: 'translate3D(0, -300px, 0)' };
});
const animation = element.animate(keyframes);
assert_equals(animation, null);
}, "Check that removing a parent iframe during keyframe parsing " +
"doesn't crash when calling animate without options");
</script>