Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>HTML Test: draggable_attribute</title>
<link rel='author' title='Intel' href='http://www.intel.com'>
<script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script>
<script src='/html/semantics/interfaces.js'></script>
</head>
<body>
<div id='log'> </div>
<script>
elements.forEach(function(a) {
test(function() {
var eElement = document.createElement(a[0]);
assert_inherits(eElement, 'draggable', 'Element ' + a[0] +' should have draggable property');
}, 'Element ' + a[0] +' should have draggable property');
});
function run_test(element, element_name, exp) {
if (exp) {
assert_true(element.draggable, 'Element ' + element_name +' should be draggable');
} else {
assert_false(element.draggable, 'Element ' + element_name +' should not be draggable');
}
}
function run_idl_test(element, element_name, exp) {
if (exp) {
assert_equals(element.getAttribute('draggable'), 'true', 'Element ' + element_name +' should be draggable');
} else {
assert_equals(element.getAttribute('draggable'), 'false', 'Element ' + element_name +' should not be draggable');
}
}
elements.forEach(function(a) {
test(function() {
//Default values for elements
//If the element is an img element, or, if the element is an a element with an href content attribute,
//the draggable IDL attribute must return true.
var eElement = document.createElement(a[0]);
switch (a[0]) {
case 'a':
eElement.setAttribute('href', 'http://w3.org');
run_test(eElement, 'a', true);
break;
case 'img':
run_test(eElement, 'img', true);
break;
default:
run_test(eElement, a[0], false);
}
//If an element's draggable content attribute has the state true,
//the draggable IDL attribute must return true.
eElement.setAttribute('draggable', 'true');
run_test(eElement, a[0] + ' draggable=\'true\'', true);
//If an element's draggable content attribute has the state false,
//the draggable IDL attribute must return false.
eElement.setAttribute('draggable', 'false');
run_test(eElement, a[0] + ' draggable=\'false\'', false);
//auto values for elements
//The element's draggable content attribute has the state auto.
//If the element is an img element, or, if the element is an a element with an href content attribute,
//the draggable IDL attribute must return true.
switch (a[0]) {
case 'a':
eElement.setAttribute('href', 'http://w3.org');
eElement.setAttribute('draggable', 'auto');
run_test(eElement, 'Element ' + 'a' + ' draggable=\'auto\'', true);
break;
case 'img':
eElement.setAttribute('draggable', 'auto');
run_test(eElement, 'Element ' + 'img' + ' draggable=\'auto\'', true);
break;
default:
run_test(eElement, 'Element ' + a[0] + ' draggable=\'auto\'', false);
}
//Foo values for elements
//The element's draggable content attribute value is not enumerated (true, false, auto) but unexpected.
//Fallback to defaults
switch (a[0]) {
case 'a':
eElement.setAttribute('href', 'http://w3.org');
eElement.setAttribute('draggable', 'foo');
run_test(eElement, 'Element ' + 'a' + ' draggable=\'foo\'', true);
break;
case 'img':
eElement.setAttribute('draggable', 'foo');
run_test(eElement, 'Element ' + 'img' + ' draggable=\'foo\'', true);
break;
default:
run_test(eElement, 'Element ' + a[0] + ' draggable=\'foo\'', false);
}
//An element with a draggable attribute should also have a title attribute
//that names the element for the purpose of non-visual interactions.
eElement.setAttribute('title', 'foo as title value');
assert_equals(typeof eElement.title, 'string', '<' + a[0] + '> draggable block has title attribute');
//If the draggable IDL attribute is set to the value false,
//the draggable content attribute must be set to the literal value false.
eElement.draggable = false;
run_idl_test(eElement, a[0] + '.getAttribute(\'draggable\') is \'false\'', false);
//If the draggable IDL attribute is set to the value true,
//the draggable content attribute must be set to the literal value true.
eElement.draggable = true;
run_idl_test(eElement, a[0] + '.getAttribute(\'draggable\') is \'true\'', true);
}, 'Element ' + a[0] +' draggable attribute test');
});
</script>
</body>
</html>