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

Unified Diff: lib/css.js

Issue 29410607: Issue 5090 - Use user stylesheets for element hiding if possible (Closed)
Patch Set: Created April 12, 2017, 10:59 a.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
« background.js ('K') | « include.preload.js ('k') | metadata.chrome » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/css.js
diff --git a/lib/css.js b/lib/css.js
new file mode 100644
index 0000000000000000000000000000000000000000..f83daff86acc76b6b7e0a147e271243a945608e9
--- /dev/null
+++ b/lib/css.js
@@ -0,0 +1,54 @@
+/*
+ * This file is part of Adblock Plus <https://adblockplus.org/>,
+ * Copyright (C) 2006-2017 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/>.
+ */
+
+/** @module css */
+
+"use strict";
+
+/**
+ * Hides elements on the page using the browser.tabs.insertCSS API.
+ *
+ * @param {string} tabId The ID of the tab in which to hide elements
+ * @param {string} frameId The ID of the frame in which to hide elements
+ * @param {string[]} selectors The list of selectors for the elements to hide
+ * @param {Function} callback The function to be called upon completion
+ * @static
+ */
+exports.hideElements = (tabId, frameId, selectors, callback) =>
+{
+ let code = selectors.length > 0 ?
+ selectors.join(", ") + "{display: none !important;}" :
+ "";
+
+ try
+ {
+ browser.tabs.insertCSS(tabId,
+ {
+ code,
+ cssOrigin: "user",
+ frameId,
+ matchAboutBlank: true
+ }
+ )
+ .then(callback)
+ .catch(callback);
+ }
+ catch (error)
+ {
+ callback(error);
+ }
+};
« background.js ('K') | « include.preload.js ('k') | metadata.chrome » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld