saved_desks: Minor cleanups in SavedDeskItemView.
* Make `desk_template` return by const reference instead of pointer
since the value is always going to be there.
* Have `uuid` return by const ref instead of by value. The previous
implementation was likely returning by value because of the
underlying accessor in `DeskTemplate` which was also returning by
value.
* Have `DeskItemGridView` use the existing `uuid` function instead
of `item->desk_template().uuid()`.
* Make the constructor take a `unique_ptr<DeskTemplate>` to make it
obvious that it is taking over ownership.
* `SavedDeskIconContainer` doesn't need non-const access to the
template.
Change-Id: I333807e1304eea915b686e5cdea2210da0023bbf
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3646807
Commit-Queue: Daniel Andersson <dandersson@chromium.org>
Reviewed-by: Yongshun Liu <yongshun@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1003897}
diff --git a/ash/public/cpp/desk_template.h b/ash/public/cpp/desk_template.h
index fa85aac..a3ce1ef 100644
--- a/ash/public/cpp/desk_template.h
+++ b/ash/public/cpp/desk_template.h
@@ -60,7 +60,7 @@
// A special value to use as an icon identifier for an incognito window.
static constexpr char kIncognitoWindowIdentifier[] = "incognito_window";
- base::GUID uuid() const { return uuid_; }
+ const base::GUID& uuid() const { return uuid_; }
DeskTemplateSource source() const { return source_; }
base::Time created_time() const { return created_time_; }
diff --git a/ash/wm/desks/templates/saved_desk_grid_view.cc b/ash/wm/desks/templates/saved_desk_grid_view.cc
index 6b4eaad..7cb9cc3 100644
--- a/ash/wm/desks/templates/saved_desk_grid_view.cc
+++ b/ash/wm/desks/templates/saved_desk_grid_view.cc
@@ -165,7 +165,7 @@
(*iter)->UpdateTemplate(*entry);
} else if (grid_items_.size() < kMaxTemplateCount) {
SavedDeskItemView* grid_item =
- AddChildView(std::make_unique<SavedDeskItemView>(entry));
+ AddChildView(std::make_unique<SavedDeskItemView>(entry->Clone()));
grid_items_.push_back(grid_item);
if (!initializing_grid_view)
new_grid_items.push_back(grid_item);
@@ -286,7 +286,7 @@
auto it = std::find_if(grid_items_.begin(), grid_items_.end(),
[&uuid](SavedDeskItemView* item_view) {
- return uuid == item_view->desk_template()->uuid();
+ return uuid == item_view->uuid();
});
return it == grid_items_.end() ? nullptr : *it;
}
diff --git a/ash/wm/desks/templates/saved_desk_icon_container.cc b/ash/wm/desks/templates/saved_desk_icon_container.cc
index ee9c4e0..fea1d0f0 100644
--- a/ash/wm/desks/templates/saved_desk_icon_container.cc
+++ b/ash/wm/desks/templates/saved_desk_icon_container.cc
@@ -161,7 +161,7 @@
SavedDeskIconContainer::~SavedDeskIconContainer() = default;
void SavedDeskIconContainer::PopulateIconContainerFromTemplate(
- DeskTemplate* desk_template) {
+ const DeskTemplate* desk_template) {
const app_restore::RestoreData* restore_data =
desk_template->desk_restore_data();
if (!restore_data)
diff --git a/ash/wm/desks/templates/saved_desk_icon_container.h b/ash/wm/desks/templates/saved_desk_icon_container.h
index 3696945..1e38b7a 100644
--- a/ash/wm/desks/templates/saved_desk_icon_container.h
+++ b/ash/wm/desks/templates/saved_desk_icon_container.h
@@ -65,7 +65,7 @@
// Given a saved desk, determine which icons to show in this and create
// the according SavedDeskIconView's.
- void PopulateIconContainerFromTemplate(DeskTemplate* desk_template);
+ void PopulateIconContainerFromTemplate(const DeskTemplate* desk_template);
// Given `windows`, determine which icons to show in this and create the
// according SavedDeskIconView's.
@@ -90,7 +90,7 @@
BEGIN_VIEW_BUILDER(/* no export */,
SavedDeskIconContainer,
views::BoxLayoutView)
-VIEW_BUILDER_METHOD(PopulateIconContainerFromTemplate, DeskTemplate*)
+VIEW_BUILDER_METHOD(PopulateIconContainerFromTemplate, const DeskTemplate*)
VIEW_BUILDER_METHOD(PopulateIconContainerFromWindows,
const std::vector<aura::Window*>&)
END_VIEW_BUILDER
diff --git a/ash/wm/desks/templates/saved_desk_item_view.cc b/ash/wm/desks/templates/saved_desk_item_view.cc
index f53d3ca..981bf96 100644
--- a/ash/wm/desks/templates/saved_desk_item_view.cc
+++ b/ash/wm/desks/templates/saved_desk_item_view.cc
@@ -113,8 +113,9 @@
} // namespace
-SavedDeskItemView::SavedDeskItemView(const DeskTemplate* desk_template)
- : desk_template_(desk_template->Clone()) {
+SavedDeskItemView::SavedDeskItemView(
+ std::unique_ptr<DeskTemplate> desk_template)
+ : desk_template_(std::move(desk_template)) {
auto launch_template_callback = base::BindRepeating(
&SavedDeskItemView::OnGridItemPressed, weak_ptr_factory_.GetWeakPtr());
@@ -617,8 +618,8 @@
[this, name](const SavedDeskItemView* d) {
// Name duplication is allowed if one of the templates is an admin
// template.
- return (d != this && d->desk_template()->template_name() == name &&
- d->desk_template()->source() != DeskTemplateSource::kPolicy);
+ return (d != this && d->desk_template_->template_name() == name &&
+ d->desk_template_->source() != DeskTemplateSource::kPolicy);
});
return iter == templates_grid_view_items.end() ? nullptr : *iter;
}
diff --git a/ash/wm/desks/templates/saved_desk_item_view.h b/ash/wm/desks/templates/saved_desk_item_view.h
index 7210a451..7526dbe 100644
--- a/ash/wm/desks/templates/saved_desk_item_view.h
+++ b/ash/wm/desks/templates/saved_desk_item_view.h
@@ -68,7 +68,7 @@
public:
METADATA_HEADER(SavedDeskItemView);
- explicit SavedDeskItemView(const DeskTemplate* desk_template);
+ explicit SavedDeskItemView(std::unique_ptr<DeskTemplate> desk_template);
SavedDeskItemView(const SavedDeskItemView&) = delete;
SavedDeskItemView& operator=(const SavedDeskItemView&) = delete;
~SavedDeskItemView() override;
@@ -76,9 +76,9 @@
// The preferred size of the whole SavedDeskItemView.
static constexpr gfx::Size kPreferredSize = {220, 120};
- DeskTemplate* desk_template() const { return desk_template_.get(); }
+ const DeskTemplate& desk_template() const { return *desk_template_; }
SavedDeskNameView* name_view() const { return name_view_; }
- const base::GUID uuid() const { return desk_template_->uuid(); }
+ const base::GUID& uuid() const { return desk_template_->uuid(); }
// Updates the visibility state of the delete and launch buttons depending on
// the current mouse or touch event location, or if switch access is enabled.
diff --git a/ash/wm/desks/templates/saved_desk_library_view.cc b/ash/wm/desks/templates/saved_desk_library_view.cc
index ef8e665..e6863089 100644
--- a/ash/wm/desks/templates/saved_desk_library_view.cc
+++ b/ash/wm/desks/templates/saved_desk_library_view.cc
@@ -324,7 +324,7 @@
std::string extra_diagnostics;
for (auto* grid : grid_views()) {
for (auto* item : grid->grid_items())
- extra_diagnostics += (item->desk_template()->ToString() + "\n");
+ extra_diagnostics += (item->desk_template().ToString() + "\n");
}
// Note that this will activate the dialog which will exit overview and delete
diff --git a/ash/wm/desks/templates/saved_desk_unittest.cc b/ash/wm/desks/templates/saved_desk_unittest.cc
index bfe3e60..b94678cc 100644
--- a/ash/wm/desks/templates/saved_desk_unittest.cc
+++ b/ash/wm/desks/templates/saved_desk_unittest.cc
@@ -3498,13 +3498,13 @@
// The actual template name will still have "(1)" appended to maintain its
// uniqueness.
EXPECT_EQ(u"Desk 1 (1)",
- GetItemViewFromTemplatesGrid(0)->desk_template()->template_name());
+ GetItemViewFromTemplatesGrid(0)->desk_template().template_name());
// Set the second template to have a new unique name by updating the model
// directly. This mimics updating the name on a different device and is the
// only way to change the name without prompting the replace dialog.
SavedDeskItemView* second_item = GetItemViewFromTemplatesGrid(1);
- auto new_desk_template = second_item->desk_template()->Clone();
+ auto new_desk_template = second_item->desk_template().Clone();
new_desk_template->set_template_name(u"Desk 2");
const base::GUID uuid = new_desk_template->uuid();
@@ -3533,7 +3533,7 @@
SavedDeskPresenter::Get()->EntriesAddedOrUpdatedRemotely(
{entry.get()});
ASSERT_EQ(u"Desk 2", second_item->name_view()->GetText());
- ASSERT_EQ(u"Desk 2", second_item->desk_template()->template_name());
+ ASSERT_EQ(u"Desk 2", second_item->desk_template().template_name());
loop1.Quit();
}));
loop1.Run();