scoped_a11y_override_window_setter.cc 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. // Copyright 2022 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "ash/accessibility/scoped_a11y_override_window_setter.h"
  5. #include "ash/accessibility/accessibility_controller_impl.h"
  6. #include "ash/shell.h"
  7. namespace ash {
  8. ScopedA11yOverrideWindowSetter::~ScopedA11yOverrideWindowSetter() {
  9. // `ScopedA11yOverrideWindowSetter` can be destructed while Shell is being
  10. // destroyed and therefore null.
  11. if (Shell::HasInstance())
  12. MaybeUpdateA11yOverrideWindow(nullptr);
  13. }
  14. void ScopedA11yOverrideWindowSetter::OnWindowDestroying(aura::Window* window) {
  15. MaybeUpdateA11yOverrideWindow(nullptr);
  16. }
  17. void ScopedA11yOverrideWindowSetter::MaybeUpdateA11yOverrideWindow(
  18. aura::Window* a11y_override_window) {
  19. DCHECK(Shell::HasInstance());
  20. if (current_a11y_override_window_ != a11y_override_window) {
  21. Shell::Get()->accessibility_controller()->SetA11yOverrideWindow(
  22. a11y_override_window);
  23. current_a11y_override_window_ = a11y_override_window;
  24. }
  25. }
  26. } // namespace ash