summaryrefslogtreecommitdiffstats
path: root/devtools/client/shared/test/browser_inplace-editor-02.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/shared/test/browser_inplace-editor-02.js')
-rw-r--r--devtools/client/shared/test/browser_inplace-editor-02.js80
1 files changed, 80 insertions, 0 deletions
diff --git a/devtools/client/shared/test/browser_inplace-editor-02.js b/devtools/client/shared/test/browser_inplace-editor-02.js
new file mode 100644
index 0000000000..9ecb0bca02
--- /dev/null
+++ b/devtools/client/shared/test/browser_inplace-editor-02.js
@@ -0,0 +1,80 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+/* import-globals-from helper_inplace_editor.js */
+
+"use strict";
+
+loadHelperScript("helper_inplace_editor.js");
+
+// Test that the trimOutput option for the inplace editor works correctly.
+
+add_task(async function () {
+ await addTab("data:text/html;charset=utf-8,inline editor tests");
+ const { host, doc } = await createHost();
+
+ await testNonTrimmed(doc);
+ await testTrimmed(doc);
+
+ host.destroy();
+ gBrowser.removeCurrentTab();
+});
+
+function testNonTrimmed(doc) {
+ info("Testing the trimOutput=false option");
+ return new Promise(resolve => {
+ const initial = "\nMultiple\nLines\n";
+ const changed = " \nMultiple\nLines\n with more whitespace ";
+ createInplaceEditorAndClick(
+ {
+ trimOutput: false,
+ multiline: true,
+ initial,
+ start(editor) {
+ is(
+ editor.input.value,
+ initial,
+ "Explicit initial value should be used."
+ );
+ editor.input.value = changed;
+ EventUtils.sendKey("return");
+ },
+ done: onDone(changed, true, resolve),
+ },
+ doc
+ );
+ });
+}
+
+function testTrimmed(doc) {
+ info("Testing the trimOutput=true option (default value)");
+ return new Promise(resolve => {
+ const initial = "\nMultiple\nLines\n";
+ const changed = " \nMultiple\nLines\n with more whitespace ";
+ createInplaceEditorAndClick(
+ {
+ initial,
+ multiline: true,
+ start(editor) {
+ is(
+ editor.input.value,
+ initial,
+ "Explicit initial value should be used."
+ );
+ editor.input.value = changed;
+ EventUtils.sendKey("return");
+ },
+ done: onDone(changed.trim(), true, resolve),
+ },
+ doc
+ );
+ });
+}
+
+function onDone(value, isCommit, resolve) {
+ return function (actualValue, actualCommit) {
+ info("Inplace-editor's done callback executed, checking its state");
+ is(actualValue, value, "The value is correct");
+ is(actualCommit, isCommit, "The commit boolean is correct");
+ resolve();
+ };
+}