Skip to content

Commit 546638d

Browse files
committed
Fix a bug where you can't save empty fields if there's a non-empty default. Also made the option saving code more robust to similar scenarios
1 parent 7820ae2 commit 546638d

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

options.html

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,9 @@
8080
var defaultSettings = chrome.extension.getBackgroundPage().defaultSettings;
8181

8282
var editableFields = ["scrollStepSize", "defaultZoomLevel", "excludedUrls", "linkHintCharacters",
83-
"userDefinedLinkHintCss", "keyMappings"];
83+
"userDefinedLinkHintCss", "keyMappings"];
84+
85+
var canBeEmptyFields = ["excludedUrls", "keyMappings", "userDefinedLinkHintCss"];
8486

8587
var postSaveHooks = {
8688
keyMappings: function (value) {
@@ -118,10 +120,17 @@
118120
var fieldValue = $(fieldName).value.trim();
119121
var defaultFieldValue = (defaultSettings[fieldName] != null) ?
120122
defaultSettings[fieldName].toString() : "";
123+
124+
// Don't save to storage if it's equal to the default
121125
if (fieldValue == defaultFieldValue)
122126
delete localStorage[fieldName];
123-
else
127+
// ..or if it's empty and not a field that we allow to be empty.
128+
else if (!fieldValue && canBeEmptyFields.indexOf(fieldName) == -1) {
129+
delete localStorage[fieldName];
130+
fieldValue = defaultFieldValue;
131+
} else
124132
localStorage[fieldName] = fieldValue;
133+
125134
$(fieldName).value = fieldValue;
126135
$(fieldName).setAttribute("savedValue", fieldValue);
127136

@@ -133,7 +142,12 @@
133142
// Restores select box state to saved value from localStorage.
134143
function populateOptions() {
135144
for (var i = 0; i < editableFields.length; i++) {
136-
$(editableFields[i]).value = localStorage[editableFields[i]] || defaultSettings[editableFields[i]] || "";
145+
// If it's null or undefined, let's go to the default. We want to allow empty strings in certain cases.
146+
if (localStorage[editableFields[i]] != "" && !localStorage[editableFields[i]]) {
147+
$(editableFields[i]).value = defaultSettings[editableFields[i]] || "";
148+
} else {
149+
$(editableFields[i]).value = localStorage[editableFields[i]];
150+
}
137151
$(editableFields[i]).setAttribute("savedValue", $(editableFields[i]).value);
138152
}
139153
}

0 commit comments

Comments
 (0)