| Index: lib/prefs.js | 
| diff --git a/lib/prefs.js b/lib/prefs.js | 
| index 14785c4a7f616d224030a84914e2e98ace2efad9..97c7b9072a46f0bfe30fbc618b6ab4117a4f7b48 100644 | 
| --- a/lib/prefs.js | 
| +++ b/lib/prefs.js | 
| @@ -46,6 +46,13 @@ let defaults = { | 
| disable_auto_updates: false, | 
| first_run_subscription_auto_select: true, | 
| notifications_ignoredcategories: [], | 
| + allowed_connection_type: null | 
| 
 
Oleksandr
2017/03/28 14:45:01
I think it would be better to have an empty string
 
sergei
2017/03/28 14:46:35
That where we started from, an empty string is a m
 
 | 
| +}; | 
| + | 
| +// It is for non-objects, e.g. for string, number, etc. | 
| +let nullableValues_ExpectedTypes = { | 
| + __proto__: null, | 
| + allowed_connection_type: "string" | 
| }; | 
| let preconfigurable = ["suppress_first_run_page", "disable_auto_updates", | 
| @@ -57,6 +64,14 @@ let listeners = []; | 
| let isDirty = false; | 
| let isSaving = false; | 
| +function isValueTypeCorrect(key, value) | 
| +{ | 
| + let nullableValue_ExpectedType = nullableValues_ExpectedTypes[key]; | 
| + return !nullableValue_ExpectedType ? | 
| + typeof value == typeof defaults[key] : | 
| + value === null || typeof value == nullableValue_ExpectedType; | 
| +} | 
| + | 
| function defineProperty(key) | 
| { | 
| Object.defineProperty(Prefs, key, | 
| @@ -64,7 +79,7 @@ function defineProperty(key) | 
| get: () => values[key], | 
| set: function(value) | 
| { | 
| - if (typeof value != typeof defaults[key]) | 
| + if (!isValueTypeCorrect(key, value)) | 
| throw new Error("Attempt to change preference type"); | 
| if (value == defaults[key]) | 
| @@ -141,7 +156,13 @@ let Prefs = exports.Prefs = { | 
| // Update the default prefs with what was preconfigured | 
| for (let key in _preconfiguredPrefs) | 
| if (preconfigurable.indexOf(key) != -1) | 
| - defaults[key] = _preconfiguredPrefs[key]; | 
| + { | 
| + let value = _preconfiguredPrefs[key]; | 
| + if (!isValueTypeCorrect(key, value)) | 
| + throw new Error("Unexpected value type in preconfigured preferences"); | 
| + | 
| + defaults[key] = value; | 
| + } | 
| // Define defaults | 
| for (let key in defaults) |