| 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())
|
| + 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;
|
|
|