Chromium Code Reviews| 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" |
| 11 #include "chromeos/dbus/ibus/ibus_lookup_table.h" | 11 #include "chromeos/dbus/ibus/ibus_lookup_table.h" |
| 12 #include "chromeos/dbus/ibus/ibus_property.h" | 12 #include "chromeos/dbus/ibus/ibus_property.h" |
| 13 #include "chromeos/dbus/ibus/ibus_text.h" | 13 #include "chromeos/dbus/ibus/ibus_text.h" |
| 14 #include "dbus/bus.h" | 14 #include "dbus/bus.h" |
| 15 #include "dbus/exported_object.h" | 15 #include "dbus/exported_object.h" |
| 16 #include "dbus/message.h" | 16 #include "dbus/message.h" |
| 17 #include "dbus/object_path.h" | 17 #include "dbus/object_path.h" |
| 18 #include "dbus/object_proxy.h" | 18 #include "dbus/object_proxy.h" |
| 19 | 19 |
| 20 namespace chromeos { | 20 namespace chromeos { |
| 21 | 21 |
| 22 class IBusEngineServiceImpl : public IBusEngineService { | 22 class IBusEngineServiceImpl : public IBusEngineService { |
| 23 public: | 23 public: |
| 24 IBusEngineServiceImpl(dbus::Bus* bus, | 24 IBusEngineServiceImpl(dbus::Bus* bus, |
| 25 const dbus::ObjectPath& object_path) | 25 const dbus::ObjectPath& object_path) |
| 26 : bus_(bus), | 26 : bus_(bus), |
| 27 engine_handler_(NULL), | |
| 27 object_path_(object_path), | 28 object_path_(object_path), |
| 28 weak_ptr_factory_(this) { | 29 weak_ptr_factory_(this) { |
| 29 exported_object_ = bus->GetExportedObject(object_path_); | 30 exported_object_ = bus->GetExportedObject(object_path_); |
| 30 | 31 |
| 31 exported_object_->ExportMethod( | 32 exported_object_->ExportMethod( |
| 32 ibus::engine::kServiceInterface, | 33 ibus::engine::kServiceInterface, |
| 33 ibus::engine::kFocusInMethod, | 34 ibus::engine::kFocusInMethod, |
| 34 base::Bind(&IBusEngineServiceImpl::FocusIn, | 35 base::Bind(&IBusEngineServiceImpl::FocusIn, |
| 35 weak_ptr_factory_.GetWeakPtr()), | 36 weak_ptr_factory_.GetWeakPtr()), |
| 36 base::Bind(&IBusEngineServiceImpl::OnMethodExported, | 37 base::Bind(&IBusEngineServiceImpl::OnMethodExported, |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 123 weak_ptr_factory_.GetWeakPtr()), | 124 weak_ptr_factory_.GetWeakPtr()), |
| 124 base::Bind(&IBusEngineServiceImpl::OnMethodExported, | 125 base::Bind(&IBusEngineServiceImpl::OnMethodExported, |
| 125 weak_ptr_factory_.GetWeakPtr())); | 126 weak_ptr_factory_.GetWeakPtr())); |
| 126 } | 127 } |
| 127 | 128 |
| 128 virtual ~IBusEngineServiceImpl() { | 129 virtual ~IBusEngineServiceImpl() { |
| 129 bus_->UnregisterExportedObject(object_path_); | 130 bus_->UnregisterExportedObject(object_path_); |
| 130 } | 131 } |
| 131 | 132 |
| 132 // IBusEngineService override. | 133 // IBusEngineService override. |
| 133 virtual void Initialize(IBusEngineHandlerInterface* handler) OVERRIDE { | 134 virtual void SetEngine(IBusEngineHandlerInterface* handler) OVERRIDE { |
| 134 if (engine_handler_.get() == NULL) { | 135 LOG_IF(ERROR, engine_handler_ == NULL) << "Override engine."; |
| 135 engine_handler_.reset(handler); | 136 engine_handler_ = handler; |
| 137 } | |
| 138 | |
| 139 // IBusEngineService override. | |
| 140 virtual void UnsetEngine() OVERRIDE { | |
| 141 if (engine_handler_ == NULL) { | |
| 142 LOG(ERROR) << "There is no engine."; | |
| 136 } else { | 143 } else { |
| 137 LOG(ERROR) << "Already initialized."; | 144 engine_handler_ = NULL; |
| 138 } | 145 } |
| 139 } | 146 } |
| 140 | 147 |
| 141 // IBusEngineService override. | 148 // IBusEngineService override. |
| 142 virtual void RegisterProperties( | 149 virtual void RegisterProperties( |
| 143 const ibus::IBusPropertyList& property_list) OVERRIDE { | 150 const ibus::IBusPropertyList& property_list) OVERRIDE { |
| 144 dbus::Signal signal(ibus::engine::kServiceInterface, | 151 dbus::Signal signal(ibus::engine::kServiceInterface, |
| 145 ibus::engine::kRegisterPropertiesSignal); | 152 ibus::engine::kRegisterPropertiesSignal); |
| 146 dbus::MessageWriter writer(&signal); | 153 dbus::MessageWriter writer(&signal); |
| 147 AppendIBusPropertyList(property_list, &writer); | 154 AppendIBusPropertyList(property_list, &writer); |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 218 ibus::engine::kCommitTextSignal); | 225 ibus::engine::kCommitTextSignal); |
| 219 dbus::MessageWriter writer(&signal); | 226 dbus::MessageWriter writer(&signal); |
| 220 ibus::AppendStringAsIBusText(text, &writer); | 227 ibus::AppendStringAsIBusText(text, &writer); |
| 221 exported_object_->SendSignal(&signal); | 228 exported_object_->SendSignal(&signal); |
| 222 } | 229 } |
| 223 | 230 |
| 224 private: | 231 private: |
| 225 // Handles FocusIn method call from ibus-daemon. | 232 // Handles FocusIn method call from ibus-daemon. |
| 226 void FocusIn(dbus::MethodCall* method_call, | 233 void FocusIn(dbus::MethodCall* method_call, |
| 227 dbus::ExportedObject::ResponseSender response_sender) { | 234 dbus::ExportedObject::ResponseSender response_sender) { |
| 228 DCHECK(engine_handler_.get()); | 235 if (engine_handler_ == NULL) |
| 236 return; | |
| 229 engine_handler_->FocusIn(); | 237 engine_handler_->FocusIn(); |
| 230 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 238 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| 231 response_sender.Run(response); | 239 response_sender.Run(response); |
| 232 } | 240 } |
| 233 | 241 |
| 234 // Handles FocusOut method call from ibus-daemon. | 242 // Handles FocusOut method call from ibus-daemon. |
| 235 void FocusOut(dbus::MethodCall* method_call, | 243 void FocusOut(dbus::MethodCall* method_call, |
| 236 dbus::ExportedObject::ResponseSender response_sender) { | 244 dbus::ExportedObject::ResponseSender response_sender) { |
| 237 DCHECK(engine_handler_.get()); | 245 if (engine_handler_ == NULL) |
| 246 return; | |
| 238 engine_handler_->FocusOut(); | 247 engine_handler_->FocusOut(); |
| 239 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 248 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| 240 response_sender.Run(response); | 249 response_sender.Run(response); |
| 241 } | 250 } |
| 242 | 251 |
| 243 // Handles Enable method call from ibus-daemon. | 252 // Handles Enable method call from ibus-daemon. |
| 244 void Enable(dbus::MethodCall* method_call, | 253 void Enable(dbus::MethodCall* method_call, |
| 245 dbus::ExportedObject::ResponseSender response_sender) { | 254 dbus::ExportedObject::ResponseSender response_sender) { |
| 246 DCHECK(engine_handler_.get()); | 255 if (engine_handler_ == NULL) |
| 256 return; | |
| 247 engine_handler_->Enable(); | 257 engine_handler_->Enable(); |
| 248 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 258 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| 249 response_sender.Run(response); | 259 response_sender.Run(response); |
| 250 } | 260 } |
| 251 | 261 |
| 252 // Handles Disable method call from ibus-daemon. | 262 // Handles Disable method call from ibus-daemon. |
| 253 void Disable(dbus::MethodCall* method_call, | 263 void Disable(dbus::MethodCall* method_call, |
| 254 dbus::ExportedObject::ResponseSender response_sender) { | 264 dbus::ExportedObject::ResponseSender response_sender) { |
| 255 DCHECK(engine_handler_.get()); | 265 if (engine_handler_ == NULL) |
| 266 return; | |
| 256 engine_handler_->Disable(); | 267 engine_handler_->Disable(); |
| 257 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 268 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| 258 response_sender.Run(response); | 269 response_sender.Run(response); |
| 259 } | 270 } |
| 260 | 271 |
| 261 // Handles PropertyActivate method call from ibus-daemon. | 272 // Handles PropertyActivate method call from ibus-daemon. |
| 262 void PropertyActivate(dbus::MethodCall* method_call, | 273 void PropertyActivate(dbus::MethodCall* method_call, |
| 263 dbus::ExportedObject::ResponseSender response_sender) { | 274 dbus::ExportedObject::ResponseSender response_sender) { |
| 275 if (engine_handler_ == NULL) | |
| 276 return; | |
| 264 dbus::MessageReader reader(method_call); | 277 dbus::MessageReader reader(method_call); |
| 265 std::string property_name; | 278 std::string property_name; |
| 266 if (!reader.PopString(&property_name)) { | 279 if (!reader.PopString(&property_name)) { |
| 267 LOG(WARNING) << "PropertyActivate called with incorrect parameters: " | 280 LOG(WARNING) << "PropertyActivate called with incorrect parameters: " |
| 268 << method_call->ToString(); | 281 << method_call->ToString(); |
| 269 return; | 282 return; |
| 270 } | 283 } |
| 271 uint32 property_state = 0; | 284 uint32 property_state = 0; |
| 272 if (!reader.PopUint32(&property_state)) { | 285 if (!reader.PopUint32(&property_state)) { |
| 273 LOG(WARNING) << "PropertyActivate called with incorrect parameters: " | 286 LOG(WARNING) << "PropertyActivate called with incorrect parameters: " |
| 274 << method_call->ToString(); | 287 << method_call->ToString(); |
| 275 return; | 288 return; |
| 276 } | 289 } |
| 277 DCHECK(engine_handler_.get()); | |
| 278 engine_handler_->PropertyActivate( | 290 engine_handler_->PropertyActivate( |
| 279 property_name, | 291 property_name, |
| 280 static_cast<IBusEngineHandlerInterface::IBusPropertyState>( | 292 static_cast<IBusEngineHandlerInterface::IBusPropertyState>( |
| 281 property_state)); | 293 property_state)); |
| 282 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 294 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| 283 response_sender.Run(response); | 295 response_sender.Run(response); |
| 284 } | 296 } |
| 285 | 297 |
| 286 // Handles PropertyShow method call from ibus-daemon. | 298 // Handles PropertyShow method call from ibus-daemon. |
| 287 void PropertyShow(dbus::MethodCall* method_call, | 299 void PropertyShow(dbus::MethodCall* method_call, |
| 288 dbus::ExportedObject::ResponseSender response_sender) { | 300 dbus::ExportedObject::ResponseSender response_sender) { |
| 301 if (engine_handler_ == NULL) | |
| 302 return; | |
| 289 dbus::MessageReader reader(method_call); | 303 dbus::MessageReader reader(method_call); |
| 290 std::string property_name; | 304 std::string property_name; |
| 291 if (!reader.PopString(&property_name)) { | 305 if (!reader.PopString(&property_name)) { |
| 292 LOG(WARNING) << "PropertyShow called with incorrect parameters: " | 306 LOG(WARNING) << "PropertyShow called with incorrect parameters: " |
| 293 << method_call->ToString(); | 307 << method_call->ToString(); |
| 294 return; | 308 return; |
| 295 } | 309 } |
| 296 DCHECK(engine_handler_.get()); | |
| 297 engine_handler_->PropertyShow(property_name); | 310 engine_handler_->PropertyShow(property_name); |
| 298 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 311 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| 299 response_sender.Run(response); | 312 response_sender.Run(response); |
| 300 } | 313 } |
| 301 | 314 |
| 302 // Handles PropertyHide method call from ibus-daemon. | 315 // Handles PropertyHide method call from ibus-daemon. |
| 303 void PropertyHide(dbus::MethodCall* method_call, | 316 void PropertyHide(dbus::MethodCall* method_call, |
| 304 dbus::ExportedObject::ResponseSender response_sender) { | 317 dbus::ExportedObject::ResponseSender response_sender) { |
| 318 if (engine_handler_ == NULL) | |
| 319 return; | |
| 305 dbus::MessageReader reader(method_call); | 320 dbus::MessageReader reader(method_call); |
| 306 std::string property_name; | 321 std::string property_name; |
| 307 if (!reader.PopString(&property_name)) { | 322 if (!reader.PopString(&property_name)) { |
| 308 LOG(WARNING) << "PropertyHide called with incorrect parameters: " | 323 LOG(WARNING) << "PropertyHide called with incorrect parameters: " |
| 309 << method_call->ToString(); | 324 << method_call->ToString(); |
| 310 return; | 325 return; |
| 311 } | 326 } |
| 312 DCHECK(engine_handler_.get()); | |
| 313 engine_handler_->PropertyHide(property_name); | 327 engine_handler_->PropertyHide(property_name); |
| 314 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 328 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| 315 response_sender.Run(response); | 329 response_sender.Run(response); |
| 316 } | 330 } |
| 317 | 331 |
| 318 // Handles SetCapability method call from ibus-daemon. | 332 // Handles SetCapability method call from ibus-daemon. |
| 319 void SetCapability(dbus::MethodCall* method_call, | 333 void SetCapability(dbus::MethodCall* method_call, |
| 320 dbus::ExportedObject::ResponseSender response_sender) { | 334 dbus::ExportedObject::ResponseSender response_sender) { |
| 335 if (engine_handler_ == NULL) | |
| 336 return; | |
| 321 dbus::MessageReader reader(method_call); | 337 dbus::MessageReader reader(method_call); |
| 322 uint32 capability = 0; | 338 uint32 capability = 0; |
| 323 if (!reader.PopUint32(&capability)) { | 339 if (!reader.PopUint32(&capability)) { |
| 324 LOG(WARNING) << "SetCapability called with incorrect parameters: " | 340 LOG(WARNING) << "SetCapability called with incorrect parameters: " |
| 325 << method_call->ToString(); | 341 << method_call->ToString(); |
| 326 return; | 342 return; |
| 327 } | 343 } |
| 328 DCHECK(engine_handler_.get()); | |
| 329 engine_handler_->SetCapability( | 344 engine_handler_->SetCapability( |
| 330 static_cast<IBusEngineHandlerInterface::IBusCapability>(capability)); | 345 static_cast<IBusEngineHandlerInterface::IBusCapability>(capability)); |
| 331 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 346 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| 332 response_sender.Run(response); | 347 response_sender.Run(response); |
| 333 } | 348 } |
| 334 | 349 |
| 335 void Reset(dbus::MethodCall* method_call, | 350 void Reset(dbus::MethodCall* method_call, |
| 336 dbus::ExportedObject::ResponseSender response_sender) { | 351 dbus::ExportedObject::ResponseSender response_sender) { |
| 337 DCHECK(engine_handler_.get()); | 352 if (engine_handler_ == NULL) |
| 353 return; | |
| 338 engine_handler_->Reset(); | 354 engine_handler_->Reset(); |
| 339 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 355 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| 340 response_sender.Run(response); | 356 response_sender.Run(response); |
| 341 } | 357 } |
| 342 | 358 |
| 343 // Handles ProcessKeyEvent method call from ibus-daemon. | 359 // Handles ProcessKeyEvent method call from ibus-daemon. |
| 344 void ProcessKeyEvent(dbus::MethodCall* method_call, | 360 void ProcessKeyEvent(dbus::MethodCall* method_call, |
| 345 dbus::ExportedObject::ResponseSender response_sender) { | 361 dbus::ExportedObject::ResponseSender response_sender) { |
| 362 if (engine_handler_ == NULL) | |
| 363 return; | |
| 346 dbus::MessageReader reader(method_call); | 364 dbus::MessageReader reader(method_call); |
| 347 uint32 keysym = 0; | 365 uint32 keysym = 0; |
| 348 if (!reader.PopUint32(&keysym)) { | 366 if (!reader.PopUint32(&keysym)) { |
| 349 LOG(WARNING) << "ProcessKeyEvent called with incorrect parameters: " | 367 LOG(WARNING) << "ProcessKeyEvent called with incorrect parameters: " |
| 350 << method_call->ToString(); | 368 << method_call->ToString(); |
| 351 return; | 369 return; |
| 352 } | 370 } |
| 353 uint32 keycode = 0; | 371 uint32 keycode = 0; |
| 354 if (!reader.PopUint32(&keycode)) { | 372 if (!reader.PopUint32(&keycode)) { |
| 355 LOG(WARNING) << "ProcessKeyEvent called with incorrect parameters: " | 373 LOG(WARNING) << "ProcessKeyEvent called with incorrect parameters: " |
| 356 << method_call->ToString(); | 374 << method_call->ToString(); |
| 357 return; | 375 return; |
| 358 } | 376 } |
| 359 uint32 state = 0; | 377 uint32 state = 0; |
| 360 if (!reader.PopUint32(&state)) { | 378 if (!reader.PopUint32(&state)) { |
| 361 LOG(WARNING) << "ProcessKeyEvent called with incorrect parameters: " | 379 LOG(WARNING) << "ProcessKeyEvent called with incorrect parameters: " |
| 362 << method_call->ToString(); | 380 << method_call->ToString(); |
| 363 return; | 381 return; |
| 364 } | 382 } |
| 365 DCHECK(engine_handler_.get()); | |
| 366 engine_handler_->ProcessKeyEvent( | 383 engine_handler_->ProcessKeyEvent( |
| 367 keysym, keycode, state, | 384 keysym, keycode, state, |
| 368 base::Bind(&IBusEngineServiceImpl::KeyEventDone, | 385 base::Bind(&IBusEngineServiceImpl::KeyEventDone, |
| 369 weak_ptr_factory_.GetWeakPtr(), | 386 weak_ptr_factory_.GetWeakPtr(), |
| 370 base::Unretained( | 387 base::Unretained( |
| 371 dbus::Response::FromMethodCall(method_call)), | 388 dbus::Response::FromMethodCall(method_call)), |
| 372 response_sender)); | 389 response_sender)); |
| 373 } | 390 } |
| 374 | 391 |
| 375 void KeyEventDone(dbus::Response* response, | 392 void KeyEventDone(dbus::Response* response, |
| 376 const dbus::ExportedObject::ResponseSender& response_sender, | 393 const dbus::ExportedObject::ResponseSender& response_sender, |
| 377 bool consume) { | 394 bool consume) { |
| 395 //////// do we need to check engine_handler_? | |
|
Seigo Nonaka
2012/09/24 04:16:58
remove this. And I think the answer is yes, becaus
hsumita
2012/09/24 07:32:59
Done.
| |
| 378 dbus::MessageWriter writer(response); | 396 dbus::MessageWriter writer(response); |
| 379 writer.AppendBool(consume); | 397 writer.AppendBool(consume); |
| 380 response_sender.Run(response); | 398 response_sender.Run(response); |
| 381 } | 399 } |
| 382 | 400 |
| 383 // Handles CandidateClicked method call from ibus-daemon. | 401 // Handles CandidateClicked method call from ibus-daemon. |
| 384 void CandidateClicked(dbus::MethodCall* method_call, | 402 void CandidateClicked(dbus::MethodCall* method_call, |
| 385 dbus::ExportedObject::ResponseSender response_sender) { | 403 dbus::ExportedObject::ResponseSender response_sender) { |
| 404 if (engine_handler_ == NULL) | |
| 405 return; | |
| 386 dbus::MessageReader reader(method_call); | 406 dbus::MessageReader reader(method_call); |
| 387 uint32 index = 0; | 407 uint32 index = 0; |
| 388 if (!reader.PopUint32(&index)) { | 408 if (!reader.PopUint32(&index)) { |
| 389 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " | 409 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " |
| 390 << method_call->ToString(); | 410 << method_call->ToString(); |
| 391 return; | 411 return; |
| 392 } | 412 } |
| 393 uint32 button = 0; | 413 uint32 button = 0; |
| 394 if (!reader.PopUint32(&button)) { | 414 if (!reader.PopUint32(&button)) { |
| 395 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " | 415 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " |
| 396 << method_call->ToString(); | 416 << method_call->ToString(); |
| 397 return; | 417 return; |
| 398 } | 418 } |
| 399 uint32 state = 0; | 419 uint32 state = 0; |
| 400 if (!reader.PopUint32(&state)) { | 420 if (!reader.PopUint32(&state)) { |
| 401 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " | 421 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " |
| 402 << method_call->ToString(); | 422 << method_call->ToString(); |
| 403 return; | 423 return; |
| 404 } | 424 } |
| 405 DCHECK(engine_handler_.get()); | |
| 406 engine_handler_->CandidateClicked( | 425 engine_handler_->CandidateClicked( |
| 407 index, | 426 index, |
| 408 static_cast<IBusEngineHandlerInterface::IBusMouseButton>(button), | 427 static_cast<IBusEngineHandlerInterface::IBusMouseButton>(button), |
| 409 state); | 428 state); |
| 410 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 429 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| 411 response_sender.Run(response); | 430 response_sender.Run(response); |
| 412 } | 431 } |
| 413 | 432 |
| 414 // Handles SetSurroundingText method call from ibus-daemon. | 433 // Handles SetSurroundingText method call from ibus-daemon. |
| 415 void SetSurroundingText( | 434 void SetSurroundingText( |
| 416 dbus::MethodCall* method_call, | 435 dbus::MethodCall* method_call, |
| 417 dbus::ExportedObject::ResponseSender response_sender) { | 436 dbus::ExportedObject::ResponseSender response_sender) { |
| 437 if (engine_handler_ == NULL) | |
| 438 return; | |
| 418 dbus::MessageReader reader(method_call); | 439 dbus::MessageReader reader(method_call); |
| 419 std::string text; | 440 std::string text; |
| 420 if (!reader.PopString(&text)) { | 441 if (!reader.PopString(&text)) { |
| 421 LOG(WARNING) << "SetSurroundingText called with incorrect parameters: " | 442 LOG(WARNING) << "SetSurroundingText called with incorrect parameters: " |
| 422 << method_call->ToString(); | 443 << method_call->ToString(); |
| 423 return; | 444 return; |
| 424 } | 445 } |
| 425 uint32 cursor_pos = 0; | 446 uint32 cursor_pos = 0; |
| 426 if (!reader.PopUint32(&cursor_pos)) { | 447 if (!reader.PopUint32(&cursor_pos)) { |
| 427 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " | 448 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " |
| 428 << method_call->ToString(); | 449 << method_call->ToString(); |
| 429 return; | 450 return; |
| 430 } | 451 } |
| 431 uint32 anchor_pos = 0; | 452 uint32 anchor_pos = 0; |
| 432 if (!reader.PopUint32(&anchor_pos)) { | 453 if (!reader.PopUint32(&anchor_pos)) { |
| 433 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " | 454 LOG(WARNING) << "CandidateClicked called with incorrect parameters: " |
| 434 << method_call->ToString(); | 455 << method_call->ToString(); |
| 435 return; | 456 return; |
| 436 } | 457 } |
| 437 | 458 |
| 438 DCHECK(engine_handler_.get()); | |
| 439 engine_handler_->SetSurroundingText(text, cursor_pos, anchor_pos); | 459 engine_handler_->SetSurroundingText(text, cursor_pos, anchor_pos); |
| 440 dbus::Response* response = dbus::Response::FromMethodCall(method_call); | 460 dbus::Response* response = dbus::Response::FromMethodCall(method_call); |
| 441 response_sender.Run(response); | 461 response_sender.Run(response); |
| 442 } | 462 } |
| 443 | 463 |
| 444 // Called when the method call is exported. | 464 // Called when the method call is exported. |
| 445 void OnMethodExported(const std::string& interface_name, | 465 void OnMethodExported(const std::string& interface_name, |
| 446 const std::string& method_name, | 466 const std::string& method_name, |
| 447 bool success) { | 467 bool success) { |
| 448 LOG_IF(WARNING, !success) << "Failed to export " | 468 LOG_IF(WARNING, !success) << "Failed to export " |
| 449 << interface_name << "." << method_name; | 469 << interface_name << "." << method_name; |
| 450 } | 470 } |
| 451 | 471 |
| 452 // D-Bus bus object used for unregistering exported methods in dtor. | 472 // D-Bus bus object used for unregistering exported methods in dtor. |
| 453 dbus::Bus* bus_; | 473 dbus::Bus* bus_; |
| 454 | 474 |
| 455 // All incoming method calls are passed on to the |engine_handler_|. | 475 // All incoming method calls are passed on to the |engine_handler_|. |
| 456 scoped_ptr<IBusEngineHandlerInterface> engine_handler_; | 476 IBusEngineHandlerInterface *engine_handler_; |
|
Seigo Nonaka
2012/09/24 04:16:58
IBusEngineHandlerInterfae* engine_handler_
hsumita
2012/09/24 07:32:59
Done.
| |
| 457 | 477 |
| 458 dbus::ObjectPath object_path_; | 478 dbus::ObjectPath object_path_; |
| 459 scoped_refptr<dbus::ExportedObject> exported_object_; | 479 scoped_refptr<dbus::ExportedObject> exported_object_; |
| 460 base::WeakPtrFactory<IBusEngineServiceImpl> weak_ptr_factory_; | 480 base::WeakPtrFactory<IBusEngineServiceImpl> weak_ptr_factory_; |
| 461 | 481 |
| 462 DISALLOW_COPY_AND_ASSIGN(IBusEngineServiceImpl); | 482 DISALLOW_COPY_AND_ASSIGN(IBusEngineServiceImpl); |
| 463 }; | 483 }; |
| 464 | 484 |
| 465 class IBusEngineServiceStubImpl : public IBusEngineService { | 485 class IBusEngineServiceStubImpl : public IBusEngineService { |
| 466 public: | 486 public: |
| 467 IBusEngineServiceStubImpl() {} | 487 IBusEngineServiceStubImpl() {} |
| 468 virtual ~IBusEngineServiceStubImpl() {} | 488 virtual ~IBusEngineServiceStubImpl() {} |
| 469 // IBusEngineService overrides. | 489 // IBusEngineService overrides. |
| 470 virtual void Initialize(IBusEngineHandlerInterface* handler) OVERRIDE {} | 490 virtual void SetEngine(IBusEngineHandlerInterface* handler) OVERRIDE {} |
| 491 virtual void UnsetEngine() OVERRIDE {} | |
| 471 virtual void RegisterProperties( | 492 virtual void RegisterProperties( |
| 472 const ibus::IBusPropertyList& property_list) OVERRIDE {} | 493 const ibus::IBusPropertyList& property_list) OVERRIDE {} |
| 473 virtual void UpdatePreedit(const ibus::IBusText& ibus_text, | 494 virtual void UpdatePreedit(const ibus::IBusText& ibus_text, |
| 474 uint32 cursor_pos, | 495 uint32 cursor_pos, |
| 475 bool is_visible, | 496 bool is_visible, |
| 476 IBusEnginePreeditFocusOutMode mode) OVERRIDE {} | 497 IBusEnginePreeditFocusOutMode mode) OVERRIDE {} |
| 477 virtual void UpdateAuxiliaryText(const ibus::IBusText& ibus_text, | 498 virtual void UpdateAuxiliaryText(const ibus::IBusText& ibus_text, |
| 478 bool is_visible) OVERRIDE {} | 499 bool is_visible) OVERRIDE {} |
| 479 virtual void UpdateLookupTable(const ibus::IBusLookupTable& lookup_table, | 500 virtual void UpdateLookupTable(const ibus::IBusLookupTable& lookup_table, |
| 480 bool is_visible) OVERRIDE {} | 501 bool is_visible) OVERRIDE {} |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 499 DBusClientImplementationType type, | 520 DBusClientImplementationType type, |
| 500 dbus::Bus* bus, | 521 dbus::Bus* bus, |
| 501 const dbus::ObjectPath& object_path) { | 522 const dbus::ObjectPath& object_path) { |
| 502 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) | 523 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) |
| 503 return new IBusEngineServiceImpl(bus, object_path); | 524 return new IBusEngineServiceImpl(bus, object_path); |
| 504 else | 525 else |
| 505 return new IBusEngineServiceStubImpl(); | 526 return new IBusEngineServiceStubImpl(); |
| 506 } | 527 } |
| 507 | 528 |
| 508 } // namespace chromeos | 529 } // namespace chromeos |
| OLD | NEW |