#include "components/performance_manager/graph/page_node_impl.h"
#include <memory>
#include <utility>
#include "base/check_op.h"
#include "base/functional/bind.h"
#include "base/memory/raw_ptr.h"
#include "base/not_fatal_until.h"
#include "base/time/default_tick_clock.h"
#include "components/performance_manager/graph/frame_node_impl.h"
#include "components/performance_manager/graph/graph_impl.h"
#include "components/performance_manager/graph/graph_impl_operations.h"
#include "components/performance_manager/graph/process_node_impl.h"
#include "components/performance_manager/public/graph/graph_operations.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/web_contents.h"
namespace performance_manager {
PageNodeImpl::PageNodeImpl(base::WeakPtr<content::WebContents> web_contents,
const std::string& browser_context_id,
const GURL& visible_url,
PagePropertyFlags initial_properties,
base::TimeTicks visibility_change_time)
: … { … }
PageNodeImpl::~PageNodeImpl() { … }
const std::string& PageNodeImpl::GetBrowserContextID() const { … }
resource_attribution::PageContext PageNodeImpl::GetResourceContext() const { … }
PageNodeImpl::EmbeddingType PageNodeImpl::GetEmbeddingType() const { … }
PageType PageNodeImpl::GetType() const { … }
bool PageNodeImpl::IsFocused() const { … }
bool PageNodeImpl::IsVisible() const { … }
base::TimeDelta PageNodeImpl::GetTimeSinceLastVisibilityChange() const { … }
bool PageNodeImpl::IsAudible() const { … }
std::optional<base::TimeDelta> PageNodeImpl::GetTimeSinceLastAudibleChange()
const { … }
bool PageNodeImpl::HasPictureInPicture() const { … }
bool PageNodeImpl::IsOffTheRecord() const { … }
PageNode::LoadingState PageNodeImpl::GetLoadingState() const { … }
ukm::SourceId PageNodeImpl::GetUkmSourceID() const { … }
PageNodeImpl::LifecycleState PageNodeImpl::GetLifecycleState() const { … }
bool PageNodeImpl::IsHoldingWebLock() const { … }
bool PageNodeImpl::IsHoldingIndexedDBLock() const { … }
bool PageNodeImpl::UsesWebRTC() const { … }
int64_t PageNodeImpl::GetNavigationID() const { … }
const std::string& PageNodeImpl::GetContentsMimeType() const { … }
std::optional<blink::mojom::PermissionStatus>
PageNodeImpl::GetNotificationPermissionStatus() const { … }
base::TimeDelta PageNodeImpl::GetTimeSinceLastNavigation() const { … }
const GURL& PageNodeImpl::GetMainFrameUrl() const { … }
uint64_t PageNodeImpl::EstimateMainFramePrivateFootprintSize() const { … }
bool PageNodeImpl::HadFormInteraction() const { … }
bool PageNodeImpl::HadUserEdits() const { … }
base::WeakPtr<content::WebContents> PageNodeImpl::GetWebContents() const { … }
uint64_t PageNodeImpl::EstimateResidentSetSize() const { … }
uint64_t PageNodeImpl::EstimatePrivateFootprintSize() const { … }
base::WeakPtr<PageNodeImpl> PageNodeImpl::GetWeakPtrOnUIThread() { … }
base::WeakPtr<PageNodeImpl> PageNodeImpl::GetWeakPtr() { … }
void PageNodeImpl::AddFrame(base::PassKey<FrameNodeImpl>,
FrameNodeImpl* frame_node) { … }
void PageNodeImpl::RemoveFrame(base::PassKey<FrameNodeImpl>,
FrameNodeImpl* frame_node) { … }
void PageNodeImpl::SetLoadingState(LoadingState loading_state) { … }
void PageNodeImpl::SetType(PageType type) { … }
void PageNodeImpl::SetIsFocused(bool is_focused) { … }
void PageNodeImpl::SetIsVisible(bool is_visible) { … }
void PageNodeImpl::SetIsAudible(bool is_audible) { … }
void PageNodeImpl::SetHasPictureInPicture(bool has_picture_in_picture) { … }
void PageNodeImpl::SetUkmSourceId(ukm::SourceId ukm_source_id) { … }
void PageNodeImpl::OnFaviconUpdated() { … }
void PageNodeImpl::OnTitleUpdated() { … }
void PageNodeImpl::OnAboutToBeDiscarded(base::WeakPtr<PageNode> new_page_node) { … }
void PageNodeImpl::SetMainFrameRestoredState(
const GURL& url,
blink::mojom::PermissionStatus notification_permission_status) { … }
void PageNodeImpl::OnMainFrameNavigationCommitted(
bool same_document,
base::TimeTicks navigation_committed_time,
int64_t navigation_id,
const GURL& url,
const std::string& contents_mime_type,
std::optional<blink::mojom::PermissionStatus>
notification_permission_status) { … }
void PageNodeImpl::OnNotificationPermissionStatusChange(
blink::mojom::PermissionStatus permission_status) { … }
FrameNodeImpl* PageNodeImpl::opener_frame_node() const { … }
FrameNodeImpl* PageNodeImpl::embedder_frame_node() const { … }
FrameNodeImpl* PageNodeImpl::main_frame_node() const { … }
PageNode::NodeSetView<FrameNodeImpl*> PageNodeImpl::main_frame_nodes() const { … }
void PageNodeImpl::SetOpenerFrameNode(FrameNodeImpl* opener) { … }
void PageNodeImpl::ClearOpenerFrameNode() { … }
void PageNodeImpl::SetEmbedderFrameNodeAndEmbeddingType(
FrameNodeImpl* embedder,
EmbeddingType embedding_type) { … }
void PageNodeImpl::ClearEmbedderFrameNodeAndEmbeddingType() { … }
void PageNodeImpl::set_has_nonempty_beforeunload(
bool has_nonempty_beforeunload) { … }
void PageNodeImpl::OnJoiningGraph() { … }
void PageNodeImpl::OnBeforeLeavingGraph() { … }
void PageNodeImpl::RemoveNodeAttachedData() { … }
const FrameNode* PageNodeImpl::GetOpenerFrameNode() const { … }
const FrameNode* PageNodeImpl::GetEmbedderFrameNode() const { … }
const FrameNode* PageNodeImpl::GetMainFrameNode() const { … }
PageNode::NodeSetView<const FrameNode*> PageNodeImpl::GetMainFrameNodes()
const { … }
void PageNodeImpl::SetLifecycleState(LifecycleState lifecycle_state) { … }
void PageNodeImpl::SetIsHoldingWebLock(bool is_holding_weblock) { … }
void PageNodeImpl::SetIsHoldingIndexedDBLock(bool is_holding_indexeddb_lock) { … }
void PageNodeImpl::SetUsesWebRTC(bool uses_web_rtc) { … }
void PageNodeImpl::SetHadFormInteraction(bool had_form_interaction) { … }
void PageNodeImpl::SetHadUserEdits(bool had_user_edits) { … }
}