mirror of
https://github.com/classilla/tenfourfox.git
synced 2026-03-12 13:42:03 +00:00
220 lines
6.6 KiB
JavaScript
220 lines
6.6 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
var customName;
|
|
var customValue;
|
|
var customValueType;
|
|
var customBtn;
|
|
var newField;
|
|
var change;
|
|
var doc;
|
|
var iframe;
|
|
var resetBtn;
|
|
var found = false;
|
|
|
|
function setDocument(frame) {
|
|
iframe = frame;
|
|
doc = iframe.contentWindow.document;
|
|
}
|
|
|
|
function fieldChange(fields, id) {
|
|
// Trigger existing field change
|
|
for (let field of fields) {
|
|
if (field.id == id) {
|
|
let button = doc.getElementById("btn-" + id);
|
|
found = true;
|
|
ok(button.classList.contains("hide"), "Default field detected");
|
|
field.value = "custom";
|
|
field.click();
|
|
ok(!button.classList.contains("hide"), "Custom field detected");
|
|
break;
|
|
}
|
|
}
|
|
ok(found, "Found " + id + " line");
|
|
}
|
|
|
|
function addNewField() {
|
|
found = false;
|
|
customName = doc.querySelector("#custom-value-name");
|
|
customValue = doc.querySelector("#custom-value-text");
|
|
customValueType = doc.querySelector("#custom-value-type");
|
|
customBtn = doc.querySelector("#custom-value");
|
|
change = doc.createEvent("HTMLEvents");
|
|
change.initEvent("change", false, true);
|
|
|
|
// Add a new custom string
|
|
customValueType.value = "string";
|
|
customValueType.dispatchEvent(change);
|
|
customName.value = "new-string-field!";
|
|
customValue.value = "test";
|
|
customBtn.click();
|
|
let newField = doc.querySelector("#new-string-field");
|
|
if (newField) {
|
|
found = true;
|
|
is(newField.type, "text", "Custom type is a string");
|
|
is(newField.value, "test", "Custom string new value is correct");
|
|
}
|
|
ok(found, "Found new string field line");
|
|
is(customName.value, "", "Custom string name reset");
|
|
is(customValue.value, "", "Custom string value reset");
|
|
}
|
|
|
|
function addNewFieldWithEnter() {
|
|
// Add a new custom value with the <enter> key
|
|
found = false;
|
|
customName.value = "new-string-field-two";
|
|
customValue.value = "test";
|
|
let newAddField = doc.querySelector("#add-custom-field");
|
|
let enter = doc.createEvent("KeyboardEvent");
|
|
enter.initKeyEvent(
|
|
"keyup", true, true, null, false, false, false, false, 13, 0);
|
|
newAddField.dispatchEvent(enter);
|
|
newField = doc.querySelector("#new-string-field-two");
|
|
if (newField) {
|
|
found = true;
|
|
is(newField.type, "text", "Custom type is a string");
|
|
is(newField.value, "test", "Custom string new value is correct");
|
|
}
|
|
ok(found, "Found new string field line");
|
|
is(customName.value, "", "Custom string name reset");
|
|
is(customValue.value, "", "Custom string value reset");
|
|
}
|
|
|
|
function editExistingField() {
|
|
// Edit existing custom string preference
|
|
newField.value = "test2";
|
|
newField.click();
|
|
is(newField.value, "test2", "Custom string existing value is correct");
|
|
}
|
|
|
|
function addNewFieldInteger() {
|
|
// Add a new custom integer preference with a valid integer
|
|
customValueType.value = "number";
|
|
customValueType.dispatchEvent(change);
|
|
customName.value = "new-integer-field";
|
|
customValue.value = 1;
|
|
found = false;
|
|
|
|
customBtn.click();
|
|
newField = doc.querySelector("#new-integer-field");
|
|
if (newField) {
|
|
found = true;
|
|
is(newField.type, "number", "Custom type is a number");
|
|
is(newField.value, "1", "Custom integer value is correct");
|
|
}
|
|
ok(found, "Found new integer field line");
|
|
is(customName.value, "", "Custom integer name reset");
|
|
is(customValue.value, "", "Custom integer value reset");
|
|
}
|
|
|
|
var editFieldInteger = Task.async(function*() {
|
|
// Edit existing custom integer preference
|
|
newField.value = 3;
|
|
newField.click();
|
|
is(newField.value, "3", "Custom integer existing value is correct");
|
|
|
|
// Reset a custom field
|
|
let resetBtn = doc.querySelector("#btn-new-integer-field");
|
|
resetBtn.click();
|
|
|
|
try {
|
|
yield iframe.contentWindow.configView._defaultField;
|
|
} catch(err) {
|
|
let fieldRow = doc.querySelector("#row-new-integer-field");
|
|
if (!fieldRow) {
|
|
found = false;
|
|
}
|
|
ok(!found, "Custom field removed");
|
|
}
|
|
});
|
|
|
|
var resetExistingField = Task.async(function*(id) {
|
|
let existing = doc.getElementById(id);
|
|
existing.click();
|
|
is(existing.checked, true, "Existing boolean value is correct");
|
|
resetBtn = doc.getElementById("btn-" + id);
|
|
resetBtn.click();
|
|
|
|
yield iframe.contentWindow.configView._defaultField;
|
|
|
|
ok(resetBtn.classList.contains("hide"), true, "Reset button hidden");
|
|
is(existing.checked, true, "Existing field reset");
|
|
});
|
|
|
|
var resetNewField = Task.async(function*(id) {
|
|
let custom = doc.getElementById(id);
|
|
custom.click();
|
|
is(custom.value, "test", "New string value is correct");
|
|
resetBtn = doc.getElementById("btn-" + id);
|
|
resetBtn.click();
|
|
|
|
yield iframe.contentWindow.configView._defaultField;
|
|
|
|
ok(resetBtn.classList.contains("hide"), true, "Reset button hidden");
|
|
});
|
|
|
|
function addNewFieldBoolean() {
|
|
customValueType.value = "boolean";
|
|
customValueType.dispatchEvent(change);
|
|
customName.value = "new-boolean-field";
|
|
customValue.checked = true;
|
|
found = false;
|
|
customBtn.click();
|
|
newField = doc.querySelector("#new-boolean-field");
|
|
if (newField) {
|
|
found = true;
|
|
is(newField.type, "checkbox", "Custom type is a checkbox");
|
|
is(newField.checked, true, "Custom boolean value is correctly true");
|
|
}
|
|
ok(found, "Found new boolean field line");
|
|
|
|
// Mouse event trigger
|
|
var mouseClick = new MouseEvent("click", {
|
|
canBubble: true,
|
|
cancelable: true,
|
|
view: doc.parent,
|
|
});
|
|
|
|
found = false;
|
|
customValueType.value = "boolean";
|
|
customValueType.dispatchEvent(change);
|
|
customName.value = "new-boolean-field2";
|
|
customValue.dispatchEvent(mouseClick);
|
|
customBtn.dispatchEvent(mouseClick);
|
|
newField = doc.querySelector("#new-boolean-field2");
|
|
if (newField) {
|
|
found = true;
|
|
is(newField.checked, true, "Custom boolean value is correctly false");
|
|
}
|
|
ok(found, "Found new second boolean field line");
|
|
|
|
is(customName.value, "", "Custom boolean name reset");
|
|
is(customValue.checked, false, "Custom boolean value reset");
|
|
|
|
newField.click();
|
|
is(newField.checked, false, "Custom boolean existing value is correct");
|
|
}
|
|
|
|
function searchFields(deck, keyword) {
|
|
// Search for a non-existent field
|
|
let searchField = doc.querySelector("#search-bar");
|
|
searchField.value = "![o_O]!";
|
|
searchField.click();
|
|
|
|
let fieldsTotal = doc.querySelectorAll("tr.edit-row").length;
|
|
let hiddenFields = doc.querySelectorAll("tr.hide");
|
|
is(hiddenFields.length, fieldsTotal, "Search keyword not found");
|
|
|
|
// Search for existing fields
|
|
searchField.value = keyword;
|
|
searchField.click();
|
|
hiddenFields = doc.querySelectorAll("tr.hide");
|
|
isnot(hiddenFields.length, fieldsTotal, "Search keyword found");
|
|
|
|
doc.querySelector("#close").click();
|
|
|
|
ok(!deck.selectedPanel, "No panel selected");
|
|
}
|