diff options
author | fengyuan <fengyuan@chromium.org> | 2014-10-27 21:58:09 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-10-28 04:58:47 +0000 |
commit | ad9d3ccf8b22dfb0c6ddec4a1f7bd49652a72d68 (patch) | |
tree | c7c155f3fe9f610213177f5f99273d4fee4d30ef /chromeos/ime | |
parent | e934d06d39858a9ebfbe2fef35aa16c2084f50e5 (diff) | |
download | chromium_src-ad9d3ccf8b22dfb0c6ddec4a1f7bd49652a72d68.zip chromium_src-ad9d3ccf8b22dfb0c6ddec4a1f7bd49652a72d68.tar.gz chromium_src-ad9d3ccf8b22dfb0c6ddec4a1f7bd49652a72d68.tar.bz2 |
This patchset only separates the header definition for ime_keyboard_x11 to .h file. After that, I will create ime_keybord_ozone.h also. So the file structure will be:
ime_keyboard.h
fake_ime_keyboard.h
fake_ime_keyboard.cc
ime_keyboard_x11.h
ime_keyboard_x11.cc
ime_keyboard_ozone.h
ime_keyboard_ozone.cc
BUG=342336
Review URL: https://codereview.chromium.org/666693010
Cr-Commit-Position: refs/heads/master@{#301565}
Diffstat (limited to 'chromeos/ime')
-rw-r--r-- | chromeos/ime/ime_keyboard_x11.cc | 93 | ||||
-rw-r--r-- | chromeos/ime/ime_keyboard_x11.h | 107 |
2 files changed, 110 insertions, 90 deletions
diff --git a/chromeos/ime/ime_keyboard_x11.cc b/chromeos/ime/ime_keyboard_x11.cc index 2295707..775287c 100644 --- a/chromeos/ime/ime_keyboard_x11.cc +++ b/chromeos/ime/ime_keyboard_x11.cc @@ -2,30 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chromeos/ime/ime_keyboard.h" - -#include <cstdlib> -#include <cstring> -#include <queue> -#include <set> -#include <utility> - -#include "base/bind.h" -#include "base/logging.h" -#include "base/memory/scoped_ptr.h" -#include "base/message_loop/message_loop.h" -#include "base/process/kill.h" -#include "base/process/launch.h" -#include "base/process/process_handle.h" -#include "base/strings/string_util.h" -#include "base/strings/stringprintf.h" -#include "base/sys_info.h" -#include "base/threading/thread_checker.h" -#include "ui/gfx/x/x11_types.h" - -// These includes conflict with base/tracked_objects.h so must come last. -#include <X11/XKBlib.h> -#include <X11/Xlib.h> +#include "chromeos/ime/ime_keyboard_x11.h" namespace chromeos { namespace input_method { @@ -109,72 +86,6 @@ bool CheckLayoutName(const std::string& layout_name) { return true; } -class ImeKeyboardX11 : public ImeKeyboard { - public: - ImeKeyboardX11(); - virtual ~ImeKeyboardX11() {} - - // Adds/removes observer. - virtual void AddObserver(Observer* observer) override; - virtual void RemoveObserver(Observer* observer) override; - - // ImeKeyboard: - virtual bool SetCurrentKeyboardLayoutByName( - const std::string& layout_name) override; - virtual bool ReapplyCurrentKeyboardLayout() override; - virtual void ReapplyCurrentModifierLockStatus() override; - virtual void DisableNumLock() override; - virtual void SetCapsLockEnabled(bool enable_caps_lock) override; - virtual bool CapsLockIsEnabled() override; - virtual bool IsISOLevel5ShiftAvailable() const override; - virtual bool IsAltGrAvailable() const override; - virtual bool SetAutoRepeatEnabled(bool enabled) override; - virtual bool SetAutoRepeatRate(const AutoRepeatRate& rate) override; - - private: - // Returns a mask for Num Lock (e.g. 1U << 4). Returns 0 on error. - unsigned int GetNumLockMask(); - - // Sets the caps-lock status. Note that calling this function always disables - // the num-lock. - void SetLockedModifiers(bool caps_lock_enabled); - - // This function is used by SetLayout() and RemapModifierKeys(). Calls - // setxkbmap command if needed, and updates the last_full_layout_name_ cache. - bool SetLayoutInternal(const std::string& layout_name, bool force); - - // Executes 'setxkbmap -layout ...' command asynchronously using a layout name - // in the |execute_queue_|. Do nothing if the queue is empty. - // TODO(yusukes): Use libxkbfile.so instead of the command (crosbug.com/13105) - void MaybeExecuteSetLayoutCommand(); - - // Polls to see setxkbmap process exits. - void PollUntilChildFinish(const base::ProcessHandle handle); - - // Called when execve'd setxkbmap process exits. - void OnSetLayoutFinish(); - - const bool is_running_on_chrome_os_; - unsigned int num_lock_mask_; - - // The current Caps Lock status. If true, enabled. - bool current_caps_lock_status_; - - // The XKB layout name which we set last time like "us" and "us(dvorak)". - std::string current_layout_name_; - - // A queue for executing setxkbmap one by one. - std::queue<std::string> execute_queue_; - - base::ThreadChecker thread_checker_; - - base::WeakPtrFactory<ImeKeyboardX11> weak_factory_; - - ObserverList<Observer> observers_; - - DISALLOW_COPY_AND_ASSIGN(ImeKeyboardX11); -}; - ImeKeyboardX11::ImeKeyboardX11() : is_running_on_chrome_os_(base::SysInfo::IsRunningOnChromeOS()), weak_factory_(this) { @@ -198,6 +109,8 @@ ImeKeyboardX11::ImeKeyboardX11() DisableNumLock(); } +ImeKeyboardX11::~ImeKeyboardX11() {}; + void ImeKeyboardX11::AddObserver(Observer* observer) { observers_.AddObserver(observer); } diff --git a/chromeos/ime/ime_keyboard_x11.h b/chromeos/ime/ime_keyboard_x11.h new file mode 100644 index 0000000..10ac01a --- /dev/null +++ b/chromeos/ime/ime_keyboard_x11.h @@ -0,0 +1,107 @@ +// Copyright 2014 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. + + +#include "chromeos/ime/ime_keyboard.h" + +#include <cstdlib> +#include <cstring> +#include <queue> +#include <set> +#include <utility> + +#include "base/bind.h" +#include "base/logging.h" +#include "base/memory/scoped_ptr.h" +#include "base/message_loop/message_loop.h" +#include "base/process/kill.h" +#include "base/process/launch.h" +#include "base/process/process_handle.h" +#include "base/strings/string_util.h" +#include "base/strings/stringprintf.h" +#include "base/sys_info.h" +#include "base/threading/thread_checker.h" +#include "ui/gfx/x/x11_types.h" + +// These includes conflict with base/tracked_objects.h so must come last. +#include <X11/XKBlib.h> +#include <X11/Xlib.h> + + +namespace chromeos { +namespace input_method { +namespace { + +class ImeKeyboardX11 : public ImeKeyboard { + public: + ImeKeyboardX11(); + virtual ~ImeKeyboardX11(); + + // Adds/removes observer. + virtual void AddObserver(Observer* observer) override; + virtual void RemoveObserver(Observer* observer) override; + + // ImeKeyboard: + virtual bool SetCurrentKeyboardLayoutByName( + const std::string& layout_name) override; + virtual bool ReapplyCurrentKeyboardLayout() override; + virtual void ReapplyCurrentModifierLockStatus() override; + virtual void DisableNumLock() override; + virtual void SetCapsLockEnabled(bool enable_caps_lock) override; + virtual bool CapsLockIsEnabled() override; + virtual bool IsISOLevel5ShiftAvailable() const override; + virtual bool IsAltGrAvailable() const override; + virtual bool SetAutoRepeatEnabled(bool enabled) override; + virtual bool SetAutoRepeatRate(const AutoRepeatRate& rate) override; + + private: + // Returns a mask for Num Lock (e.g. 1U << 4). Returns 0 on error. + unsigned int GetNumLockMask(); + + // Sets the caps-lock status. Note that calling this function always disables + // the num-lock. + void SetLockedModifiers(bool caps_lock_enabled); + + // This function is used by SetLayout() and RemapModifierKeys(). Calls + // setxkbmap command if needed, and updates the last_full_layout_name_ cache. + bool SetLayoutInternal(const std::string& layout_name, bool force); + + // Executes 'setxkbmap -layout ...' command asynchronously using a layout name + // in the |execute_queue_|. Do nothing if the queue is empty. + // TODO(yusukes): Use libxkbfile.so instead of the command (crosbug.com/13105) + void MaybeExecuteSetLayoutCommand(); + + // Polls to see setxkbmap process exits. + void PollUntilChildFinish(const base::ProcessHandle handle); + + // Called when execve'd setxkbmap process exits. + void OnSetLayoutFinish(); + + const bool is_running_on_chrome_os_; + unsigned int num_lock_mask_; + + // The current Caps Lock status. If true, enabled. + bool current_caps_lock_status_; + + // The XKB layout name which we set last time like "us" and "us(dvorak)". + std::string current_layout_name_; + + // A queue for executing setxkbmap one by one. + std::queue<std::string> execute_queue_; + + base::ThreadChecker thread_checker_; + + base::WeakPtrFactory<ImeKeyboardX11> weak_factory_; + + ObserverList<Observer> observers_; + + DISALLOW_COPY_AND_ASSIGN(ImeKeyboardX11); +}; + + +} // namespace + +} // namespace input_method +} // namespace chromeos + |