Files
brave-core/browser/net/brave_request_handler.h
T
Brian Johnson f9b8cc532d Add template/feature flag to toggle BraveRequestInfo to unique_ptr/WeakPtr for BraveRequestInfo (#33949)
The templates should be removed along with the feature flag when we switch over to unique_ptr
2026-02-23 06:15:29 -07:00

66 lines
2.3 KiB
C++

/* Copyright (c) 2019 The Brave Authors. All rights reserved.
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef BRAVE_BROWSER_NET_BRAVE_REQUEST_HANDLER_H_
#define BRAVE_BROWSER_NET_BRAVE_REQUEST_HANDLER_H_
#include <map>
#include <memory>
#include <string>
#include <vector>
#include "base/memory/scoped_refptr.h"
#include "brave/browser/net/url_context.h"
#include "content/public/browser/browser_thread.h"
#include "net/base/completion_once_callback.h"
class PrefChangeRegistrar;
// Contains different network stack hooks (similar to capabilities of WebRequest
// API).
template <template <typename> class T>
class BraveRequestHandler {
public:
BraveRequestHandler();
BraveRequestHandler(const BraveRequestHandler&) = delete;
BraveRequestHandler& operator=(const BraveRequestHandler&) = delete;
~BraveRequestHandler();
bool IsRequestIdentifierValid(uint64_t request_identifier);
int OnBeforeURLRequest(T<brave::BraveRequestInfo> ctx,
net::CompletionOnceCallback callback,
GURL* new_url);
int OnBeforeStartTransaction(T<brave::BraveRequestInfo> ctx,
net::CompletionOnceCallback callback,
net::HttpRequestHeaders* headers);
int OnHeadersReceived(
T<brave::BraveRequestInfo> ctx,
net::CompletionOnceCallback callback,
const net::HttpResponseHeaders* original_response_headers,
scoped_refptr<net::HttpResponseHeaders>* override_response_headers,
GURL* allowed_unsafe_redirect_url);
void OnURLRequestDestroyed(T<brave::BraveRequestInfo> ctx);
void RunCallbackForRequestIdentifier(uint64_t request_identifier, int rv);
private:
void SetupCallbacks();
void RunNextCallback(T<brave::BraveRequestInfo> ctx);
std::vector<brave::OnBeforeURLRequestCallback<T>>
before_url_request_callbacks_;
std::vector<brave::OnBeforeStartTransactionCallback<T>>
before_start_transaction_callbacks_;
std::vector<brave::OnHeadersReceivedCallback<T>> headers_received_callbacks_;
std::map<uint64_t, net::CompletionOnceCallback> callbacks_;
base::WeakPtrFactory<BraveRequestHandler> weak_factory_{this};
};
#endif // BRAVE_BROWSER_NET_BRAVE_REQUEST_HANDLER_H_