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 @@ ...@@ -12,6 +12,7 @@
#include "ash/style/ash_color_provider.h" #include "ash/style/ash_color_provider.h"
#include "ash/system/holding_space/holding_space_item_view.h" #include "ash/system/holding_space/holding_space_item_view.h"
#include "ash/system/holding_space/holding_space_util.h" #include "ash/system/holding_space/holding_space_util.h"
#include "ui/compositor/layer_owner.h"
#include "ui/compositor/paint_recorder.h" #include "ui/compositor/paint_recorder.h"
#include "ui/gfx/scoped_canvas.h" #include "ui/gfx/scoped_canvas.h"
#include "ui/gfx/skia_paint_util.h" #include "ui/gfx/skia_paint_util.h"
...@@ -64,21 +65,19 @@ class CirclePainter : public views::Painter { ...@@ -64,21 +65,19 @@ class CirclePainter : public views::Painter {
const gfx::InsetsF insets_; const gfx::InsetsF insets_;
}; };
// HoldingSpaceItemChipView::LabelMaskOwner ------------------------------------ // LabelMaskLayerOwner ---------------------------------------------------------
class HoldingSpaceItemChipView::LabelMaskLayerOwner : public ui::LayerDelegate { class LabelMaskLayerOwner : public ui::LayerOwner, public ui::LayerDelegate {
public: public:
LabelMaskLayerOwner() : layer_(ui::LAYER_TEXTURED) { LabelMaskLayerOwner()
layer_.set_delegate(this); : ui::LayerOwner(std::make_unique<ui ::Layer>(ui::LAYER_TEXTURED)) {
layer_.SetFillsBoundsOpaquely(false); layer()->set_delegate(this);
layer()->SetFillsBoundsOpaquely(false);
} }
LabelMaskLayerOwner(const LabelMaskLayerOwner&) = delete; LabelMaskLayerOwner(const LabelMaskLayerOwner&) = delete;
LabelMaskLayerOwner& operator=(const LabelMaskLayerOwner&) = delete; LabelMaskLayerOwner& operator=(const LabelMaskLayerOwner&) = delete;
~LabelMaskLayerOwner() override = default;
~LabelMaskLayerOwner() override { layer_.set_delegate(nullptr); }
ui::Layer* layer() { return &layer_; }
private: private:
// ui::LayerDelegate: // ui::LayerDelegate:
...@@ -105,8 +104,7 @@ class HoldingSpaceItemChipView::LabelMaskLayerOwner : public ui::LayerDelegate { ...@@ -105,8 +104,7 @@ class HoldingSpaceItemChipView::LabelMaskLayerOwner : public ui::LayerDelegate {
flags.setAntiAlias(false); flags.setAntiAlias(false);
gfx::Point gradient_end(size.width() - kHoldingSpaceIconSize, 0); gfx::Point gradient_end(size.width() - kHoldingSpaceIconSize, 0);
gfx::Point gradient_start(gradient_end.x() - kLabelMaskGradientWidth, gfx::Point gradient_start(gradient_end.x() - kLabelMaskGradientWidth, 0);
gradient_end.y());
flags.setShader(gfx::CreateGradientShader( flags.setShader(gfx::CreateGradientShader(
gradient_start, gradient_end, SK_ColorBLACK, SK_ColorTRANSPARENT)); gradient_start, gradient_end, SK_ColorBLACK, SK_ColorTRANSPARENT));
...@@ -115,8 +113,6 @@ class HoldingSpaceItemChipView::LabelMaskLayerOwner : public ui::LayerDelegate { ...@@ -115,8 +113,6 @@ class HoldingSpaceItemChipView::LabelMaskLayerOwner : public ui::LayerDelegate {
void OnDeviceScaleFactorChanged(float old_device_scale_factor, void OnDeviceScaleFactorChanged(float old_device_scale_factor,
float new_device_scale_factor) override {} float new_device_scale_factor) override {}
ui::Layer layer_;
}; };
// HoldingSpaceItemChipView ---------------------------------------------------- // HoldingSpaceItemChipView ----------------------------------------------------
......
...@@ -12,6 +12,10 @@ ...@@ -12,6 +12,10 @@
#include "ash/system/holding_space/holding_space_item_view.h" #include "ash/system/holding_space/holding_space_item_view.h"
#include "ui/views/metadata/metadata_header_macros.h" #include "ui/views/metadata/metadata_header_macros.h"
namespace ui {
class LayerOwner;
} // namespace ui
namespace views { namespace views {
class Label; class Label;
} // namespace views } // namespace views
...@@ -35,8 +39,6 @@ class ASH_EXPORT HoldingSpaceItemChipView : public HoldingSpaceItemView { ...@@ -35,8 +39,6 @@ class ASH_EXPORT HoldingSpaceItemChipView : public HoldingSpaceItemView {
~HoldingSpaceItemChipView() override; ~HoldingSpaceItemChipView() override;
private: private:
class LabelMaskLayerOwner;
// HoldingSpaceItemView: // HoldingSpaceItemView:
views::View* GetTooltipHandlerForPoint(const gfx::Point& point) override; views::View* GetTooltipHandlerForPoint(const gfx::Point& point) override;
void OnHoldingSpaceItemUpdated(const HoldingSpaceItem* item) override; void OnHoldingSpaceItemUpdated(const HoldingSpaceItem* item) override;
...@@ -44,7 +46,7 @@ class ASH_EXPORT HoldingSpaceItemChipView : public HoldingSpaceItemView { ...@@ -44,7 +46,7 @@ class ASH_EXPORT HoldingSpaceItemChipView : public HoldingSpaceItemView {
void UpdateImage(); void UpdateImage();
std::unique_ptr<LabelMaskLayerOwner> label_mask_layer_owner_; std::unique_ptr<ui::LayerOwner> label_mask_layer_owner_;
RoundedImageView* image_ = nullptr; RoundedImageView* image_ = nullptr;
views::Label* label_ = 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