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

Side by Side Diff: lib/subscriptionClasses.js

Issue 29945631: Issue 7097 - Make element hiding filter objects ephemeral Base URL: https://hg.adblockplus.org/adblockpluscore/
Patch Set: Created Nov. 18, 2018, 3:22 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« lib/filterClasses.js ('K') | « lib/filterClasses.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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-present eyeo GmbH 3 * Copyright (C) 2006-present 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 "use strict"; 18 "use strict";
19 19
20 /** 20 /**
21 * @fileOverview Definition of Subscription class and its subclasses. 21 * @fileOverview Definition of Subscription class and its subclasses.
22 */ 22 */
23 23
24 const {ActiveFilter, BlockingFilter, 24 const {Filter, ActiveFilter, BlockingFilter,
25 WhitelistFilter, ElemHideBase} = require("./filterClasses"); 25 WhitelistFilter, ElemHideBase} = require("./filterClasses");
26 const {filterNotifier} = require("./filterNotifier"); 26 const {filterNotifier} = require("./filterNotifier");
27 const {extend} = require("./coreUtils"); 27 const {extend} = require("./coreUtils");
28 28
29 /** 29 /**
30 * Abstract base class for filter subscriptions 30 * Abstract base class for filter subscriptions
31 * 31 *
32 * @param {string} url download location of the subscription 32 * @param {string} url download location of the subscription
33 * @param {string} [title] title of the filter subscription 33 * @param {string} [title] title of the filter subscription
34 * @constructor 34 * @constructor
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 { 161 {
162 yield* this._filterText; 162 yield* this._filterText;
163 }, 163 },
164 164
165 /** 165 /**
166 * Yields the {@link Filter} object for each filter in the subscription. 166 * Yields the {@link Filter} object for each filter in the subscription.
167 * @yields {Filter} 167 * @yields {Filter}
168 */ 168 */
169 *filters() 169 *filters()
170 { 170 {
171 yield* this._filters; 171 for (let i = 0; i < this._filters.length; i++)
172 yield this._filters[i] || Filter.fromText(this._filterText[i]);
172 }, 173 },
173 174
174 /** 175 /**
175 * Returns the {@link Filter} object at the given 0-based index. 176 * Returns the {@link Filter} object at the given 0-based index.
176 * @param {number} index 177 * @param {number} index
177 * @returns {?Filter} 178 * @returns {?Filter}
178 */ 179 */
179 filterAt(index) 180 filterAt(index)
180 { 181 {
181 return this._filters[index] || null; 182 return this._filters[index] ||
183 (index >= 0 && index < this._filters.length ?
184 Filter.fromText(this._filterText[index]) : null);
182 }, 185 },
183 186
184 /** 187 /**
185 * Returns the 0-based index of the given filter. 188 * Returns the 0-based index of the given filter.
186 * @param {Filter} filter 189 * @param {Filter} filter
187 * @param {number} [fromIndex] The index from which to start the search. 190 * @param {number} [fromIndex] The index from which to start the search.
188 * @return {number} 191 * @return {number}
189 */ 192 */
190 searchFilter(filter, fromIndex = 0) 193 searchFilter(filter, fromIndex = 0)
191 { 194 {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 260
258 this._filterTextLookup = null; 261 this._filterTextLookup = null;
259 }, 262 },
260 263
261 /** 264 /**
262 * Clears any in-memory caches held by the object. 265 * Clears any in-memory caches held by the object.
263 * @package 266 * @package
264 */ 267 */
265 clearCaches() 268 clearCaches()
266 { 269 {
270 for (let i = 0; i < this._filters.length; i++)
271 {
272 if (this._filters[i] && this._filters[i].ephemeral)
Manish Jethani 2018/11/18 03:29:12 filterClasses.js doesn't keep any references to ep
273 this._filters[i] = null;
274 }
275
267 this._filterTextLookup = null; 276 this._filterTextLookup = null;
268 }, 277 },
269 278
270 /** 279 /**
271 * Serializes the subscription for writing out on disk. 280 * Serializes the subscription for writing out on disk.
272 * @yields {string} 281 * @yields {string}
273 */ 282 */
274 *serialize() 283 *serialize()
275 { 284 {
276 let {url, type, _title, _fixedTitle, _disabled} = this; 285 let {url, type, _title, _fixedTitle, _disabled} = this;
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after
725 if (errors) 734 if (errors)
726 yield "errors=" + errors; 735 yield "errors=" + errors;
727 if (version) 736 if (version)
728 yield "version=" + version; 737 yield "version=" + version;
729 if (requiredVersion) 738 if (requiredVersion)
730 yield "requiredVersion=" + requiredVersion; 739 yield "requiredVersion=" + requiredVersion;
731 if (downloadCount) 740 if (downloadCount)
732 yield "downloadCount=" + downloadCount; 741 yield "downloadCount=" + downloadCount;
733 } 742 }
734 }); 743 });
OLDNEW
« lib/filterClasses.js ('K') | « lib/filterClasses.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld