summaryrefslogtreecommitdiffstats
path: root/chromeos/dbus
diff options
context:
space:
mode:
authornona@chromium.org <nona@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-05 09:47:33 +0000
committernona@chromium.org <nona@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-05 09:47:33 +0000
commita2f4077944fdfb753b7074493340a976660e19b3 (patch)
tree6772d3beecacd6c82529b7d91cb40cc13fabbe09 /chromeos/dbus
parent0b6a658caaa4520b26c161c9f097e388f6effeab (diff)
downloadchromium_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
Diffstat (limited to 'chromeos/dbus')
-rw-r--r--chromeos/dbus/ibus/ibus_constants.h24
-rw-r--r--chromeos/dbus/ibus/ibus_engine_service.cc2
-rw-r--r--chromeos/dbus/ibus/ibus_engine_service.h11
-rw-r--r--chromeos/dbus/ibus/ibus_engine_service_unittest.cc6
-rw-r--r--chromeos/dbus/ibus/ibus_panel_service.cc93
-rw-r--r--chromeos/dbus/ibus/ibus_panel_service.h106
-rw-r--r--chromeos/dbus/ibus/mock_ibus_panel_service.cc35
-rw-r--r--chromeos/dbus/ibus/mock_ibus_panel_service.h31
8 files changed, 295 insertions, 13 deletions
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_