• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 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 
5 #ifndef UI_BASE_IME_TEXT_INPUT_FOCUS_MANAGER_H_
6 #define UI_BASE_IME_TEXT_INPUT_FOCUS_MANAGER_H_
7 
8 #include "base/macros.h"
9 #include "base/threading/thread_checker.h"
10 #include "ui/base/ui_base_export.h"
11 
12 template <typename T> struct DefaultSingletonTraits;
13 
14 namespace ui {
15 
16 class TextInputClient;
17 
18 // Manages the focused TextInputClient across windows and their contents.
19 class UI_BASE_EXPORT TextInputFocusManager {
20  public:
21   static TextInputFocusManager* GetInstance();
22 
23   // Returns the currently focused text input client or NULL.
24   TextInputClient* GetFocusedTextInputClient();
25 
26   // Changes the text input focus to |text_input_client|.
27   void FocusTextInputClient(TextInputClient* text_input_client);
28 
29   // Removes the text input focus from |text_input_client|.  If
30   // |text_input_client| was not focused, does nothing.
31   void BlurTextInputClient(TextInputClient* text_input_client);
32 
33  private:
34   friend struct DefaultSingletonTraits<TextInputFocusManager>;
35 
36   TextInputFocusManager();
37   ~TextInputFocusManager();
38 
39   TextInputClient* focused_text_input_client_;
40   base::ThreadChecker thread_checker_;
41 
42   DISALLOW_COPY_AND_ASSIGN(TextInputFocusManager);
43 };
44 
45 }  // namespace ui
46 
47 #endif  // UI_BASE_IME_TEXT_INPUT_FOCUS_MANAGER_H_
48