Skip to content

Commit

Permalink
[Merge to M103] saved_desks: Update save desk buttons to use correct …
Browse files Browse the repository at this point in the history
…entry count

Since `SavedDeskPresenter` now supports getting entry count and max
entry count for both Desk Template and SaveAndRecall, update the save
desk buttons based on correct entry counts.

(cherry picked from commit 73ee711)

Bug: 1324736
Change-Id: Ic6404511dbed2b52d1510d8eaaebe11f2a842344
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3641153
Reviewed-by: Daniel Andersson <dandersson@chromium.org>
Reviewed-by: Sammie Quon <sammiequon@chromium.org>
Commit-Queue: Yongshun Liu <yongshun@chromium.org>
Cr-Original-Commit-Position: refs/heads/main@{#1003241}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3651176
Auto-Submit: Yongshun Liu <yongshun@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/branch-heads/5060@{#25}
Cr-Branched-From: b83393d-refs/heads/main@{#1002911}
  • Loading branch information
Yongshun Liu authored and Chromium LUCI CQ committed May 16, 2022
1 parent ee650d7 commit daccf6d
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 51 deletions.
116 changes: 73 additions & 43 deletions ash/wm/desks/templates/saved_desk_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -916,59 +916,89 @@ TEST_F(SavedDeskTest, SaveDeskButtonContainerAligned) {
// Tests that the save desk as template button and save for later button are
// enabled and disabled as expected based on the number of templates.
TEST_F(SavedDeskTest, SaveDeskButtonsEnabledDisabled) {
desks_storage::LocalDeskDataManager::
SetExcludeSaveAndRecallDeskInMaxEntryCountForTesting(true);
// Create an app window which should be supported.
// Prepare the test environment, like creating an app window which should be
// supported.
auto no_app_id_window = CreateAppWindow();
aura::Window* root_window = Shell::GetPrimaryRootWindow();
auto* delegate = Shell::Get()->desks_templates_delegate();
ASSERT_TRUE(
delegate->IsWindowSupportedForDeskTemplate(no_app_id_window.get()));

// TODO(yongshun): Once `GetEntryCount()` and `GetMaxEntryCount()` support
// `DeskTemplateType`, create `kSaveAndRecall` and add test for save for later
// button.
std::array<std::string, 6> desk_names_template;
for (size_t i = 0; i < desk_names_template.size(); i++)
desk_names_template[i] += "desk_template " + base::NumberToString(i + 1);
for (const std::string& desk_name : desk_names_template)
AddEntry(base::GUID::GenerateRandomV4(), desk_name, base::Time::Now(),
DeskTemplateType::kTemplate);

// Open overview and expect the save template button to be disabled.
ToggleOverview();
auto* overview_controller = Shell::Get()->overview_controller();
ASSERT_TRUE(overview_controller->InOverviewSession());
WaitForDesksTemplatesUI();
EXPECT_EQ(0, GetOverviewGridList()[0]->num_incognito_windows());
EXPECT_EQ(0, GetOverviewGridList()[0]->num_unsupported_windows());
// Test `Save Desk as Template` button.
{
// Add 6 `kTemplate` entries.
for (size_t i = 1; i <= 6; i++) {
const std::string desk_name = "desk_template " + base::NumberToString(i);
AddEntry(base::GUID::GenerateRandomV4(), desk_name, base::Time::Now(),
DeskTemplateType::kTemplate);
}

aura::Window* root = Shell::GetPrimaryRootWindow();
auto* save_as_template_button = GetSaveDeskAsTemplateButtonForRoot(root);
auto* save_for_later_button = GetSaveDeskForLaterButtonForRoot(root);
EXPECT_EQ(views::Button::STATE_DISABLED, save_as_template_button->GetState());
EXPECT_EQ(views::Button::STATE_DISABLED, save_for_later_button->GetState());
// Open overview and expect the button to be disabled.
ToggleOverview();
WaitForDesksTemplatesUI();
EXPECT_EQ(views::Button::STATE_DISABLED,
GetSaveDeskAsTemplateButtonForRoot(root_window)->GetState());

std::vector<const DeskTemplate*> entries = GetAllEntries();
// Exit and reopen overview, then verify that the entry count reaches the
// maximum.
ToggleOverview();
OpenOverviewAndShowTemplatesGrid();
const SavedDeskPresenter* saved_desk_presenter = SavedDeskPresenter::Get();
ASSERT_EQ(saved_desk_presenter->GetMaxDeskTemplateEntryCount(),
saved_desk_presenter->GetDeskTemplateEntryCount());

// Verify that the button is re-enabled after we delete all entries and exit
// the templates grid.
std::vector<const DeskTemplate*> entries = GetAllEntries();
for (size_t i = entries.size(); i > 0; i--) {
DeleteTemplate(/*uuid=*/entries[i - 1]->uuid(),
/*expected_current_item_count=*/i);
}
EXPECT_FALSE(GetOverviewGridList()[0]->IsShowingDesksTemplatesGrid());
EXPECT_EQ(views::Button::STATE_NORMAL,
GetSaveDeskAsTemplateButtonForRoot(root_window)->GetState());

// Exit and reopen overview to delete the template.
ToggleOverview();
OpenOverviewAndShowTemplatesGrid();
const SavedDeskPresenter* saved_desk_presenter = SavedDeskPresenter::Get();
EXPECT_EQ(saved_desk_presenter->GetMaxEntryCount(),
saved_desk_presenter->GetEntryCount());

// Verify that the button is re-enabled after we delete all templates and exit
// the templates grid.
for (size_t i = desk_names_template.size(); i > 0; i--) {
DeleteTemplate(/*uuid=*/entries[i - 1]->uuid(),
/*expected_current_item_count=*/i);
// Exit overview.
ToggleOverview();
}
EXPECT_FALSE(GetOverviewGridList()[0]->IsShowingDesksTemplatesGrid());

save_as_template_button = GetSaveDeskAsTemplateButtonForRoot(root);
save_for_later_button = GetSaveDeskForLaterButtonForRoot(root);
EXPECT_EQ(views::Button::STATE_NORMAL, save_as_template_button->GetState());
EXPECT_EQ(views::Button::STATE_NORMAL, save_for_later_button->GetState());
// Test `Save Desk for Later` button.
{
// Add 6 `kSaveAndRecall` entries.
for (size_t i = 1; i <= 6; i++) {
const std::string desk_name = "saved_desk " + base::NumberToString(i);
AddEntry(base::GUID::GenerateRandomV4(), desk_name, base::Time::Now(),
DeskTemplateType::kSaveAndRecall);
}

// Open overview and expect the button to be disabled.
ToggleOverview();
WaitForDesksTemplatesUI();
EXPECT_EQ(views::Button::STATE_DISABLED,
GetSaveDeskForLaterButtonForRoot(root_window)->GetState());

// Exit and reopen overview, then verify that the entry count reaches the
// maximum.
ToggleOverview();
OpenOverviewAndShowTemplatesGrid();
const SavedDeskPresenter* saved_desk_presenter = SavedDeskPresenter::Get();
ASSERT_EQ(saved_desk_presenter->GetMaxSaveAndRecallDeskEntryCount(),
saved_desk_presenter->GetSaveAndRecallDeskEntryCount());

// Verify that the button is re-enabled after we delete all entries and exit
// the templates grid.
std::vector<const DeskTemplate*> entries = GetAllEntries();
for (size_t i = entries.size(); i > 0; i--) {
DeleteTemplate(/*uuid=*/entries[i - 1]->uuid(),
/*expected_current_item_count=*/i);
}
EXPECT_FALSE(GetOverviewGridList()[0]->IsShowingDesksTemplatesGrid());
EXPECT_EQ(views::Button::STATE_NORMAL,
GetSaveDeskForLaterButtonForRoot(root_window)->GetState());

// Exit overview.
ToggleOverview();
}
}

// Tests that clicking the save desk as template button shows the templates
Expand Down
14 changes: 6 additions & 8 deletions ash/wm/overview/overview_grid.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1928,18 +1928,16 @@ void OverviewGrid::UpdateSaveDeskButtons() {
SaveDeskTemplateButtonContainer* container =
static_cast<SaveDeskTemplateButtonContainer*>(
save_desk_button_container_widget_->GetContentsView());
// TODO(yongshun): Once `GetEntryCount()` and `GetMaxEntryCount()` support
// `DeskTemplateType`, update `kSaveForLaterButton` to use its own count.
container->UpdateButtonEnableStateAndTooltip(
SaveDeskTemplateButton::Type::kSaveAsTemplate,
saved_desk_presenter->GetEntryCount(),
saved_desk_presenter->GetMaxEntryCount(), num_incognito_windows_,
num_unsupported_windows_, size());
saved_desk_presenter->GetDeskTemplateEntryCount(),
saved_desk_presenter->GetMaxDeskTemplateEntryCount(),
num_incognito_windows_, num_unsupported_windows_, size());
container->UpdateButtonEnableStateAndTooltip(
SaveDeskTemplateButton::Type::kSaveForLater,
saved_desk_presenter->GetEntryCount(),
saved_desk_presenter->GetMaxEntryCount(), num_incognito_windows_,
num_unsupported_windows_, size());
saved_desk_presenter->GetSaveAndRecallDeskEntryCount(),
saved_desk_presenter->GetMaxSaveAndRecallDeskEntryCount(),
num_incognito_windows_, num_unsupported_windows_, size());

// Set the widget position above the overview item window and default width
// and height.
Expand Down

0 comments on commit daccf6d

Please sign in to comment.