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 |