blob: 7a1c7196fe65276e536e5b269001cb878089c62f [file] [log] [blame]
function create_window_in_test(t, srcdoc) {
let p = new Promise((resolve) => {
let f = document.createElement('iframe');
f.srcdoc = srcdoc ? srcdoc : '';
f.onload = (event) => {
let w = f.contentWindow;
t.add_cleanup(() => f.remove());
resolve(w);
};
document.body.appendChild(f);
});
return p;
}
function test_with_window(f, name, srcdoc) {
promise_test((t) => {
return create_window_in_test(t, srcdoc)
.then((w) => {
f(w);
});
}, name);
}
function assert_throws_dom_exception(global_context, code, func, description) {
let exception;
assert_throws(code, () => {
try {
func.call(this);
} catch(e) {
exception = e;
throw e;
}
}, description);
assert_true(exception instanceof global_context.DOMException, 'DOMException on the appropriate window');
}
function assert_array_equals_callback_invocations(actual, expected, description) {
assert_equals(actual.length, expected.length);
for (let len=actual.length, i=0; i<len; ++i) {
let callback = expected[i][0];
assert_equals(actual[i][0], expected[i][0], callback + ' callback should be invoked');
assert_equals(actual[i][1], expected[i][1], callback + ' should be invoked on the element ' + expected[i][1]);
assert_array_equals(actual[i][2], expected[i][2], callback + ' should be invoked with the arguments ' + expected[i][2]);
}
}