| Index: lib/prefs.js |
| =================================================================== |
| --- a/lib/prefs.js |
| +++ b/lib/prefs.js |
| @@ -40,6 +40,7 @@ |
| defaults.show_statsinpopup = true; |
| defaults.shouldShowBlockElementMenu = true; |
| defaults.hidePlaceholders = true; |
| +defaults.suppress_first_run_page = false; |
| let Prefs = exports.Prefs = { |
| onChanged: new ext._EventTarget(), |
| @@ -93,6 +94,35 @@ |
| let prefs = Object.keys(defaults); |
| prefs.forEach(addPreference); |
| + let localLoaded = false; |
| + let managedLoaded = false; |
| + |
| + let checkLoaded = function() |
| + { |
| + if (!localLoaded || !managedLoaded) |
| + return; |
| + |
| + ext.storage.onChanged.addListener(function(changes) |
| + { |
| + for (let key in changes) |
| + { |
| + let pref = keyToPref(key); |
| + if (pref && pref in defaults) |
| + { |
| + let change = changes[key]; |
| + if ("newValue" in change && change.newValue != defaults[pref]) |
| + overrides[pref] = change.newValue; |
| + else |
| + delete overrides[pref]; |
| + |
| + Prefs.onChanged._dispatch(pref); |
| + } |
| + } |
| + }); |
| + |
| + Prefs.onLoaded._dispatch(); |
| + }; |
| + |
| // Migrate preferences for users updating from old versions. |
| // TODO: Remove the migration code after a few releases. |
| ext.storage.migratePrefs({ |
| @@ -125,28 +155,28 @@ |
| for (let key in items) |
| overrides[keyToPref(key)] = items[key]; |
| - ext.storage.onChanged.addListener(function(changes) |
| - { |
| - for (let key in changes) |
| - { |
| - let pref = keyToPref(key); |
| - if (pref && pref in defaults) |
| - { |
| - let change = changes[key]; |
| - if ("newValue" in change && change.newValue != defaults[pref]) |
| - overrides[pref] = change.newValue; |
| - else |
| - delete overrides[pref]; |
| - |
| - Prefs.onChanged._dispatch(pref); |
| - } |
| - } |
| - }); |
| - |
| - Prefs.onLoaded._dispatch(); |
| + localLoaded = true; |
| + checkLoaded(); |
| }); |
| } |
| }); |
| + |
| + if (require("info").platform == "chromium" && "managed" in chrome.storage) |
| + { |
| + chrome.storage.managed.get(null, function(items) |
| + { |
| + for (let key in items) |
| + defaults[key] = items[key]; |
| + |
| + managedLoaded = true; |
| + checkLoaded(); |
| + }); |
| + } |
| + else |
| + { |
| + managedLoaded = true; |
| + checkLoaded(); |
| + } |
| } |
| init(); |