Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: lib/prefs.js

Issue 29512648: Issue 5475 - Update adblockpluscore dependency to revision hg:b935a0402215 (Closed) Base URL: https://github.com/adblockplus/libadblockplus.git
Patch Set: Created Aug. 11, 2017, 12:36 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * This file is part of Adblock Plus <https://adblockplus.org/>, 2 * This file is part of Adblock Plus <https://adblockplus.org/>,
3 * Copyright (C) 2006-2017 eyeo GmbH 3 * Copyright (C) 2006-2017 eyeo GmbH
4 * 4 *
5 * Adblock Plus is free software: you can redistribute it and/or modify 5 * Adblock Plus is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 3 as 6 * it under the terms of the GNU General Public License version 3 as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
8 * 8 *
9 * Adblock Plus is distributed in the hope that it will be useful, 9 * Adblock Plus is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details. 12 * GNU General Public License for more details.
13 * 13 *
14 * You should have received a copy of the GNU General Public License 14 * You should have received a copy of the GNU General Public License
15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. 15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
16 */ 16 */
17 17
18 // 18 //
19 // The values are hardcoded for now. 19 // The values are hardcoded for now.
20 // 20 //
21 21
22 let defaults = { 22 let defaults = {
23 __proto__: null, 23 __proto__: null,
24 enabled: true, 24 enabled: true,
25 patternsfile: "patterns.ini",
sergei 2017/08/11 12:49:39 now it's hardcoded in adblockpluscore/lib/filtersS
26 patternsbackups: 5, 25 patternsbackups: 5,
27 patternsbackupinterval: 24, 26 patternsbackupinterval: 24,
28 data_directory: "",
29 savestats: false, 27 savestats: false,
30 privateBrowsing: false, 28 privateBrowsing: false,
31 subscriptions_fallbackerrors: 5, 29 subscriptions_fallbackerrors: 5,
32 subscriptions_fallbackurl: "https://adblockplus.org/getSubscription?version=%V ERSION%&url=%SUBSCRIPTION%&downloadURL=%URL%&error=%ERROR%&channelStatus=%CHANNE LSTATUS%&responseStatus=%RESPONSESTATUS%", 30 subscriptions_fallbackurl: "https://adblockplus.org/getSubscription?version=%V ERSION%&url=%SUBSCRIPTION%&downloadURL=%URL%&error=%ERROR%&channelStatus=%CHANNE LSTATUS%&responseStatus=%RESPONSESTATUS%",
33 subscriptions_autoupdate: true, 31 subscriptions_autoupdate: true,
34 subscriptions_exceptionsurl: "https://easylist-downloads.adblockplus.org/excep tionrules.txt", 32 subscriptions_exceptionsurl: "https://easylist-downloads.adblockplus.org/excep tionrules.txt",
35 documentation_link: "https://adblockplus.org/redirect?link=%LINK%&lang=%LANG%" , 33 documentation_link: "https://adblockplus.org/redirect?link=%LINK%&lang=%LANG%" ,
36 update_url_release: "https://update.adblockplus.org/%NAME%/update.json?type=%T YPE%", 34 update_url_release: "https://update.adblockplus.org/%NAME%/update.json?type=%T YPE%",
37 update_url_devbuild: "https://adblockplus.org/devbuilds/%NAME%/update.json?typ e=%TYPE%", 35 update_url_devbuild: "https://adblockplus.org/devbuilds/%NAME%/update.json?typ e=%TYPE%",
38 update_last_check: 0, 36 update_last_check: 0,
39 update_last_error: 0, 37 update_last_error: 0,
40 update_soft_expiration: 0, 38 update_soft_expiration: 0,
41 update_hard_expiration: 0, 39 update_hard_expiration: 0,
42 currentVersion: "0.0", 40 currentVersion: "0.0",
43 notificationdata: {}, 41 notificationdata: {},
44 notificationurl: "https://notification.adblockplus.org/notification.json", 42 notificationurl: "https://notification.adblockplus.org/notification.json",
45 suppress_first_run_page: false, 43 suppress_first_run_page: false,
46 disable_auto_updates: false, 44 disable_auto_updates: false,
47 first_run_subscription_auto_select: true, 45 first_run_subscription_auto_select: true,
48 notifications_ignoredcategories: [], 46 notifications_ignoredcategories: [],
49 allowed_connection_type: "" 47 allowed_connection_type: ""
50 }; 48 };
51 49
52 let preconfigurable = ["suppress_first_run_page", "disable_auto_updates", 50 let preconfigurable = ["suppress_first_run_page", "disable_auto_updates",
53 "first_run_subscription_auto_select", "allowed_connection_type"]; 51 "first_run_subscription_auto_select", "allowed_connection_type"];
54 52
55 let values; 53 let values;
56 let path = _fileSystem.resolve("prefs.json"); 54 let prefsFileName = "prefs.json";
sergei 2017/08/11 12:49:39 it's renamed because file system does not support
57 let listeners = []; 55 let listeners = [];
58 let isDirty = false; 56 let isDirty = false;
59 let isSaving = false; 57 let isSaving = false;
60 58
61 function defineProperty(key) 59 function defineProperty(key)
62 { 60 {
63 Object.defineProperty(Prefs, key, 61 Object.defineProperty(Prefs, key,
64 { 62 {
65 get: () => values[key], 63 get: () => values[key],
66 set: function(value) 64 set: function(value)
67 { 65 {
68 if (typeof value != typeof defaults[key]) 66 if (typeof value != typeof defaults[key])
69 throw new Error("Attempt to change preference type"); 67 throw new Error("Attempt to change preference type");
70 68
71 if (value == defaults[key]) 69 if (value == defaults[key])
72 delete values[key]; 70 delete values[key];
73 else 71 else
74 values[key] = value; 72 values[key] = value;
75 save(); 73 save();
76 74
77 for (let listener of listeners) 75 for (let listener of listeners)
78 listener(key); 76 listener(key);
79 }, 77 },
80 enumerable: true 78 enumerable: true
81 }); 79 });
82 } 80 }
83 81
84 function load() 82 function load()
85 { 83 {
86 _fileSystem.read(path, function(result) 84 _fileSystem.read(prefsFileName, function (result)
87 { 85 {
88 // prefs.json is expected to be missing, ignore errors reading file 86 // prefs.json is expected to be missing, ignore errors reading file
89 if (!result.error) 87 if (!result.error)
90 { 88 {
91 try 89 try
92 { 90 {
93 let data = JSON.parse(result.content); 91 let data = JSON.parse(result.content);
94 for (let key in data) 92 for (let key in data)
95 if (key in defaults) 93 if (key in defaults)
96 values[key] = data[key]; 94 values[key] = data[key];
(...skipping 13 matching lines...) Expand all
110 function save() 108 function save()
111 { 109 {
112 if (isSaving) 110 if (isSaving)
113 { 111 {
114 isDirty = true; 112 isDirty = true;
115 return; 113 return;
116 } 114 }
117 115
118 isDirty = false; 116 isDirty = false;
119 isSaving = true; 117 isSaving = true;
120 _fileSystem.write(path, JSON.stringify(values), function() 118 _fileSystem.write(prefsFileName, JSON.stringify(values), function ()
121 { 119 {
122 isSaving = false; 120 isSaving = false;
123 if (isDirty) 121 if (isDirty)
124 save(); 122 save();
125 }); 123 });
126 } 124 }
127 125
128 let Prefs = exports.Prefs = { 126 let Prefs = exports.Prefs = {
129 initialized: false, 127 initialized: false,
130 128
(...skipping 17 matching lines...) Expand all
148 defaults[key] = _preconfiguredPrefs[key]; 146 defaults[key] = _preconfiguredPrefs[key];
149 147
150 // Define defaults 148 // Define defaults
151 for (let key in defaults) 149 for (let key in defaults)
152 defineProperty(key); 150 defineProperty(key);
153 151
154 // Set values of prefs based on defaults 152 // Set values of prefs based on defaults
155 values = Object.create(defaults); 153 values = Object.create(defaults);
156 154
157 load(); 155 load();
OLDNEW

Powered by Google App Engine
This is Rietveld