<!DOCTYPE html>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script>
test(function() {
    assert_true('animate' in Element.prototype);
}, 'Element.animate() should be exposed.');

test(function() {
    assert_false('getAnimations' in Element.prototype);
}, 'Element.getAnimations() should not be exposed without experimental web platform features enabled.\nThis test is expected to fail in LayoutTests/webexposed.')

test(function() {
    assert_false('Animation' in window);
},'Animation constructor should not be exposed without experimental web platform features enabled.\nThis test is expected to fail in LayoutTests/webexposed.');

test(function() {
    assert_false('AnimationTimeline' in window);
},'Timeline should not be exposed without experimental web platform features enabled.\nThis test is expected to fail in LayoutTests/webexposed.');

test(function() {
    assert_false('timeline' in document);
},'document.timeline should not be exposed without experimental web platform features enabled.\nThis test is expected to fail in LayoutTests/webexposed.');

test(function() {
    assert_false('Timing' in window);
},'Timing should not be exposed without experimental web platform features enabled.\nThis test is expected to fail in LayoutTests/webexposed.');

test(function() {
    assert_false('AnimationNode' in window);
},'AnimationNode should not be exposed without experimental web platform features enabled.\nThis test is expected to fail in LayoutTests/webexposed.');
</script>
