|
80 | 80 | var defaultSettings = chrome.extension.getBackgroundPage().defaultSettings; |
81 | 81 |
|
82 | 82 | var editableFields = ["scrollStepSize", "defaultZoomLevel", "excludedUrls", "linkHintCharacters", |
83 | | - "userDefinedLinkHintCss", "keyMappings"]; |
| 83 | + "userDefinedLinkHintCss", "keyMappings"]; |
| 84 | + |
| 85 | + var canBeEmptyFields = ["excludedUrls", "keyMappings", "userDefinedLinkHintCss"]; |
84 | 86 |
|
85 | 87 | var postSaveHooks = { |
86 | 88 | keyMappings: function (value) { |
|
118 | 120 | var fieldValue = $(fieldName).value.trim(); |
119 | 121 | var defaultFieldValue = (defaultSettings[fieldName] != null) ? |
120 | 122 | defaultSettings[fieldName].toString() : ""; |
| 123 | + |
| 124 | + // Don't save to storage if it's equal to the default |
121 | 125 | if (fieldValue == defaultFieldValue) |
122 | 126 | 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 |
124 | 132 | localStorage[fieldName] = fieldValue; |
| 133 | + |
125 | 134 | $(fieldName).value = fieldValue; |
126 | 135 | $(fieldName).setAttribute("savedValue", fieldValue); |
127 | 136 |
|
|
133 | 142 | // Restores select box state to saved value from localStorage. |
134 | 143 | function populateOptions() { |
135 | 144 | 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 | + } |
137 | 151 | $(editableFields[i]).setAttribute("savedValue", $(editableFields[i]).value); |
138 | 152 | } |
139 | 153 | } |
|
0 commit comments