Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(61)

Side by Side Diff: chrome/browser/chromeos/input_method/browser_state_monitor.h

Issue 11466010: Decompose BrowserStateMonitor into two parts, simplifying unit tests and APIs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Tighten DEPS. Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_CHROMEOS_INPUT_METHOD_BROWSER_STATE_MONITOR_H_ 5 #ifndef CHROME_BROWSER_CHROMEOS_INPUT_METHOD_BROWSER_STATE_MONITOR_H_
6 #define CHROME_BROWSER_CHROMEOS_INPUT_METHOD_BROWSER_STATE_MONITOR_H_ 6 #define CHROME_BROWSER_CHROMEOS_INPUT_METHOD_BROWSER_STATE_MONITOR_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
11 #include "base/callback.h"
11 #include "base/compiler_specific.h" 12 #include "base/compiler_specific.h"
12 #include "chrome/browser/chromeos/input_method/input_method_manager.h" 13 #include "chrome/browser/chromeos/input_method/input_method_manager.h"
13 #include "content/public/browser/notification_observer.h" 14 #include "content/public/browser/notification_observer.h"
14 #include "content/public/browser/notification_registrar.h" 15 #include "content/public/browser/notification_registrar.h"
15 #include "content/public/browser/notification_types.h"
16 16
17 namespace chromeos { 17 namespace chromeos {
18 namespace input_method { 18 namespace input_method {
19 19
20 class InputMethodDelegate; 20 // Translates notifications from the browser (not logged in, logged in, etc.),
21 21 // into InputMethodManager::State transitions.
22 // A class which monitors a notification from the browser to keep track of the 22 class BrowserStateMonitor : public content::NotificationObserver {
23 // browser state (not logged in, logged in, etc.) and notify the current state
24 // to the input method manager. The class also updates the appropriate Chrome
25 // prefs via the InputMethodDelegate, depending on the current browser state.
26 class BrowserStateMonitor : public content::NotificationObserver,
27 public InputMethodManager::Observer {
28 public: 23 public:
29 BrowserStateMonitor(InputMethodManager* manager, 24 // Constructs a monitor that will invoke the given observer callback whenever
30 InputMethodDelegate* delegate); 25 // the InputMethodManager::State changes. Assumes that the current state is
26 // STATE_LOGIN_SCREEN.
27 explicit BrowserStateMonitor(
28 const base::Callback<void(InputMethodManager::State)>& observer);
Seigo Nonaka 2012/12/11 04:33:04 nit: Can we pass null callback? please write comme
erikwright (departed) 2012/12/11 16:39:44 Done.
31 virtual ~BrowserStateMonitor(); 29 virtual ~BrowserStateMonitor();
32 30
33 InputMethodManager::State state() const { return state_; } 31 InputMethodManager::State state() const { return state_; }
34 32
35 protected:
36 // InputMethodManager::Observer overrides:
37 virtual void InputMethodChanged(InputMethodManager* manager,
38 bool show_message) OVERRIDE;
39 virtual void InputMethodPropertyChanged(InputMethodManager* manager) OVERRIDE;
40
41 // content::NotificationObserver overrides: 33 // content::NotificationObserver overrides:
42 virtual void Observe(int type, 34 virtual void Observe(int type,
43 const content::NotificationSource& source, 35 const content::NotificationSource& source,
44 const content::NotificationDetails& details) OVERRIDE; 36 const content::NotificationDetails& details) OVERRIDE;
45 37
46 private: 38 private:
47 void SetState(InputMethodManager::State new_state); 39 base::Callback<void(InputMethodManager::State)> observer_;
48
49 InputMethodManager* manager_;
50 InputMethodDelegate* delegate_;
51 InputMethodManager::State state_; 40 InputMethodManager::State state_;
52
53 // This is used to register this object to some browser notifications.
54 content::NotificationRegistrar notification_registrar_; 41 content::NotificationRegistrar notification_registrar_;
55 42
56 DISALLOW_COPY_AND_ASSIGN(BrowserStateMonitor); 43 DISALLOW_COPY_AND_ASSIGN(BrowserStateMonitor);
57 }; 44 };
58 45
59 } // namespace input_method 46 } // namespace input_method
60 } // namespace chromeos 47 } // namespace chromeos
61 48
62 #endif // CHROME_BROWSER_CHROMEOS_INPUT_METHOD_BROWSER_STATE_MONITOR_H_ 49 #endif // CHROME_BROWSER_CHROMEOS_INPUT_METHOD_BROWSER_STATE_MONITOR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698