Commit 2bb56481 authored by James Cook's avatar James Cook Committed by Commit Bot

cros: Fix flaky TouchAccessibilityEnablerTest

TouchAccessibilityEnablerTest.InteractsWithTouchExplorationController
is flaky in ash_unittests because ScreenForShutdown persists between
tests. Clean up ScreenForShutdown at the end of each AshTestBase.

Bug: 844253
Test: ash_unittests
Change-Id: I4437fea28bc7757dc38d27db8bfbd173ddfba07a
Reviewed-on: https://chromium-review.googlesource.com/1065177Reviewed-by: default avatarMitsuru Oshima <oshima@chromium.org>
Commit-Queue: James Cook <jamescook@chromium.org>
Cr-Commit-Position: refs/heads/master@{#560230}
parent 420d63a7
......@@ -27,8 +27,7 @@ namespace ash {
namespace {
// We need to keep this in order for unittests to tell if
// the object in display::Screen::GetScreenByType is for shutdown.
// Intentionally leaked in production.
display::Screen* screen_for_shutdown = nullptr;
display::DisplayManager* GetDisplayManager() {
......@@ -202,4 +201,12 @@ void ScreenAsh::CreateScreenForShutdown() {
display::Screen::SetScreenInstance(screen_for_shutdown);
}
// static
void ScreenAsh::DeleteScreenForShutdown() {
if (display::Screen::GetScreen() == screen_for_shutdown)
display::Screen::SetScreenInstance(nullptr);
delete screen_for_shutdown;
screen_for_shutdown = nullptr;
}
} // namespace ash
......@@ -51,6 +51,9 @@ class ASH_EXPORT ScreenAsh : public display::Screen {
// Create a screen instance to be used during shutdown.
static void CreateScreenForShutdown();
// Test helpers may need to clean up the ScreenForShutdown between tests.
static void DeleteScreenForShutdown();
private:
DISALLOW_COPY_AND_ASSIGN(ScreenAsh);
};
......
......@@ -12,6 +12,7 @@
#include "ash/app_list/test/app_list_test_helper.h"
#include "ash/display/extended_mouse_warp_controller.h"
#include "ash/display/mouse_cursor_event_filter.h"
#include "ash/display/screen_ash.h"
#include "ash/display/screen_orientation_controller_test_api.h"
#include "ash/display/unified_mouse_warp_controller.h"
#include "ash/display/window_tree_host_manager.h"
......@@ -146,6 +147,10 @@ AshTestBase::~AshTestBase() {
<< "You have overridden TearDown but never called AshTestBase::TearDown";
if (AshTestHelper::config() != Config::CLASSIC)
aura::Env::GetInstance()->RemoveObserver(this);
// Ensure the next test starts with a null display::Screen. Done here because
// some tests use Screen in their TearDown() overrides.
ScreenAsh::DeleteScreenForShutdown();
}
void AshTestBase::SetUp() {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment