compute_pressure_disconnect.https.window.js (1674B)
1 // META: variant=?globalScope=window 2 // META: variant=?globalScope=dedicated_worker 3 // META: script=/resources/testdriver.js 4 // META: script=/resources/testdriver-vendor.js 5 // META: script=/common/utils.js 6 // META: script=/common/dispatcher/dispatcher.js 7 // META: script=./resources/common.js 8 9 'use strict'; 10 11 pressure_test(async t => { 12 const observer = new PressureObserver(() => { 13 assert_unreached('The observer callback should not be called'); 14 }); 15 t.add_cleanup(() => observer.disconnect()); 16 observer.disconnect(); 17 }, 'Calling disconnect() immediately should not crash'); 18 19 pressure_test(async t => { 20 await create_virtual_pressure_source('cpu'); 21 t.add_cleanup(async () => { 22 await remove_virtual_pressure_source('cpu'); 23 }); 24 25 const observer1_changes = []; 26 const observer1 = new PressureObserver(change => { 27 observer1_changes.push(change); 28 }); 29 t.add_cleanup(() => observer1.disconnect()); 30 // Ensure that observer1's schema gets registered before observer2 starts. 31 await observer1.observe('cpu'); 32 observer1.disconnect(); 33 34 const observer2_promise = new Promise((resolve, reject) => { 35 const observer = new PressureObserver(resolve); 36 t.add_cleanup(() => observer.disconnect()); 37 observer.observe('cpu').catch(reject); 38 }); 39 await update_virtual_pressure_source('cpu', 'critical'); 40 const observer2_changes = await observer2_promise; 41 42 assert_equals( 43 observer1_changes.length, 0, 44 'disconnected observers should not receive callbacks'); 45 46 assert_equals(observer2_changes.length, 1); 47 assert_equals(observer2_changes[0].state, 'critical'); 48 }, 'Stopped PressureObserver do not receive changes'); 49 50 mark_as_done();