diff options
author | nona@chromium.org <nona@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-05 09:47:33 +0000 |
---|---|---|
committer | nona@chromium.org <nona@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-05 09:47:33 +0000 |
commit | a2f4077944fdfb753b7074493340a976660e19b3 (patch) | |
tree | 6772d3beecacd6c82529b7d91cb40cc13fabbe09 | |
parent | 0b6a658caaa4520b26c161c9f097e388f6effeab (diff) | |
download | chromium_src-a2f4077944fdfb753b7074493340a976660e19b3.zip chromium_src-a2f4077944fdfb753b7074493340a976660e19b3.tar.gz chromium_src-a2f4077944fdfb753b7074493340a976660e19b3.tar.bz2 |
Introduce IBusPanelService with empty implementation.
This patch set introduce only empty implementation for IBusPanelService.
The actual implementation will be done with http://codereview.chromium.org/11342040/.
BUG=158264
TEST=ran chromeos_unittests, unit_tests
Review URL: https://chromiumcodereview.appspot.com/11343038
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165914 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/chromeos/input_method/input_method_engine_ibus.cc | 8 | ||||
-rw-r--r-- | chrome/browser/chromeos/input_method/input_method_engine_ibus.h | 2 | ||||
-rw-r--r-- | chromeos/chromeos.gyp | 4 | ||||
-rw-r--r-- | chromeos/dbus/ibus/ibus_constants.h | 24 | ||||
-rw-r--r-- | chromeos/dbus/ibus/ibus_engine_service.cc | 2 | ||||
-rw-r--r-- | chromeos/dbus/ibus/ibus_engine_service.h | 11 | ||||
-rw-r--r-- | chromeos/dbus/ibus/ibus_engine_service_unittest.cc | 6 | ||||
-rw-r--r-- | chromeos/dbus/ibus/ibus_panel_service.cc | 93 | ||||
-rw-r--r-- | chromeos/dbus/ibus/ibus_panel_service.h | 106 | ||||
-rw-r--r-- | chromeos/dbus/ibus/mock_ibus_panel_service.cc | 35 | ||||
-rw-r--r-- | chromeos/dbus/ibus/mock_ibus_panel_service.h | 31 |
11 files changed, 304 insertions, 18 deletions
diff --git a/chrome/browser/chromeos/input_method/input_method_engine_ibus.cc b/chrome/browser/chromeos/input_method/input_method_engine_ibus.cc index 2af7f8b..c4275e4 100644 --- a/chrome/browser/chromeos/input_method/input_method_engine_ibus.cc +++ b/chrome/browser/chromeos/input_method/input_method_engine_ibus.cc @@ -440,7 +440,7 @@ void InputMethodEngineIBus::ProcessKeyEvent( void InputMethodEngineIBus::CandidateClicked( uint32 index, - IBusMouseButton button, + ibus::IBusMouseButton button, uint32 state) { if (index > candidate_ids_.size()) { return; @@ -448,13 +448,13 @@ void InputMethodEngineIBus::CandidateClicked( MouseButtonEvent pressed_button; switch (button) { - case IBusEngineHandlerInterface::IBUS_MOUSE_BUTTON_LEFT: + case ibus::IBUS_MOUSE_BUTTON_LEFT: pressed_button = MOUSE_BUTTON_LEFT; break; - case IBusEngineHandlerInterface::IBUS_MOUSE_BUTTON_MIDDLE: + case ibus::IBUS_MOUSE_BUTTON_MIDDLE: pressed_button = MOUSE_BUTTON_MIDDLE; break; - case IBusEngineHandlerInterface::IBUS_MOUSE_BUTTON_RIGHT: + case ibus::IBUS_MOUSE_BUTTON_RIGHT: pressed_button = MOUSE_BUTTON_RIGHT; break; default: diff --git a/chrome/browser/chromeos/input_method/input_method_engine_ibus.h b/chrome/browser/chromeos/input_method/input_method_engine_ibus.h index b3de152..e8dd7ce 100644 --- a/chrome/browser/chromeos/input_method/input_method_engine_ibus.h +++ b/chrome/browser/chromeos/input_method/input_method_engine_ibus.h @@ -85,7 +85,7 @@ class InputMethodEngineIBus : public InputMethodEngine, virtual void Reset() OVERRIDE; virtual void ProcessKeyEvent(uint32 keysym, uint32 keycode, uint32 state, const KeyEventDoneCallback& callback) OVERRIDE; - virtual void CandidateClicked(uint32 index, IBusMouseButton button, + virtual void CandidateClicked(uint32 index, ibus::IBusMouseButton button, uint32 state) OVERRIDE; virtual void SetSurroundingText(const std::string& text, uint32 cursor_pos, uint32 anchor_pos) OVERRIDE; diff --git a/chromeos/chromeos.gyp b/chromeos/chromeos.gyp index a9395a9..5a16ad8 100644 --- a/chromeos/chromeos.gyp +++ b/chromeos/chromeos.gyp @@ -96,6 +96,8 @@ 'dbus/ibus/ibus_text.h', 'dbus/ibus/ibus_input_context_client.cc', 'dbus/ibus/ibus_input_context_client.h', + 'dbus/ibus/ibus_panel_service.cc', + 'dbus/ibus/ibus_panel_service.h', 'dbus/image_burner_client.cc', 'dbus/image_burner_client.h', 'dbus/introspectable_client.cc', @@ -225,6 +227,8 @@ 'dbus/ibus/mock_ibus_engine_factory_service.h', 'dbus/ibus/mock_ibus_engine_service.cc', 'dbus/ibus/mock_ibus_engine_service.h', + 'dbus/ibus/mock_ibus_panel_service.cc', + 'dbus/ibus/mock_ibus_panel_service.h', ], 'include_dirs': [ '..', diff --git a/chromeos/dbus/ibus/ibus_constants.h b/chromeos/dbus/ibus/ibus_constants.h index 9c5d430..5c2c755 100644 --- a/chromeos/dbus/ibus/ibus_constants.h +++ b/chromeos/dbus/ibus/ibus_constants.h @@ -68,6 +68,22 @@ const char kRequireSurroundingTextSignal[] = "RequireSurroundingText"; const char kCommitTextSignal[] = "CommitText"; } // namespace engine +namespace panel { +const char kServicePath[] = "/org/freedesktop/IBus/Panel"; +const char kServiceInterface[] = "org.freedesktop.IBus.Panel"; +const char kUpdateLookupTableMethod[] = "UpdateLookupTable"; +const char kHideLookupTableMethod[] = "HideLookupTable"; +const char kUpdateAuxiliaryTextMethod[] = "UpdateAuxiliaryText"; +const char kHideAuxiliaryTextMethod[] = "HideAuxiliaryText"; +const char kUpdatePreeditTextMethod[] = "UpdatePreeditText"; +const char kHidePreeditTextMethod[] = "HidePreeditText"; +const char kCandidateClickedSignal[] = "CandidateClicked"; +const char kCursorUpSignal[] = "CursorUp"; +const char kCursorDownSignal[] = "CursorDown"; +const char kPageUpSignal[] = "PageUp"; +const char kPageDownSignal[] = "PageDown"; +} // namespace panel + // Following variables indicate state of IBusProperty. enum IBusPropertyState { IBUS_PROPERTY_STATE_UNCHECKED = 0, @@ -75,6 +91,14 @@ enum IBusPropertyState { IBUS_PROPERTY_STATE_INCONSISTENT = 2, }; +// Following button indicator value is introduced from +// http://developer.gnome.org/gdk/stable/gdk-Event-Structures.html#GdkEventButton +enum IBusMouseButton { + IBUS_MOUSE_BUTTON_LEFT = 1U, + IBUS_MOUSE_BUTTON_MIDDLE = 2U, + IBUS_MOUSE_BUTTON_RIGHT = 3U, +}; + } // namespace ibus } // namespace chromeos diff --git a/chromeos/dbus/ibus/ibus_engine_service.cc b/chromeos/dbus/ibus/ibus_engine_service.cc index 06d205d..637ebc5 100644 --- a/chromeos/dbus/ibus/ibus_engine_service.cc +++ b/chromeos/dbus/ibus/ibus_engine_service.cc @@ -422,7 +422,7 @@ class IBusEngineServiceImpl : public IBusEngineService { } engine_handler_->CandidateClicked( index, - static_cast<IBusEngineHandlerInterface::IBusMouseButton>(button), + static_cast<ibus::IBusMouseButton>(button), state); dbus::Response* response = dbus::Response::FromMethodCall(method_call); response_sender.Run(response); diff --git a/chromeos/dbus/ibus/ibus_engine_service.h b/chromeos/dbus/ibus/ibus_engine_service.h index f4aaba9..f76a20d 100644 --- a/chromeos/dbus/ibus/ibus_engine_service.h +++ b/chromeos/dbus/ibus/ibus_engine_service.h @@ -11,6 +11,7 @@ #include "base/memory/scoped_vector.h" #include "chromeos/chromeos_export.h" #include "chromeos/dbus/dbus_client_implementation_type.h" +#include "chromeos/dbus/ibus/ibus_constants.h" namespace dbus { class Bus; @@ -48,14 +49,6 @@ class CHROMEOS_EXPORT IBusEngineHandlerInterface { IBUS_PROPERTY_STATE_INCONSISTENT = 2U, }; - // Following button indicator value is introduced from - // http://developer.gnome.org/gdk/stable/gdk-Event-Structures.html#GdkEventButton - enum IBusMouseButton { - IBUS_MOUSE_BUTTON_LEFT = 1U, - IBUS_MOUSE_BUTTON_MIDDLE = 2U, - IBUS_MOUSE_BUTTON_RIGHT = 3U, - }; - virtual ~IBusEngineHandlerInterface() {} // Called when the Chrome input field get the focus. @@ -101,7 +94,7 @@ class CHROMEOS_EXPORT IBusEngineHandlerInterface { // based candidate index in lookup table. The |state| is same value as // GdkModifierType in // http://developer.gnome.org/gdk/stable/gdk-Windows.html#GdkModifierType - virtual void CandidateClicked(uint32 index, IBusMouseButton button, + virtual void CandidateClicked(uint32 index, ibus::IBusMouseButton button, uint32 state) = 0; // Called when a new surrounding text is set. The |text| is surrounding text diff --git a/chromeos/dbus/ibus/ibus_engine_service_unittest.cc b/chromeos/dbus/ibus/ibus_engine_service_unittest.cc index f7f4d93..16df662 100644 --- a/chromeos/dbus/ibus/ibus_engine_service_unittest.cc +++ b/chromeos/dbus/ibus/ibus_engine_service_unittest.cc @@ -46,7 +46,8 @@ class MockIBusEngineHandler : public IBusEngineHandlerInterface { uint32 keycode, uint32 state, const KeyEventDoneCallback& callback)); - MOCK_METHOD3(CandidateClicked, void(uint32 index, IBusMouseButton button, + MOCK_METHOD3(CandidateClicked, void(uint32 index, + ibus::IBusMouseButton button, uint32 state)); MOCK_METHOD3(SetSurroundingText, void(const std::string& text, uint32 cursor_pos, @@ -926,8 +927,7 @@ TEST_F(IBusEngineServiceTest, CandidateClickedTest) { // Set expectations. const uint32 kSerialNo = 1; const uint32 kIndex = 4; - const IBusEngineHandlerInterface::IBusMouseButton kIBusMouseButton = - IBusEngineHandlerInterface::IBUS_MOUSE_BUTTON_MIDDLE; + const ibus::IBusMouseButton kIBusMouseButton = ibus::IBUS_MOUSE_BUTTON_MIDDLE; const uint32 kState = 3; EXPECT_CALL(*engine_handler_, CandidateClicked(kIndex, kIBusMouseButton, kState)); diff --git a/chromeos/dbus/ibus/ibus_panel_service.cc b/chromeos/dbus/ibus/ibus_panel_service.cc new file mode 100644 index 0000000..50e6859 --- /dev/null +++ b/chromeos/dbus/ibus/ibus_panel_service.cc @@ -0,0 +1,93 @@ +// 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. + +#include "chromeos/dbus/ibus/ibus_panel_service.h" + +#include <string> +#include "base/bind.h" +#include "base/callback.h" +#include "chromeos/dbus/ibus/ibus_constants.h" +#include "chromeos/dbus/ibus/ibus_lookup_table.h" +#include "chromeos/dbus/ibus/ibus_property.h" +#include "chromeos/dbus/ibus/ibus_text.h" +#include "dbus/bus.h" +#include "dbus/exported_object.h" +#include "dbus/message.h" +#include "dbus/object_path.h" +#include "dbus/object_proxy.h" + +namespace chromeos { + +class IBusPanelServiceImpl : public IBusPanelService { + public: + explicit IBusPanelServiceImpl(dbus::Bus* bus) { + } + + virtual ~IBusPanelServiceImpl() { + } + + // IBusPanelService override. + virtual void Initialize(IBusPanelHandlerInterface* handler) OVERRIDE { + } + + // IBusPanelService override. + virtual void CandidateClicked(uint32 index, + ibus::IBusMouseButton button, + uint32 state) OVERRIDE { + } + + // IBusPanelService override. + virtual void CursorUp() OVERRIDE { + } + + // IBusPanelService override. + virtual void CursorDown() OVERRIDE { + } + + // IBusPanelService override. + virtual void PageUp() OVERRIDE { + } + + // IBusPanelService override. + virtual void PageDown() OVERRIDE { + } + + DISALLOW_COPY_AND_ASSIGN(IBusPanelServiceImpl); +}; + +class IBusPanelServiceStubImpl : public IBusPanelService { + public: + IBusPanelServiceStubImpl() {} + virtual ~IBusPanelServiceStubImpl() {} + // IBusPanelService overrides. + virtual void Initialize(IBusPanelHandlerInterface* handler) OVERRIDE {} + virtual void CandidateClicked(uint32 index, + ibus::IBusMouseButton button, + uint32 state) OVERRIDE {} + virtual void CursorUp() OVERRIDE {} + virtual void CursorDown() OVERRIDE {} + virtual void PageUp() OVERRIDE {} + virtual void PageDown() OVERRIDE {} + + private: + DISALLOW_COPY_AND_ASSIGN(IBusPanelServiceStubImpl); +}; + +IBusPanelService::IBusPanelService() { +} + +IBusPanelService::~IBusPanelService() { +} + +// static +IBusPanelService* IBusPanelService::Create(DBusClientImplementationType type, + dbus::Bus* bus) { + if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) { + return new IBusPanelServiceImpl(bus); + } else { + return new IBusPanelServiceStubImpl(); + } +} + +} // namespace chromeos diff --git a/chromeos/dbus/ibus/ibus_panel_service.h b/chromeos/dbus/ibus/ibus_panel_service.h new file mode 100644 index 0000000..a46e553 --- /dev/null +++ b/chromeos/dbus/ibus/ibus_panel_service.h @@ -0,0 +1,106 @@ +// 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 CHROMEOS_DBUS_IBUS_IBUS_PANEL_SERVICE_H_ +#define CHROMEOS_DBUS_IBUS_IBUS_PANEL_SERVICE_H_ + +#include <string> +#include "base/bind.h" +#include "base/callback.h" +#include "base/memory/scoped_vector.h" +#include "chromeos/chromeos_export.h" +#include "chromeos/dbus/dbus_client_implementation_type.h" +#include "chromeos/dbus/ibus/ibus_constants.h" + +namespace dbus { +class Bus; +class ObjectPath; +} // namespace dbus + +namespace chromeos { + +// TODO(nona): Remove ibus namespace after complete libibus removal. +namespace ibus { +class IBusLookupTable; +class IBusProperty; +class IBusText; +typedef ScopedVector<IBusProperty> IBusPropertyList; +} // namespace + +// A interface to handle the panel client method call. +class CHROMEOS_EXPORT IBusPanelHandlerInterface { + public: + virtual ~IBusPanelHandlerInterface() {} + + // Called when the IME updates the lookup table. + virtual void UpdateLookupTable(const ibus::IBusLookupTable& table, + bool visible) = 0; + + // Called when the IME hides the lookup table. + virtual void HideLookupTable() = 0; + + // Called when the IME updates the auxiliary text. The |text| is given in + // UTF-8 encoding. + virtual void UpdateAuxiliaryText(const std::string& text, bool visible) = 0; + + // Called when the IME hides the auxiliary text. + virtual void HideAuxiliaryText() = 0; + + // Called when the IME updates the preedit text. The |text| is given in + // UTF-8 encoding. + virtual void UpdatePreeditText(const std::string& text, uint32 cursor_pos, + bool visible) = 0; + + // Called when the IME hides the preedit text. + virtual void HidePreeditText() = 0; + + protected: + IBusPanelHandlerInterface() {} +}; + +// A class to make the actual DBus method call handling for IBusPanel service. +// The exported method call is used by ibus-daemon to process candidate window +// related event, because Chrome works as candidate window. This class is +// managed by DBusThreadManager. +class CHROMEOS_EXPORT IBusPanelService { + public: + virtual ~IBusPanelService(); + + // Initializes Panel service with |handler|, which must not be NULL. + virtual void Initialize(IBusPanelHandlerInterface* handler) = 0; + + // Emits CandidateClicked signal. + virtual void CandidateClicked(uint32 index, + ibus::IBusMouseButton button, + uint32 state) = 0; + + // Emits CursorUp signal. + virtual void CursorUp() = 0; + + // Emits CursorDown signal. + virtual void CursorDown() = 0; + + // Emits PageUp signal. + virtual void PageUp() = 0; + + // Emits PageDown signal. + virtual void PageDown() = 0; + + // Factory function, creates a new instance and returns ownership. + // For normal usage, access the singleton via DBusThreadManager::Get(). + static CHROMEOS_EXPORT IBusPanelService* Create( + DBusClientImplementationType type, + dbus::Bus* bus); + + protected: + // Create() should be used instead. + IBusPanelService(); + + private: + DISALLOW_COPY_AND_ASSIGN(IBusPanelService); +}; + +} // namespace chromeos + +#endif // CHROMEOS_DBUS_IBUS_IBUS_PANEL_SERVICE_H_ diff --git a/chromeos/dbus/ibus/mock_ibus_panel_service.cc b/chromeos/dbus/ibus/mock_ibus_panel_service.cc new file mode 100644 index 0000000..d937ee3 --- /dev/null +++ b/chromeos/dbus/ibus/mock_ibus_panel_service.cc @@ -0,0 +1,35 @@ +// 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. + +#include "chromeos/dbus/ibus/mock_ibus_panel_service.h" + +namespace chromeos { + +MockIBusPanelService::MockIBusPanelService() { +} + +MockIBusPanelService::~MockIBusPanelService() { +} + +void MockIBusPanelService::Initialize(IBusPanelHandlerInterface* handler) { +} + +void MockIBusPanelService::CandidateClicked(uint32 index, + ibus::IBusMouseButton button, + uint32 state) { +} + +void MockIBusPanelService::CursorUp() { +} + +void MockIBusPanelService::CursorDown() { +} + +void MockIBusPanelService::PageUp() { +} + +void MockIBusPanelService::PageDown() { +} + +} // namespace chromeos diff --git a/chromeos/dbus/ibus/mock_ibus_panel_service.h b/chromeos/dbus/ibus/mock_ibus_panel_service.h new file mode 100644 index 0000000..4979046 --- /dev/null +++ b/chromeos/dbus/ibus/mock_ibus_panel_service.h @@ -0,0 +1,31 @@ +// 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 CHROMEOS_DBUS_IBUS_MOCK_IBUS_PANEL_SERVICE_H_ +#define CHROMEOS_DBUS_IBUS_MOCK_IBUS_PANEL_SERVICE_H_ + +#include <string> +#include "chromeos/dbus/ibus/ibus_panel_service.h" + +namespace chromeos { + +class MockIBusPanelService : public IBusPanelService { + public: + MockIBusPanelService(); + virtual ~MockIBusPanelService(); + + // IBusPanelService overrides. + virtual void Initialize(IBusPanelHandlerInterface* handler) OVERRIDE; + virtual void CandidateClicked(uint32 index, + ibus::IBusMouseButton button, + uint32 state) OVERRIDE; + virtual void CursorUp() OVERRIDE; + virtual void CursorDown() OVERRIDE; + virtual void PageUp() OVERRIDE; + virtual void PageDown() OVERRIDE; +}; + +} // namespace chromeos + +#endif // CHROMEOS_DBUS_IBUS_MOCK_IBUS_PANEL_SERVICE_H_ |