// Copyright 2022 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "ash/accessibility/scoped_a11y_override_window_setter.h" #include "ash/accessibility/accessibility_controller_impl.h" #include "ash/shell.h" namespace ash { ScopedA11yOverrideWindowSetter::~ScopedA11yOverrideWindowSetter() { // `ScopedA11yOverrideWindowSetter` can be destructed while Shell is being // destroyed and therefore null. if (Shell::HasInstance()) MaybeUpdateA11yOverrideWindow(nullptr); } void ScopedA11yOverrideWindowSetter::OnWindowDestroying(aura::Window* window) { MaybeUpdateA11yOverrideWindow(nullptr); } void ScopedA11yOverrideWindowSetter::MaybeUpdateA11yOverrideWindow( aura::Window* a11y_override_window) { DCHECK(Shell::HasInstance()); if (current_a11y_override_window_ != a11y_override_window) { Shell::Get()->accessibility_controller()->SetA11yOverrideWindow( a11y_override_window); current_a11y_override_window_ = a11y_override_window; } } } // namespace ash