#include "services/network/web_bundle/web_bundle_manager.h"
#include "base/containers/contains.h"
#include "base/functional/bind.h"
#include "base/metrics/histogram_functions.h"
#include "base/ranges/algorithm.h"
#include "base/time/time.h"
#include "components/web_package/web_bundle_utils.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "services/network/network_context.h"
#include "services/network/public/mojom/devtools_observer.mojom.h"
#include "services/network/public/mojom/web_bundle_handle.mojom.h"
#include "services/network/web_bundle/web_bundle_memory_quota_consumer.h"
#include "services/network/web_bundle/web_bundle_url_loader_factory.h"
namespace network {
class WebBundleManager::MemoryQuotaConsumer
: public WebBundleMemoryQuotaConsumer { … };
WebBundleManager::WebBundleManager()
: … { … }
WebBundleManager::~WebBundleManager() = default;
base::WeakPtr<WebBundleURLLoaderFactory>
WebBundleManager::CreateWebBundleURLLoaderFactory(
const GURL& bundle_url,
const ResourceRequest::WebBundleTokenParams& web_bundle_token_params,
int32_t process_id,
mojo::PendingRemote<mojom::DevToolsObserver> devtools_observer,
std::optional<std::string> devtools_request_id,
const CrossOriginEmbedderPolicy& cross_origin_embedder_policy,
mojom::CrossOriginEmbedderPolicyReporter* coep_reporter) { … }
WebBundleManager::Key WebBundleManager::GetKey(
const ResourceRequest::WebBundleTokenParams& token_params,
int32_t process_id) { … }
base::WeakPtr<WebBundleURLLoaderFactory>
WebBundleManager::GetWebBundleURLLoaderFactory(const Key& key) { … }
void WebBundleManager::StartSubresourceRequest(
mojo::PendingReceiver<mojom::URLLoader> receiver,
const ResourceRequest& url_request,
mojo::PendingRemote<mojom::URLLoaderClient> client,
int32_t process_id,
mojo::Remote<mojom::TrustedHeaderClient> trusted_header_client) { … }
void WebBundleManager::CleanUpWillBeDeletedURLLoader(
Key key,
WebBundleURLLoaderFactory::URLLoader* will_be_deleted_url_loader) { … }
void WebBundleManager::DisconnectHandler(Key key) { … }
bool WebBundleManager::AllocateMemoryForProcess(int32_t process_id,
uint64_t num_bytes) { … }
void WebBundleManager::ReleaseMemoryForProcess(int32_t process_id,
uint64_t num_bytes) { … }
}