Index: chromeos/dbus/ibus/ibus_panel_service.cc |
diff --git a/chromeos/dbus/ibus/ibus_panel_service.cc b/chromeos/dbus/ibus/ibus_panel_service.cc |
deleted file mode 100644 |
index bdce7c815fbf62ae48b46f9d638b6ce063db04e4..0000000000000000000000000000000000000000 |
--- a/chromeos/dbus/ibus/ibus_panel_service.cc |
+++ /dev/null |
@@ -1,457 +0,0 @@ |
-// 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_engine_service.h" |
-#include "chromeos/dbus/ibus/ibus_input_context_client.h" |
-#include "chromeos/dbus/ibus/ibus_lookup_table.h" |
-#include "chromeos/dbus/ibus/ibus_property.h" |
-#include "chromeos/dbus/ibus/ibus_text.h" |
-#include "chromeos/ime/ibus_bridge.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, |
- IBusInputContextClient* input_context) |
- : bus_(bus), |
- candidate_window_handler_(NULL), |
- property_handler_(NULL), |
- weak_ptr_factory_(this) { |
- exported_object_ = bus->GetExportedObject( |
- dbus::ObjectPath(ibus::panel::kServicePath)); |
- |
- exported_object_->ExportMethod( |
- ibus::panel::kServiceInterface, |
- ibus::panel::kUpdateLookupTableMethod, |
- base::Bind(&IBusPanelServiceImpl::UpdateLookupTable, |
- weak_ptr_factory_.GetWeakPtr()), |
- base::Bind(&IBusPanelServiceImpl::OnMethodExported, |
- weak_ptr_factory_.GetWeakPtr())); |
- |
- exported_object_->ExportMethod( |
- ibus::panel::kServiceInterface, |
- ibus::panel::kHideLookupTableMethod, |
- base::Bind(&IBusPanelServiceImpl::HideLookupTable, |
- weak_ptr_factory_.GetWeakPtr()), |
- base::Bind(&IBusPanelServiceImpl::OnMethodExported, |
- weak_ptr_factory_.GetWeakPtr())); |
- |
- exported_object_->ExportMethod( |
- ibus::panel::kServiceInterface, |
- ibus::panel::kUpdateAuxiliaryTextMethod, |
- base::Bind(&IBusPanelServiceImpl::UpdateAuxiliaryText, |
- weak_ptr_factory_.GetWeakPtr()), |
- base::Bind(&IBusPanelServiceImpl::OnMethodExported, |
- weak_ptr_factory_.GetWeakPtr())); |
- |
- exported_object_->ExportMethod( |
- ibus::panel::kServiceInterface, |
- ibus::panel::kHideAuxiliaryTextMethod, |
- base::Bind(&IBusPanelServiceImpl::HideAuxiliaryText, |
- weak_ptr_factory_.GetWeakPtr()), |
- base::Bind(&IBusPanelServiceImpl::OnMethodExported, |
- weak_ptr_factory_.GetWeakPtr())); |
- |
- exported_object_->ExportMethod( |
- ibus::panel::kServiceInterface, |
- ibus::panel::kUpdatePreeditTextMethod, |
- base::Bind(&IBusPanelServiceImpl::UpdatePreeditText, |
- weak_ptr_factory_.GetWeakPtr()), |
- base::Bind(&IBusPanelServiceImpl::OnMethodExported, |
- weak_ptr_factory_.GetWeakPtr())); |
- |
- exported_object_->ExportMethod( |
- ibus::panel::kServiceInterface, |
- ibus::panel::kHidePreeditTextMethod, |
- base::Bind(&IBusPanelServiceImpl::HidePreeditText, |
- weak_ptr_factory_.GetWeakPtr()), |
- base::Bind(&IBusPanelServiceImpl::OnMethodExported, |
- weak_ptr_factory_.GetWeakPtr())); |
- |
- exported_object_->ExportMethod( |
- ibus::panel::kServiceInterface, |
- ibus::panel::kRegisterPropertiesMethod, |
- base::Bind(&IBusPanelServiceImpl::RegisterProperties, |
- weak_ptr_factory_.GetWeakPtr()), |
- base::Bind(&IBusPanelServiceImpl::OnMethodExported, |
- weak_ptr_factory_.GetWeakPtr())); |
- |
- exported_object_->ExportMethod( |
- ibus::panel::kServiceInterface, |
- ibus::panel::kUpdatePropertyMethod, |
- base::Bind(&IBusPanelServiceImpl::UpdateProperty, |
- weak_ptr_factory_.GetWeakPtr()), |
- base::Bind(&IBusPanelServiceImpl::OnMethodExported, |
- weak_ptr_factory_.GetWeakPtr())); |
- |
- exported_object_->ExportMethod( |
- ibus::panel::kServiceInterface, |
- ibus::panel::kFocusInMethod, |
- base::Bind(&IBusPanelServiceImpl::NoOperation, |
- weak_ptr_factory_.GetWeakPtr()), |
- base::Bind(&IBusPanelServiceImpl::OnMethodExported, |
- weak_ptr_factory_.GetWeakPtr())); |
- |
- exported_object_->ExportMethod( |
- ibus::panel::kServiceInterface, |
- ibus::panel::kFocusOutMethod, |
- base::Bind(&IBusPanelServiceImpl::NoOperation, |
- weak_ptr_factory_.GetWeakPtr()), |
- base::Bind(&IBusPanelServiceImpl::OnMethodExported, |
- weak_ptr_factory_.GetWeakPtr())); |
- |
- exported_object_->ExportMethod( |
- ibus::panel::kServiceInterface, |
- ibus::panel::kStateChangedMethod, |
- base::Bind(&IBusPanelServiceImpl::NoOperation, |
- weak_ptr_factory_.GetWeakPtr()), |
- base::Bind(&IBusPanelServiceImpl::OnMethodExported, |
- weak_ptr_factory_.GetWeakPtr())); |
- |
- // Request well known name to ibus-daemon. |
- bus->RequestOwnership( |
- ibus::panel::kServiceName, |
- dbus::Bus::REQUIRE_PRIMARY, |
- base::Bind(&IBusPanelServiceImpl::OnRequestOwnership, |
- weak_ptr_factory_.GetWeakPtr())); |
- |
- input_context->SetSetCursorLocationHandler( |
- base::Bind(&IBusPanelServiceImpl::SetCursorLocation, |
- weak_ptr_factory_.GetWeakPtr())); |
- } |
- |
- virtual ~IBusPanelServiceImpl() { |
- bus_->UnregisterExportedObject( |
- dbus::ObjectPath(ibus::panel::kServicePath)); |
- } |
- |
- // IBusPanelService override. |
- virtual void SetUpCandidateWindowHandler( |
- IBusPanelCandidateWindowHandlerInterface* handler) OVERRIDE { |
- DCHECK(handler); |
- candidate_window_handler_ = handler; |
- } |
- |
- // IBusPanelService override. |
- virtual void SetUpPropertyHandler( |
- IBusPanelPropertyHandlerInterface* handler) OVERRIDE { |
- DCHECK(handler); |
- property_handler_ = handler; |
- } |
- |
- // IBusPanelService override. |
- virtual void CandidateClicked(uint32 index, |
- ibus::IBusMouseButton button, |
- uint32 state) OVERRIDE { |
- dbus::Signal signal(ibus::panel::kServiceInterface, |
- ibus::panel::kCandidateClickedSignal); |
- dbus::MessageWriter writer(&signal); |
- writer.AppendUint32(index); |
- writer.AppendUint32(static_cast<uint32>(button)); |
- writer.AppendUint32(state); |
- exported_object_->SendSignal(&signal); |
- } |
- |
- // IBusPanelService override. |
- virtual void CursorUp() OVERRIDE { |
- dbus::Signal signal(ibus::panel::kServiceInterface, |
- ibus::panel::kCursorUpSignal); |
- exported_object_->SendSignal(&signal); |
- } |
- |
- // IBusPanelService override. |
- virtual void CursorDown() OVERRIDE { |
- dbus::Signal signal(ibus::panel::kServiceInterface, |
- ibus::panel::kCursorDownSignal); |
- exported_object_->SendSignal(&signal); |
- } |
- |
- // IBusPanelService override. |
- virtual void PageUp() OVERRIDE { |
- dbus::Signal signal(ibus::panel::kServiceInterface, |
- ibus::panel::kPageUpSignal); |
- exported_object_->SendSignal(&signal); |
- } |
- |
- // IBusPanelService override. |
- virtual void PageDown() OVERRIDE { |
- dbus::Signal signal(ibus::panel::kServiceInterface, |
- ibus::panel::kPageDownSignal); |
- exported_object_->SendSignal(&signal); |
- } |
- |
- private: |
- // Handles UpdateLookupTable method call from ibus-daemon. |
- void UpdateLookupTable(dbus::MethodCall* method_call, |
- dbus::ExportedObject::ResponseSender response_sender) { |
- if (!candidate_window_handler_) |
- return; |
- |
- dbus::MessageReader reader(method_call); |
- IBusLookupTable table; |
- if (!PopIBusLookupTable(&reader, &table)) { |
- LOG(WARNING) << "UpdateLookupTable called with incorrect parameters: " |
- << method_call->ToString(); |
- return; |
- } |
- bool visible = false; |
- if (!reader.PopBool(&visible)) { |
- LOG(WARNING) << "UpdateLookupTable called with incorrect parameters: " |
- << method_call->ToString(); |
- return; |
- } |
- candidate_window_handler_->UpdateLookupTable(table, visible); |
- response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
- } |
- |
- // Handles HideLookupTable method call from ibus-daemon. |
- void HideLookupTable(dbus::MethodCall* method_call, |
- dbus::ExportedObject::ResponseSender response_sender) { |
- if (!candidate_window_handler_) |
- return; |
- |
- candidate_window_handler_->HideLookupTable(); |
- response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
- } |
- |
- // Handles UpdateAuxiliaryText method call from ibus-daemon. |
- void UpdateAuxiliaryText( |
- dbus::MethodCall* method_call, |
- dbus::ExportedObject::ResponseSender response_sender) { |
- if (!candidate_window_handler_) |
- return; |
- |
- dbus::MessageReader reader(method_call); |
- std::string text; |
- if (!PopStringFromIBusText(&reader, &text)) { |
- LOG(WARNING) << "UpdateAuxiliaryText called with incorrect parameters: " |
- << method_call->ToString(); |
- return; |
- } |
- bool visible = false; |
- if (!reader.PopBool(&visible)) { |
- LOG(WARNING) << "UpdateAuxiliaryText called with incorrect parameters: " |
- << method_call->ToString(); |
- return; |
- } |
- candidate_window_handler_->UpdateAuxiliaryText(text, visible); |
- response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
- } |
- |
- // Handles HideAuxiliaryText method call from ibus-daemon. |
- void HideAuxiliaryText(dbus::MethodCall* method_call, |
- dbus::ExportedObject::ResponseSender response_sender) { |
- if (!candidate_window_handler_) |
- return; |
- |
- candidate_window_handler_->HideAuxiliaryText(); |
- response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
- } |
- |
- // Handles UpdatePreeditText method call from ibus-daemon. |
- void UpdatePreeditText(dbus::MethodCall* method_call, |
- dbus::ExportedObject::ResponseSender response_sender) { |
- if (!candidate_window_handler_) |
- return; |
- |
- dbus::MessageReader reader(method_call); |
- std::string text; |
- if (!PopStringFromIBusText(&reader, &text)) { |
- LOG(WARNING) << "UpdatePreeditText called with incorrect parameters: " |
- << method_call->ToString(); |
- return; |
- } |
- uint32 cursor_pos = 0; |
- if (!reader.PopUint32(&cursor_pos)) { |
- LOG(WARNING) << "UpdatePreeditText called with incorrect parameters: " |
- << method_call->ToString(); |
- return; |
- } |
- bool visible = false; |
- if (!reader.PopBool(&visible)) { |
- LOG(WARNING) << "UpdatePreeditText called with incorrect parameters: " |
- << method_call->ToString(); |
- return; |
- } |
- candidate_window_handler_->UpdatePreeditText(text, cursor_pos, visible); |
- response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
- } |
- |
- // Handles HidePreeditText method call from ibus-daemon. |
- void HidePreeditText(dbus::MethodCall* method_call, |
- dbus::ExportedObject::ResponseSender response_sender) { |
- if (!candidate_window_handler_) |
- return; |
- |
- candidate_window_handler_->HidePreeditText(); |
- response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
- } |
- |
- // Handles RegisterProperties method call from ibus-daemon. |
- void RegisterProperties( |
- dbus::MethodCall* method_call, |
- dbus::ExportedObject::ResponseSender response_sender) { |
- if (!property_handler_) |
- return; |
- |
- dbus::MessageReader reader(method_call); |
- IBusPropertyList properties; |
- if (!PopIBusPropertyList(&reader, &properties)) { |
- DLOG(WARNING) << "RegisterProperties called with incorrect parameters:" |
- << method_call->ToString(); |
- return; |
- } |
- property_handler_->RegisterProperties(properties); |
- |
- response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
- } |
- |
- // Handles UpdateProperty method call from ibus-daemon. |
- void UpdateProperty(dbus::MethodCall* method_call, |
- dbus::ExportedObject::ResponseSender response_sender) { |
- if (!property_handler_) |
- return; |
- |
- dbus::MessageReader reader(method_call); |
- IBusProperty property; |
- if (!PopIBusProperty(&reader, &property)) { |
- DLOG(WARNING) << "RegisterProperties called with incorrect parameters:" |
- << method_call->ToString(); |
- return; |
- } |
- property_handler_->UpdateProperty(property); |
- |
- response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
- } |
- |
- void SetCursorLocation(const ibus::Rect& cursor_location, |
- const ibus::Rect& composition_head) { |
- if (candidate_window_handler_) |
- candidate_window_handler_->SetCursorLocation(cursor_location, |
- composition_head); |
- } |
- |
- // Handles FocusIn, FocusOut, StateChanged method calls from IBus, and ignores |
- // them. |
- void NoOperation(dbus::MethodCall* method_call, |
- dbus::ExportedObject::ResponseSender response_sender) { |
- if (!property_handler_) |
- return; |
- |
- response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
- } |
- |
- // Called when the method call is exported. |
- void OnMethodExported(const std::string& interface_name, |
- const std::string& method_name, |
- bool success) { |
- LOG_IF(WARNING, !success) << "Failed to export " |
- << interface_name << "." << method_name; |
- } |
- |
- // Called when the well knwon name is acquired. |
- void OnRequestOwnership(const std::string& name, bool obtained) { |
- LOG_IF(ERROR, !obtained) << "Failed to acquire well known name:" |
- << name; |
- } |
- |
- // D-Bus bus object used for unregistering exported methods in dtor. |
- dbus::Bus* bus_; |
- |
- // All incoming method calls are passed on to the |candidate_window_handler_| |
- // or |property_handler|. This class does not take ownership of following |
- // handlers. |
- IBusPanelCandidateWindowHandlerInterface* candidate_window_handler_; |
- IBusPanelPropertyHandlerInterface* property_handler_; |
- |
- scoped_refptr<dbus::ExportedObject> exported_object_; |
- base::WeakPtrFactory<IBusPanelServiceImpl> weak_ptr_factory_; |
- |
- DISALLOW_COPY_AND_ASSIGN(IBusPanelServiceImpl); |
-}; |
- |
-// An implementation of IBusPanelService without ibus-daemon interaction. |
-// Currently this class is used only on linux desktop. |
-// TODO(nona): Use this on ChromeOS device once crbug.com/171351 is fixed. |
-class IBusPanelServiceDaemonlessImpl : public IBusPanelService { |
- public: |
- IBusPanelServiceDaemonlessImpl() {} |
- virtual ~IBusPanelServiceDaemonlessImpl() {} |
- |
- // IBusPanelService override. |
- virtual void SetUpCandidateWindowHandler( |
- IBusPanelCandidateWindowHandlerInterface* handler) OVERRIDE { |
- IBusBridge::Get()->SetCandidateWindowHandler(handler); |
- } |
- |
- // IBusPanelService override. |
- virtual void SetUpPropertyHandler( |
- IBusPanelPropertyHandlerInterface* handler) OVERRIDE { |
- IBusBridge::Get()->SetPropertyHandler(handler); |
- } |
- |
- // IBusPanelService override. |
- virtual void CandidateClicked(uint32 index, |
- ibus::IBusMouseButton button, |
- uint32 state) OVERRIDE { |
- IBusEngineHandlerInterface* engine = IBusBridge::Get()->GetEngineHandler(); |
- if (engine) |
- engine->CandidateClicked(index, button, state); |
- } |
- |
- // IBusPanelService override. |
- virtual void CursorUp() OVERRIDE { |
- // Cursor Up is not supported on Chrome OS. |
- } |
- |
- // IBusPanelService override. |
- virtual void CursorDown() OVERRIDE { |
- // Cursor Down is not supported on Chrome OS. |
- } |
- |
- // IBusPanelService override. |
- virtual void PageUp() OVERRIDE { |
- // Page Up is not supported on Chrome OS. |
- } |
- |
- // IBusPanelService override. |
- virtual void PageDown() OVERRIDE { |
- // Page Down is not supported on Chrome OS. |
- } |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(IBusPanelServiceDaemonlessImpl); |
-}; |
- |
-IBusPanelService::IBusPanelService() { |
-} |
- |
-IBusPanelService::~IBusPanelService() { |
-} |
- |
-// static |
-IBusPanelService* IBusPanelService::Create( |
- DBusClientImplementationType type, |
- dbus::Bus* bus, |
- IBusInputContextClient* input_context) { |
- if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) { |
- return new IBusPanelServiceImpl(bus, input_context); |
- } else { |
- return new IBusPanelServiceDaemonlessImpl(); |
- } |
-} |
- |
-} // namespace chromeos |