summaryrefslogtreecommitdiff
path: root/chromium/components/custom_handlers/protocol_handler_throttle.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/components/custom_handlers/protocol_handler_throttle.h')
-rw-r--r--chromium/components/custom_handlers/protocol_handler_throttle.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/chromium/components/custom_handlers/protocol_handler_throttle.h b/chromium/components/custom_handlers/protocol_handler_throttle.h
new file mode 100644
index 00000000000..2a79d2980f8
--- /dev/null
+++ b/chromium/components/custom_handlers/protocol_handler_throttle.h
@@ -0,0 +1,44 @@
+// Copyright 2022 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_CUSTOM_HANDLERS_PROTOCOL_HANDLER_THROTTLE_H_
+#define COMPONENTS_CUSTOM_HANDLERS_PROTOCOL_HANDLER_THROTTLE_H_
+
+#include "base/memory/raw_ptr.h"
+#include "url/gurl.h"
+
+#include "third_party/blink/public/common/loader/url_loader_throttle.h"
+
+namespace custom_handlers {
+
+class ProtocolHandlerRegistry;
+
+class ProtocolHandlerThrottle : public blink::URLLoaderThrottle {
+ public:
+ explicit ProtocolHandlerThrottle(const ProtocolHandlerRegistry&);
+ ~ProtocolHandlerThrottle() override = default;
+
+ void WillStartRequest(network::ResourceRequest* request,
+ bool* defer) override;
+
+ void WillRedirectRequest(
+ net::RedirectInfo* redirect_info,
+ const network::mojom::URLResponseHead& response_head,
+ bool* defer,
+ std::vector<std::string>* to_be_removed_headers,
+ net::HttpRequestHeaders* modified_headers,
+ net::HttpRequestHeaders* modified_cors_exempt_headers) override;
+
+ private:
+ // If the @url has a custom protocol handler, the argument will return the
+ // translated url.
+ void TranslateUrl(GURL& url);
+ // The ProtocolHandlerRegistry instance is a KeyedService which ownership is
+ // managed by the BrowseContext.
+ raw_ptr<const ProtocolHandlerRegistry> protocol_handler_registry_;
+};
+
+} // namespace custom_handlers
+
+#endif // COMPONENTS_CUSTOM_HANDLERS_PROTOCOL_HANDLER_THROTTLE_H_