const kCallbackErr = "Callback form deprecated, see API doc for correct usage.";
function expectCallbackDeprecationError(f) {
return new Promise((resolve, reject) => {
try {
f(() => reject('FAIL: Expected the callback to not be called.'));
reject('FAIL: Call did not throw an error as expected.');
return;
} catch (e) {
const actualErrorMessage = e.message;
if (actualErrorMessage !== kCallbackErr) {
reject('FAIL: Unexpected error: ' + actualErrorMessage);
return;
}
resolve('SUCCESS');
return;
}
reject('FAIL: Unexpected error');
});
}
promise_test(async (test) => {
const controlledFrame = await createControlledFrame('/simple.html');
await expectCallbackDeprecationError((callback) => {
controlledFrame.executeScript(
{code: "document.body.style.backgroundColor = 'red';"}, callback);
});
}, "Verify no callbacks are allowed for executeScript");
promise_test(async (test) => {
const controlledFrame = await createControlledFrame('/simple.html');
await expectCallbackDeprecationError((callback) => {
controlledFrame.addContentScripts(
[{
name: 'test',
matches: ['https://*/*'],
js: {files: ['/resources/content_script.js']},
run_at: 'document_start',
}],
callback);
});
}, 'Verify no callbacks are allowed for addContentScripts');
promise_test(async (test) => {
const controlledFrame = await createControlledFrame('/simple.html');
await expectCallbackDeprecationError((callback) => {
controlledFrame.contextMenus.remove("1", callback);
});
}, "Verify no callbacks are allowed for Context Menus .remove()");
promise_test(async (test) => {
const controlledFrame = await createControlledFrame('/simple.html');
await expectCallbackDeprecationError((callback) => {
controlledFrame.contextMenus.removeAll(callback);
});
}, "Verify no callbacks are allowed for Context Menus .removeAll()");
promise_test(async (test) => {
const controlledFrame = await createControlledFrame('/simple.html');
await expectCallbackDeprecationError((callback) => {
controlledFrame.contextMenus.update("1", {title: "Title"}, callback);
});
}, "Verify no callbacks are allowed for Context Menus .update()");