0

Fix dangling pointer in GlanceablesTest

As mentioned in
https://crrev.com/c/chromium/src/+/5446073/2..6/ash/glanceables/glanceables_unittest.cc#b69,
the window/widget is still destroying in AshTestBase::TearDown(),
but the combobox model still keeps a pointer to a list of
task lists from already destroyed client in the test body.

Bug: b/332284872
Change-Id: I6ade53e7d3ed46f0d187becea458730296b7ea6a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5455017
Reviewed-by: Toni Barzic <tbarzic@chromium.org>
Commit-Queue: Artsiom Mitrokhin <amitrokhin@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1289894}
This commit is contained in:
Artsiom Mitrokhin
2024-04-19 13:12:39 +00:00
committed by Chromium LUCI CQ
parent c5d977d870
commit 621b584dcd

@ -20,22 +20,30 @@
namespace ash {
class GlanceablesTest : public AshTestBase {
public:
void SetUp() override {
AshTestBase::SetUp();
const auto account_id =
AccountId::FromUserEmailGaiaId("test_user@gmail.com", "123456");
SimulateUserLogin(account_id);
tasks_client_ = glanceables_tasks_test_util::InitializeFakeTasksClient(
base::Time::Now());
Shell::Get()->glanceables_controller()->UpdateClientsRegistration(
account_id, GlanceablesController::ClientsRegistration{
.tasks_client = tasks_client_.get()});
}
api::FakeTasksClient* tasks_client() const { return tasks_client_.get(); }
private:
base::test::ScopedFeatureList features{
features::kGlanceablesTimeManagementTasksView};
std::unique_ptr<api::FakeTasksClient> tasks_client_;
};
TEST_F(GlanceablesTest, DISABLED_DoesNotAddTasksViewWhenDisabledByAdmin) {
const auto account_id =
AccountId::FromUserEmailGaiaId("test_user@gmail.com", "123456");
SimulateUserLogin(account_id);
const auto client =
glanceables_tasks_test_util::InitializeFakeTasksClient(base::Time::Now());
Shell::Get()->glanceables_controller()->UpdateClientsRegistration(
account_id,
GlanceablesController::ClientsRegistration{.tasks_client = client.get()});
TEST_F(GlanceablesTest, DoesNotAddTasksViewWhenDisabledByAdmin) {
auto* const date_tray =
StatusAreaWidgetTestHelper::GetStatusAreaWidget()->date_tray();
@ -52,7 +60,7 @@ TEST_F(GlanceablesTest, DISABLED_DoesNotAddTasksViewWhenDisabledByAdmin) {
ui::Accelerator(ui::VKEY_C, ui::EF_COMMAND_DOWN));
// Simulate that admin disables the integration.
client->set_is_disabled_by_admin(true);
tasks_client()->set_is_disabled_by_admin(true);
// Open Glanceables via Search + C again, make sure the bubble no longer
// contains the Tasks view.
@ -64,11 +72,6 @@ TEST_F(GlanceablesTest, DISABLED_DoesNotAddTasksViewWhenDisabledByAdmin) {
// Close Glanceables.
ShellTestApi().PressAccelerator(
ui::Accelerator(ui::VKEY_C, ui::EF_COMMAND_DOWN));
// Unregister `client` to prevent crash during `AshTestBase::TearDown`.
Shell::Get()->glanceables_controller()->UpdateClientsRegistration(
account_id,
GlanceablesController::ClientsRegistration{.tasks_client = nullptr});
}
} // namespace ash