    return url::FindAndCompareScheme(utf8_input, url::kHttpScheme, nullptr);
 --- a/content/browser/browser_url_handler_impl.cc
 +++ b/content/browser/browser_url_handler_impl.cc
-@@ -14,9 +14,34 @@
- #include "content/public/common/url_constants.h"
+@@ -15,8 +15,26 @@
  #include "content/public/common/url_utils.h"
  #include "url/gurl.h"
-+#include "net/url_request/url_request.h"
-+
+ 
 +#include "third_party/ungoogled/util.h"
- 
++
  namespace content {
  
 +static bool HandleTraceScheme(GURL* url, BrowserContext*) {
 +  if (ungoogled::IsTrkURL(*url)) {
 +    LOG(ERROR) << "Blocked URL in HandleTraceScheme: " << url->spec();
-+    ungoogled::TrkNotifierType trk_notifier = net::URLRequest::GetTrkNotifier();
-+    if (trk_notifier == nullptr) {
-+      LOG(ERROR) << "Trk notification handler is not set.";
-+    } else {
-+      (*trk_notifier)("HandleTraceScheme", *url);
-+    }
 +    *url = GURL(url::kAboutBlankURL);
 +  }
 +  return false;

 // Handles rewriting view-source URLs for what we'll actually load.
 static bool HandleViewSource(GURL* url, BrowserContext* browser_context) {
   if (url->SchemeIs(kViewSourceScheme)) {
@@ -98,6 +123,7 @@ BrowserURLHandlerImpl::BrowserURLHandler
   // view-source: should take precedence over other rewriters, so it's
   // important to add it before calling up to the content client.
   AddHandlerPair(&HandleViewSource, &ReverseViewSource);

 ChildProcessSecurityPolicyImpl::~ChildProcessSecurityPolicyImpl() {
--- /dev/null
+++ b/third_party/ungoogled/BUILD.gn
@@ -0,0 +1,36 @@
+# Provides low-level utilities
+source_set("util") {
+  sources = [
