blob: eb9f5eff14ed946f0cfae5b54666ff5f0e2c7f91 [file]
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/performance_manager/performance_manager_feature_observer_client.h"
#include "components/performance_manager/graph/frame_node_impl.h"
#include "components/performance_manager/performance_manager_impl.h"
#include "components/performance_manager/public/graph/process_node.h"
namespace performance_manager {
namespace {
void OnChangeNodeUsing(content::GlobalRenderFrameHostId id,
blink::mojom::ObservedFeatureType feature_type,
bool is_using) {
GraphImpl* graph = PerformanceManagerImpl::GetGraphImpl();
FrameNodeImpl* frame_node = graph->GetFrameNodeById(
RenderProcessHostId(id.child_id), id.frame_routing_id);
if (!frame_node)
return;
switch (feature_type) {
case blink::mojom::ObservedFeatureType::kWebLock:
frame_node->SetIsHoldingWebLock(is_using);
return;
case blink::mojom::ObservedFeatureType::kBlockingIndexedDBLock:
frame_node->SetIsHoldingBlockingIndexedDBLock(is_using);
return;
}
NOTREACHED();
}
} // namespace
PerformanceManagerFeatureObserverClient::
PerformanceManagerFeatureObserverClient() = default;
PerformanceManagerFeatureObserverClient::
~PerformanceManagerFeatureObserverClient() = default;
void PerformanceManagerFeatureObserverClient::OnStartUsing(
content::GlobalRenderFrameHostId id,
blink::mojom::ObservedFeatureType feature_type) {
bool is_using = true;
OnChangeNodeUsing(id, feature_type, is_using);
}
void PerformanceManagerFeatureObserverClient::OnStopUsing(
content::GlobalRenderFrameHostId id,
blink::mojom::ObservedFeatureType feature_type) {
bool is_using = false;
OnChangeNodeUsing(id, feature_type, is_using);
}
} // namespace performance_manager