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 |