#ifndef CONTENT_BROWSER_RENDERER_HOST_RENDER_FRAME_HOST_OWNER_H_
#define CONTENT_BROWSER_RENDERER_HOST_RENDER_FRAME_HOST_OWNER_H_
#include <memory>
#include <vector>
#include "build/build_config.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "services/network/public/mojom/referrer_policy.mojom-forward.h"
#include "third_party/blink/public/mojom/frame/user_activation_update_types.mojom-forward.h"
#include "third_party/blink/public/mojom/loader/referrer.mojom-forward.h"
#include "ui/base/page_transition_types.h"
#if !BUILDFLAG(IS_ANDROID)
#include "third_party/blink/public/mojom/webauthn/virtual_authenticator.mojom-forward.h"
#endif
class GURL;
namespace net {
class IsolationInfo;
}
namespace url {
class Origin;
}
namespace content {
class CrossOriginEmbedderPolicyReporter;
class NavigationRequest;
class Navigator;
class RenderFrameHostManager;
class RenderFrameHostImpl;
class SubresourceWebBundleNavigationInfo;
class RenderFrameHostOwner {
public:
RenderFrameHostOwner() = default;
virtual ~RenderFrameHostOwner() = default;
virtual void DidStartLoading(
LoadingState previous_frame_tree_loading_state) = 0;
virtual void DidStopLoading() = 0;
virtual void RestartNavigationAsCrossDocument(
std::unique_ptr<NavigationRequest> navigation_request) = 0;
virtual bool Reload() = 0;
virtual Navigator& GetCurrentNavigator() = 0;
virtual RenderFrameHostManager& GetRenderFrameHostManager() = 0;
virtual FrameTreeNode* GetOpener() const = 0;
virtual void SetFocusedFrame(SiteInstanceGroup* source) = 0;
virtual void DidChangeReferrerPolicy(
network::mojom::ReferrerPolicy referrer_policy) = 0;
virtual bool UpdateUserActivationState(
blink::mojom::UserActivationUpdateType update_type,
blink::mojom::UserActivationNotificationType notification_type) = 0;
virtual void DidConsumeHistoryUserActivation() = 0;
virtual void DidOpenDocumentInputStream() = 0;
virtual std::unique_ptr<NavigationRequest>
CreateNavigationRequestForSynchronousRendererCommit(
RenderFrameHostImpl* render_frame_host,
bool is_same_document,
const GURL& url,
const url::Origin& origin,
const absl::optional<GURL>& initiator_base_url,
const net::IsolationInfo& isolation_info_for_subresources,
blink::mojom::ReferrerPtr referrer,
const ui::PageTransition& transition,
bool should_replace_current_entry,
const std::string& method,
bool has_transient_activation,
bool is_overriding_user_agent,
const std::vector<GURL>& redirects,
const GURL& original_url,
std::unique_ptr<CrossOriginEmbedderPolicyReporter> coep_reporter,
std::unique_ptr<SubresourceWebBundleNavigationInfo>
subresource_web_bundle_navigation_info,
int http_response_code) = 0;
virtual void CancelNavigation() = 0;
virtual bool Credentialless() const = 0;
virtual void SetFencedFrameAutomaticBeaconReportEventData(
const std::string& event_data,
const std::vector<blink::FencedFrame::ReportingDestination>&
destinations) = 0;
#if !BUILDFLAG(IS_ANDROID)
virtual void GetVirtualAuthenticatorManager(
mojo::PendingReceiver<blink::test::mojom::VirtualAuthenticatorManager>
receiver) = 0;
#endif
};
}
#endif