| <!DOCTYPE html> | |
| <meta charset="utf-8"> | |
| <title>Custom Elements: CEReactions on HTMLInputElement interface</title> | |
| <link rel="author" title="Intel" href="http://www.intel.com"> | |
| <link rel="author" title="Wanming Lin" href="mailto:wanming.lin@intel.com"> | |
| <meta name="assert" content="capture of HTMLInputElement interface must have CEReactions"> | |
| <meta name="help" content="https://www.w3.org/TR/html-media-capture/#the-capture-attribute"> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script src="../resources/custom-elements-helpers.js"></script> | |
| <script src="./resources/reactions.js"></script> | |
| <body> | |
| <script> | |
| if ('capture' in HTMLInputElement.prototype) { | |
| test(() => { | |
| const element = define_build_in_custom_element(['capture'], HTMLInputElement, 'input'); | |
| const instance = document.createElement('input', { is: element.name }); | |
| assert_array_equals(element.takeLog().types(), ['constructed']); | |
| instance['capture'] = 'user'; | |
| const logEntries = element.takeLog(); | |
| assert_array_equals(logEntries.types(), ['attributeChanged']); | |
| assert_attribute_log_entry(logEntries.last(), {name: 'capture', oldValue: null, newValue: 'user', namespace: null}); | |
| }, 'capture on HTMLInputElement must enqueue an attributeChanged reaction when adding new attribute'); | |
| test(() => { | |
| const element = define_build_in_custom_element(['capture'], HTMLInputElement, 'input'); | |
| const instance = document.createElement('input', { is: element.name }); | |
| instance['capture'] = 'user'; | |
| assert_array_equals(element.takeLog().types(), ['constructed', 'attributeChanged']); | |
| instance['capture'] = 'environment'; | |
| const logEntries = element.takeLog(); | |
| assert_array_equals(logEntries.types(), ['attributeChanged']); | |
| assert_attribute_log_entry(logEntries.last(), {name: 'capture', oldValue: 'user', newValue: 'environment', namespace: null}); | |
| }, 'capture on HTMLInputElement must enqueue an attributeChanged reaction when replacing an existing attribute'); | |
| test(() => { | |
| const element = define_build_in_custom_element(['capture'], HTMLInputElement, 'input'); | |
| const instance = document.createElement('input', { is: element.name }); | |
| assert_array_equals(element.takeLog().types(), ['constructed']); | |
| instance['capture'] = 'asdf'; | |
| const logEntries = element.takeLog(); | |
| assert_array_equals(logEntries.types(), ['attributeChanged']); | |
| assert_attribute_log_entry(logEntries.last(), {name: 'capture', oldValue: null, newValue: 'asdf', namespace: null}); | |
| }, 'capture on HTMLInputElement must enqueue an attributeChanged reaction when adding invalid value default'); | |
| test(() => { | |
| const element = define_build_in_custom_element(['capture'], HTMLInputElement, 'input'); | |
| const instance = document.createElement('input', { is: element.name }); | |
| instance['capture'] = 'user'; | |
| assert_array_equals(element.takeLog().types(), ['constructed', 'attributeChanged']); | |
| instance['capture'] = ''; | |
| const logEntries = element.takeLog(); | |
| assert_array_equals(logEntries.types(), ['attributeChanged']); | |
| assert_attribute_log_entry(logEntries.last(), {name: 'capture', oldValue: 'user', newValue: '', namespace: null}); | |
| }, 'capture on HTMLInputElement must enqueue an attributeChanged reaction when removing the attribute'); | |
| } else { | |
| // testharness.js doesn't allow a test file with no tests. | |
| test(() => { | |
| }, 'No tests if HTMLInputEement has no "capture" IDL attribute'); | |
| } | |
| </script> | |
| </body> |