summaryrefslogtreecommitdiffstats
path: root/src/js/contentscripts/clobbercookie.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/js/contentscripts/clobbercookie.js')
-rw-r--r--src/js/contentscripts/clobbercookie.js60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/js/contentscripts/clobbercookie.js b/src/js/contentscripts/clobbercookie.js
new file mode 100644
index 0000000..402d00e
--- /dev/null
+++ b/src/js/contentscripts/clobbercookie.js
@@ -0,0 +1,60 @@
+/*
+ * This file is part of Privacy Badger <https://www.eff.org/privacybadger>
+ * Copyright (C) 2014 Electronic Frontier Foundation
+ *
+ * Privacy Badger 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.
+ *
+ * Privacy Badger 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 Privacy Badger. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+(function () {
+
+// don't inject into non-HTML documents (such as XML documents)
+// but do inject into XHTML documents
+if (document instanceof HTMLDocument === false && (
+ document instanceof XMLDocument === false ||
+ document.createElement('div') instanceof HTMLDivElement === false
+)) {
+ return;
+}
+
+// don't bother asking to run when trivially in first-party context
+if (window.top == window) {
+ return;
+}
+
+// TODO race condition; fix waiting on https://crbug.com/478183
+chrome.runtime.sendMessage({
+ type: "checkLocation",
+ frameUrl: window.FRAME_URL
+}, function (blocked) {
+ if (blocked) {
+ var code = '('+ function() {
+ document.__defineSetter__("cookie", function(/*value*/) { });
+ document.__defineGetter__("cookie", function() { return ""; });
+
+ // trim referrer down to origin
+ let referrer = document.referrer;
+ if (referrer) {
+ referrer = referrer.slice(
+ 0,
+ referrer.indexOf('/', referrer.indexOf('://') + 3)
+ ) + '/';
+ }
+ document.__defineGetter__("referrer", function () { return referrer; });
+ } +')();';
+
+ window.injectScript(code);
+ }
+ return true;
+});
+
+}());