Commit 88b2fc0f authored by Sigurdur Asgeirsson's avatar Sigurdur Asgeirsson Committed by Commit Bot

[PM] Implement a data describer for PageLoadTrackerDecorator.

Bug: 1068233
Change-Id: I31999fdfdada0061ca3bd274eded98a858ca1c4a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2137515
Commit-Queue: Sigurður Ásgeirsson <siggi@chromium.org>
Reviewed-by: default avatarFrançois Doray <fdoray@chromium.org>
Cr-Commit-Position: refs/heads/master@{#757856}
parent 89a7ef17
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "components/performance_manager/graph/node_attached_data_impl.h" #include "components/performance_manager/graph/node_attached_data_impl.h"
#include "components/performance_manager/graph/page_node_impl.h" #include "components/performance_manager/graph/page_node_impl.h"
#include "components/performance_manager/graph/process_node_impl.h" #include "components/performance_manager/graph/process_node_impl.h"
#include "components/performance_manager/public/graph/node_data_describer_registry.h"
namespace performance_manager { namespace performance_manager {
...@@ -45,6 +46,24 @@ class DataImpl : public PageLoadTrackerDecorator::Data, ...@@ -45,6 +46,24 @@ class DataImpl : public PageLoadTrackerDecorator::Data,
DISALLOW_COPY_AND_ASSIGN(DataImpl); DISALLOW_COPY_AND_ASSIGN(DataImpl);
}; };
// static
const char* ToString(LoadIdleState state) {
switch (state) {
case LoadIdleState::kLoadingNotStarted:
return "kLoadingNotStarted";
case LoadIdleState::kLoading:
return "kLoading";
case LoadIdleState::kLoadedNotIdling:
return "kLoadedNotIdling";
case LoadIdleState::kLoadedAndIdling:
return "kLoadedAndIdling";
case LoadIdleState::kLoadedAndIdle:
return "kLoadedAndIdle";
}
}
const char kDescriberName[] = "PageLoadTrackerDecorator";
} // namespace } // namespace
// static // static
...@@ -67,12 +86,30 @@ void PageLoadTrackerDecorator::OnNetworkAlmostIdleChanged( ...@@ -67,12 +86,30 @@ void PageLoadTrackerDecorator::OnNetworkAlmostIdleChanged(
void PageLoadTrackerDecorator::OnPassedToGraph(Graph* graph) { void PageLoadTrackerDecorator::OnPassedToGraph(Graph* graph) {
RegisterObservers(graph); RegisterObservers(graph);
graph->GetNodeDataDescriberRegistry()->RegisterDescriber(this,
kDescriberName);
} }
void PageLoadTrackerDecorator::OnTakenFromGraph(Graph* graph) { void PageLoadTrackerDecorator::OnTakenFromGraph(Graph* graph) {
graph->GetNodeDataDescriberRegistry()->UnregisterDescriber(this);
UnregisterObservers(graph); UnregisterObservers(graph);
} }
base::Value PageLoadTrackerDecorator::DescribePageNodeData(
const PageNode* page_node) const {
auto* data = DataImpl::Get(PageNodeImpl::FromNode(page_node));
if (data == nullptr)
return base::Value();
base::Value ret(base::Value::Type::DICTIONARY);
ret.SetKey("load_idle_state_",
base::Value(ToString(data->load_idle_state())));
ret.SetKey("loading_received_response_",
base::Value(data->loading_received_response_));
return ret;
}
void PageLoadTrackerDecorator::OnMainThreadTaskLoadIsLow( void PageLoadTrackerDecorator::OnMainThreadTaskLoadIsLow(
const ProcessNode* process_node) { const ProcessNode* process_node) {
UpdateLoadIdleStateProcess(ProcessNodeImpl::FromNode(process_node)); UpdateLoadIdleStateProcess(ProcessNodeImpl::FromNode(process_node));
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "base/timer/timer.h" #include "base/timer/timer.h"
#include "components/performance_manager/public/graph/frame_node.h" #include "components/performance_manager/public/graph/frame_node.h"
#include "components/performance_manager/public/graph/graph.h" #include "components/performance_manager/public/graph/graph.h"
#include "components/performance_manager/public/graph/node_data_describer.h"
#include "components/performance_manager/public/graph/page_node.h" #include "components/performance_manager/public/graph/page_node.h"
#include "components/performance_manager/public/graph/process_node.h" #include "components/performance_manager/public/graph/process_node.h"
...@@ -25,6 +26,7 @@ class ProcessNodeImpl; ...@@ -25,6 +26,7 @@ class ProcessNodeImpl;
// absolute timeout. This state is then updated on PageNodes in a graph. // absolute timeout. This state is then updated on PageNodes in a graph.
class PageLoadTrackerDecorator : public FrameNode::ObserverDefaultImpl, class PageLoadTrackerDecorator : public FrameNode::ObserverDefaultImpl,
public GraphOwnedDefaultImpl, public GraphOwnedDefaultImpl,
public NodeDataDescriberDefaultImpl,
public ProcessNode::ObserverDefaultImpl { public ProcessNode::ObserverDefaultImpl {
public: public:
class Data; class Data;
...@@ -39,6 +41,9 @@ class PageLoadTrackerDecorator : public FrameNode::ObserverDefaultImpl, ...@@ -39,6 +41,9 @@ class PageLoadTrackerDecorator : public FrameNode::ObserverDefaultImpl,
void OnPassedToGraph(Graph* graph) override; void OnPassedToGraph(Graph* graph) override;
void OnTakenFromGraph(Graph* graph) override; void OnTakenFromGraph(Graph* graph) override;
// NodeDataDescriber implementation:
base::Value DescribePageNodeData(const PageNode* node) const override;
// ProcessNodeObserver implementation: // ProcessNodeObserver implementation:
void OnMainThreadTaskLoadIsLow(const ProcessNode* process_node) override; void OnMainThreadTaskLoadIsLow(const ProcessNode* process_node) override;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment