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; |