| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset='utf-8'> |
| <title>HTML Test: draggable_attribute</title> |
| <link rel='author' title='Intel' href='http://www.intel.com'> |
| <link rel='help' href='https://html.spec.whatwg.org/multipage/#the-draggable-attribute'> |
| <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> |