Chromium Code Reviews| Index: components/arc/ime/arc_ime_ipc_host.cc |
| diff --git a/components/arc/ime/arc_ime_ipc_host.cc b/components/arc/ime/arc_ime_ipc_host.cc |
| index 93fcef43325261c16d63b3e6512c797810bdcb04..86a3bc5b185097fbd07b1a4b63192716b02a2100 100644 |
| --- a/components/arc/ime/arc_ime_ipc_host.cc |
| +++ b/components/arc/ime/arc_ime_ipc_host.cc |
| @@ -70,24 +70,33 @@ mojo::Array<arc::CompositionSegmentPtr> ConvertSegments( |
| } // namespace |
| ArcImeIpcHost::ArcImeIpcHost(Delegate* delegate, |
| - ArcBridgeService* bridge_service) |
| - : binding_(this), delegate_(delegate), bridge_service_(bridge_service) { |
| - bridge_service_->AddObserver(this); |
| + ArcBridgeService* arc_bridge_service) |
| + : arc_bridge_service_(arc_bridge_service), |
| + binding_(this), |
| + delegate_(delegate) { |
| + DCHECK(arc_bridge_service_); |
| + arc_bridge_service_->AddObserver(this); |
| + |
| + // If ImeInstance was ready before we AddObserver(), we won't get |
| + // OnImeInstanceReady events. For such case, we have to call it |
| + // explicitly. |
| + if (arc_bridge_service_->ime_instance()) |
|
elijahtaylor1
2016/01/20 00:41:19
I don't think I understand why this can't be done
Luis Héctor Chávez
2016/01/20 17:39:59
Hmmm adding it to AddObserver might work. Regardle
Luis Héctor Chávez
2016/01/20 18:40:46
This is now done.
|
| + OnImeInstanceReady(); |
| } |
| ArcImeIpcHost::~ArcImeIpcHost() { |
| - bridge_service_->RemoveObserver(this); |
| + arc_bridge_service_->RemoveObserver(this); |
| } |
| void ArcImeIpcHost::OnImeInstanceReady() { |
| arc::ImeHostPtr host; |
| binding_.Bind(mojo::GetProxy(&host)); |
| - bridge_service_->ime_instance()->Init(std::move(host)); |
| + arc_bridge_service_->ime_instance()->Init(std::move(host)); |
| } |
| void ArcImeIpcHost::SendSetCompositionText( |
| const ui::CompositionText& composition) { |
| - ImeInstance* ime_instance = bridge_service_->ime_instance(); |
| + ImeInstance* ime_instance = arc_bridge_service_->ime_instance(); |
| if (!ime_instance) { |
| LOG(ERROR) << "ArcImeInstance method called before being ready."; |
| return; |
| @@ -98,7 +107,7 @@ void ArcImeIpcHost::SendSetCompositionText( |
| } |
| void ArcImeIpcHost::SendConfirmCompositionText() { |
| - ImeInstance* ime_instance = bridge_service_->ime_instance(); |
| + ImeInstance* ime_instance = arc_bridge_service_->ime_instance(); |
| if (!ime_instance) { |
| LOG(ERROR) << "ArcImeInstance method called before being ready."; |
| return; |
| @@ -108,7 +117,7 @@ void ArcImeIpcHost::SendConfirmCompositionText() { |
| } |
| void ArcImeIpcHost::SendInsertText(const base::string16& text) { |
| - ImeInstance* ime_instance = bridge_service_->ime_instance(); |
| + ImeInstance* ime_instance = arc_bridge_service_->ime_instance(); |
| if (!ime_instance) { |
| LOG(ERROR) << "ArcImeInstance method called before being ready."; |
| return; |