summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/editing/editing-0/autocapitalization/autocapitalize.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/html/editing/editing-0/autocapitalization/autocapitalize.html')
-rw-r--r--testing/web-platform/tests/html/editing/editing-0/autocapitalization/autocapitalize.html688
1 files changed, 688 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/editing/editing-0/autocapitalization/autocapitalize.html b/testing/web-platform/tests/html/editing/editing-0/autocapitalization/autocapitalize.html
new file mode 100644
index 0000000000..49ee14329c
--- /dev/null
+++ b/testing/web-platform/tests/html/editing/editing-0/autocapitalization/autocapitalize.html
@@ -0,0 +1,688 @@
+<!DOCTYPE html>
+<html>
+<link rel="help" href="https://html.spec.whatwg.org/multipage/interaction.html#autocapitalization">
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+
+test(function() {
+ assert_true('autocapitalize' in document.createElement('input'));
+}, "Test that the autocapitalize is available on HTMLInputElement.")
+
+test(function() {
+ assert_true('autocapitalize' in document.createElement('textarea'));
+}, "Test that the autocapitalize is available on HTMLTextAreaElement.")
+
+test(function() {
+ assert_true('autocapitalize' in document.createElement('div'));
+}, "Test that the autocapitalize is available on div.")
+
+test(function() {
+ var elements = [ document.createElement('input'),
+ document.createElement('textarea'),
+ document.createElement('div') ];
+
+ elements.forEach(function(e) {
+ e.autocapitalize = 'on';
+ assert_equals(e.autocapitalize, 'sentences');
+
+ e.autocapitalize = 'off';
+ assert_equals(e.autocapitalize, 'none');
+ });
+}, "Test deprecated values of autocapitalize.");
+
+test(function() {
+ var elements = [ document.createElement('input'),
+ document.createElement('textarea'),
+ document.createElement('div') ];
+ var knownValues = [ 'none', 'characters', 'words', 'sentences' ];
+
+ elements.forEach(function(e) {
+ // Default value.
+ assert_equals(e.autocapitalize, '');
+
+ // Empty value.
+ e.autocapitalize = '';
+ assert_equals(e.autocapitalize, '');
+ assert_equals(e.getAttribute('autocapitalize'), '');
+ e.setAttribute('autocapitalize', '');
+ assert_equals(e.autocapitalize, '');
+ assert_equals(e.getAttribute('autocapitalize'), '');
+ assert_equals(e.autocapitalize, '');
+
+ // Invalid value.
+ e.autocapitalize = 'foo';
+ assert_equals(e.autocapitalize, 'sentences');
+ assert_equals(e.getAttribute('autocapitalize'), 'foo');
+ e.setAttribute('autocapitalize', 'bar');
+ assert_equals(e.autocapitalize, 'sentences');
+ assert_equals(e.getAttribute('autocapitalize'), 'bar');
+
+ // Default value.
+ e.removeAttribute('autocapitalize');
+ assert_equals(e.autocapitalize, '');
+ assert_equals(e.getAttribute('autocapitalize'), null);
+
+ // Case insensitive.
+ e.setAttribute('autocapitalize', 'NoNe');
+ assert_equals(e.autocapitalize, 'none');
+ assert_equals(e.getAttribute('autocapitalize'), 'NoNe');
+ e.autocapitalize = 'WORDS';
+ assert_equals(e.autocapitalize, 'words');
+ assert_equals(e.getAttribute('autocapitalize'), 'WORDS');
+
+ knownValues.forEach(function(value) {
+ e.setAttribute('autocapitalize', value);
+ assert_equals(e.autocapitalize, value);
+ assert_equals(e.getAttribute('autocapitalize'), value);
+
+ e.removeAttribute('autocapitalize');
+
+ e.autocapitalize = value;
+ assert_equals(e.autocapitalize, value);
+ assert_equals(e.getAttribute('autocapitalize'), value);
+
+ e.removeAttribute('autocapitalize');
+ });
+ });
+}, "Test reflection of autocapitalize.");
+
+test(function() {
+var testData = [ 'text',
+ 'search',
+ 'email',
+ 'url',
+ 'tel',
+ 'number',
+ 'date',
+ 'color',
+ 'password' ];
+
+ testData.forEach(function(data) {
+ const input = document.createElement('input');
+ input.type = data;
+ assert_equals(input.autocapitalize, '');
+
+ // Verify that wrapping the input element in a form doesn't change the
+ // defaults.
+ const form = document.createElement('form');
+ form.appendChild(input);
+ assert_equals(input.autocapitalize, '');
+ });
+}, "Test that the IDL attribute returns the empty string if the content "
++ "attribute is not set.")
+
+test(function() {
+ const testData = [
+ {
+ formValue: null,
+ formElementValue: null,
+ inheritedResult: '',
+ uninheritedResult: '',
+ },
+ {
+ formValue: null,
+ formElementValue: '',
+ inheritedResult: '',
+ uninheritedResult: '',
+ },
+ {
+ formValue: null,
+ formElementValue: 'on',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: null,
+ formElementValue: 'off',
+ inheritedResult: 'none',
+ uninheritedResult: 'none',
+ },
+ {
+ formValue: null,
+ formElementValue: 'none',
+ inheritedResult: 'none',
+ uninheritedResult: 'none',
+ },
+ {
+ formValue: null,
+ formElementValue: 'characters',
+ inheritedResult: 'characters',
+ uninheritedResult: 'characters',
+ },
+ {
+ formValue: null,
+ formElementValue: 'words',
+ inheritedResult: 'words',
+ uninheritedResult: 'words',
+ },
+ {
+ formValue: null,
+ formElementValue: 'sentences',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: null,
+ formElementValue: 'foo',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: '',
+ formElementValue: null,
+ inheritedResult: '',
+ uninheritedResult: '',
+ },
+ {
+ formValue: '',
+ formElementValue: '',
+ inheritedResult: '',
+ uninheritedResult: '',
+ },
+ {
+ formValue: '',
+ formElementValue: 'on',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: '',
+ formElementValue: 'off',
+ inheritedResult: 'none',
+ uninheritedResult: 'none',
+ },
+ {
+ formValue: '',
+ formElementValue: 'none',
+ inheritedResult: 'none',
+ uninheritedResult: 'none',
+ },
+ {
+ formValue: '',
+ formElementValue: 'characters',
+ inheritedResult: 'characters',
+ uninheritedResult: 'characters',
+ },
+ {
+ formValue: '',
+ formElementValue: 'words',
+ inheritedResult: 'words',
+ uninheritedResult: 'words',
+ },
+ {
+ formValue: '',
+ formElementValue: 'sentences',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: '',
+ formElementValue: 'foo',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: 'on',
+ formElementValue: null,
+ inheritedResult: 'sentences',
+ uninheritedResult: '',
+ },
+ {
+ formValue: 'on',
+ formElementValue: '',
+ inheritedResult: 'sentences',
+ uninheritedResult: '',
+ },
+ {
+ formValue: 'on',
+ formElementValue: 'on',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: 'on',
+ formElementValue: 'off',
+ inheritedResult: 'none',
+ uninheritedResult: 'none',
+ },
+ {
+ formValue: 'on',
+ formElementValue: 'none',
+ inheritedResult: 'none',
+ uninheritedResult: 'none',
+ },
+ {
+ formValue: 'on',
+ formElementValue: 'characters',
+ inheritedResult: 'characters',
+ uninheritedResult: 'characters',
+ },
+ {
+ formValue: 'on',
+ formElementValue: 'words',
+ inheritedResult: 'words',
+ uninheritedResult: 'words',
+ },
+ {
+ formValue: 'on',
+ formElementValue: 'sentences',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: 'on',
+ formElementValue: 'foo',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: 'off',
+ formElementValue: null,
+ inheritedResult: 'none',
+ uninheritedResult: '',
+ },
+ {
+ formValue: 'off',
+ formElementValue: '',
+ inheritedResult: 'none',
+ uninheritedResult: '',
+ },
+ {
+ formValue: 'off',
+ formElementValue: 'on',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: 'off',
+ formElementValue: 'off',
+ inheritedResult: 'none',
+ uninheritedResult: 'none',
+ },
+ {
+ formValue: 'off',
+ formElementValue: 'none',
+ inheritedResult: 'none',
+ uninheritedResult: 'none',
+ },
+ {
+ formValue: 'off',
+ formElementValue: 'characters',
+ inheritedResult: 'characters',
+ uninheritedResult: 'characters',
+ },
+ {
+ formValue: 'off',
+ formElementValue: 'words',
+ inheritedResult: 'words',
+ uninheritedResult: 'words',
+ },
+ {
+ formValue: 'off',
+ formElementValue: 'sentences',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: 'off',
+ formElementValue: 'foo',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: 'none',
+ formElementValue: null,
+ inheritedResult: 'none',
+ uninheritedResult: '',
+ },
+ {
+ formValue: 'none',
+ formElementValue: '',
+ inheritedResult: 'none',
+ uninheritedResult: '',
+ },
+ {
+ formValue: 'none',
+ formElementValue: 'on',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: 'none',
+ formElementValue: 'off',
+ inheritedResult: 'none',
+ uninheritedResult: 'none',
+ },
+ {
+ formValue: 'none',
+ formElementValue: 'none',
+ inheritedResult: 'none',
+ uninheritedResult: 'none',
+ },
+ {
+ formValue: 'none',
+ formElementValue: 'characters',
+ inheritedResult: 'characters',
+ uninheritedResult: 'characters',
+ },
+ {
+ formValue: 'none',
+ formElementValue: 'words',
+ inheritedResult: 'words',
+ uninheritedResult: 'words',
+ },
+ {
+ formValue: 'none',
+ formElementValue: 'sentences',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: 'none',
+ formElementValue: 'foo',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: 'characters',
+ formElementValue: null,
+ inheritedResult: 'characters',
+ uninheritedResult: '',
+ },
+ {
+ formValue: 'characters',
+ formElementValue: '',
+ inheritedResult: 'characters',
+ uninheritedResult: '',
+ },
+ {
+ formValue: 'characters',
+ formElementValue: 'on',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: 'characters',
+ formElementValue: 'off',
+ inheritedResult: 'none',
+ uninheritedResult: 'none',
+ },
+ {
+ formValue: 'characters',
+ formElementValue: 'none',
+ inheritedResult: 'none',
+ uninheritedResult: 'none',
+ },
+ {
+ formValue: 'characters',
+ formElementValue: 'characters',
+ inheritedResult: 'characters',
+ uninheritedResult: 'characters',
+ },
+ {
+ formValue: 'characters',
+ formElementValue: 'words',
+ inheritedResult: 'words',
+ uninheritedResult: 'words',
+ },
+ {
+ formValue: 'characters',
+ formElementValue: 'sentences',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: 'characters',
+ formElementValue: 'foo',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: 'words',
+ formElementValue: null,
+ inheritedResult: 'words',
+ uninheritedResult: '',
+ },
+ {
+ formValue: 'words',
+ formElementValue: '',
+ inheritedResult: 'words',
+ uninheritedResult: '',
+ },
+ {
+ formValue: 'words',
+ formElementValue: 'on',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: 'words',
+ formElementValue: 'off',
+ inheritedResult: 'none',
+ uninheritedResult: 'none',
+ },
+ {
+ formValue: 'words',
+ formElementValue: 'none',
+ inheritedResult: 'none',
+ uninheritedResult: 'none',
+ },
+ {
+ formValue: 'words',
+ formElementValue: 'characters',
+ inheritedResult: 'characters',
+ uninheritedResult: 'characters',
+ },
+ {
+ formValue: 'words',
+ formElementValue: 'words',
+ inheritedResult: 'words',
+ uninheritedResult: 'words',
+ },
+ {
+ formValue: 'words',
+ formElementValue: 'sentences',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: 'words',
+ formElementValue: 'foo',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: 'sentences',
+ formElementValue: null,
+ inheritedResult: 'sentences',
+ uninheritedResult: '',
+ },
+ {
+ formValue: 'sentences',
+ formElementValue: '',
+ inheritedResult: 'sentences',
+ uninheritedResult: '',
+ },
+ {
+ formValue: 'sentences',
+ formElementValue: 'on',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: 'sentences',
+ formElementValue: 'off',
+ inheritedResult: 'none',
+ uninheritedResult: 'none',
+ },
+ {
+ formValue: 'sentences',
+ formElementValue: 'none',
+ inheritedResult: 'none',
+ uninheritedResult: 'none',
+ },
+ {
+ formValue: 'sentences',
+ formElementValue: 'characters',
+ inheritedResult: 'characters',
+ uninheritedResult: 'characters',
+ },
+ {
+ formValue: 'sentences',
+ formElementValue: 'words',
+ inheritedResult: 'words',
+ uninheritedResult: 'words',
+ },
+ {
+ formValue: 'sentences',
+ formElementValue: 'sentences',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: 'sentences',
+ formElementValue: 'foo',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: 'foo',
+ formElementValue: null,
+ inheritedResult: 'sentences',
+ uninheritedResult: '',
+ },
+ {
+ formValue: 'foo',
+ formElementValue: '',
+ inheritedResult: 'sentences',
+ uninheritedResult: '',
+ },
+ {
+ formValue: 'foo',
+ formElementValue: 'on',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: 'foo',
+ formElementValue: 'off',
+ inheritedResult: 'none',
+ uninheritedResult: 'none',
+ },
+ {
+ formValue: 'foo',
+ formElementValue: 'none',
+ inheritedResult: 'none',
+ uninheritedResult: 'none',
+ },
+ {
+ formValue: 'foo',
+ formElementValue: 'characters',
+ inheritedResult: 'characters',
+ uninheritedResult: 'characters',
+ },
+ {
+ formValue: 'foo',
+ formElementValue: 'words',
+ inheritedResult: 'words',
+ uninheritedResult: 'words',
+ },
+ {
+ formValue: 'foo',
+ formElementValue: 'sentences',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ {
+ formValue: 'foo',
+ formElementValue: 'foo',
+ inheritedResult: 'sentences',
+ uninheritedResult: 'sentences',
+ },
+ ];
+
+ const formElements = [
+ {element: 'button', inherits: true},
+ {element: 'fieldset', inherits: true},
+ {element: 'img', inherits: false},
+ {element: 'input', inherits: true},
+ {element: 'object', inherits: false},
+ {element: 'output', inherits: true},
+ {element: 'select', inherits: true},
+ {element: 'textarea', inherits: true},
+ ];
+
+ const form = document.createElement('form');
+ form.id = 'form';
+ document.body.appendChild(form);
+
+ testData.forEach(data => {
+ form.removeAttribute('autocapitalize');
+
+ if (data.formValue !== null) {
+ form.setAttribute('autocapitalize', data.formValue);
+ }
+
+ formElements.forEach(elementData => {
+ const element = document.createElement(elementData.element);
+ form.appendChild(element);
+
+ const element2 = document.createElement(elementData.element);
+ element2.setAttribute('form', 'form');
+ document.body.appendChild(element2);
+
+ if (data.formElementValue !== null) {
+ element.setAttribute('autocapitalize', data.formElementValue);
+ element2.setAttribute('autocapitalize', data.formElementValue);
+ }
+
+ const descriptionSuffix = 'with "' + data.formValue
+ + '" and form element with "'+ data.formElementValue + '"';
+
+ if (elementData.inherits) {
+ assert_equals(element.autocapitalize, data.inheritedResult,
+ `${elementData.element} element with form parent `
+ + `${descriptionSuffix}`);
+ assert_equals(element2.autocapitalize, data.inheritedResult,
+ `${elementData.element} element with form owner attribute`
+ + ` set ${descriptionSuffix}`);
+ } else {
+ assert_equals(element.autocapitalize, data.uninheritedResult,
+ `${elementData.element} element with form parent `
+ + `${descriptionSuffix}`);
+ assert_equals(element2.autocapitalize, data.uninheritedResult,
+ `${elementData.element} element with form owner attribute`
+ + `set ${descriptionSuffix}`);
+ }
+ });
+ });
+}, "Test inheriting values from a form.")
+
+test(function() {
+ const testData = [ 'text',
+ 'search',
+ 'email',
+ 'url',
+ 'tel',
+ 'number',
+ 'date',
+ 'color',
+ 'password' ];
+
+ testData.forEach(function(data) {
+ const form = document.createElement('form');
+ form.setAttribute('autocapitalize', 'sentences');
+ const input = document.createElement('input');
+ input.setAttribute('type', data);
+ form.appendChild(input);
+
+ assert_equals(input.autocapitalize, 'sentences');
+ });
+}, "Verify that even input types that are never autocapitalized support the "
++ "IDL interface.")
+
+</script>
+</body>
+</html>