// Copyright 2018 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. #ifndef UI_AURA_SCOPED_KEYBOARD_HOOK_H_ #define UI_AURA_SCOPED_KEYBOARD_HOOK_H_ #include "base/memory/weak_ptr.h" #include "base/threading/thread_checker.h" #include "ui/aura/aura_export.h" namespace ui { enum class DomCode; } namespace aura { class WindowTreeHost; // Destroying an instance of this class will clean up the KeyboardHook instance // owned by WindowTreeHost and prevent future system key events from being // captured. If the KeyboardHook or WindowTreeHost instances were already // destroyed, then destroying this instance is a noop. class AURA_EXPORT ScopedKeyboardHook { public: explicit ScopedKeyboardHook(base::WeakPtr weak_ptr); virtual ~ScopedKeyboardHook(); // True if |dom_code| is reserved for an active KeyboardLock request. virtual bool IsKeyLocked(ui::DomCode dom_code); protected: ScopedKeyboardHook(); private: THREAD_CHECKER(thread_checker_); base::WeakPtr window_tree_host_; DISALLOW_COPY_AND_ASSIGN(ScopedKeyboardHook); }; } // namespace aura #endif // UI_AURA_SCOPED_KEYBOARD_HOOK_H_