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

Side by Side Diff: lib/elemHide.js

Issue 29893628: Issue 6957 - Skip selector lookup for unknown domains (Closed) Base URL: https://hg.adblockplus.org/adblockpluscore/
Patch Set: Rebase Created Sept. 28, 2018, 6 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
« no previous file with comments | « no previous file | test/elemHide.js » ('j') | 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
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 * @property {Array.<string>} selectors List of selectors. 351 * @property {Array.<string>} selectors List of selectors.
352 */ 352 */
353 353
354 /** 354 /**
355 * Generates a style sheet for a given domain based on the current set of 355 * Generates a style sheet for a given domain based on the current set of
356 * filters. 356 * filters.
357 * 357 *
358 * @param {string} domain The domain. 358 * @param {string} domain The domain.
359 * @param {boolean} [specificOnly=false] Whether selectors from generic 359 * @param {boolean} [specificOnly=false] Whether selectors from generic
360 * filters should be included. 360 * filters should be included.
361 * @param {boolean} [includeSelectors=false] Whether the return value should
362 * include a separate list of selectors.
361 * 363 *
362 * @returns {ElemHideStyleSheet} An object containing the CSS code and the 364 * @returns {ElemHideStyleSheet} An object containing the CSS code and the
363 * list of selectors. 365 * list of selectors.
364 */ 366 */
365 generateStyleSheetForDomain(domain, specificOnly = false) 367 generateStyleSheetForDomain(domain, specificOnly = false,
368 includeSelectors = false)
366 { 369 {
367 let code = null; 370 let code = null;
368 let selectors = null; 371 let selectors = null;
369 372
370 if (domain[domain.length - 1] == ".") 373 if (domain[domain.length - 1] == ".")
371 domain = domain.replace(/\.+$/, ""); 374 domain = domain.replace(/\.+$/, "");
372 375
373 domain = domain.toLowerCase(); 376 domain = domain.toLowerCase();
374 377
375 if (specificOnly) 378 if (specificOnly)
376 { 379 {
377 selectors = getConditionalSelectors(domain, true); 380 selectors = getConditionalSelectors(domain, true);
378 code = createStyleSheet(selectors); 381 code = createStyleSheet(selectors);
379 } 382 }
380 else 383 else
381 { 384 {
382 let knownSuffix = getKnownSuffix(domain); 385 let knownSuffix = getKnownSuffix(domain);
383 386
384 selectors = getConditionalSelectors(knownSuffix, false); 387 if (includeSelectors)
385 code = knownSuffix == "" ? getCommonStyleSheet() : 388 {
386 (getDefaultStyleSheet() + createStyleSheet(selectors)); 389 selectors = getConditionalSelectors(knownSuffix, false);
390 code = knownSuffix == "" ? getCommonStyleSheet() :
391 (getDefaultStyleSheet() + createStyleSheet(selectors));
387 392
388 selectors = getUnconditionalSelectors().concat(selectors); 393 selectors = getUnconditionalSelectors().concat(selectors);
394 }
395 else
396 {
397 code = knownSuffix == "" ? getCommonStyleSheet() :
398 (getDefaultStyleSheet() +
399 createStyleSheet(getConditionalSelectors(knownSuffix,
400 false)));
401 }
389 } 402 }
390 403
391 return {code, selectors}; 404 return {code, selectors: includeSelectors ? selectors : null};
392 } 405 }
393 }; 406 };
394 407
395 /** 408 /**
396 * Splits a list of selectors into groups determined by the value of 409 * Splits a list of selectors into groups determined by the value of
397 * <code>{@link selectorGroupSize}</code>. 410 * <code>{@link selectorGroupSize}</code>.
398 * 411 *
399 * @param {Array.<string>} selectors 412 * @param {Array.<string>} selectors
400 * @yields {Array.<string>} 413 * @yields {Array.<string>}
401 */ 414 */
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
443 { 456 {
444 let styleSheet = ""; 457 let styleSheet = "";
445 458
446 for (let selectorGroup of splitSelectors(selectors)) 459 for (let selectorGroup of splitSelectors(selectors))
447 styleSheet += createRule(selectorGroup); 460 styleSheet += createRule(selectorGroup);
448 461
449 return styleSheet; 462 return styleSheet;
450 } 463 }
451 464
452 exports.createStyleSheet = createStyleSheet; 465 exports.createStyleSheet = createStyleSheet;
OLDNEW
« no previous file with comments | « no previous file | test/elemHide.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld