The ShellDesktopControllerAuraTest test (InputEvents, in particular), create an aura::WindowTreeHost that out-lives the display::Screen.
In particular, the display::Screen is reset with the stack
display::Screen::SetScreenInstance()
extensions::ShellDesktopControllerAura::DestroyRootWindow()
extensions::ShellDesktopControllerAura::~ShellDesktopControllerAura()
extensions::ShellDesktopControllerAura::~ShellDesktopControllerAura()
extensions::ShellDesktopControllerAuraTest::TearDown()
Shortly thereafter, we try to destroy an aura::WindowTreeHost at
aura::WindowTreeHost::~WindowTreeHost()
aura::WindowTreeHostX11::~WindowTreeHostX11()
aura::WindowTreeHostX11::~WindowTreeHostX11()
aura::test::AuraTestHelper::TearDown()
aura::test::AuraTestBase::TearDown()
extensions::ShellDesktopControllerAuraTest::TearDown()
The aura::WindowTreeHost regularly reaches into display::Screen, and is also now an observer to display changes.
This puts us in the messy situation of trying to un-become a DisplayObserver after display::Screen has been destroyed.
Comment 1 by ccameron@chromium.org
, Jul 19 2017