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 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
212 ibus::engine::kRequireSurroundingTextSignal); | 212 ibus::engine::kRequireSurroundingTextSignal); |
213 exported_object_->SendSignal(&signal); | 213 exported_object_->SendSignal(&signal); |
214 } | 214 } |
215 | 215 |
216 private: | 216 private: |
217 // Handles FocusIn method call from ibus-daemon. | 217 // Handles FocusIn method call from ibus-daemon. |
218 void FocusIn(dbus::MethodCall* method_call, | 218 void FocusIn(dbus::MethodCall* method_call, |
219 dbus::ExportedObject::ResponseSender response_sender) { | 219 dbus::ExportedObject::ResponseSender response_sender) { |
220 DCHECK(engine_handler_.get()); | 220 DCHECK(engine_handler_.get()); |
221 engine_handler_->FocusIn(); | 221 engine_handler_->FocusIn(); |
222 scoped_ptr<dbus::Response> response( | 222 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
223 dbus::Response::FromMethodCall(method_call)); | 223 response_sender.Run(response); |
224 response_sender.Run(response.get()); | |
225 } | 224 } |
226 | 225 |
227 // Handles FocusOut method call from ibus-daemon. | 226 // Handles FocusOut method call from ibus-daemon. |
228 void FocusOut(dbus::MethodCall* method_call, | 227 void FocusOut(dbus::MethodCall* method_call, |
229 dbus::ExportedObject::ResponseSender response_sender) { | 228 dbus::ExportedObject::ResponseSender response_sender) { |
230 DCHECK(engine_handler_.get()); | 229 DCHECK(engine_handler_.get()); |
231 engine_handler_->FocusOut(); | 230 engine_handler_->FocusOut(); |
232 scoped_ptr<dbus::Response> response( | 231 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
233 dbus::Response::FromMethodCall(method_call)); | 232 response_sender.Run(response); |
234 response_sender.Run(response.get()); | |
235 } | 233 } |
236 | 234 |
237 // Handles Enable method call from ibus-daemon. | 235 // Handles Enable method call from ibus-daemon. |
238 void Enable(dbus::MethodCall* method_call, | 236 void Enable(dbus::MethodCall* method_call, |
239 dbus::ExportedObject::ResponseSender response_sender) { | 237 dbus::ExportedObject::ResponseSender response_sender) { |
240 DCHECK(engine_handler_.get()); | 238 DCHECK(engine_handler_.get()); |
241 engine_handler_->Enable(); | 239 engine_handler_->Enable(); |
242 scoped_ptr<dbus::Response> response( | 240 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
243 dbus::Response::FromMethodCall(method_call)); | 241 response_sender.Run(response); |
244 response_sender.Run(response.get()); | |
245 } | 242 } |
246 | 243 |
247 // Handles Disable method call from ibus-daemon. | 244 // Handles Disable method call from ibus-daemon. |
248 void Disable(dbus::MethodCall* method_call, | 245 void Disable(dbus::MethodCall* method_call, |
249 dbus::ExportedObject::ResponseSender response_sender) { | 246 dbus::ExportedObject::ResponseSender response_sender) { |
250 DCHECK(engine_handler_.get()); | 247 DCHECK(engine_handler_.get()); |
251 engine_handler_->Disable(); | 248 engine_handler_->Disable(); |
252 scoped_ptr<dbus::Response> response( | 249 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
253 dbus::Response::FromMethodCall(method_call)); | 250 response_sender.Run(response); |
254 response_sender.Run(response.get()); | |
255 } | 251 } |
256 | 252 |
257 // Handles PropertyActivate method call from ibus-daemon. | 253 // Handles PropertyActivate method call from ibus-daemon. |
258 void PropertyActivate(dbus::MethodCall* method_call, | 254 void PropertyActivate(dbus::MethodCall* method_call, |
259 dbus::ExportedObject::ResponseSender response_sender) { | 255 dbus::ExportedObject::ResponseSender response_sender) { |
260 dbus::MessageReader reader(method_call); | 256 dbus::MessageReader reader(method_call); |
261 std::string property_name; | 257 std::string property_name; |
262 if (!reader.PopString(&property_name)) { | 258 if (!reader.PopString(&property_name)) { |
263 LOG(WARNING) << "PropertyActivate called with incorrect parameters: " | 259 LOG(WARNING) << "PropertyActivate called with incorrect parameters: " |
264 << method_call->ToString(); | 260 << method_call->ToString(); |
265 return; | 261 return; |
266 } | 262 } |
267 uint32 property_state = 0; | 263 uint32 property_state = 0; |
268 if (!reader.PopUint32(&property_state)) { | 264 if (!reader.PopUint32(&property_state)) { |
269 LOG(WARNING) << "PropertyActivate called with incorrect parameters: " | 265 LOG(WARNING) << "PropertyActivate called with incorrect parameters: " |
270 << method_call->ToString(); | 266 << method_call->ToString(); |
271 return; | 267 return; |
272 } | 268 } |
273 DCHECK(engine_handler_.get()); | 269 DCHECK(engine_handler_.get()); |
274 engine_handler_->PropertyActivate( | 270 engine_handler_->PropertyActivate( |
275 property_name, | 271 property_name, |
276 static_cast<IBusEngineHandlerInterface::IBusPropertyState>( | 272 static_cast<IBusEngineHandlerInterface::IBusPropertyState>( |
277 property_state)); | 273 property_state)); |
278 scoped_ptr<dbus::Response> response( | 274 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
279 dbus::Response::FromMethodCall(method_call)); | 275 response_sender.Run(response); |
280 response_sender.Run(response.get()); | |
281 } | 276 } |
282 | 277 |
283 // Handles PropertyShow method call from ibus-daemon. | 278 // Handles PropertyShow method call from ibus-daemon. |
284 void PropertyShow(dbus::MethodCall* method_call, | 279 void PropertyShow(dbus::MethodCall* method_call, |
285 dbus::ExportedObject::ResponseSender response_sender) { | 280 dbus::ExportedObject::ResponseSender response_sender) { |
286 dbus::MessageReader reader(method_call); | 281 dbus::MessageReader reader(method_call); |
287 std::string property_name; | 282 std::string property_name; |
288 if (!reader.PopString(&property_name)) { | 283 if (!reader.PopString(&property_name)) { |
289 LOG(WARNING) << "PropertyShow called with incorrect parameters: " | 284 LOG(WARNING) << "PropertyShow called with incorrect parameters: " |
290 << method_call->ToString(); | 285 << method_call->ToString(); |
291 return; | 286 return; |
292 } | 287 } |
293 DCHECK(engine_handler_.get()); | 288 DCHECK(engine_handler_.get()); |
294 engine_handler_->PropertyShow(property_name); | 289 engine_handler_->PropertyShow(property_name); |
295 scoped_ptr<dbus::Response> response( | 290 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
296 dbus::Response::FromMethodCall(method_call)); | 291 response_sender.Run(response); |
297 response_sender.Run(response.get()); | |
298 } | 292 } |
299 | 293 |
300 // Handles PropertyHide method call from ibus-daemon. | 294 // Handles PropertyHide method call from ibus-daemon. |
301 void PropertyHide(dbus::MethodCall* method_call, | 295 void PropertyHide(dbus::MethodCall* method_call, |
302 dbus::ExportedObject::ResponseSender response_sender) { | 296 dbus::ExportedObject::ResponseSender response_sender) { |
303 dbus::MessageReader reader(method_call); | 297 dbus::MessageReader reader(method_call); |
304 std::string property_name; | 298 std::string property_name; |
305 if (!reader.PopString(&property_name)) { | 299 if (!reader.PopString(&property_name)) { |
306 LOG(WARNING) << "PropertyHide called with incorrect parameters: " | 300 LOG(WARNING) << "PropertyHide called with incorrect parameters: " |
307 << method_call->ToString(); | 301 << method_call->ToString(); |
308 return; | 302 return; |
309 } | 303 } |
310 DCHECK(engine_handler_.get()); | 304 DCHECK(engine_handler_.get()); |
311 engine_handler_->PropertyHide(property_name); | 305 engine_handler_->PropertyHide(property_name); |
312 scoped_ptr<dbus::Response> response( | 306 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
313 dbus::Response::FromMethodCall(method_call)); | 307 response_sender.Run(response); |
314 response_sender.Run(response.get()); | |
315 } | 308 } |
316 | 309 |
317 // Handles SetCapability method call from ibus-daemon. | 310 // Handles SetCapability method call from ibus-daemon. |
318 void SetCapability(dbus::MethodCall* method_call, | 311 void SetCapability(dbus::MethodCall* method_call, |
319 dbus::ExportedObject::ResponseSender response_sender) { | 312 dbus::ExportedObject::ResponseSender response_sender) { |
320 dbus::MessageReader reader(method_call); | 313 dbus::MessageReader reader(method_call); |
321 uint32 capability = 0; | 314 uint32 capability = 0; |
322 if (!reader.PopUint32(&capability)) { | 315 if (!reader.PopUint32(&capability)) { |
323 LOG(WARNING) << "SetCapability called with incorrect parameters: " | 316 LOG(WARNING) << "SetCapability called with incorrect parameters: " |
324 << method_call->ToString(); | 317 << method_call->ToString(); |
325 return; | 318 return; |
326 } | 319 } |
327 DCHECK(engine_handler_.get()); | 320 DCHECK(engine_handler_.get()); |
328 engine_handler_->SetCapability( | 321 engine_handler_->SetCapability( |
329 static_cast<IBusEngineHandlerInterface::IBusCapability>(capability)); | 322 static_cast<IBusEngineHandlerInterface::IBusCapability>(capability)); |
330 scoped_ptr<dbus::Response> response( | 323 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
331 dbus::Response::FromMethodCall(method_call)); | 324 response_sender.Run(response); |
332 response_sender.Run(response.get()); | |
333 } | 325 } |
334 | 326 |
335 void Reset(dbus::MethodCall* method_call, | 327 void Reset(dbus::MethodCall* method_call, |
336 dbus::ExportedObject::ResponseSender response_sender) { | 328 dbus::ExportedObject::ResponseSender response_sender) { |
337 DCHECK(engine_handler_.get()); | 329 DCHECK(engine_handler_.get()); |
338 engine_handler_->Reset(); | 330 engine_handler_->Reset(); |
339 scoped_ptr<dbus::Response> response( | 331 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
340 dbus::Response::FromMethodCall(method_call)); | 332 response_sender.Run(response); |
341 response_sender.Run(response.get()); | |
342 } | 333 } |
343 | 334 |
344 // Handles ProcessKeyEvent method call from ibus-daemon. | 335 // Handles ProcessKeyEvent method call from ibus-daemon. |
345 void ProcessKeyEvent(dbus::MethodCall* method_call, | 336 void ProcessKeyEvent(dbus::MethodCall* method_call, |
346 dbus::ExportedObject::ResponseSender response_sender) { | 337 dbus::ExportedObject::ResponseSender response_sender) { |
347 dbus::MessageReader reader(method_call); | 338 dbus::MessageReader reader(method_call); |
348 uint32 keysym = 0; | 339 uint32 keysym = 0; |
349 if (!reader.PopUint32(&keysym)) { | 340 if (!reader.PopUint32(&keysym)) { |
350 LOG(WARNING) << "ProcessKeyEvent called with incorrect parameters: " | 341 LOG(WARNING) << "ProcessKeyEvent called with incorrect parameters: " |
351 << method_call->ToString(); | 342 << method_call->ToString(); |
352 return; | 343 return; |
353 } | 344 } |
354 uint32 keycode = 0; | 345 uint32 keycode = 0; |
355 if (!reader.PopUint32(&keycode)) { | 346 if (!reader.PopUint32(&keycode)) { |
356 LOG(WARNING) << "ProcessKeyEvent called with incorrect parameters: " | 347 LOG(WARNING) << "ProcessKeyEvent called with incorrect parameters: " |
357 << method_call->ToString(); | 348 << method_call->ToString(); |
358 return; | 349 return; |
359 } | 350 } |
360 uint32 state = 0; | 351 uint32 state = 0; |
361 if (!reader.PopUint32(&state)) { | 352 if (!reader.PopUint32(&state)) { |
362 LOG(WARNING) << "ProcessKeyEvent called with incorrect parameters: " | 353 LOG(WARNING) << "ProcessKeyEvent called with incorrect parameters: " |
363 << method_call->ToString(); | 354 << method_call->ToString(); |
364 return; | 355 return; |
365 } | 356 } |
366 DCHECK(engine_handler_.get()); | 357 DCHECK(engine_handler_.get()); |
367 bool consume = engine_handler_->ProcessKeyEvent(keysym, keycode, state); | 358 bool consume = engine_handler_->ProcessKeyEvent(keysym, keycode, state); |
368 scoped_ptr<dbus::Response> response( | 359 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
369 dbus::Response::FromMethodCall(method_call)); | 360 dbus::MessageWriter writer(response); |
370 dbus::MessageWriter writer(response.get()); | |
371 writer.AppendBool(consume); | 361 writer.AppendBool(consume); |
372 response_sender.Run(response.get()); | 362 response_sender.Run(response); |
373 } | 363 } |
374 | 364 |
375 // Handles CandidateClicked method call from ibus-daemon. | 365 // Handles CandidateClicked method call from ibus-daemon. |
376 void CandidateClicked(dbus::MethodCall* method_call, | 366 void CandidateClicked(dbus::MethodCall* method_call, |
377 dbus::ExportedObject::ResponseSender response_sender) { | 367 dbus::ExportedObject::ResponseSender response_sender) { |
378 dbus::MessageReader reader(method_call); | 368 dbus::MessageReader reader(method_call); |
379 uint32 index = 0; | 369 uint32 index = 0; |
380 if (!reader.PopUint32(&index)) { | 370 if (!reader.PopUint32(&index)) { |
381 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " | 371 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " |
382 << method_call->ToString(); | 372 << method_call->ToString(); |
383 return; | 373 return; |
384 } | 374 } |
385 uint32 button = 0; | 375 uint32 button = 0; |
386 if (!reader.PopUint32(&button)) { | 376 if (!reader.PopUint32(&button)) { |
387 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " | 377 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " |
388 << method_call->ToString(); | 378 << method_call->ToString(); |
389 return; | 379 return; |
390 } | 380 } |
391 uint32 state = 0; | 381 uint32 state = 0; |
392 if (!reader.PopUint32(&state)) { | 382 if (!reader.PopUint32(&state)) { |
393 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " | 383 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " |
394 << method_call->ToString(); | 384 << method_call->ToString(); |
395 return; | 385 return; |
396 } | 386 } |
397 DCHECK(engine_handler_.get()); | 387 DCHECK(engine_handler_.get()); |
398 engine_handler_->CandidateClicked( | 388 engine_handler_->CandidateClicked( |
399 index, | 389 index, |
400 static_cast<IBusEngineHandlerInterface::IBusMouseButton>(button), | 390 static_cast<IBusEngineHandlerInterface::IBusMouseButton>(button), |
401 state); | 391 state); |
402 scoped_ptr<dbus::Response> response( | 392 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
403 dbus::Response::FromMethodCall(method_call)); | 393 response_sender.Run(response); |
404 response_sender.Run(response.get()); | |
405 } | 394 } |
406 | 395 |
407 // Handles SetSurroundingText method call from ibus-daemon. | 396 // Handles SetSurroundingText method call from ibus-daemon. |
408 void SetSurroundingText( | 397 void SetSurroundingText( |
409 dbus::MethodCall* method_call, | 398 dbus::MethodCall* method_call, |
410 dbus::ExportedObject::ResponseSender response_sender) { | 399 dbus::ExportedObject::ResponseSender response_sender) { |
411 dbus::MessageReader reader(method_call); | 400 dbus::MessageReader reader(method_call); |
412 std::string text; | 401 std::string text; |
413 if (!reader.PopString(&text)) { | 402 if (!reader.PopString(&text)) { |
414 LOG(WARNING) << "SetSurroundingText called with incorrect parameters: " | 403 LOG(WARNING) << "SetSurroundingText called with incorrect parameters: " |
415 << method_call->ToString(); | 404 << method_call->ToString(); |
416 return; | 405 return; |
417 } | 406 } |
418 uint32 cursor_pos = 0; | 407 uint32 cursor_pos = 0; |
419 if (!reader.PopUint32(&cursor_pos)) { | 408 if (!reader.PopUint32(&cursor_pos)) { |
420 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " | 409 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " |
421 << method_call->ToString(); | 410 << method_call->ToString(); |
422 return; | 411 return; |
423 } | 412 } |
424 uint32 anchor_pos = 0; | 413 uint32 anchor_pos = 0; |
425 if (!reader.PopUint32(&anchor_pos)) { | 414 if (!reader.PopUint32(&anchor_pos)) { |
426 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " | 415 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " |
427 << method_call->ToString(); | 416 << method_call->ToString(); |
428 return; | 417 return; |
429 } | 418 } |
430 | 419 |
431 DCHECK(engine_handler_.get()); | 420 DCHECK(engine_handler_.get()); |
432 engine_handler_->SetSurroundingText(text, cursor_pos, anchor_pos); | 421 engine_handler_->SetSurroundingText(text, cursor_pos, anchor_pos); |
433 scoped_ptr<dbus::Response> response( | 422 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
434 dbus::Response::FromMethodCall(method_call)); | 423 response_sender.Run(response); |
435 response_sender.Run(response.get()); | |
436 } | 424 } |
437 | 425 |
438 // Called when the method call is exported. | 426 // Called when the method call is exported. |
439 void OnMethodExported(const std::string& interface_name, | 427 void OnMethodExported(const std::string& interface_name, |
440 const std::string& method_name, | 428 const std::string& method_name, |
441 bool success) { | 429 bool success) { |
442 LOG_IF(WARNING, !success) << "Failed to export " | 430 LOG_IF(WARNING, !success) << "Failed to export " |
443 << interface_name << "." << method_name; | 431 << interface_name << "." << method_name; |
444 } | 432 } |
445 | 433 |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
491 DBusClientImplementationType type, | 479 DBusClientImplementationType type, |
492 dbus::Bus* bus, | 480 dbus::Bus* bus, |
493 const dbus::ObjectPath& object_path) { | 481 const dbus::ObjectPath& object_path) { |
494 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) | 482 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) |
495 return new IBusEngineServiceImpl(bus, object_path); | 483 return new IBusEngineServiceImpl(bus, object_path); |
496 else | 484 else |
497 return new IBusEngineServiceStubImpl(); | 485 return new IBusEngineServiceStubImpl(); |
498 } | 486 } |
499 | 487 |
500 } // namespace chromeos | 488 } // namespace chromeos |
OLD | NEW |