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: Remove try/catch Created April 21, 2017, 1:34 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
« include.preload.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..d266f833c8e6236f4f9718ff5af9084551dc0231
--- /dev/null
+++ b/lib/css.js
@@ -0,0 +1,60 @@
+/*
+ * 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 */
Sebastian Noack 2017/04/29 22:11:03 I feel "css" being a too generic name for what is
Manish Jethani 2017/05/01 23:18:05 Done.
+
+"use strict";
+
+const info = require("info");
+
+/**
+ * Whether user stylesheets are supported on this platform.
+ *
+ * @type {boolean}
+ * @static
+ */
+exports.userStylesheetsSupported = info.platform == "gecko" &&
Sebastian Noack 2017/04/29 22:11:04 Again, please avoid statically binding logic to th
Manish Jethani 2017/05/01 23:18:05 I had used feature detection originally, but then
Wladimir Palant 2017/05/17 11:50:16 Given that the values provided by the info module
+ info.platformVersion.split(".")[0] >= 53;
+
+/**
+ * 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;}" :
+ "";
Sebastian Noack 2017/04/29 22:11:03 Is this function under any circumstances called wi
Manish Jethani 2017/05/01 23:18:05 Done.
+
+ chrome.tabs.insertCSS(tabId,
+ {
+ code,
+ cssOrigin: "user",
+ frameId,
+ matchAboutBlank: true
+ },
+ () =>
+ {
+ callback(chrome.runtime.lastError);
+ }
+ );
+};
« include.preload.js ('K') | « include.preload.js ('k') | metadata.chrome » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld