blob: 9cb43f70f06463329af89a1f6723d99119bbd90a [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<link rel="help" href="http://www.w3.org/TR/2013/WD-html51-20130528/editing.html#dom-datatransferitemlist-remove">
<script src="../../resources/js-test.js"></script>
</head>
<body>
<script>
description("Checks that DataTransferItemList.remove() is working");
var dataTansferItemList;
function copy(event)
{
debug("* copy event");
event.preventDefault();
dataTansferItemList = event.clipboardData.items;
dataTansferItemList.add('a', 'text/plain');
dataTansferItemList.add('http://www.google.com/', 'text/uri-list');
dataTansferItemList.add('<em>Markup</em>', 'text/html');
dataTansferItemList.add('hello world', 'custom-data');
shouldBe('dataTansferItemList.length', '4');
shouldBeEqualToString('dataTansferItemList[0].type', 'text/plain');
shouldBeEqualToString('dataTansferItemList[1].type', 'text/uri-list');
shouldBeEqualToString('dataTansferItemList[2].type', 'text/html');
shouldBeEqualToString('dataTansferItemList[3].type', 'custom-data');
// Failure cases.
shouldThrow('dataTansferItemList.remove()', '"TypeError: Failed to execute \'remove\' on \'DataTransferItemList\': 1 argument required, but only 0 present."');
shouldNotThrow('dataTansferItemList.remove(-1)');
shouldBe('dataTansferItemList.length', '4');
shouldNotThrow('dataTansferItemList.remove(999)');
shouldBe('dataTansferItemList.length', '4');
// Success cases.
shouldNotThrow('dataTansferItemList.remove(0)');
shouldBe('dataTansferItemList.length', '3');
shouldBeEqualToString('dataTansferItemList[0].type', 'text/uri-list');
shouldBeEqualToString('dataTansferItemList[1].type', 'text/html');
shouldNotThrow('dataTansferItemList.remove(-4294967295)'); // Wraps to 1.
shouldBe('dataTansferItemList.length', '2');
shouldBeEqualToString('dataTansferItemList[1].type', 'custom-data');
}
function paste(event)
{
debug("* paste event");
dataTansferItemList = event.clipboardData.items;
shouldBe('dataTansferItemList.length', '2');
shouldThrow('dataTansferItemList.remove(0)', '"InvalidStateError: Failed to execute \'remove\' on \'DataTransferItemList\': The list is not writable."'); // List is readonly during paste.
shouldBe('dataTansferItemList.length', '2');
}
document.oncopy = copy;
document.onpaste = paste;
document.execCommand('copy');
document.execCommand('paste');
</script>
</body>
</html>