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:

committed by
Chromium LUCI CQ

parent
c5d977d870
commit
621b584dcd
@@ -20,22 +20,30 @@
|
|||||||
namespace ash {
|
namespace ash {
|
||||||
|
|
||||||
class GlanceablesTest : public AshTestBase {
|
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:
|
private:
|
||||||
base::test::ScopedFeatureList features{
|
base::test::ScopedFeatureList features{
|
||||||
features::kGlanceablesTimeManagementTasksView};
|
features::kGlanceablesTimeManagementTasksView};
|
||||||
|
std::unique_ptr<api::FakeTasksClient> tasks_client_;
|
||||||
};
|
};
|
||||||
|
|
||||||
TEST_F(GlanceablesTest, DISABLED_DoesNotAddTasksViewWhenDisabledByAdmin) {
|
TEST_F(GlanceablesTest, 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()});
|
|
||||||
|
|
||||||
auto* const date_tray =
|
auto* const date_tray =
|
||||||
StatusAreaWidgetTestHelper::GetStatusAreaWidget()->date_tray();
|
StatusAreaWidgetTestHelper::GetStatusAreaWidget()->date_tray();
|
||||||
|
|
||||||
@@ -52,7 +60,7 @@ TEST_F(GlanceablesTest, DISABLED_DoesNotAddTasksViewWhenDisabledByAdmin) {
|
|||||||
ui::Accelerator(ui::VKEY_C, ui::EF_COMMAND_DOWN));
|
ui::Accelerator(ui::VKEY_C, ui::EF_COMMAND_DOWN));
|
||||||
|
|
||||||
// Simulate that admin disables the integration.
|
// 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
|
// Open Glanceables via Search + C again, make sure the bubble no longer
|
||||||
// contains the Tasks view.
|
// contains the Tasks view.
|
||||||
@@ -64,11 +72,6 @@ TEST_F(GlanceablesTest, DISABLED_DoesNotAddTasksViewWhenDisabledByAdmin) {
|
|||||||
// Close Glanceables.
|
// Close Glanceables.
|
||||||
ShellTestApi().PressAccelerator(
|
ShellTestApi().PressAccelerator(
|
||||||
ui::Accelerator(ui::VKEY_C, ui::EF_COMMAND_DOWN));
|
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
|
} // namespace ash
|
||||||
|
Reference in New Issue
Block a user