#ifndef CONTENT_BROWSER_PRELOADING_SPECULATION_RULES_SPECULATION_HOST_IMPL_H_
#define CONTENT_BROWSER_PRELOADING_SPECULATION_RULES_SPECULATION_HOST_IMPL_H_
#include <vector>
#include "content/public/browser/document_service.h"
#include "third_party/blink/public/mojom/speculation_rules/speculation_rules.mojom.h"
namespace content {
class RenderFrameHost;
class CONTENT_EXPORT SpeculationHostImpl final
: public DocumentService<blink::mojom::SpeculationHost> {
public:
static void Bind(
RenderFrameHost* frame_host,
mojo::PendingReceiver<blink::mojom::SpeculationHost> receiver);
SpeculationHostImpl(const SpeculationHostImpl&) = delete;
SpeculationHostImpl& operator=(const SpeculationHostImpl&) = delete;
SpeculationHostImpl(SpeculationHostImpl&&) = delete;
SpeculationHostImpl& operator=(SpeculationHostImpl&&) = delete;
private:
SpeculationHostImpl(
RenderFrameHost& frame_host,
mojo::PendingReceiver<blink::mojom::SpeculationHost> receiver);
~SpeculationHostImpl() override;
void UpdateSpeculationCandidates(
std::vector<blink::mojom::SpeculationCandidatePtr> candidates,
bool enable_cross_origin_prerender_iframes) override;
void OnLCPPredicted() override;
void InitiatePreview(const GURL& url) override;
};
}
#endif