blob: f8a9f5ff025d3f9328e86bc29afd3d7ddb3b2dff [file] [log] [blame]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/compositor/compositor_property_tree_delegate.h"
#include "base/check.h"
#include "base/trace_event/trace_event.h"
#include "cc/input/scroll_snap_data.h"
#include "cc/paint/element_id.h"
#include "cc/trees/layer_tree_host.h"
#include "cc/trees/mutator_host_client.h"
#include "cc/trees/property_tree_builder.h"
#include "ui/compositor/compositor.h"
#include "ui/compositor/compositor_export.h"
#include "ui/gfx/geometry/vector2d_f.h"
namespace ui {
void CompositorPropertyTreeDelegate::UpdatePropertyTreesIfNeeded() {
// Note that this code is identical to the base method, except that
// we update the method names in the trace events to be more accurate.
// TODO(crbug.com/389771428): Implement this w/ layer lists.
// Note: this leaves the _BuiltPropertyTrees trace event guarded by
// cc.debug to be consistent with the default implementations in cc and
// so we don't need to set two different logging options to get the output.
TRACE_EVENT0("ui",
"CompositorPropertyTreeDelegate::UpdatePropertyTreesIfNeeded");
cc::PropertyTreeBuilder::BuildPropertyTrees(host());
DCHECK(compositor_);
compositor_->CheckPropertyTrees();
TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("cc.debug"),
"CompositorPropertyTreeDelegate::"
"UpdatePropertyTreesIfNeeded_BuiltPropertyTrees",
TRACE_EVENT_SCOPE_THREAD, "property_trees",
host()->property_trees()->AsTracedValue());
if (observer_) {
observer_->OnUpdateCalled(host());
}
}
void CompositorPropertyTreeDelegate::UpdateScrollOffsetFromImpl(
const cc::ElementId& id,
const gfx::Vector2dF& delta,
cc::ScrollSourceType type,
const std::optional<cc::TargetSnapAreaElementIds>& snap_target_ids) {
// TODO(crbug.com/389771428): Implement this w/ layer lists. For now,
// just call the base class implementation to ensure that we don't get
// out of date.
cc::PropertyTreeLayerTreeDelegate::UpdateScrollOffsetFromImpl(
id, delta, type, snap_target_ids);
}
void CompositorPropertyTreeDelegate::OnAnimateLayers() {
// TODO(crbug.com/389771428): Implement this w/ layer lists. For now,
// just call the base class implementation to ensure that we don't get
// out of date.
cc::PropertyTreeLayerTreeDelegate::OnAnimateLayers();
}
void CompositorPropertyTreeDelegate::RegisterViewportPropertyIds(
const cc::ViewportPropertyIds& ids) {
// TODO(crbug.com/389771428): Implement this w/ layer lists. For now, just
// call the base class implementation to ensure that we don't get out of date.
cc::PropertyTreeLayerTreeDelegate::RegisterViewportPropertyIds(ids);
}
void CompositorPropertyTreeDelegate::OnUnregisterElement(
cc::ElementId element_id) {
// TODO(crbug.com/389771428): Implement this w/ layer lists. For now,
// just call the base class implementation to ensure that we don't get
// out of date.
cc::PropertyTreeLayerTreeDelegate::OnUnregisterElement(element_id);
}
bool CompositorPropertyTreeDelegate::IsElementInPropertyTrees(
cc::ElementId element_id,
cc::ElementListType list_type) const {
// TODO(crbug.com/389771428): Implement this w/ layer lists. For now,
// just call the base class implementation to ensure that we don't get
// out of date.
return cc::PropertyTreeLayerTreeDelegate::IsElementInPropertyTrees(element_id,
list_type);
}
void CompositorPropertyTreeDelegate::OnElementFilterMutated(
cc::ElementId element_id,
cc::ElementListType list_type,
const cc::FilterOperations& filters) {
// TODO(crbug.com/389771428): Implement this w/ layer lists. For now,
// just call the base class implementation to ensure that we don't get
// out of date.
cc::PropertyTreeLayerTreeDelegate::OnElementFilterMutated(element_id,
list_type, filters);
}
void CompositorPropertyTreeDelegate::OnElementBackdropFilterMutated(
cc::ElementId element_id,
cc::ElementListType list_type,
const cc::FilterOperations& backdrop_filters) {
// TODO(crbug.com/389771428): Implement this w/ layer lists. For now,
// just call the base class implementation to ensure that we don't get
// out of date.
cc::PropertyTreeLayerTreeDelegate::OnElementBackdropFilterMutated(
element_id, list_type, backdrop_filters);
}
void CompositorPropertyTreeDelegate::OnElementOpacityMutated(
cc::ElementId element_id,
cc::ElementListType list_type,
float opacity) {
// TODO(crbug.com/389771428): Implement this w/ layer lists. For now,
// just call the base class implementation to ensure that we don't get
// out of date.
cc::PropertyTreeLayerTreeDelegate::OnElementOpacityMutated(
element_id, list_type, opacity);
}
void CompositorPropertyTreeDelegate::OnElementTransformMutated(
cc::ElementId element_id,
cc::ElementListType list_type,
const gfx::Transform& transform) {
// TODO(crbug.com/389771428): Implement this w/ layer lists. For now,
// just call the base class implementation to ensure that we don't get
// out of date.
cc::PropertyTreeLayerTreeDelegate::OnElementTransformMutated(
element_id, list_type, transform);
}
void CompositorPropertyTreeDelegate::SetObserverForTesting(Observer* observer) {
observer_ = observer;
}
} // namespace ui