blob: 7df0be5c47d161fe4cadcba937f875a0a0cba320 [file] [log] [blame]
// META: timeout=long
// META: script=/resources/test-only-api.js
// META: script=resources/pressure-helpers.js
'use strict';
pressure_test(async (t, mockPressureService) => {
const iframe = document.createElement('iframe');
document.body.appendChild(iframe);
iframe.contentWindow.focus();
await new Promise(resolve => {
const observer = new PressureObserver(resolve);
t.add_cleanup(() => {
observer.disconnect();
iframe.remove();
});
observer.observe('cpu');
mockPressureService.setPressureUpdate('cpu', 'critical');
mockPressureService.startPlatformCollector(/*sampleRate=*/ 5.0);
});
}, 'Observer in main frame should receive PressureRecord when focused on same-origin iframe');
pressure_test(async (t, mockPressureService) => {
const iframe = document.createElement('iframe');
document.body.appendChild(iframe);
// Focus on the main frame to make the iframe lose focus, so that
// PressureObserver in the iframe can't receive PressureRecord by default.
// However, if the iframe is same-origin with the main frame and the main
// frame has focus, PressureObserver in iframe can receive PressureRecord.
window.focus();
await new Promise(resolve => {
const observer = new iframe.contentWindow.PressureObserver(resolve);
t.add_cleanup(() => {
observer.disconnect();
iframe.remove();
});
observer.observe('cpu');
mockPressureService.setPressureUpdate('cpu', 'critical');
mockPressureService.startPlatformCollector(/*sampleRate=*/ 5.0);
});
}, 'Observer in iframe should receive PressureRecord when focused on same-origin main frame');