Commit db7db7e4 authored by David Black's avatar David Black Committed by Chromium LUCI CQ

Use proper ui::LayerOwner for holding space item view label mask.

Previously a ui::Layer was directly owned which doesn't handle the case
of layer recreation which is handled by ui::LayerOwner.

Bug: 1166959
Change-Id: I92efce13e7a8a48423547cf134214d6b23b5c371
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2631298Reviewed-by: default avatarToni Baržić <tbarzic@chromium.org>
Commit-Queue: David Black <dmblack@google.com>
Cr-Commit-Position: refs/heads/master@{#843911}
parent ca65cc4a
......@@ -12,6 +12,7 @@
#include "ash/style/ash_color_provider.h"
#include "ash/system/holding_space/holding_space_item_view.h"
#include "ash/system/holding_space/holding_space_util.h"
#include "ui/compositor/layer_owner.h"
#include "ui/compositor/paint_recorder.h"
#include "ui/gfx/scoped_canvas.h"
#include "ui/gfx/skia_paint_util.h"
......@@ -64,21 +65,19 @@ class CirclePainter : public views::Painter {
const gfx::InsetsF insets_;
};
// HoldingSpaceItemChipView::LabelMaskOwner ------------------------------------
// LabelMaskLayerOwner ---------------------------------------------------------
class HoldingSpaceItemChipView::LabelMaskLayerOwner : public ui::LayerDelegate {
class LabelMaskLayerOwner : public ui::LayerOwner, public ui::LayerDelegate {
public:
LabelMaskLayerOwner() : layer_(ui::LAYER_TEXTURED) {
layer_.set_delegate(this);
layer_.SetFillsBoundsOpaquely(false);
LabelMaskLayerOwner()
: ui::LayerOwner(std::make_unique<ui ::Layer>(ui::LAYER_TEXTURED)) {
layer()->set_delegate(this);
layer()->SetFillsBoundsOpaquely(false);
}
LabelMaskLayerOwner(const LabelMaskLayerOwner&) = delete;
LabelMaskLayerOwner& operator=(const LabelMaskLayerOwner&) = delete;
~LabelMaskLayerOwner() override { layer_.set_delegate(nullptr); }
ui::Layer* layer() { return &layer_; }
~LabelMaskLayerOwner() override = default;
private:
// ui::LayerDelegate:
......@@ -105,8 +104,7 @@ class HoldingSpaceItemChipView::LabelMaskLayerOwner : public ui::LayerDelegate {
flags.setAntiAlias(false);
gfx::Point gradient_end(size.width() - kHoldingSpaceIconSize, 0);
gfx::Point gradient_start(gradient_end.x() - kLabelMaskGradientWidth,
gradient_end.y());
gfx::Point gradient_start(gradient_end.x() - kLabelMaskGradientWidth, 0);
flags.setShader(gfx::CreateGradientShader(
gradient_start, gradient_end, SK_ColorBLACK, SK_ColorTRANSPARENT));
......@@ -115,8 +113,6 @@ class HoldingSpaceItemChipView::LabelMaskLayerOwner : public ui::LayerDelegate {
void OnDeviceScaleFactorChanged(float old_device_scale_factor,
float new_device_scale_factor) override {}
ui::Layer layer_;
};
// HoldingSpaceItemChipView ----------------------------------------------------
......
......@@ -12,6 +12,10 @@
#include "ash/system/holding_space/holding_space_item_view.h"
#include "ui/views/metadata/metadata_header_macros.h"
namespace ui {
class LayerOwner;
} // namespace ui
namespace views {
class Label;
} // namespace views
......@@ -35,8 +39,6 @@ class ASH_EXPORT HoldingSpaceItemChipView : public HoldingSpaceItemView {
~HoldingSpaceItemChipView() override;
private:
class LabelMaskLayerOwner;
// HoldingSpaceItemView:
views::View* GetTooltipHandlerForPoint(const gfx::Point& point) override;
void OnHoldingSpaceItemUpdated(const HoldingSpaceItem* item) override;
......@@ -44,7 +46,7 @@ class ASH_EXPORT HoldingSpaceItemChipView : public HoldingSpaceItemView {
void UpdateImage();
std::unique_ptr<LabelMaskLayerOwner> label_mask_layer_owner_;
std::unique_ptr<ui::LayerOwner> label_mask_layer_owner_;
RoundedImageView* image_ = nullptr;
views::Label* label_ = nullptr;
......
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