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

Unified Diff: lib/snippets.js

Issue 29737558: Issue 6538, 6781 - Implement support for snippet filters (Closed) Base URL: https://hg.adblockplus.org/adblockpluscore/
Patch Set: Rebase Created May 2, 2018, 7:59 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/filterListener.js ('k') | test/filterClasses.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/snippets.js
===================================================================
new file mode 100644
--- /dev/null
+++ b/lib/snippets.js
@@ -0,0 +1,81 @@
+/*
+ * This file is part of Adblock Plus <https://adblockplus.org/>,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * Adblock Plus is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * Adblock Plus is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+"use strict";
+
+/**
+ * @fileOverview Snippets implementation.
+ */
+
+const {ElemHide} = require("./elemHide");
+const {Filter} = require("./filterClasses");
+
+let filters = new Set();
+
+/**
+ * Container for snippet filters
+ * @class
+ */
+let Snippets = {
+ /**
+ * Removes all known filters
+ */
+ clear()
+ {
+ filters.clear();
+ },
+
+ /**
+ * Add a new snippet filter
+ * @param {SnippetFilter} filter
+ */
+ add(filter)
+ {
+ filters.add(filter.text);
+ },
+
+ /**
+ * Removes a snippet filter
+ * @param {SnippetFilter} filter
+ */
+ remove(filter)
+ {
+ filters.delete(filter.text);
+ },
+
+ /**
+ * Returns a list of all scripts active on a particular domain
+ * @param {string} domain
+ * @return {SnippetFilter[]}
+ */
+ getScriptsForDomain(domain)
+ {
+ let result = [];
+ for (let text of filters)
+ {
+ let filter = Filter.fromText(text);
+ if (filter.isActiveOnDomain(domain) &&
+ !ElemHide.getException(filter, domain))
+ {
+ result.push(filter);
+ }
+ }
+ return result;
+ }
+};
+
+exports.Snippets = Snippets;
« no previous file with comments | « lib/filterListener.js ('k') | test/filterClasses.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld