Remove MahiWidgetDelegate and use factory method for custom
NonClientFrameView Bug: b:40128321 Change-Id: I65067f539d0e893039a0a66c7fe0267d2f84c064 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6126614 Commit-Queue: Zoraiz Naeem <zoraiznaeem@chromium.org> Reviewed-by: Mitsuru Oshima <oshima@chromium.org> Cr-Commit-Position: refs/heads/main@{#1401641}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
6de1e093b5
commit
29fcd0feb3
@ -2050,8 +2050,6 @@ component("ash") {
|
||||
"system/mahi/mahi_ui_update.h",
|
||||
"system/mahi/mahi_utils.cc",
|
||||
"system/mahi/mahi_utils.h",
|
||||
"system/mahi/mahi_widget_delegate.cc",
|
||||
"system/mahi/mahi_widget_delegate.h",
|
||||
"system/mahi/refresh_banner_view.cc",
|
||||
"system/mahi/refresh_banner_view.h",
|
||||
"system/mahi/summary_outlines_elucidation_section.cc",
|
||||
|
@ -6,14 +6,15 @@
|
||||
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
#include <utility>
|
||||
|
||||
#include "ash/frame/non_client_frame_view_ash.h"
|
||||
#include "ash/public/cpp/shell_window_ids.h"
|
||||
#include "ash/shell.h"
|
||||
#include "ash/strings/grit/ash_strings.h"
|
||||
#include "ash/system/mahi/mahi_constants.h"
|
||||
#include "ash/system/mahi/mahi_panel_view.h"
|
||||
#include "ash/system/mahi/mahi_ui_controller.h"
|
||||
#include "ash/system/mahi/mahi_widget_delegate.h"
|
||||
#include "ash/system/mahi/refresh_banner_view.h"
|
||||
#include "ash/wm/window_properties.h"
|
||||
#include "ash/wm/work_area_insets.h"
|
||||
@ -34,6 +35,8 @@
|
||||
#include "ui/views/view_utils.h"
|
||||
#include "ui/views/widget/unique_widget_ptr.h"
|
||||
#include "ui/views/widget/widget.h"
|
||||
#include "ui/views/widget/widget_delegate.h"
|
||||
#include "ui/views/window/non_client_view.h"
|
||||
|
||||
namespace ash {
|
||||
|
||||
@ -107,6 +110,30 @@ std::unique_ptr<views::BoxLayoutView> CreateMahiPanelContentsView() {
|
||||
.Build();
|
||||
}
|
||||
|
||||
// TODO(zoraiznaem): Investigate if MahiFrameView needs NonClientFrameViewAsh.
|
||||
class MahiFrameView : public NonClientFrameViewAsh {
|
||||
public:
|
||||
explicit MahiFrameView(views::Widget* frame) : NonClientFrameViewAsh(frame) {
|
||||
SetFrameEnabled(false);
|
||||
SetShouldPaintHeader(false);
|
||||
}
|
||||
|
||||
MahiFrameView(const MahiFrameView&) = delete;
|
||||
MahiFrameView& operator=(const MahiFrameView&) = delete;
|
||||
|
||||
~MahiFrameView() override = default;
|
||||
|
||||
// views::NonClientFrameView:
|
||||
gfx::Size GetMinimumSize() const override {
|
||||
return gfx::Size(mahi_constants::kPanelDefaultWidth,
|
||||
mahi_constants::kPanelDefaultHeight);
|
||||
}
|
||||
gfx::Size GetMaximumSize() const override {
|
||||
return gfx::Size(mahi_constants::kPanelMaximumWidth,
|
||||
mahi_constants::kPanelMaximumHeight);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
MahiPanelWidget::MahiPanelWidget(InitParams params,
|
||||
@ -149,11 +176,18 @@ views::UniqueWidgetPtr MahiPanelWidget::CreateAndShowPanelWidget(
|
||||
// so that it can be set on the client view. Else the contents view will be
|
||||
// set on the widget directly as there will be no client view.
|
||||
if (base::FeatureList::IsEnabled(chromeos::features::kMahiPanelResizable)) {
|
||||
auto delegate = std::make_unique<MahiWidgetDelegate>();
|
||||
auto delegate = std::make_unique<views::WidgetDelegate>();
|
||||
|
||||
// Set to true so that the delegate deletes itself.
|
||||
delegate->SetOwnedByWidget(true);
|
||||
delegate->SetCanResize(true);
|
||||
delegate->SetContentsView(std::move(contents_view));
|
||||
delegate->SetNonClientFrameViewFactory(
|
||||
base::BindRepeating([](views::Widget* widget)
|
||||
-> std::unique_ptr<views::NonClientFrameView> {
|
||||
return std::make_unique<MahiFrameView>(widget);
|
||||
}));
|
||||
|
||||
params.delegate = delegate.release();
|
||||
|
||||
// If resizable, disable the resize shadow on the window border.
|
||||
|
@ -1,54 +0,0 @@
|
||||
// Copyright 2024 The Chromium Authors
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#include "ash/system/mahi/mahi_widget_delegate.h"
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "ash/frame/non_client_frame_view_ash.h"
|
||||
#include "ash/system/mahi/mahi_constants.h"
|
||||
#include "ui/chromeos/styles/cros_tokens_color_mappings.h"
|
||||
#include "ui/gfx/geometry/size.h"
|
||||
#include "ui/views/background.h"
|
||||
#include "ui/views/widget/widget.h"
|
||||
#include "ui/views/window/non_client_view.h"
|
||||
|
||||
namespace ash {
|
||||
|
||||
namespace {
|
||||
|
||||
class MahiFrameView : public NonClientFrameViewAsh {
|
||||
public:
|
||||
explicit MahiFrameView(views::Widget* frame) : NonClientFrameViewAsh(frame) {}
|
||||
~MahiFrameView() override = default;
|
||||
MahiFrameView(const MahiFrameView&) = delete;
|
||||
MahiFrameView& operator=(const MahiFrameView&) = delete;
|
||||
|
||||
// views::NonClientFrameView:
|
||||
gfx::Size GetMinimumSize() const override {
|
||||
return gfx::Size(mahi_constants::kPanelDefaultWidth,
|
||||
mahi_constants::kPanelDefaultHeight);
|
||||
}
|
||||
|
||||
// views::NonClientFrameView:
|
||||
gfx::Size GetMaximumSize() const override {
|
||||
return gfx::Size(mahi_constants::kPanelMaximumWidth,
|
||||
mahi_constants::kPanelMaximumHeight);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
MahiWidgetDelegate::MahiWidgetDelegate() = default;
|
||||
MahiWidgetDelegate::~MahiWidgetDelegate() = default;
|
||||
|
||||
std::unique_ptr<views::NonClientFrameView>
|
||||
MahiWidgetDelegate::CreateNonClientFrameView(views::Widget* widget) {
|
||||
auto frame = std::make_unique<MahiFrameView>(widget);
|
||||
frame->SetFrameEnabled(false);
|
||||
frame->SetShouldPaintHeader(false);
|
||||
return frame;
|
||||
}
|
||||
|
||||
} // namespace ash
|
@ -1,33 +0,0 @@
|
||||
// Copyright 2024 The Chromium Authors
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
#ifndef ASH_SYSTEM_MAHI_MAHI_WIDGET_DELEGATE_H_
|
||||
#define ASH_SYSTEM_MAHI_MAHI_WIDGET_DELEGATE_H_
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "ash/ash_export.h"
|
||||
#include "ash/frame/non_client_frame_view_ash.h"
|
||||
#include "ui/views/widget/widget_delegate.h"
|
||||
|
||||
namespace ash {
|
||||
|
||||
// A custom widget delegate for the Mahi window. Used to inject custom
|
||||
// dependencies that are instantiated in the base widget class (like the custom
|
||||
// Mahi frame view).
|
||||
class ASH_EXPORT MahiWidgetDelegate : public views::WidgetDelegate {
|
||||
public:
|
||||
MahiWidgetDelegate();
|
||||
MahiWidgetDelegate(const MahiWidgetDelegate&) = delete;
|
||||
MahiWidgetDelegate& operator=(const MahiWidgetDelegate&) = delete;
|
||||
~MahiWidgetDelegate() override;
|
||||
|
||||
// views::WidgetDelegate:
|
||||
std::unique_ptr<views::NonClientFrameView> CreateNonClientFrameView(
|
||||
views::Widget* widget) override;
|
||||
};
|
||||
|
||||
} // namespace ash
|
||||
|
||||
#endif // ASH_SYSTEM_MAHI_MAHI_WIDGET_DELEGATE_H_
|
Reference in New Issue
Block a user