diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/html/semantics/rellist-feature-detection.html | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/html/semantics/rellist-feature-detection.html')
-rw-r--r-- | testing/web-platform/tests/html/semantics/rellist-feature-detection.html | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/rellist-feature-detection.html b/testing/web-platform/tests/html/semantics/rellist-feature-detection.html new file mode 100644 index 0000000000..6866de1906 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/rellist-feature-detection.html @@ -0,0 +1,84 @@ +<!DOCTYPE html> +<title>Test relList attribute</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> +let link_support_table = {}; +// https://html.spec.whatwg.org/multipage/links.html#linkTypes +link_support_table['link'] = { + supported : ['modulepreload', 'preload', 'preconnect', 'dns-prefetch', + 'stylesheet', 'icon', 'alternate', 'prefetch', + 'prerender', 'next', 'manifest', 'apple-touch-icon', + 'apple-touch-icon-precomposed', 'canonical'], + unsupported : ['author', 'bookmark', 'external', 'help', 'import', + 'license', 'nofollow', 'pingback', 'prev', 'search', + 'tag', 'noreferrer', 'noopener'] +}; +link_support_table['a'] = { + supported : ['noreferrer', 'noopener', 'opener'], + unsupported : ['author', 'bookmark', 'external', 'help', 'license', + 'nofollow', 'pingback', 'prev', 'search', 'tag', + 'modulepreload', 'preload', 'preconnect', 'dns-prefetch', + 'stylesheet', 'import', 'icon', 'alternate', 'prefetch', + 'prerender', 'next', 'manifest', 'apple-touch-icon', + 'apple-touch-icon-precomposed', 'canonical'] +}; +link_support_table['area'] = link_support_table['a']; +link_support_table['form'] = link_support_table['a']; + +function test_rellist(tag_name) { + const rel_table = link_support_table[tag_name]; + const element = document.createElement(tag_name); + let tag = element.tagName; + // Test that setting rel is also setting relList, for both + // valid and invalid values. + element.rel = 'whatever'; + assert_true(element.relList.contains('whatever'), 'tag = ' + tag + ', setting rel must work'); + element.rel = 'prefetch'; + assert_true(element.relList.contains('prefetch'), 'tag = ' + tag + ', setting rel must work'); + // Test that add() works. + element.relList.add('preloadwhatever'); + assert_equals(element.rel, 'prefetch preloadwhatever', 'tag = ' + tag + ', add must work'); + assert_true(element.relList.contains('preloadwhatever'), 'tag = ' + tag + ', add must work'); + // Test that remove() works. + element.relList.remove('preloadwhatever'); + assert_equals(element.rel, 'prefetch', 'tag = ' + tag + ', remove must work'); + assert_false(element.relList.contains('preloadwhatever'), 'tag = ' + tag + ', remove must work'); + // Test that toggle() works. + element.relList.toggle('prefetch', false); + assert_equals(element.rel, '', 'tag = ' + tag + ', toggle must work'); + element.relList.toggle('prefetch', true); + assert_equals(element.rel, 'prefetch', 'tag = ' + tag + ', toggle must work'); + // Test that replace() works. + element.relList.replace('prefetch', 'first'); + assert_equals(element.rel, 'first', 'tag = ' + tag + ', replace must work'); + // Test that indexed item getter works. + element.relList.add('second'); + assert_equals(element.relList.length, 2, 'tag = ' + tag + ', relList length must be correct'); + assert_equals(element.relList[0], 'first', 'tag = ' + tag + ', relList indexed item must work'); + assert_equals(element.relList[1], 'second', 'tag = ' + tag + ', relList indexed item must work'); + // Test that relList is [SameObject]. + let savedRelList = element.relList; + element.rel = 'something'; + assert_equals(element.relList, savedRelList, 'tag = ' + tag + ', SameObject must work'); + + // Test that supports() is returning true for valid values + // and false for invalid ones. + let supported = rel_table['supported']; + for (let link_type in supported) { + assert_true(element.relList.supports(supported[link_type]), 'tag = ' + tag + ', link type = ' + supported[link_type] + ' must be supported'); + assert_true(element.relList.supports(supported[link_type].toUpperCase()), 'tag = ' + tag + ', link type = ' + supported[link_type].toUpperCase() + ' must be supported'); + } + let unsupported = rel_table['unsupported']; + for (let link_type in unsupported) { + assert_false(element.relList.supports(unsupported[link_type]), 'tag = ' + tag + ', link type = ' + unsupported[link_type] + ' must be unsupported'); + } +} + +['link', 'a', 'area', 'form'].forEach(tag_name => { + test( + () => test_rellist(tag_name), + `Make sure that relList based feature detection is working for <${tag_name}>` + ); +}); +</script> |