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