diff --git a/patches/privacy/remove-google-click-tracking.patch b/patches/privacy/remove-google-click-tracking.patch new file mode 100644 index 00000000..069ba4cc --- /dev/null +++ b/patches/privacy/remove-google-click-tracking.patch @@ -0,0 +1,57 @@ +commit 8d0b67d87462d537af6f7eb0cf445a2f66d5dd5c +Author: csagan5 <32685696+csagan5@users.noreply.github.com> +Date: Sun Oct 15 18:01:18 2017 +0200 + + Remove click tracking from google search results + +diff --git a/third_party/WebKit/Source/core/dom/ContainerNode.cpp b/third_party/WebKit/Source/core/dom/ContainerNode.cpp +index 1bada98..fb15e01 100644 +--- a/third_party/WebKit/Source/core/dom/ContainerNode.cpp ++++ b/third_party/WebKit/Source/core/dom/ContainerNode.cpp +@@ -58,6 +58,8 @@ + #include "platform/bindings/RuntimeCallStats.h" + #include "platform/bindings/V8PerIsolateData.h" + ++#include "base/logging.h" ++ + namespace blink { + + using namespace HTMLNames; +@@ -1391,6 +1393,26 @@ StaticElementList* ContainerNode::QuerySelectorAll( + return QuerySelectorAll(selectors, ASSERT_NO_EXCEPTION); + } + ++// this logic here will cleanup click tracking from hyperlink nodes on search results ++static void applyInsertCustomization(Document *document, Node *c) { ++ if (c->getNodeType() != Node::kElementNode) ++ return; ++ Element *element = ToElement(c); ++ ++ // filter out non-hyperlink nodes ++ if (element->tagName() != "A") ++ return; ++ ++ // determine whether this is a Google search results page ++ WTF::String domain = document->GetSecurityOrigin()->Domain(); ++ size_t pos = domain.Find(".google."); ++ if ((pos != WTF::kNotFound) && (domain.length() - pos - 8 < 4)) { ++ //LOG(INFO) << "sanitizing Google search results hyperlink, href: " << element->getAttribute("href") << " onmousedown: " << element->getAttribute("onmousedown"); ++ // remove attribute ++ element->removeAttribute("onmousedown"); ++ } ++} ++ + static void DispatchChildInsertionEvents(Node& child) { + if (child.IsInShadowTree()) + return; +@@ -1402,6 +1424,10 @@ static void DispatchChildInsertionEvents(Node& child) { + Node* c = &child; + Document* document = &child.GetDocument(); + ++ // csagan5: no extension support in Chrom* for Android? no problem! we add custom code directly here ++ if (c->parentNode()) ++ applyInsertCustomization(document, c); ++ + if (c->parentNode() && + document->HasListenerType(Document::kDOMNodeInsertedListener)) + c->DispatchScopedEvent(MutationEvent::Create(