mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-09 21:00:42 +02:00
--HG-- rename : toolkit/components/formautofill/test/browser/head.js => toolkit/components/formautofill/test/browser/loader.js rename : toolkit/components/formautofill/test/chrome/head.js => toolkit/components/formautofill/test/chrome/loader.js rename : toolkit/components/formautofill/test/xpcshell/head.js => toolkit/components/formautofill/test/xpcshell/loader.js
72 lines
2 KiB
JavaScript
72 lines
2 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
/*
|
|
* Tests overriding the FormAutofillIntegration module functions.
|
|
*/
|
|
|
|
"use strict";
|
|
|
|
/**
|
|
* The requestAutocomplete UI will not be displayed during these tests.
|
|
*/
|
|
add_task_in_parent_process(function* test_initialize() {
|
|
FormAutofillTest.requestAutocompleteResponse = { canceled: true };
|
|
});
|
|
|
|
/**
|
|
* Registers and unregisters an integration override function.
|
|
*/
|
|
add_task(function* test_integration_override() {
|
|
let overrideCalled = false;
|
|
|
|
let newIntegrationFn = base => ({
|
|
createRequestAutocompleteUI: Task.async(function* () {
|
|
overrideCalled = true;
|
|
return yield base.createRequestAutocompleteUI.apply(this, arguments);
|
|
}),
|
|
});
|
|
|
|
FormAutofill.registerIntegration(newIntegrationFn);
|
|
try {
|
|
let ui = yield FormAutofill.integration.createRequestAutocompleteUI({});
|
|
let result = yield ui.show();
|
|
Assert.ok(result.canceled);
|
|
} finally {
|
|
FormAutofill.unregisterIntegration(newIntegrationFn);
|
|
}
|
|
|
|
Assert.ok(overrideCalled);
|
|
});
|
|
|
|
/**
|
|
* Registers an integration override function that throws an exception, and
|
|
* ensures that this does not block other functions from being registered.
|
|
*/
|
|
add_task(function* test_integration_override_error() {
|
|
let overrideCalled = false;
|
|
|
|
let errorIntegrationFn = base => { throw "Expected error." };
|
|
|
|
let newIntegrationFn = base => ({
|
|
createRequestAutocompleteUI: Task.async(function* () {
|
|
overrideCalled = true;
|
|
return yield base.createRequestAutocompleteUI.apply(this, arguments);
|
|
}),
|
|
});
|
|
|
|
FormAutofill.registerIntegration(errorIntegrationFn);
|
|
FormAutofill.registerIntegration(newIntegrationFn);
|
|
try {
|
|
let ui = yield FormAutofill.integration.createRequestAutocompleteUI({});
|
|
let result = yield ui.show();
|
|
Assert.ok(result.canceled);
|
|
} finally {
|
|
FormAutofill.unregisterIntegration(errorIntegrationFn);
|
|
FormAutofill.unregisterIntegration(newIntegrationFn);
|
|
}
|
|
|
|
Assert.ok(overrideCalled);
|
|
});
|
|
|
|
add_task(terminationTaskFn);
|