preferences-contrast.tentative.https.html (7672B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8" /> 5 <title>WebPreferences Test: contrast attribute tests</title> 6 <link rel="author" title="Luke Warlow" href="mailto:lwarlow@igalia.com" /> 7 <link rel="help" href="https://drafts.csswg.org/mediaqueries-5/#auto-pref%E2%91%A0" /> 8 <script src="/resources/testharness.js"></script> 9 <script src="/resources/testharnessreport.js"></script> 10 <script src=./resources/preferences-helper.js></script> 11 </head> 12 <body> 13 <script> 14 test(() => { 15 assert_true('preferences' in navigator, 'navigator.preferences defined'); 16 assert_true('contrast' in navigator.preferences, 'navigator.preferences.contrast defined'); 17 }, "navigator.preferences.contrast supported"); 18 test(() => { 19 assert_true('override' in navigator.preferences.contrast, 'navigator.preferences.contrast.override defined'); 20 assert_equals(navigator.preferences.contrast.override, null); 21 }, "navigator.preferences.contrast.override supported"); 22 test(() => { 23 assert_true('value' in navigator.preferences.contrast, 'navigator.preferences.contrast.value defined'); 24 assert_equals(navigator.preferences.contrast.value, 'no-preference'); 25 }, "navigator.preferences.contrast.value supported"); 26 test(() => { 27 assert_true('validValues' in navigator.preferences.contrast, 'navigator.preferences.contrast.validValues defined'); 28 assert_true(navigator.preferences.contrast.validValues.includes('more'), 'navigator.preferences.contrast.validValues includes "more"'); 29 assert_true(navigator.preferences.contrast.validValues.includes('less'), 'navigator.preferences.contrast.validValues includes "less"'); 30 assert_true(navigator.preferences.contrast.validValues.includes('no-preference'), 'navigator.preferences.contrast.validValues includes "no-preference"'); 31 assert_false(navigator.preferences.contrast.validValues.includes('custom'), 'navigator.preferences.contrast.validValues excludes "custom"'); 32 }, "navigator.preferences.contrast.validValues supported"); 33 promise_test((t) => { 34 assert_true('requestOverride' in navigator.preferences.contrast, 'navigator.preferences.contrast.requestOverride() defined'); 35 return navigator.preferences.contrast.requestOverride('this-is-an-invalid-value') 36 .then(() => { 37 assert_not_reached('requestOverride with invalid value should not resolve'); 38 }) 39 .catch((e) => { 40 assert_true(e instanceof DOMException); 41 assert_equals(navigator.preferences.contrast.override, null); 42 t.done(); 43 }); 44 }, "navigator.preferences.contrast.requestOverride() with invalid value throws"); 45 promise_test((t) => { 46 return navigator.preferences.contrast.requestOverride('custom') 47 .then(() => { 48 assert_not_reached('requestOverride with invalid value should not resolve'); 49 }) 50 .catch((e) => { 51 assert_true(e instanceof DOMException); 52 assert_equals(navigator.preferences.contrast.override, null); 53 t.done(); 54 }); 55 }, "navigator.preferences.contrast.requestOverride('custom') throws"); 56 promise_test(async (t) => { 57 assert_true('clearOverride' in navigator.preferences.contrast, 'navigator.preferences.contrast.clearOverride() defined'); 58 await navigator.preferences.contrast.requestOverride('more'); 59 assert_equals(navigator.preferences.contrast.override, 'more'); 60 navigator.preferences.contrast.clearOverride(); 61 assert_equals(navigator.preferences.contrast.override, null); 62 t.done(); 63 }, "navigator.preferences.contrast.clearOverride() works"); 64 promise_test(async (t) => { 65 await navigator.preferences.contrast.requestOverride('more'); 66 assert_equals(navigator.preferences.contrast.override, 'more'); 67 await navigator.preferences.contrast.requestOverride(null); 68 assert_equals(navigator.preferences.contrast.override, null); 69 t.done(); 70 }, "navigator.preferences.contrast.requestOverride(null) works like clearOverride()"); 71 promise_test(async (t) => { 72 await navigator.preferences.contrast.requestOverride('more'); 73 assert_equals(navigator.preferences.contrast.override, 'more'); 74 await navigator.preferences.contrast.requestOverride(''); 75 assert_equals(navigator.preferences.contrast.override, null); 76 t.done(); 77 }, "navigator.preferences.contrast.requestOverride('') works like clearOverride()"); 78 promise_test(async (t) => { 79 await navigator.preferences.contrast.requestOverride('more'); 80 assert_true(window.matchMedia('(prefers-contrast: more)').matches, '(prefers-contrast: more) matches'); 81 assert_equals(navigator.preferences.contrast.value, 'more'); 82 await navigator.preferences.contrast.requestOverride('no-preference'); 83 assert_true(window.matchMedia('(prefers-contrast: no-preference)').matches, '(prefers-contrast: no-preference) matches'); 84 assert_equals(navigator.preferences.contrast.value, 'no-preference'); 85 await navigator.preferences.contrast.requestOverride('less'); 86 assert_true(window.matchMedia('(prefers-contrast: less)').matches, '(prefers-contrast: less) matches'); 87 assert_equals(navigator.preferences.contrast.value, 'less'); 88 navigator.preferences.contrast.clearOverride(); 89 assert_true(window.matchMedia('(prefers-contrast: no-preference)').matches); 90 assert_equals(navigator.preferences.contrast.value, 'no-preference'); 91 t.done(); 92 }, "navigator.preferences.contrast.requestOverride() updates (prefers-contrast)"); 93 async_test((t) => { 94 t.add_cleanup(() => { 95 navigator.preferences.contrast.clearOverride(); 96 navigator.preferences.contrast.onchange = null; 97 }); 98 navigator.preferences.contrast.onchange = t.step_func_done(); 99 navigator.preferences.contrast.requestOverride('less'); 100 }, "navigator.preferences.contrast fires change event when requesting override"); 101 async_test((t) => { 102 t.add_cleanup(() => { 103 navigator.preferences.contrast.clearOverride(); 104 navigator.preferences.contrast.onchange = null; 105 }); 106 navigator.preferences.contrast.onchange = t.step_func_done(); 107 navigator.preferences.contrast.requestOverride('no-preference'); 108 }, "navigator.preferences.contrast fires change event when requesting override (without value change)"); 109 promise_test(async (t) => { 110 t.add_cleanup(() => { 111 navigator.preferences.contrast.clearOverride(); 112 navigator.preferences.contrast.onchange = null; 113 }); 114 await navigator.preferences.contrast.requestOverride('less'); 115 const eventPromise = changeEventPromise("contrast", t); 116 await navigator.preferences.contrast.clearOverride(); 117 await eventPromise; 118 }, "navigator.preferences.contrast fires change event when clearing override"); 119 promise_test(async (t) => { 120 t.add_cleanup(() => { 121 navigator.preferences.contrast.clearOverride(); 122 navigator.preferences.contrast.onchange = null; 123 }); 124 await navigator.preferences.contrast.requestOverride('no-preference'); 125 const eventPromise = changeEventPromise("contrast", t); 126 await navigator.preferences.contrast.clearOverride(); 127 await eventPromise; 128 }, "navigator.preferences.contrast fires change event when clearing override (without value change)"); 129 </script> 130 </body> 131 </html>