| 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" |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 exported_object_->SendSignal(&signal); | 225 exported_object_->SendSignal(&signal); |
| 226 } | 226 } |
| 227 | 227 |
| 228 private: | 228 private: |
| 229 // Handles FocusIn method call from ibus-daemon. | 229 // Handles FocusIn method call from ibus-daemon. |
| 230 void FocusIn(dbus::MethodCall* method_call, | 230 void FocusIn(dbus::MethodCall* method_call, |
| 231 dbus::ExportedObject::ResponseSender response_sender) { | 231 dbus::ExportedObject::ResponseSender response_sender) { |
| 232 if (engine_handler_ == NULL) | 232 if (engine_handler_ == NULL) |
| 233 return; | 233 return; |
| 234 engine_handler_->FocusIn(); | 234 engine_handler_->FocusIn(); |
| 235 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 235 response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
| 236 response_sender.Run(response); | |
| 237 } | 236 } |
| 238 | 237 |
| 239 // Handles FocusOut method call from ibus-daemon. | 238 // Handles FocusOut method call from ibus-daemon. |
| 240 void FocusOut(dbus::MethodCall* method_call, | 239 void FocusOut(dbus::MethodCall* method_call, |
| 241 dbus::ExportedObject::ResponseSender response_sender) { | 240 dbus::ExportedObject::ResponseSender response_sender) { |
| 242 if (engine_handler_ == NULL) | 241 if (engine_handler_ == NULL) |
| 243 return; | 242 return; |
| 244 engine_handler_->FocusOut(); | 243 engine_handler_->FocusOut(); |
| 245 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 244 response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
| 246 response_sender.Run(response); | |
| 247 } | 245 } |
| 248 | 246 |
| 249 // Handles Enable method call from ibus-daemon. | 247 // Handles Enable method call from ibus-daemon. |
| 250 void Enable(dbus::MethodCall* method_call, | 248 void Enable(dbus::MethodCall* method_call, |
| 251 dbus::ExportedObject::ResponseSender response_sender) { | 249 dbus::ExportedObject::ResponseSender response_sender) { |
| 252 if (engine_handler_ == NULL) | 250 if (engine_handler_ == NULL) |
| 253 return; | 251 return; |
| 254 engine_handler_->Enable(); | 252 engine_handler_->Enable(); |
| 255 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 253 response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
| 256 response_sender.Run(response); | |
| 257 } | 254 } |
| 258 | 255 |
| 259 // Handles Disable method call from ibus-daemon. | 256 // Handles Disable method call from ibus-daemon. |
| 260 void Disable(dbus::MethodCall* method_call, | 257 void Disable(dbus::MethodCall* method_call, |
| 261 dbus::ExportedObject::ResponseSender response_sender) { | 258 dbus::ExportedObject::ResponseSender response_sender) { |
| 262 if (engine_handler_ == NULL) | 259 if (engine_handler_ == NULL) |
| 263 return; | 260 return; |
| 264 engine_handler_->Disable(); | 261 engine_handler_->Disable(); |
| 265 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 262 response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
| 266 response_sender.Run(response); | |
| 267 } | 263 } |
| 268 | 264 |
| 269 // Handles PropertyActivate method call from ibus-daemon. | 265 // Handles PropertyActivate method call from ibus-daemon. |
| 270 void PropertyActivate(dbus::MethodCall* method_call, | 266 void PropertyActivate(dbus::MethodCall* method_call, |
| 271 dbus::ExportedObject::ResponseSender response_sender) { | 267 dbus::ExportedObject::ResponseSender response_sender) { |
| 272 if (engine_handler_ == NULL) | 268 if (engine_handler_ == NULL) |
| 273 return; | 269 return; |
| 274 dbus::MessageReader reader(method_call); | 270 dbus::MessageReader reader(method_call); |
| 275 std::string property_name; | 271 std::string property_name; |
| 276 if (!reader.PopString(&property_name)) { | 272 if (!reader.PopString(&property_name)) { |
| 277 LOG(WARNING) << "PropertyActivate called with incorrect parameters: " | 273 LOG(WARNING) << "PropertyActivate called with incorrect parameters: " |
| 278 << method_call->ToString(); | 274 << method_call->ToString(); |
| 279 return; | 275 return; |
| 280 } | 276 } |
| 281 uint32 property_state = 0; | 277 uint32 property_state = 0; |
| 282 if (!reader.PopUint32(&property_state)) { | 278 if (!reader.PopUint32(&property_state)) { |
| 283 LOG(WARNING) << "PropertyActivate called with incorrect parameters: " | 279 LOG(WARNING) << "PropertyActivate called with incorrect parameters: " |
| 284 << method_call->ToString(); | 280 << method_call->ToString(); |
| 285 return; | 281 return; |
| 286 } | 282 } |
| 287 engine_handler_->PropertyActivate( | 283 engine_handler_->PropertyActivate( |
| 288 property_name, | 284 property_name, |
| 289 static_cast<IBusEngineHandlerInterface::IBusPropertyState>( | 285 static_cast<IBusEngineHandlerInterface::IBusPropertyState>( |
| 290 property_state)); | 286 property_state)); |
| 291 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 287 response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
| 292 response_sender.Run(response); | |
| 293 } | 288 } |
| 294 | 289 |
| 295 // Handles PropertyShow method call from ibus-daemon. | 290 // Handles PropertyShow method call from ibus-daemon. |
| 296 void PropertyShow(dbus::MethodCall* method_call, | 291 void PropertyShow(dbus::MethodCall* method_call, |
| 297 dbus::ExportedObject::ResponseSender response_sender) { | 292 dbus::ExportedObject::ResponseSender response_sender) { |
| 298 if (engine_handler_ == NULL) | 293 if (engine_handler_ == NULL) |
| 299 return; | 294 return; |
| 300 dbus::MessageReader reader(method_call); | 295 dbus::MessageReader reader(method_call); |
| 301 std::string property_name; | 296 std::string property_name; |
| 302 if (!reader.PopString(&property_name)) { | 297 if (!reader.PopString(&property_name)) { |
| 303 LOG(WARNING) << "PropertyShow called with incorrect parameters: " | 298 LOG(WARNING) << "PropertyShow called with incorrect parameters: " |
| 304 << method_call->ToString(); | 299 << method_call->ToString(); |
| 305 return; | 300 return; |
| 306 } | 301 } |
| 307 engine_handler_->PropertyShow(property_name); | 302 engine_handler_->PropertyShow(property_name); |
| 308 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 303 response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
| 309 response_sender.Run(response); | |
| 310 } | 304 } |
| 311 | 305 |
| 312 // Handles PropertyHide method call from ibus-daemon. | 306 // Handles PropertyHide method call from ibus-daemon. |
| 313 void PropertyHide(dbus::MethodCall* method_call, | 307 void PropertyHide(dbus::MethodCall* method_call, |
| 314 dbus::ExportedObject::ResponseSender response_sender) { | 308 dbus::ExportedObject::ResponseSender response_sender) { |
| 315 if (engine_handler_ == NULL) | 309 if (engine_handler_ == NULL) |
| 316 return; | 310 return; |
| 317 dbus::MessageReader reader(method_call); | 311 dbus::MessageReader reader(method_call); |
| 318 std::string property_name; | 312 std::string property_name; |
| 319 if (!reader.PopString(&property_name)) { | 313 if (!reader.PopString(&property_name)) { |
| 320 LOG(WARNING) << "PropertyHide called with incorrect parameters: " | 314 LOG(WARNING) << "PropertyHide called with incorrect parameters: " |
| 321 << method_call->ToString(); | 315 << method_call->ToString(); |
| 322 return; | 316 return; |
| 323 } | 317 } |
| 324 engine_handler_->PropertyHide(property_name); | 318 engine_handler_->PropertyHide(property_name); |
| 325 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 319 response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
| 326 response_sender.Run(response); | |
| 327 } | 320 } |
| 328 | 321 |
| 329 // Handles SetCapability method call from ibus-daemon. | 322 // Handles SetCapability method call from ibus-daemon. |
| 330 void SetCapability(dbus::MethodCall* method_call, | 323 void SetCapability(dbus::MethodCall* method_call, |
| 331 dbus::ExportedObject::ResponseSender response_sender) { | 324 dbus::ExportedObject::ResponseSender response_sender) { |
| 332 if (engine_handler_ == NULL) | 325 if (engine_handler_ == NULL) |
| 333 return; | 326 return; |
| 334 dbus::MessageReader reader(method_call); | 327 dbus::MessageReader reader(method_call); |
| 335 uint32 capability = 0; | 328 uint32 capability = 0; |
| 336 if (!reader.PopUint32(&capability)) { | 329 if (!reader.PopUint32(&capability)) { |
| 337 LOG(WARNING) << "SetCapability called with incorrect parameters: " | 330 LOG(WARNING) << "SetCapability called with incorrect parameters: " |
| 338 << method_call->ToString(); | 331 << method_call->ToString(); |
| 339 return; | 332 return; |
| 340 } | 333 } |
| 341 engine_handler_->SetCapability( | 334 engine_handler_->SetCapability( |
| 342 static_cast<IBusEngineHandlerInterface::IBusCapability>(capability)); | 335 static_cast<IBusEngineHandlerInterface::IBusCapability>(capability)); |
| 343 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 336 response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
| 344 response_sender.Run(response); | |
| 345 } | 337 } |
| 346 | 338 |
| 347 void Reset(dbus::MethodCall* method_call, | 339 void Reset(dbus::MethodCall* method_call, |
| 348 dbus::ExportedObject::ResponseSender response_sender) { | 340 dbus::ExportedObject::ResponseSender response_sender) { |
| 349 if (engine_handler_ == NULL) | 341 if (engine_handler_ == NULL) |
| 350 return; | 342 return; |
| 351 engine_handler_->Reset(); | 343 engine_handler_->Reset(); |
| 352 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 344 response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
| 353 response_sender.Run(response); | |
| 354 } | 345 } |
| 355 | 346 |
| 356 // Handles ProcessKeyEvent method call from ibus-daemon. | 347 // Handles ProcessKeyEvent method call from ibus-daemon. |
| 357 void ProcessKeyEvent(dbus::MethodCall* method_call, | 348 void ProcessKeyEvent(dbus::MethodCall* method_call, |
| 358 dbus::ExportedObject::ResponseSender response_sender) { | 349 dbus::ExportedObject::ResponseSender response_sender) { |
| 359 if (engine_handler_ == NULL) | 350 if (engine_handler_ == NULL) |
| 360 return; | 351 return; |
| 361 dbus::MessageReader reader(method_call); | 352 dbus::MessageReader reader(method_call); |
| 362 uint32 keysym = 0; | 353 uint32 keysym = 0; |
| 363 if (!reader.PopUint32(&keysym)) { | 354 if (!reader.PopUint32(&keysym)) { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 374 uint32 state = 0; | 365 uint32 state = 0; |
| 375 if (!reader.PopUint32(&state)) { | 366 if (!reader.PopUint32(&state)) { |
| 376 LOG(WARNING) << "ProcessKeyEvent called with incorrect parameters: " | 367 LOG(WARNING) << "ProcessKeyEvent called with incorrect parameters: " |
| 377 << method_call->ToString(); | 368 << method_call->ToString(); |
| 378 return; | 369 return; |
| 379 } | 370 } |
| 380 engine_handler_->ProcessKeyEvent( | 371 engine_handler_->ProcessKeyEvent( |
| 381 keysym, keycode, state, | 372 keysym, keycode, state, |
| 382 base::Bind(&IBusEngineServiceImpl::KeyEventDone, | 373 base::Bind(&IBusEngineServiceImpl::KeyEventDone, |
| 383 weak_ptr_factory_.GetWeakPtr(), | 374 weak_ptr_factory_.GetWeakPtr(), |
| 384 base::Unretained( | 375 base::Passed(dbus::Response::FromMethodCall(method_call)), |
| 385 dbus::Response::FromMethodCall(method_call)), | |
| 386 response_sender)); | 376 response_sender)); |
| 387 } | 377 } |
| 388 | 378 |
| 389 void KeyEventDone(dbus::Response* response, | 379 void KeyEventDone(scoped_ptr<dbus::Response> response, |
| 390 const dbus::ExportedObject::ResponseSender& response_sender, | 380 const dbus::ExportedObject::ResponseSender& response_sender, |
| 391 bool consume) { | 381 bool consume) { |
| 392 if (engine_handler_ == NULL) | 382 if (engine_handler_ == NULL) |
| 393 return; | 383 return; |
| 394 dbus::MessageWriter writer(response); | 384 dbus::MessageWriter writer(response.get()); |
| 395 writer.AppendBool(consume); | 385 writer.AppendBool(consume); |
| 396 response_sender.Run(response); | 386 response_sender.Run(response.Pass()); |
| 397 } | 387 } |
| 398 | 388 |
| 399 // Handles CandidateClicked method call from ibus-daemon. | 389 // Handles CandidateClicked method call from ibus-daemon. |
| 400 void CandidateClicked(dbus::MethodCall* method_call, | 390 void CandidateClicked(dbus::MethodCall* method_call, |
| 401 dbus::ExportedObject::ResponseSender response_sender) { | 391 dbus::ExportedObject::ResponseSender response_sender) { |
| 402 if (engine_handler_ == NULL) | 392 if (engine_handler_ == NULL) |
| 403 return; | 393 return; |
| 404 dbus::MessageReader reader(method_call); | 394 dbus::MessageReader reader(method_call); |
| 405 uint32 index = 0; | 395 uint32 index = 0; |
| 406 if (!reader.PopUint32(&index)) { | 396 if (!reader.PopUint32(&index)) { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 417 uint32 state = 0; | 407 uint32 state = 0; |
| 418 if (!reader.PopUint32(&state)) { | 408 if (!reader.PopUint32(&state)) { |
| 419 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " | 409 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " |
| 420 << method_call->ToString(); | 410 << method_call->ToString(); |
| 421 return; | 411 return; |
| 422 } | 412 } |
| 423 engine_handler_->CandidateClicked( | 413 engine_handler_->CandidateClicked( |
| 424 index, | 414 index, |
| 425 static_cast<ibus::IBusMouseButton>(button), | 415 static_cast<ibus::IBusMouseButton>(button), |
| 426 state); | 416 state); |
| 427 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 417 response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
| 428 response_sender.Run(response); | |
| 429 } | 418 } |
| 430 | 419 |
| 431 // Handles SetSurroundingText method call from ibus-daemon. | 420 // Handles SetSurroundingText method call from ibus-daemon. |
| 432 void SetSurroundingText( | 421 void SetSurroundingText( |
| 433 dbus::MethodCall* method_call, | 422 dbus::MethodCall* method_call, |
| 434 dbus::ExportedObject::ResponseSender response_sender) { | 423 dbus::ExportedObject::ResponseSender response_sender) { |
| 435 if (engine_handler_ == NULL) | 424 if (engine_handler_ == NULL) |
| 436 return; | 425 return; |
| 437 dbus::MessageReader reader(method_call); | 426 dbus::MessageReader reader(method_call); |
| 438 std::string text; | 427 std::string text; |
| 439 if (!reader.PopString(&text)) { | 428 if (!reader.PopString(&text)) { |
| 440 LOG(WARNING) << "SetSurroundingText called with incorrect parameters: " | 429 LOG(WARNING) << "SetSurroundingText called with incorrect parameters: " |
| 441 << method_call->ToString(); | 430 << method_call->ToString(); |
| 442 return; | 431 return; |
| 443 } | 432 } |
| 444 uint32 cursor_pos = 0; | 433 uint32 cursor_pos = 0; |
| 445 if (!reader.PopUint32(&cursor_pos)) { | 434 if (!reader.PopUint32(&cursor_pos)) { |
| 446 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " | 435 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " |
| 447 << method_call->ToString(); | 436 << method_call->ToString(); |
| 448 return; | 437 return; |
| 449 } | 438 } |
| 450 uint32 anchor_pos = 0; | 439 uint32 anchor_pos = 0; |
| 451 if (!reader.PopUint32(&anchor_pos)) { | 440 if (!reader.PopUint32(&anchor_pos)) { |
| 452 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " | 441 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " |
| 453 << method_call->ToString(); | 442 << method_call->ToString(); |
| 454 return; | 443 return; |
| 455 } | 444 } |
| 456 | 445 |
| 457 engine_handler_->SetSurroundingText(text, cursor_pos, anchor_pos); | 446 engine_handler_->SetSurroundingText(text, cursor_pos, anchor_pos); |
| 458 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 447 response_sender.Run(dbus::Response::FromMethodCall(method_call)); |
| 459 response_sender.Run(response); | |
| 460 } | 448 } |
| 461 | 449 |
| 462 // Called when the method call is exported. | 450 // Called when the method call is exported. |
| 463 void OnMethodExported(const std::string& interface_name, | 451 void OnMethodExported(const std::string& interface_name, |
| 464 const std::string& method_name, | 452 const std::string& method_name, |
| 465 bool success) { | 453 bool success) { |
| 466 LOG_IF(WARNING, !success) << "Failed to export " | 454 LOG_IF(WARNING, !success) << "Failed to export " |
| 467 << interface_name << "." << method_name; | 455 << interface_name << "." << method_name; |
| 468 } | 456 } |
| 469 | 457 |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 560 DBusClientImplementationType type, | 548 DBusClientImplementationType type, |
| 561 dbus::Bus* bus, | 549 dbus::Bus* bus, |
| 562 const dbus::ObjectPath& object_path) { | 550 const dbus::ObjectPath& object_path) { |
| 563 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) | 551 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) |
| 564 return new IBusEngineServiceImpl(bus, object_path); | 552 return new IBusEngineServiceImpl(bus, object_path); |
| 565 else | 553 else |
| 566 return new IBusEngineServiceDaemonlessImpl(); | 554 return new IBusEngineServiceDaemonlessImpl(); |
| 567 } | 555 } |
| 568 | 556 |
| 569 } // namespace chromeos | 557 } // namespace chromeos |
| OLD | NEW |