#include "third_party/blink/renderer/core/frame/frame.h"
#include <memory>
#include "third_party/blink/public/common/features.h"
#include "third_party/blink/public/mojom/fenced_frame/fenced_frame.mojom-blink.h"
#include "third_party/blink/public/mojom/frame/frame.mojom-blink.h"
#include "third_party/blink/public/mojom/frame/frame_owner_properties.mojom-blink.h"
#include "third_party/blink/public/web/web_local_frame.h"
#include "third_party/blink/public/web/web_local_frame_client.h"
#include "third_party/blink/renderer/bindings/core/v8/window_proxy_manager.h"
#include "third_party/blink/renderer/core/accessibility/ax_object_cache.h"
#include "third_party/blink/renderer/core/buildflags.h"
#include "third_party/blink/renderer/core/dom/document_type.h"
#include "third_party/blink/renderer/core/dom/events/event.h"
#include "third_party/blink/renderer/core/dom/increment_load_event_delay_count.h"
#include "third_party/blink/renderer/core/dom/node_computed_style.h"
#include "third_party/blink/renderer/core/execution_context/window_agent_factory.h"
#include "third_party/blink/renderer/core/frame/frame_owner.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/core/frame/page_dismissal_scope.h"
#include "third_party/blink/renderer/core/frame/remote_frame_owner.h"
#include "third_party/blink/renderer/core/frame/settings.h"
#include "third_party/blink/renderer/core/frame/web_remote_frame_impl.h"
#include "third_party/blink/renderer/core/html/html_frame_element_base.h"
#include "third_party/blink/renderer/core/html/html_object_element.h"
#include "third_party/blink/renderer/core/input/event_handler.h"
#include "third_party/blink/renderer/core/layout/layout_embedded_content.h"
#include "third_party/blink/renderer/core/loader/empty_clients.h"
#include "third_party/blink/renderer/core/loader/form_submission.h"
#include "third_party/blink/renderer/core/page/focus_controller.h"
#include "third_party/blink/renderer/core/page/page.h"
#include "third_party/blink/renderer/core/probe/core_probes.h"
#include "third_party/blink/renderer/core/timing/dom_window_performance.h"
#include "third_party/blink/renderer/platform/bindings/script_forbidden_scope.h"
#include "third_party/blink/renderer/platform/instrumentation/instance_counters.h"
#include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
#include "third_party/blink/renderer/platform/loader/fetch/resource_error.h"
#include "third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h"
#include "third_party/blink/renderer/platform/wtf/assertions.h"
#if !BUILDFLAG(TARGET_OS_IS_ANDROID)
#include "third_party/blink/renderer/core/frame/picture_in_picture_controller.h"
#endif
namespace blink {
Frame* Frame::ResolveFrame(const FrameToken& frame_token) { … }
Frame::~Frame() { … }
void Frame::Trace(Visitor* visitor) const { … }
bool Frame::Detach(FrameDetachType type) { … }
void Frame::DisconnectOwnerElement() { … }
Page* Frame::GetPage() const { … }
bool Frame::IsMainFrame() const { … }
bool Frame::IsOutermostMainFrame() const { … }
bool Frame::IsCrossOriginToNearestMainFrame() const { … }
bool Frame::IsCrossOriginToOutermostMainFrame() const { … }
bool Frame::IsCrossOriginToParentOrOuterDocument() const { … }
HTMLFrameOwnerElement* Frame::DeprecatedLocalOwner() const { … }
static ChromeClient& GetEmptyChromeClient() { … }
ChromeClient& Frame::GetChromeClient() const { … }
Frame* Frame::FindUnsafeParentScrollPropagationBoundary() { … }
LayoutEmbeddedContent* Frame::OwnerLayoutObject() const { … }
Settings* Frame::GetSettings() const { … }
WindowProxy* Frame::GetWindowProxy(DOMWrapperWorld& world) { … }
WindowProxy* Frame::GetWindowProxyMaybeUninitialized(DOMWrapperWorld& world) { … }
void Frame::DidChangeVisibilityState() { … }
void Frame::NotifyUserActivationInFrameTreeStickyOnly() { … }
void Frame::NotifyUserActivationInFrameTree(
mojom::blink::UserActivationNotificationType notification_type,
bool sticky_only) { … }
bool Frame::ConsumeTransientUserActivationInFrameTree() { … }
void Frame::ClearUserActivationInFrameTree() { … }
void Frame::RenderFallbackContent() { … }
bool Frame::IsInFencedFrameTree() const { … }
bool Frame::IsFencedFrameRoot() const { … }
std::optional<blink::FencedFrame::DeprecatedFencedFrameMode>
Frame::GetDeprecatedFencedFrameMode() const { … }
void Frame::SetOwner(FrameOwner* owner) { … }
void Frame::UpdateInertIfPossible() { … }
void Frame::UpdateInheritedEffectiveTouchActionIfPossible() { … }
void Frame::UpdateVisibleToHitTesting() { … }
const std::string& Frame::GetFrameIdForTracing() { … }
void Frame::SetEmbeddingToken(const base::UnguessableToken& embedding_token) { … }
Frame::Frame(FrameClient* client,
Page& page,
FrameOwner* owner,
Frame* parent,
Frame* previous_sibling,
FrameInsertType insert_type,
const FrameToken& frame_token,
const base::UnguessableToken& devtools_frame_token,
WindowProxyManager* window_proxy_manager,
WindowAgentFactory* inheriting_agent_factory)
: … { … }
void Frame::Initialize() { … }
void Frame::FocusImpl() { … }
void Frame::ApplyFrameOwnerProperties(
mojom::blink::FrameOwnerPropertiesPtr properties) { … }
void Frame::InsertAfter(Frame* new_child, Frame* previous_sibling) { … }
base::OnceClosure Frame::ScheduleFormSubmission(
FrameScheduler* scheduler,
FormSubmission* form_submission) { … }
void Frame::CancelFormSubmission() { … }
void Frame::CancelFormSubmissionWithVersion(uint64_t version) { … }
bool Frame::IsFormSubmissionPending() { … }
void Frame::FocusPage(LocalFrame* originating_frame) { … }
void Frame::SetOpenerDoNotNotify(Frame* opener) { … }
Frame* Frame::Parent() const { … }
Frame* Frame::Top() { … }
bool Frame::AllowFocusWithoutUserActivation() { … }
bool Frame::Swap(WebLocalFrame* new_web_frame) { … }
bool Frame::Swap(WebRemoteFrame* new_web_frame,
mojo::PendingAssociatedRemote<mojom::blink::RemoteFrameHost>
remote_frame_host,
mojo::PendingAssociatedReceiver<mojom::blink::RemoteFrame>
remote_frame_receiver) { … }
bool Frame::SwapImpl(
WebFrame* new_web_frame,
mojo::PendingAssociatedRemote<mojom::blink::RemoteFrameHost>
remote_frame_host,
mojo::PendingAssociatedReceiver<mojom::blink::RemoteFrame>
remote_frame_receiver) { … }
void Frame::NotifyUserActivationInFrame(
Frame* node,
mojom::blink::UserActivationNotificationType notification_type,
bool sticky_only) { … }
void Frame::RemoveChild(Frame* child) { … }
void Frame::DetachFromParent() { … }
HeapVector<Member<Resource>> Frame::AllResourcesUnderFrame() { … }
}