Chromium Code Reviews| Index: chromeos/dbus/ibus/ibus_engine_service.cc |
| diff --git a/chromeos/dbus/ibus/ibus_engine_service.cc b/chromeos/dbus/ibus/ibus_engine_service.cc |
| index dcfee8369d4ea6e88901e747d55754f2a157ef44..390bd460bbe164275bcf71fe110571280afa6184 100644 |
| --- a/chromeos/dbus/ibus/ibus_engine_service.cc |
| +++ b/chromeos/dbus/ibus/ibus_engine_service.cc |
| @@ -24,6 +24,7 @@ class IBusEngineServiceImpl : public IBusEngineService { |
| IBusEngineServiceImpl(dbus::Bus* bus, |
| const dbus::ObjectPath& object_path) |
| : bus_(bus), |
| + engine_handler_(NULL), |
| object_path_(object_path), |
| weak_ptr_factory_(this) { |
| exported_object_ = bus->GetExportedObject(object_path_); |
| @@ -130,11 +131,17 @@ class IBusEngineServiceImpl : public IBusEngineService { |
| } |
| // IBusEngineService override. |
| - virtual void Initialize(IBusEngineHandlerInterface* handler) OVERRIDE { |
| - if (engine_handler_.get() == NULL) { |
| - engine_handler_.reset(handler); |
| + virtual void SetEngine(IBusEngineHandlerInterface* handler) OVERRIDE { |
| + LOG_IF(ERROR, engine_handler_ == NULL) << "Override engine."; |
| + engine_handler_ = handler; |
| + } |
| + |
| + // IBusEngineService override. |
| + virtual void UnsetEngine() OVERRIDE { |
| + if (engine_handler_ == NULL) { |
| + LOG(ERROR) << "There is no engine."; |
| } else { |
| - LOG(ERROR) << "Already initialized."; |
| + engine_handler_ = NULL; |
| } |
| } |
| @@ -225,7 +232,8 @@ class IBusEngineServiceImpl : public IBusEngineService { |
| // Handles FocusIn method call from ibus-daemon. |
| void FocusIn(dbus::MethodCall* method_call, |
| dbus::ExportedObject::ResponseSender response_sender) { |
| - DCHECK(engine_handler_.get()); |
| + if (engine_handler_ == NULL) |
| + return; |
| engine_handler_->FocusIn(); |
| dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| response_sender.Run(response); |
| @@ -234,7 +242,8 @@ class IBusEngineServiceImpl : public IBusEngineService { |
| // Handles FocusOut method call from ibus-daemon. |
| void FocusOut(dbus::MethodCall* method_call, |
| dbus::ExportedObject::ResponseSender response_sender) { |
| - DCHECK(engine_handler_.get()); |
| + if (engine_handler_ == NULL) |
| + return; |
| engine_handler_->FocusOut(); |
| dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| response_sender.Run(response); |
| @@ -243,7 +252,8 @@ class IBusEngineServiceImpl : public IBusEngineService { |
| // Handles Enable method call from ibus-daemon. |
| void Enable(dbus::MethodCall* method_call, |
| dbus::ExportedObject::ResponseSender response_sender) { |
| - DCHECK(engine_handler_.get()); |
| + if (engine_handler_ == NULL) |
| + return; |
| engine_handler_->Enable(); |
| dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| response_sender.Run(response); |
| @@ -252,7 +262,8 @@ class IBusEngineServiceImpl : public IBusEngineService { |
| // Handles Disable method call from ibus-daemon. |
| void Disable(dbus::MethodCall* method_call, |
| dbus::ExportedObject::ResponseSender response_sender) { |
| - DCHECK(engine_handler_.get()); |
| + if (engine_handler_ == NULL) |
| + return; |
| engine_handler_->Disable(); |
| dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| response_sender.Run(response); |
| @@ -261,6 +272,8 @@ class IBusEngineServiceImpl : public IBusEngineService { |
| // Handles PropertyActivate method call from ibus-daemon. |
| void PropertyActivate(dbus::MethodCall* method_call, |
| dbus::ExportedObject::ResponseSender response_sender) { |
| + if (engine_handler_ == NULL) |
| + return; |
| dbus::MessageReader reader(method_call); |
| std::string property_name; |
| if (!reader.PopString(&property_name)) { |
| @@ -274,7 +287,6 @@ class IBusEngineServiceImpl : public IBusEngineService { |
| << method_call->ToString(); |
| return; |
| } |
| - DCHECK(engine_handler_.get()); |
| engine_handler_->PropertyActivate( |
| property_name, |
| static_cast<IBusEngineHandlerInterface::IBusPropertyState>( |
| @@ -286,6 +298,8 @@ class IBusEngineServiceImpl : public IBusEngineService { |
| // Handles PropertyShow method call from ibus-daemon. |
| void PropertyShow(dbus::MethodCall* method_call, |
| dbus::ExportedObject::ResponseSender response_sender) { |
| + if (engine_handler_ == NULL) |
| + return; |
| dbus::MessageReader reader(method_call); |
| std::string property_name; |
| if (!reader.PopString(&property_name)) { |
| @@ -293,7 +307,6 @@ class IBusEngineServiceImpl : public IBusEngineService { |
| << method_call->ToString(); |
| return; |
| } |
| - DCHECK(engine_handler_.get()); |
| engine_handler_->PropertyShow(property_name); |
| dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| response_sender.Run(response); |
| @@ -302,6 +315,8 @@ class IBusEngineServiceImpl : public IBusEngineService { |
| // Handles PropertyHide method call from ibus-daemon. |
| void PropertyHide(dbus::MethodCall* method_call, |
| dbus::ExportedObject::ResponseSender response_sender) { |
| + if (engine_handler_ == NULL) |
| + return; |
| dbus::MessageReader reader(method_call); |
| std::string property_name; |
| if (!reader.PopString(&property_name)) { |
| @@ -309,7 +324,6 @@ class IBusEngineServiceImpl : public IBusEngineService { |
| << method_call->ToString(); |
| return; |
| } |
| - DCHECK(engine_handler_.get()); |
| engine_handler_->PropertyHide(property_name); |
| dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| response_sender.Run(response); |
| @@ -318,6 +332,8 @@ class IBusEngineServiceImpl : public IBusEngineService { |
| // Handles SetCapability method call from ibus-daemon. |
| void SetCapability(dbus::MethodCall* method_call, |
| dbus::ExportedObject::ResponseSender response_sender) { |
| + if (engine_handler_ == NULL) |
| + return; |
| dbus::MessageReader reader(method_call); |
| uint32 capability = 0; |
| if (!reader.PopUint32(&capability)) { |
| @@ -325,7 +341,6 @@ class IBusEngineServiceImpl : public IBusEngineService { |
| << method_call->ToString(); |
| return; |
| } |
| - DCHECK(engine_handler_.get()); |
| engine_handler_->SetCapability( |
| static_cast<IBusEngineHandlerInterface::IBusCapability>(capability)); |
| dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| @@ -334,7 +349,8 @@ class IBusEngineServiceImpl : public IBusEngineService { |
| void Reset(dbus::MethodCall* method_call, |
| dbus::ExportedObject::ResponseSender response_sender) { |
| - DCHECK(engine_handler_.get()); |
| + if (engine_handler_ == NULL) |
| + return; |
| engine_handler_->Reset(); |
| dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| response_sender.Run(response); |
| @@ -343,6 +359,8 @@ class IBusEngineServiceImpl : public IBusEngineService { |
| // Handles ProcessKeyEvent method call from ibus-daemon. |
| void ProcessKeyEvent(dbus::MethodCall* method_call, |
| dbus::ExportedObject::ResponseSender response_sender) { |
| + if (engine_handler_ == NULL) |
| + return; |
| dbus::MessageReader reader(method_call); |
| uint32 keysym = 0; |
| if (!reader.PopUint32(&keysym)) { |
| @@ -362,7 +380,6 @@ class IBusEngineServiceImpl : public IBusEngineService { |
| << method_call->ToString(); |
| return; |
| } |
| - DCHECK(engine_handler_.get()); |
| engine_handler_->ProcessKeyEvent( |
| keysym, keycode, state, |
| base::Bind(&IBusEngineServiceImpl::KeyEventDone, |
| @@ -375,6 +392,7 @@ class IBusEngineServiceImpl : public IBusEngineService { |
| void KeyEventDone(dbus::Response* response, |
| const dbus::ExportedObject::ResponseSender& response_sender, |
| bool consume) { |
| + //////// do we need to check engine_handler_? |
|
Seigo Nonaka
2012/09/24 04:16:58
remove this. And I think the answer is yes, becaus
hsumita
2012/09/24 07:32:59
Done.
|
| dbus::MessageWriter writer(response); |
| writer.AppendBool(consume); |
| response_sender.Run(response); |
| @@ -383,6 +401,8 @@ class IBusEngineServiceImpl : public IBusEngineService { |
| // Handles CandidateClicked method call from ibus-daemon. |
| void CandidateClicked(dbus::MethodCall* method_call, |
| dbus::ExportedObject::ResponseSender response_sender) { |
| + if (engine_handler_ == NULL) |
| + return; |
| dbus::MessageReader reader(method_call); |
| uint32 index = 0; |
| if (!reader.PopUint32(&index)) { |
| @@ -402,7 +422,6 @@ class IBusEngineServiceImpl : public IBusEngineService { |
| << method_call->ToString(); |
| return; |
| } |
| - DCHECK(engine_handler_.get()); |
| engine_handler_->CandidateClicked( |
| index, |
| static_cast<IBusEngineHandlerInterface::IBusMouseButton>(button), |
| @@ -415,6 +434,8 @@ class IBusEngineServiceImpl : public IBusEngineService { |
| void SetSurroundingText( |
| dbus::MethodCall* method_call, |
| dbus::ExportedObject::ResponseSender response_sender) { |
| + if (engine_handler_ == NULL) |
| + return; |
| dbus::MessageReader reader(method_call); |
| std::string text; |
| if (!reader.PopString(&text)) { |
| @@ -435,7 +456,6 @@ class IBusEngineServiceImpl : public IBusEngineService { |
| return; |
| } |
| - DCHECK(engine_handler_.get()); |
| engine_handler_->SetSurroundingText(text, cursor_pos, anchor_pos); |
| dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| response_sender.Run(response); |
| @@ -453,7 +473,7 @@ class IBusEngineServiceImpl : public IBusEngineService { |
| dbus::Bus* bus_; |
| // All incoming method calls are passed on to the |engine_handler_|. |
| - scoped_ptr<IBusEngineHandlerInterface> engine_handler_; |
| + IBusEngineHandlerInterface *engine_handler_; |
|
Seigo Nonaka
2012/09/24 04:16:58
IBusEngineHandlerInterfae* engine_handler_
hsumita
2012/09/24 07:32:59
Done.
|
| dbus::ObjectPath object_path_; |
| scoped_refptr<dbus::ExportedObject> exported_object_; |
| @@ -467,7 +487,8 @@ class IBusEngineServiceStubImpl : public IBusEngineService { |
| IBusEngineServiceStubImpl() {} |
| virtual ~IBusEngineServiceStubImpl() {} |
| // IBusEngineService overrides. |
| - virtual void Initialize(IBusEngineHandlerInterface* handler) OVERRIDE {} |
| + virtual void SetEngine(IBusEngineHandlerInterface* handler) OVERRIDE {} |
| + virtual void UnsetEngine() OVERRIDE {} |
| virtual void RegisterProperties( |
| const ibus::IBusPropertyList& property_list) OVERRIDE {} |
| virtual void UpdatePreedit(const ibus::IBusText& ibus_text, |