#ifndef NET_HTTP_HTTP_CACHE_LOOKUP_MANAGER_H_
#define NET_HTTP_HTTP_CACHE_LOOKUP_MANAGER_H_
#include "base/memory/raw_ptr.h"
#include "net/base/net_export.h"
#include "net/http/http_cache.h"
#include "net/http/http_cache_transaction.h"
#include "net/spdy/server_push_delegate.h"
namespace net {
struct HttpRequestInfo;
class NET_EXPORT_PRIVATE HttpCacheLookupManager : public ServerPushDelegate {
public:
explicit HttpCacheLookupManager(HttpCache* http_cache);
~HttpCacheLookupManager() override;
void OnPush(std::unique_ptr<ServerPushHelper> push_helper,
const NetLogWithSource& session_net_log) override;
void OnLookupComplete(const GURL& url, int rv);
private:
class LookupTransaction {
public:
LookupTransaction(std::unique_ptr<ServerPushHelper> push_helper,
NetLog* net_log);
~LookupTransaction();
int StartLookup(HttpCache* cache,
CompletionOnceCallback callback,
const NetLogWithSource& session_net_log);
void OnLookupComplete(int result);
private:
std::unique_ptr<ServerPushHelper> push_helper_;
std::unique_ptr<HttpRequestInfo> request_;
std::unique_ptr<HttpTransaction> transaction_;
const NetLogWithSource net_log_;
};
raw_ptr<HttpCache> http_cache_;
std::map<GURL, std::unique_ptr<LookupTransaction>> lookup_transactions_;
base::WeakPtrFactory<HttpCacheLookupManager> weak_factory_{this};
};
}
#endif