| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chromeos/dbus/ibus/ibus_engine_service.h" | 5 #include "chromeos/dbus/ibus/ibus_engine_service.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/callback.h" | 9 #include "base/callback.h" |
| 10 #include "chromeos/dbus/ibus/ibus_constants.h" | 10 #include "chromeos/dbus/ibus/ibus_constants.h" |
| 11 #include "chromeos/dbus/ibus/ibus_lookup_table.h" | 11 #include "chromeos/dbus/ibus/ibus_lookup_table.h" |
| 12 #include "chromeos/dbus/ibus/ibus_property.h" | 12 #include "chromeos/dbus/ibus/ibus_property.h" |
| 13 #include "chromeos/dbus/ibus/ibus_text.h" | 13 #include "chromeos/dbus/ibus/ibus_text.h" |
| 14 #include "dbus/bus.h" | 14 #include "dbus/bus.h" |
| 15 #include "dbus/exported_object.h" | 15 #include "dbus/exported_object.h" |
| 16 #include "dbus/message.h" | 16 #include "dbus/message.h" |
| 17 #include "dbus/object_path.h" | 17 #include "dbus/object_path.h" |
| 18 #include "dbus/object_proxy.h" | 18 #include "dbus/object_proxy.h" |
| 19 | 19 |
| 20 namespace chromeos { | 20 namespace chromeos { |
| 21 | 21 |
| 22 class IBusEngineServiceImpl : public IBusEngineService { | 22 class IBusEngineServiceImpl : public IBusEngineService { |
| 23 public: | 23 public: |
| 24 IBusEngineServiceImpl(dbus::Bus* bus, | 24 IBusEngineServiceImpl(dbus::Bus* bus, |
| 25 const dbus::ObjectPath& object_path) | 25 const dbus::ObjectPath& object_path) |
| 26 : bus_(bus), | 26 : bus_(bus), |
| 27 engine_handler_(NULL), |
| 27 object_path_(object_path), | 28 object_path_(object_path), |
| 28 weak_ptr_factory_(this) { | 29 weak_ptr_factory_(this) { |
| 29 exported_object_ = bus->GetExportedObject(object_path_); | 30 exported_object_ = bus->GetExportedObject(object_path_); |
| 30 | 31 |
| 31 exported_object_->ExportMethod( | 32 exported_object_->ExportMethod( |
| 32 ibus::engine::kServiceInterface, | 33 ibus::engine::kServiceInterface, |
| 33 ibus::engine::kFocusInMethod, | 34 ibus::engine::kFocusInMethod, |
| 34 base::Bind(&IBusEngineServiceImpl::FocusIn, | 35 base::Bind(&IBusEngineServiceImpl::FocusIn, |
| 35 weak_ptr_factory_.GetWeakPtr()), | 36 weak_ptr_factory_.GetWeakPtr()), |
| 36 base::Bind(&IBusEngineServiceImpl::OnMethodExported, | 37 base::Bind(&IBusEngineServiceImpl::OnMethodExported, |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 weak_ptr_factory_.GetWeakPtr()), | 124 weak_ptr_factory_.GetWeakPtr()), |
| 124 base::Bind(&IBusEngineServiceImpl::OnMethodExported, | 125 base::Bind(&IBusEngineServiceImpl::OnMethodExported, |
| 125 weak_ptr_factory_.GetWeakPtr())); | 126 weak_ptr_factory_.GetWeakPtr())); |
| 126 } | 127 } |
| 127 | 128 |
| 128 virtual ~IBusEngineServiceImpl() { | 129 virtual ~IBusEngineServiceImpl() { |
| 129 bus_->UnregisterExportedObject(object_path_); | 130 bus_->UnregisterExportedObject(object_path_); |
| 130 } | 131 } |
| 131 | 132 |
| 132 // IBusEngineService override. | 133 // IBusEngineService override. |
| 133 virtual void Initialize(IBusEngineHandlerInterface* handler) OVERRIDE { | 134 virtual void SetEngine(IBusEngineHandlerInterface* handler) OVERRIDE { |
| 134 if (engine_handler_.get() == NULL) { | 135 DVLOG_IF(1, engine_handler_ != NULL) << "Replace engine."; |
| 135 engine_handler_.reset(handler); | 136 engine_handler_ = handler; |
| 136 } else { | |
| 137 LOG(ERROR) << "Already initialized."; | |
| 138 } | |
| 139 } | 137 } |
| 140 | 138 |
| 141 // IBusEngineService override. | 139 // IBusEngineService override. |
| 140 virtual void UnsetEngine() OVERRIDE { |
| 141 LOG_IF(ERROR, engine_handler_ == NULL) << "There is no engine."; |
| 142 engine_handler_ = NULL; |
| 143 } |
| 144 |
| 145 // IBusEngineService override. |
| 142 virtual void RegisterProperties( | 146 virtual void RegisterProperties( |
| 143 const ibus::IBusPropertyList& property_list) OVERRIDE { | 147 const ibus::IBusPropertyList& property_list) OVERRIDE { |
| 144 dbus::Signal signal(ibus::engine::kServiceInterface, | 148 dbus::Signal signal(ibus::engine::kServiceInterface, |
| 145 ibus::engine::kRegisterPropertiesSignal); | 149 ibus::engine::kRegisterPropertiesSignal); |
| 146 dbus::MessageWriter writer(&signal); | 150 dbus::MessageWriter writer(&signal); |
| 147 AppendIBusPropertyList(property_list, &writer); | 151 AppendIBusPropertyList(property_list, &writer); |
| 148 exported_object_->SendSignal(&signal); | 152 exported_object_->SendSignal(&signal); |
| 149 } | 153 } |
| 150 | 154 |
| 151 // IBusEngineService override. | 155 // IBusEngineService override. |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 218 ibus::engine::kCommitTextSignal); | 222 ibus::engine::kCommitTextSignal); |
| 219 dbus::MessageWriter writer(&signal); | 223 dbus::MessageWriter writer(&signal); |
| 220 ibus::AppendStringAsIBusText(text, &writer); | 224 ibus::AppendStringAsIBusText(text, &writer); |
| 221 exported_object_->SendSignal(&signal); | 225 exported_object_->SendSignal(&signal); |
| 222 } | 226 } |
| 223 | 227 |
| 224 private: | 228 private: |
| 225 // Handles FocusIn method call from ibus-daemon. | 229 // Handles FocusIn method call from ibus-daemon. |
| 226 void FocusIn(dbus::MethodCall* method_call, | 230 void FocusIn(dbus::MethodCall* method_call, |
| 227 dbus::ExportedObject::ResponseSender response_sender) { | 231 dbus::ExportedObject::ResponseSender response_sender) { |
| 228 DCHECK(engine_handler_.get()); | 232 if (engine_handler_ == NULL) |
| 233 return; |
| 229 engine_handler_->FocusIn(); | 234 engine_handler_->FocusIn(); |
| 230 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 235 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| 231 response_sender.Run(response); | 236 response_sender.Run(response); |
| 232 } | 237 } |
| 233 | 238 |
| 234 // Handles FocusOut method call from ibus-daemon. | 239 // Handles FocusOut method call from ibus-daemon. |
| 235 void FocusOut(dbus::MethodCall* method_call, | 240 void FocusOut(dbus::MethodCall* method_call, |
| 236 dbus::ExportedObject::ResponseSender response_sender) { | 241 dbus::ExportedObject::ResponseSender response_sender) { |
| 237 DCHECK(engine_handler_.get()); | 242 if (engine_handler_ == NULL) |
| 243 return; |
| 238 engine_handler_->FocusOut(); | 244 engine_handler_->FocusOut(); |
| 239 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 245 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| 240 response_sender.Run(response); | 246 response_sender.Run(response); |
| 241 } | 247 } |
| 242 | 248 |
| 243 // Handles Enable method call from ibus-daemon. | 249 // Handles Enable method call from ibus-daemon. |
| 244 void Enable(dbus::MethodCall* method_call, | 250 void Enable(dbus::MethodCall* method_call, |
| 245 dbus::ExportedObject::ResponseSender response_sender) { | 251 dbus::ExportedObject::ResponseSender response_sender) { |
| 246 DCHECK(engine_handler_.get()); | 252 if (engine_handler_ == NULL) |
| 253 return; |
| 247 engine_handler_->Enable(); | 254 engine_handler_->Enable(); |
| 248 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 255 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| 249 response_sender.Run(response); | 256 response_sender.Run(response); |
| 250 } | 257 } |
| 251 | 258 |
| 252 // Handles Disable method call from ibus-daemon. | 259 // Handles Disable method call from ibus-daemon. |
| 253 void Disable(dbus::MethodCall* method_call, | 260 void Disable(dbus::MethodCall* method_call, |
| 254 dbus::ExportedObject::ResponseSender response_sender) { | 261 dbus::ExportedObject::ResponseSender response_sender) { |
| 255 DCHECK(engine_handler_.get()); | 262 if (engine_handler_ == NULL) |
| 263 return; |
| 256 engine_handler_->Disable(); | 264 engine_handler_->Disable(); |
| 257 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 265 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| 258 response_sender.Run(response); | 266 response_sender.Run(response); |
| 259 } | 267 } |
| 260 | 268 |
| 261 // Handles PropertyActivate method call from ibus-daemon. | 269 // Handles PropertyActivate method call from ibus-daemon. |
| 262 void PropertyActivate(dbus::MethodCall* method_call, | 270 void PropertyActivate(dbus::MethodCall* method_call, |
| 263 dbus::ExportedObject::ResponseSender response_sender) { | 271 dbus::ExportedObject::ResponseSender response_sender) { |
| 272 if (engine_handler_ == NULL) |
| 273 return; |
| 264 dbus::MessageReader reader(method_call); | 274 dbus::MessageReader reader(method_call); |
| 265 std::string property_name; | 275 std::string property_name; |
| 266 if (!reader.PopString(&property_name)) { | 276 if (!reader.PopString(&property_name)) { |
| 267 LOG(WARNING) << "PropertyActivate called with incorrect parameters: " | 277 LOG(WARNING) << "PropertyActivate called with incorrect parameters: " |
| 268 << method_call->ToString(); | 278 << method_call->ToString(); |
| 269 return; | 279 return; |
| 270 } | 280 } |
| 271 uint32 property_state = 0; | 281 uint32 property_state = 0; |
| 272 if (!reader.PopUint32(&property_state)) { | 282 if (!reader.PopUint32(&property_state)) { |
| 273 LOG(WARNING) << "PropertyActivate called with incorrect parameters: " | 283 LOG(WARNING) << "PropertyActivate called with incorrect parameters: " |
| 274 << method_call->ToString(); | 284 << method_call->ToString(); |
| 275 return; | 285 return; |
| 276 } | 286 } |
| 277 DCHECK(engine_handler_.get()); | |
| 278 engine_handler_->PropertyActivate( | 287 engine_handler_->PropertyActivate( |
| 279 property_name, | 288 property_name, |
| 280 static_cast<IBusEngineHandlerInterface::IBusPropertyState>( | 289 static_cast<IBusEngineHandlerInterface::IBusPropertyState>( |
| 281 property_state)); | 290 property_state)); |
| 282 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 291 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| 283 response_sender.Run(response); | 292 response_sender.Run(response); |
| 284 } | 293 } |
| 285 | 294 |
| 286 // Handles PropertyShow method call from ibus-daemon. | 295 // Handles PropertyShow method call from ibus-daemon. |
| 287 void PropertyShow(dbus::MethodCall* method_call, | 296 void PropertyShow(dbus::MethodCall* method_call, |
| 288 dbus::ExportedObject::ResponseSender response_sender) { | 297 dbus::ExportedObject::ResponseSender response_sender) { |
| 298 if (engine_handler_ == NULL) |
| 299 return; |
| 289 dbus::MessageReader reader(method_call); | 300 dbus::MessageReader reader(method_call); |
| 290 std::string property_name; | 301 std::string property_name; |
| 291 if (!reader.PopString(&property_name)) { | 302 if (!reader.PopString(&property_name)) { |
| 292 LOG(WARNING) << "PropertyShow called with incorrect parameters: " | 303 LOG(WARNING) << "PropertyShow called with incorrect parameters: " |
| 293 << method_call->ToString(); | 304 << method_call->ToString(); |
| 294 return; | 305 return; |
| 295 } | 306 } |
| 296 DCHECK(engine_handler_.get()); | |
| 297 engine_handler_->PropertyShow(property_name); | 307 engine_handler_->PropertyShow(property_name); |
| 298 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 308 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| 299 response_sender.Run(response); | 309 response_sender.Run(response); |
| 300 } | 310 } |
| 301 | 311 |
| 302 // Handles PropertyHide method call from ibus-daemon. | 312 // Handles PropertyHide method call from ibus-daemon. |
| 303 void PropertyHide(dbus::MethodCall* method_call, | 313 void PropertyHide(dbus::MethodCall* method_call, |
| 304 dbus::ExportedObject::ResponseSender response_sender) { | 314 dbus::ExportedObject::ResponseSender response_sender) { |
| 315 if (engine_handler_ == NULL) |
| 316 return; |
| 305 dbus::MessageReader reader(method_call); | 317 dbus::MessageReader reader(method_call); |
| 306 std::string property_name; | 318 std::string property_name; |
| 307 if (!reader.PopString(&property_name)) { | 319 if (!reader.PopString(&property_name)) { |
| 308 LOG(WARNING) << "PropertyHide called with incorrect parameters: " | 320 LOG(WARNING) << "PropertyHide called with incorrect parameters: " |
| 309 << method_call->ToString(); | 321 << method_call->ToString(); |
| 310 return; | 322 return; |
| 311 } | 323 } |
| 312 DCHECK(engine_handler_.get()); | |
| 313 engine_handler_->PropertyHide(property_name); | 324 engine_handler_->PropertyHide(property_name); |
| 314 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 325 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| 315 response_sender.Run(response); | 326 response_sender.Run(response); |
| 316 } | 327 } |
| 317 | 328 |
| 318 // Handles SetCapability method call from ibus-daemon. | 329 // Handles SetCapability method call from ibus-daemon. |
| 319 void SetCapability(dbus::MethodCall* method_call, | 330 void SetCapability(dbus::MethodCall* method_call, |
| 320 dbus::ExportedObject::ResponseSender response_sender) { | 331 dbus::ExportedObject::ResponseSender response_sender) { |
| 332 if (engine_handler_ == NULL) |
| 333 return; |
| 321 dbus::MessageReader reader(method_call); | 334 dbus::MessageReader reader(method_call); |
| 322 uint32 capability = 0; | 335 uint32 capability = 0; |
| 323 if (!reader.PopUint32(&capability)) { | 336 if (!reader.PopUint32(&capability)) { |
| 324 LOG(WARNING) << "SetCapability called with incorrect parameters: " | 337 LOG(WARNING) << "SetCapability called with incorrect parameters: " |
| 325 << method_call->ToString(); | 338 << method_call->ToString(); |
| 326 return; | 339 return; |
| 327 } | 340 } |
| 328 DCHECK(engine_handler_.get()); | |
| 329 engine_handler_->SetCapability( | 341 engine_handler_->SetCapability( |
| 330 static_cast<IBusEngineHandlerInterface::IBusCapability>(capability)); | 342 static_cast<IBusEngineHandlerInterface::IBusCapability>(capability)); |
| 331 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 343 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| 332 response_sender.Run(response); | 344 response_sender.Run(response); |
| 333 } | 345 } |
| 334 | 346 |
| 335 void Reset(dbus::MethodCall* method_call, | 347 void Reset(dbus::MethodCall* method_call, |
| 336 dbus::ExportedObject::ResponseSender response_sender) { | 348 dbus::ExportedObject::ResponseSender response_sender) { |
| 337 DCHECK(engine_handler_.get()); | 349 if (engine_handler_ == NULL) |
| 350 return; |
| 338 engine_handler_->Reset(); | 351 engine_handler_->Reset(); |
| 339 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 352 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| 340 response_sender.Run(response); | 353 response_sender.Run(response); |
| 341 } | 354 } |
| 342 | 355 |
| 343 // Handles ProcessKeyEvent method call from ibus-daemon. | 356 // Handles ProcessKeyEvent method call from ibus-daemon. |
| 344 void ProcessKeyEvent(dbus::MethodCall* method_call, | 357 void ProcessKeyEvent(dbus::MethodCall* method_call, |
| 345 dbus::ExportedObject::ResponseSender response_sender) { | 358 dbus::ExportedObject::ResponseSender response_sender) { |
| 359 if (engine_handler_ == NULL) |
| 360 return; |
| 346 dbus::MessageReader reader(method_call); | 361 dbus::MessageReader reader(method_call); |
| 347 uint32 keysym = 0; | 362 uint32 keysym = 0; |
| 348 if (!reader.PopUint32(&keysym)) { | 363 if (!reader.PopUint32(&keysym)) { |
| 349 LOG(WARNING) << "ProcessKeyEvent called with incorrect parameters: " | 364 LOG(WARNING) << "ProcessKeyEvent called with incorrect parameters: " |
| 350 << method_call->ToString(); | 365 << method_call->ToString(); |
| 351 return; | 366 return; |
| 352 } | 367 } |
| 353 uint32 keycode = 0; | 368 uint32 keycode = 0; |
| 354 if (!reader.PopUint32(&keycode)) { | 369 if (!reader.PopUint32(&keycode)) { |
| 355 LOG(WARNING) << "ProcessKeyEvent called with incorrect parameters: " | 370 LOG(WARNING) << "ProcessKeyEvent called with incorrect parameters: " |
| 356 << method_call->ToString(); | 371 << method_call->ToString(); |
| 357 return; | 372 return; |
| 358 } | 373 } |
| 359 uint32 state = 0; | 374 uint32 state = 0; |
| 360 if (!reader.PopUint32(&state)) { | 375 if (!reader.PopUint32(&state)) { |
| 361 LOG(WARNING) << "ProcessKeyEvent called with incorrect parameters: " | 376 LOG(WARNING) << "ProcessKeyEvent called with incorrect parameters: " |
| 362 << method_call->ToString(); | 377 << method_call->ToString(); |
| 363 return; | 378 return; |
| 364 } | 379 } |
| 365 DCHECK(engine_handler_.get()); | |
| 366 engine_handler_->ProcessKeyEvent( | 380 engine_handler_->ProcessKeyEvent( |
| 367 keysym, keycode, state, | 381 keysym, keycode, state, |
| 368 base::Bind(&IBusEngineServiceImpl::KeyEventDone, | 382 base::Bind(&IBusEngineServiceImpl::KeyEventDone, |
| 369 weak_ptr_factory_.GetWeakPtr(), | 383 weak_ptr_factory_.GetWeakPtr(), |
| 370 base::Unretained( | 384 base::Unretained( |
| 371 dbus::Response::FromMethodCall(method_call)), | 385 dbus::Response::FromMethodCall(method_call)), |
| 372 response_sender)); | 386 response_sender)); |
| 373 } | 387 } |
| 374 | 388 |
| 375 void KeyEventDone(dbus::Response* response, | 389 void KeyEventDone(dbus::Response* response, |
| 376 const dbus::ExportedObject::ResponseSender& response_sender, | 390 const dbus::ExportedObject::ResponseSender& response_sender, |
| 377 bool consume) { | 391 bool consume) { |
| 392 if (engine_handler_ == NULL) |
| 393 return; |
| 378 dbus::MessageWriter writer(response); | 394 dbus::MessageWriter writer(response); |
| 379 writer.AppendBool(consume); | 395 writer.AppendBool(consume); |
| 380 response_sender.Run(response); | 396 response_sender.Run(response); |
| 381 } | 397 } |
| 382 | 398 |
| 383 // Handles CandidateClicked method call from ibus-daemon. | 399 // Handles CandidateClicked method call from ibus-daemon. |
| 384 void CandidateClicked(dbus::MethodCall* method_call, | 400 void CandidateClicked(dbus::MethodCall* method_call, |
| 385 dbus::ExportedObject::ResponseSender response_sender) { | 401 dbus::ExportedObject::ResponseSender response_sender) { |
| 402 if (engine_handler_ == NULL) |
| 403 return; |
| 386 dbus::MessageReader reader(method_call); | 404 dbus::MessageReader reader(method_call); |
| 387 uint32 index = 0; | 405 uint32 index = 0; |
| 388 if (!reader.PopUint32(&index)) { | 406 if (!reader.PopUint32(&index)) { |
| 389 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " | 407 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " |
| 390 << method_call->ToString(); | 408 << method_call->ToString(); |
| 391 return; | 409 return; |
| 392 } | 410 } |
| 393 uint32 button = 0; | 411 uint32 button = 0; |
| 394 if (!reader.PopUint32(&button)) { | 412 if (!reader.PopUint32(&button)) { |
| 395 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " | 413 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " |
| 396 << method_call->ToString(); | 414 << method_call->ToString(); |
| 397 return; | 415 return; |
| 398 } | 416 } |
| 399 uint32 state = 0; | 417 uint32 state = 0; |
| 400 if (!reader.PopUint32(&state)) { | 418 if (!reader.PopUint32(&state)) { |
| 401 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " | 419 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " |
| 402 << method_call->ToString(); | 420 << method_call->ToString(); |
| 403 return; | 421 return; |
| 404 } | 422 } |
| 405 DCHECK(engine_handler_.get()); | |
| 406 engine_handler_->CandidateClicked( | 423 engine_handler_->CandidateClicked( |
| 407 index, | 424 index, |
| 408 static_cast<IBusEngineHandlerInterface::IBusMouseButton>(button), | 425 static_cast<IBusEngineHandlerInterface::IBusMouseButton>(button), |
| 409 state); | 426 state); |
| 410 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 427 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| 411 response_sender.Run(response); | 428 response_sender.Run(response); |
| 412 } | 429 } |
| 413 | 430 |
| 414 // Handles SetSurroundingText method call from ibus-daemon. | 431 // Handles SetSurroundingText method call from ibus-daemon. |
| 415 void SetSurroundingText( | 432 void SetSurroundingText( |
| 416 dbus::MethodCall* method_call, | 433 dbus::MethodCall* method_call, |
| 417 dbus::ExportedObject::ResponseSender response_sender) { | 434 dbus::ExportedObject::ResponseSender response_sender) { |
| 435 if (engine_handler_ == NULL) |
| 436 return; |
| 418 dbus::MessageReader reader(method_call); | 437 dbus::MessageReader reader(method_call); |
| 419 std::string text; | 438 std::string text; |
| 420 if (!reader.PopString(&text)) { | 439 if (!reader.PopString(&text)) { |
| 421 LOG(WARNING) << "SetSurroundingText called with incorrect parameters: " | 440 LOG(WARNING) << "SetSurroundingText called with incorrect parameters: " |
| 422 << method_call->ToString(); | 441 << method_call->ToString(); |
| 423 return; | 442 return; |
| 424 } | 443 } |
| 425 uint32 cursor_pos = 0; | 444 uint32 cursor_pos = 0; |
| 426 if (!reader.PopUint32(&cursor_pos)) { | 445 if (!reader.PopUint32(&cursor_pos)) { |
| 427 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " | 446 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " |
| 428 << method_call->ToString(); | 447 << method_call->ToString(); |
| 429 return; | 448 return; |
| 430 } | 449 } |
| 431 uint32 anchor_pos = 0; | 450 uint32 anchor_pos = 0; |
| 432 if (!reader.PopUint32(&anchor_pos)) { | 451 if (!reader.PopUint32(&anchor_pos)) { |
| 433 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " | 452 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " |
| 434 << method_call->ToString(); | 453 << method_call->ToString(); |
| 435 return; | 454 return; |
| 436 } | 455 } |
| 437 | 456 |
| 438 DCHECK(engine_handler_.get()); | |
| 439 engine_handler_->SetSurroundingText(text, cursor_pos, anchor_pos); | 457 engine_handler_->SetSurroundingText(text, cursor_pos, anchor_pos); |
| 440 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 458 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| 441 response_sender.Run(response); | 459 response_sender.Run(response); |
| 442 } | 460 } |
| 443 | 461 |
| 444 // Called when the method call is exported. | 462 // Called when the method call is exported. |
| 445 void OnMethodExported(const std::string& interface_name, | 463 void OnMethodExported(const std::string& interface_name, |
| 446 const std::string& method_name, | 464 const std::string& method_name, |
| 447 bool success) { | 465 bool success) { |
| 448 LOG_IF(WARNING, !success) << "Failed to export " | 466 LOG_IF(WARNING, !success) << "Failed to export " |
| 449 << interface_name << "." << method_name; | 467 << interface_name << "." << method_name; |
| 450 } | 468 } |
| 451 | 469 |
| 452 // D-Bus bus object used for unregistering exported methods in dtor. | 470 // D-Bus bus object used for unregistering exported methods in dtor. |
| 453 dbus::Bus* bus_; | 471 dbus::Bus* bus_; |
| 454 | 472 |
| 455 // All incoming method calls are passed on to the |engine_handler_|. | 473 // All incoming method calls are passed on to the |engine_handler_|. |
| 456 scoped_ptr<IBusEngineHandlerInterface> engine_handler_; | 474 IBusEngineHandlerInterface* engine_handler_; |
| 457 | 475 |
| 458 dbus::ObjectPath object_path_; | 476 dbus::ObjectPath object_path_; |
| 459 scoped_refptr<dbus::ExportedObject> exported_object_; | 477 scoped_refptr<dbus::ExportedObject> exported_object_; |
| 460 base::WeakPtrFactory<IBusEngineServiceImpl> weak_ptr_factory_; | 478 base::WeakPtrFactory<IBusEngineServiceImpl> weak_ptr_factory_; |
| 461 | 479 |
| 462 DISALLOW_COPY_AND_ASSIGN(IBusEngineServiceImpl); | 480 DISALLOW_COPY_AND_ASSIGN(IBusEngineServiceImpl); |
| 463 }; | 481 }; |
| 464 | 482 |
| 465 class IBusEngineServiceStubImpl : public IBusEngineService { | 483 class IBusEngineServiceStubImpl : public IBusEngineService { |
| 466 public: | 484 public: |
| 467 IBusEngineServiceStubImpl() {} | 485 IBusEngineServiceStubImpl() {} |
| 468 virtual ~IBusEngineServiceStubImpl() {} | 486 virtual ~IBusEngineServiceStubImpl() {} |
| 469 // IBusEngineService overrides. | 487 // IBusEngineService overrides. |
| 470 virtual void Initialize(IBusEngineHandlerInterface* handler) OVERRIDE {} | 488 virtual void SetEngine(IBusEngineHandlerInterface* handler) OVERRIDE {} |
| 489 virtual void UnsetEngine() OVERRIDE {} |
| 471 virtual void RegisterProperties( | 490 virtual void RegisterProperties( |
| 472 const ibus::IBusPropertyList& property_list) OVERRIDE {} | 491 const ibus::IBusPropertyList& property_list) OVERRIDE {} |
| 473 virtual void UpdatePreedit(const ibus::IBusText& ibus_text, | 492 virtual void UpdatePreedit(const ibus::IBusText& ibus_text, |
| 474 uint32 cursor_pos, | 493 uint32 cursor_pos, |
| 475 bool is_visible, | 494 bool is_visible, |
| 476 IBusEnginePreeditFocusOutMode mode) OVERRIDE {} | 495 IBusEnginePreeditFocusOutMode mode) OVERRIDE {} |
| 477 virtual void UpdateAuxiliaryText(const ibus::IBusText& ibus_text, | 496 virtual void UpdateAuxiliaryText(const ibus::IBusText& ibus_text, |
| 478 bool is_visible) OVERRIDE {} | 497 bool is_visible) OVERRIDE {} |
| 479 virtual void UpdateLookupTable(const ibus::IBusLookupTable& lookup_table, | 498 virtual void UpdateLookupTable(const ibus::IBusLookupTable& lookup_table, |
| 480 bool is_visible) OVERRIDE {} | 499 bool is_visible) OVERRIDE {} |
| (...skipping 18 matching lines...) Expand all Loading... |
| 499 DBusClientImplementationType type, | 518 DBusClientImplementationType type, |
| 500 dbus::Bus* bus, | 519 dbus::Bus* bus, |
| 501 const dbus::ObjectPath& object_path) { | 520 const dbus::ObjectPath& object_path) { |
| 502 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) | 521 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) |
| 503 return new IBusEngineServiceImpl(bus, object_path); | 522 return new IBusEngineServiceImpl(bus, object_path); |
| 504 else | 523 else |
| 505 return new IBusEngineServiceStubImpl(); | 524 return new IBusEngineServiceStubImpl(); |
| 506 } | 525 } |
| 507 | 526 |
| 508 } // namespace chromeos | 527 } // namespace chromeos |
| OLD | NEW |