summaryrefslogtreecommitdiffstats
path: root/toolkit/components/formautofill/test/xpcshell/test_integration.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/formautofill/test/xpcshell/test_integration.js')
-rw-r--r--toolkit/components/formautofill/test/xpcshell/test_integration.js72
1 files changed, 72 insertions, 0 deletions
diff --git a/toolkit/components/formautofill/test/xpcshell/test_integration.js b/toolkit/components/formautofill/test/xpcshell/test_integration.js
new file mode 100644
index 000000000..7707f3880
--- /dev/null
+++ b/toolkit/components/formautofill/test/xpcshell/test_integration.js
@@ -0,0 +1,72 @@
+/* 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);