blob: 886098923d80e801dce753eecc91f723291bc87c [file] [log] [blame]
// Logs (append) an HTML string to the document in a list format.
function log(str) {
const entry = document.createElement('li');
entry.innerHTML = str;
logger.appendChild(entry);
return entry;
}
// Common setup for window placement tests. Performs some basic assertions, and
// then waits for a click on the `setUpButton` element (for manual tests).
// Example usage:
// promise_test(async setUpTest => {
// await setUpWindowPlacement(setUpTest, setUpButton);
// ...
// });
async function setUpWindowPlacement(setUpTest, setUpButton) {
assert_true(
'getScreenDetails' in self && 'isExtended' in screen,
`API not supported; use Chromium (not content_shell) and enable
chrome://flags/#enable-experimental-web-platform-features`);
if (!screen.isExtended)
log(`WARNING: Use multiple screens for full test coverage`);
if (window.location.href.startsWith('file'))
log(`WARNING: Run via 'wpt serve'; file URLs lack permission support`);
try { // Support manual testing where test_driver is not running.
await test_driver.set_permission({ name: 'window-placement' }, 'granted');
} catch {
}
const setUpWatcher = new EventWatcher(setUpTest, setUpButton, ['click']);
const setUpClick = setUpWatcher.wait_for('click');
try { // Support manual testing where test_driver is not running.
await test_driver.click(setUpButton);
} catch {
}
await setUpClick;
setUpButton.disabled = true;
}