Add slim::UIResourceLayer property methods
Mostly copied directly from cc layers. Includes most things except
AppendQuads.
Bug: 1408128
Change-Id: I6c8ea208ed7d49486b583d60d5a332132ec0c0a5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4235467
Reviewed-by: Kyle Charbonneau <kylechar@chromium.org>
Commit-Queue: Bo Liu <boliu@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1103972}
diff --git a/cc/slim/ui_resource_layer.h b/cc/slim/ui_resource_layer.h
index 3053746..1bf01c3 100644
--- a/cc/slim/ui_resource_layer.h
+++ b/cc/slim/ui_resource_layer.h
@@ -6,9 +6,12 @@
#define CC_SLIM_UI_RESOURCE_LAYER_H_
#include "base/component_export.h"
+#include "base/gtest_prod_util.h"
+#include "cc/resources/ui_resource_client.h"
#include "cc/slim/layer.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/gfx/geometry/point_f.h"
+#include "ui/gfx/geometry/rect_f.h"
namespace cc {
class UIResourceLayer;
@@ -24,7 +27,7 @@
// Sets the resource. If they don't exist already, the shared UI resource and
// ID are generated and cached in a map in the associated UIResourceManager.
// Currently, this resource will never be released by the UIResourceManager.
- void SetUIResourceId(int id);
+ void SetUIResourceId(cc::UIResourceId id);
// An alternative way of setting the resource where an ID is used directly. If
// you use this method, you are responsible for updating the ID if the layer
@@ -41,12 +44,31 @@
float top_right,
float bottom_right);
+ // Layer implementation.
+ void SetLayerTree(LayerTree* tree) override;
+
protected:
+ FRIEND_TEST_ALL_PREFIXES(SlimLayerTest, UIResourceLayerProperties);
+
explicit UIResourceLayer(scoped_refptr<cc::UIResourceLayer> cc_layer);
~UIResourceLayer() override;
+ cc::UIResourceId resource_id() const { return resource_id_; }
+ auto uv_top_left() const { return uv_.origin(); }
+ auto uv_bottom_right() const { return uv_.bottom_right(); }
+ const auto& vertex_opacity() const { return vertex_opacity_; }
+
+ bool HasDrawableContent() const override;
+
private:
cc::UIResourceLayer* cc_layer() const;
+ void RefreshResource();
+ void SetUIResourceIdInternal(cc::UIResourceId resource_id);
+
+ cc::UIResourceId resource_id_ = 0;
+ SkBitmap bitmap_;
+ gfx::RectF uv_;
+ float vertex_opacity_[4] = {1.0f, 1.0f, 1.0f, 1.0f};
};
} // namespace cc::slim