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