preferences-reducedData.tentative.https.html (6903B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8" /> 5 <title>WebPreferences Test: reducedData 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('reducedData' in navigator.preferences, 'navigator.preferences.reducedData defined'); 17 }, "navigator.preferences.reducedData supported"); 18 test(() => { 19 assert_true('override' in navigator.preferences.reducedData, 'navigator.preferences.reducedData.override defined'); 20 assert_equals(navigator.preferences.reducedData.override, null); 21 }, "navigator.preferences.reducedData.override supported"); 22 test(() => { 23 assert_true('value' in navigator.preferences.reducedData, 'navigator.preferences.reducedData.value defined'); 24 assert_equals(navigator.preferences.reducedData.value, 'no-preference'); 25 }, "navigator.preferences.reducedData.value supported"); 26 test(() => { 27 assert_true('validValues' in navigator.preferences.reducedData, 'navigator.preferences.reducedData.validValues defined'); 28 assert_true(navigator.preferences.reducedData.validValues.includes('reduce'), 'navigator.preferences.reducedData.validValues includes "reduce"'); 29 assert_true(navigator.preferences.reducedData.validValues.includes('no-preference'), 'navigator.preferences.reducedData.validValues includes "no-preference"'); 30 }, "navigator.preferences.reducedData.validValues supported"); 31 promise_test((t) => { 32 assert_true('requestOverride' in navigator.preferences.reducedData, 'navigator.preferences.reducedData.requestOverride() defined'); 33 return navigator.preferences.reducedData.requestOverride('this-is-an-invalid-value') 34 .then(() => { 35 assert_not_reached('requestOverride with invalid value should not resolve'); 36 }) 37 .catch((e) => { 38 assert_true(e instanceof DOMException); 39 assert_equals(navigator.preferences.reducedData.override, null); 40 t.done(); 41 }); 42 }, "navigator.preferences.reducedData.requestOverride() with invalid value throws"); 43 promise_test(async (t) => { 44 assert_true('clearOverride' in navigator.preferences.reducedData, 'navigator.preferences.reducedData.clearOverride() defined'); 45 await navigator.preferences.reducedData.requestOverride('reduce'); 46 assert_equals(navigator.preferences.reducedData.override, 'reduce'); 47 navigator.preferences.reducedData.clearOverride(); 48 assert_equals(navigator.preferences.reducedData.override, null); 49 t.done(); 50 }, "navigator.preferences.reducedData.clearOverride() supported"); 51 promise_test(async (t) => { 52 await navigator.preferences.reducedData.requestOverride('reduce'); 53 assert_equals(navigator.preferences.reducedData.override, 'reduce'); 54 await navigator.preferences.reducedData.requestOverride(null); 55 assert_equals(navigator.preferences.reducedData.override, null); 56 t.done(); 57 }, "navigator.preferences.reducedData.requestOverride(null) works like clearOverride()"); 58 promise_test(async (t) => { 59 await navigator.preferences.reducedData.requestOverride('reduce'); 60 assert_equals(navigator.preferences.reducedData.override, 'reduce'); 61 await navigator.preferences.reducedData.requestOverride(''); 62 assert_equals(navigator.preferences.reducedData.override, null); 63 t.done(); 64 }, "navigator.preferences.reducedData.requestOverride('') works like clearOverride()"); 65 promise_test(async (t) => { 66 await navigator.preferences.reducedData.requestOverride('no-preference'); 67 assert_true(window.matchMedia('(prefers-reduced-data: no-preference)').matches, '(prefers-reduced-data: no-preference) matches'); 68 assert_equals(navigator.preferences.reducedData.value, 'no-preference'); 69 await navigator.preferences.reducedData.requestOverride('reduce'); 70 assert_true(window.matchMedia('(prefers-reduced-data: reduce)').matches, '(prefers-reduced-data: reduce) matches'); 71 assert_equals(navigator.preferences.reducedData.value, 'reduce'); 72 navigator.preferences.reducedData.clearOverride(); 73 assert_true(window.matchMedia('(prefers-reduced-data: no-preference)').matches); 74 assert_equals(navigator.preferences.reducedData.value, 'no-preference'); 75 t.done(); 76 }, "navigator.preferences.reducedData.requestOverride() updates (prefers-reduced-data)"); 77 async_test((t) => { 78 t.add_cleanup(() => { 79 navigator.preferences.reducedData.clearOverride(); 80 navigator.preferences.reducedData.onchange = null; 81 }); 82 navigator.preferences.reducedData.onchange = t.step_func_done(); 83 navigator.preferences.reducedData.requestOverride('reduce'); 84 }, "navigator.preferences.reducedData fires change event when requesting override"); 85 async_test((t) => { 86 t.add_cleanup(() => { 87 navigator.preferences.reducedData.clearOverride(); 88 navigator.preferences.reducedData.onchange = null; 89 }); 90 navigator.preferences.reducedData.onchange = t.step_func_done(); 91 navigator.preferences.reducedData.requestOverride('no-preference'); 92 }, "navigator.preferences.reducedData fires change event when requesting override (without value change)"); 93 promise_test(async (t) => { 94 t.add_cleanup(() => { 95 navigator.preferences.reducedData.clearOverride(); 96 navigator.preferences.reducedData.onchange = null; 97 }); 98 await navigator.preferences.reducedData.requestOverride('reduce'); 99 const eventPromise = changeEventPromise("reducedData", t); 100 await navigator.preferences.reducedData.clearOverride(); 101 await eventPromise; 102 }, "navigator.preferences.reducedData fires change event when clearing override"); 103 promise_test(async (t) => { 104 t.add_cleanup(() => { 105 navigator.preferences.reducedData.clearOverride(); 106 navigator.preferences.reducedData.onchange = null; 107 }); 108 await navigator.preferences.reducedData.requestOverride('no-preference'); 109 const eventPromise = changeEventPromise("reducedData", t); 110 await navigator.preferences.reducedData.clearOverride(); 111 await eventPromise; 112 }, "navigator.preferences.reducedData fires change event when clearing override (without value change)"); 113 </script> 114 </body> 115 </html>