Revert of Add button to add new FSP services to Files app. (patchset #8 id:140001...
[chromium-blink-merge.git] / chrome / browser / chromeos / input_method / mode_indicator_controller.h
blobad6e9051c006e5d4d7bddbdc076e272409c4d369
1 // Copyright 2013 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.
5 #ifndef CHROME_BROWSER_CHROMEOS_INPUT_METHOD_MODE_INDICATOR_CONTROLLER_H_
6 #define CHROME_BROWSER_CHROMEOS_INPUT_METHOD_MODE_INDICATOR_CONTROLLER_H_
8 #include "base/memory/scoped_ptr.h"
9 #include "ui/base/ime/chromeos/input_method_manager.h"
10 #include "ui/gfx/geometry/rect.h"
11 #include "ui/views/widget/widget_observer.h"
13 namespace chromeos {
14 namespace input_method {
16 class ModeIndicatorObserverInterface : public views::WidgetObserver {
17 public:
18 ModeIndicatorObserverInterface() {}
19 ~ModeIndicatorObserverInterface() override {}
21 virtual void AddModeIndicatorWidget(views::Widget* widget) = 0;
25 // ModeIndicatorController is the controller of ModeIndicatiorDelegateView
26 // on the MVC model.
27 class ModeIndicatorController
28 : public InputMethodManager::Observer {
29 public:
30 // This class takes the ownership of |mi_widget|.
31 explicit ModeIndicatorController(InputMethodManager* imm);
32 ~ModeIndicatorController() override;
34 // Set cursor bounds, which is the base point to display this indicator.
35 // Bacisally this indicator is displayed underneath the cursor.
36 void SetCursorBounds(const gfx::Rect& cursor_location);
38 // Notify the focus state to the mode indicator.
39 void FocusStateChanged(bool is_focused);
41 // Accessor of the widget observer for testing. The caller keeps the
42 // ownership of the observer object.
43 static void SetModeIndicatorObserverForTesting(
44 ModeIndicatorObserverInterface* observer);
45 static ModeIndicatorObserverInterface* GetModeIndicatorObserverForTesting();
47 private:
48 // InputMethodManager::Observer implementation.
49 void InputMethodChanged(InputMethodManager* manager,
50 bool show_message) override;
52 // Show the mode inidicator with the current ime's short name if all
53 // the conditions are cleared.
54 void ShowModeIndicator();
56 InputMethodManager* imm_;
58 // Cursor bounds representing the anchor rect of the mode indicator.
59 gfx::Rect cursor_bounds_;
61 // True on a text field is focused.
62 bool is_focused_;
64 // Observer of the widgets created by BubbleDelegateView. This is used to
65 // close the previous widget when a new widget is created.
66 scoped_ptr<ModeIndicatorObserverInterface> mi_observer_;
68 DISALLOW_COPY_AND_ASSIGN(ModeIndicatorController);
71 } // namespace input_method
72 } // namespace chromeos
74 #endif // CHROME_BROWSER_CHROMEOS_INPUT_METHOD_MODE_INDICATOR_CONTROLLER_H_