Index: chromeos/ime/xkeyboard.cc |
diff --git a/chromeos/ime/xkeyboard.cc b/chromeos/ime/xkeyboard.cc |
index b2f55f14443e77a403ce47d27889b11c3a7fc658..da7660d7746b3c5743883057c7aa760368fc417a 100644 |
--- a/chromeos/ime/xkeyboard.cc |
+++ b/chromeos/ime/xkeyboard.cc |
@@ -117,6 +117,10 @@ class XKeyboardImpl : public XKeyboard { |
XKeyboardImpl(); |
virtual ~XKeyboardImpl() {} |
+ // Adds/removes observer. |
+ virtual void AddObserver(Observer* observer) OVERRIDE; |
+ virtual void RemoveObserver(Observer* observer) OVERRIDE; |
+ |
// Overridden from XKeyboard: |
virtual bool SetCurrentKeyboardLayoutByName( |
const std::string& layout_name) OVERRIDE; |
@@ -169,6 +173,8 @@ class XKeyboardImpl : public XKeyboard { |
base::WeakPtrFactory<XKeyboardImpl> weak_factory_; |
+ ObserverList<Observer> observers_; |
+ |
DISALLOW_COPY_AND_ASSIGN(XKeyboardImpl); |
}; |
@@ -193,6 +199,14 @@ XKeyboardImpl::XKeyboardImpl() |
current_caps_lock_status_ = CapsLockIsEnabled(); |
} |
+void XKeyboardImpl::AddObserver(XKeyboard::Observer* observer) { |
+ observers_.AddObserver(observer); |
+} |
+ |
+void XKeyboardImpl::RemoveObserver(XKeyboard::Observer* observer) { |
+ observers_.RemoveObserver(observer); |
+} |
+ |
unsigned int XKeyboardImpl::GetNumLockMask() { |
DCHECK(thread_checker_.CalledOnValidThread()); |
static const unsigned int kBadMask = 0; |
@@ -378,6 +392,9 @@ bool XKeyboardImpl::SetAutoRepeatRate(const AutoRepeatRate& rate) { |
} |
void XKeyboardImpl::SetCapsLockEnabled(bool enable_caps_lock) { |
+ if (current_caps_lock_status_ != enable_caps_lock) |
Daniel Erat
2014/04/09 23:39:40
add curly brackets since the statement is more tha
Mr4D (OOO till 08-26)
2014/04/09 23:44:47
Done.
|
+ FOR_EACH_OBSERVER(XKeyboard::Observer, observers_, |
+ OnCapsLockChanged(enable_caps_lock)); |
SetLockedModifiers(enable_caps_lock); |
Daniel Erat
2014/04/09 23:39:40
you should probably update the state before you no
Mr4D (OOO till 08-26)
2014/04/09 23:44:47
Done.
|
} |