blob: a514fe61764cf15ecd055e82638157db12c596ce [file] [log] [blame]
// Copyright (c) 2012 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 CHROME_BROWSER_UI_ASH_CAPS_LOCK_DELEGATE_CHROMEOS_H_
#define CHROME_BROWSER_UI_ASH_CAPS_LOCK_DELEGATE_CHROMEOS_H_
#include "ash/caps_lock_delegate.h"
#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "chrome/browser/chromeos/system_key_event_listener.h"
namespace chromeos {
namespace input_method {
class XKeyboard;
} // namespace input_method
} // namespace chromeos
// A class which toggles Caps Lock state when the hotkey for Caps Lock
// is pressed.
class CapsLockDelegate
: public ash::CapsLockDelegate,
public chromeos::SystemKeyEventListener::CapsLockObserver {
public:
explicit CapsLockDelegate(chromeos::input_method::XKeyboard* xkeyboard);
virtual ~CapsLockDelegate();
// Overridden from ash::CapsLockDelegate:
virtual bool IsCapsLockEnabled() const OVERRIDE;
virtual void SetCapsLockEnabled(bool enabled) OVERRIDE;
virtual void ToggleCapsLock() OVERRIDE;
// Overridden from chromeos::SystemKeyEventListener::CapsLockObserver:
virtual void OnCapsLockChange(bool enabled) OVERRIDE;
void set_is_running_on_chromeos_for_test(bool is_running_on_chromeos) {
is_running_on_chromeos_ = is_running_on_chromeos;
}
bool caps_lock_is_on_for_test() const { return caps_lock_is_on_; }
private:
chromeos::input_method::XKeyboard* xkeyboard_;
bool is_running_on_chromeos_;
bool caps_lock_is_on_;
DISALLOW_COPY_AND_ASSIGN(CapsLockDelegate);
};
#endif // CHROME_BROWSER_UI_ASH_CAPS_LOCK_DELEGATE_CHROMEOS_H_