<!doctype html>
<title>WebVTT IDL tests</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/resources/WebIDLParser.js></script>
<script src=/resources/idlharness.js></script>

<h1>WebVTT IDL tests</h1>
<div id=log></div>

<script type=text/plain>
enum AutoKeyword { "auto" };
enum DirectionSetting { "" /* horizontal */, "rl", "lr" };
enum AlignSetting { "start", "middle", "end", "left", "right" };
[Constructor(double startTime, double endTime, DOMString text)]
interface VTTCue : TextTrackCue {
           attribute VTTRegion? region;
           attribute DirectionSetting vertical;
           attribute boolean snapToLines;
           attribute (double or AutoKeyword) line;
           attribute AlignSetting lineAlign;
           attribute double position;
           attribute AlignSetting positionAlign;
           attribute double size;
           attribute AlignSetting align;
           attribute DOMString text;
  DocumentFragment getCueAsHTML();
};

enum ScrollSetting { "" /* none */, "up" };
[Constructor]
interface VTTRegion {
           attribute double width;
           attribute long lines;
           attribute double regionAnchorX;
           attribute double regionAnchorY;
           attribute double viewportAnchorX;
           attribute double viewportAnchorY;
           attribute ScrollSetting scroll;
};
</script>
<script>
"use strict";
var idlArray;
setup(function() {
	idlArray = new IdlArray();
	[].forEach.call(document.querySelectorAll("script[type=text\\/plain]"), function(node) {
		if (node.className == "untested") {
			idlArray.add_untested_idls(node.textContent);
		} else {
			idlArray.add_idls(node.textContent);
		}
	});
}, {explicit_done:true});
window.onload = function() {
	idlArray.add_objects({
		// WebVTT
		VTTCue: ['new VTTCue(0, 1, "foo")'],
		VTTRegion: ['new VTTRegion()']
	});
	idlArray.test();
	done();
};
</script>
