Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(67)

Side by Side Diff: components/arc/ime/arc_ime_bridge_impl.cc

Issue 2133503002: arc: Revamp the ArcBridgeService interface (Closed) Base URL: https://chromium.googlesource.com/a/chromium/src.git@master
Patch Set: Fix ui_arc_unittests Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "components/arc/ime/arc_ime_bridge_impl.h" 5 #include "components/arc/ime/arc_ime_bridge_impl.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "components/arc/arc_bridge_service.h" 9 #include "components/arc/arc_bridge_service.h"
10 #include "ui/base/ime/composition_text.h" 10 #include "ui/base/ime/composition_text.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 56
57 mojo::Array<arc::mojom::CompositionSegmentPtr> ConvertSegments( 57 mojo::Array<arc::mojom::CompositionSegmentPtr> ConvertSegments(
58 const ui::CompositionText& composition) { 58 const ui::CompositionText& composition) {
59 mojo::Array<arc::mojom::CompositionSegmentPtr> segments = 59 mojo::Array<arc::mojom::CompositionSegmentPtr> segments =
60 mojo::Array<arc::mojom::CompositionSegmentPtr>::New(0); 60 mojo::Array<arc::mojom::CompositionSegmentPtr>::New(0);
61 for (const ui::CompositionUnderline& underline : composition.underlines) { 61 for (const ui::CompositionUnderline& underline : composition.underlines) {
62 arc::mojom::CompositionSegmentPtr segment = 62 arc::mojom::CompositionSegmentPtr segment =
63 arc::mojom::CompositionSegment::New(); 63 arc::mojom::CompositionSegment::New();
64 segment->start_offset = underline.start_offset; 64 segment->start_offset = underline.start_offset;
65 segment->end_offset = underline.end_offset; 65 segment->end_offset = underline.end_offset;
66 segment->emphasized = (underline.thick || 66 segment->emphasized =
67 (composition.selection.start() == underline.start_offset && 67 (underline.thick ||
68 composition.selection.end() == underline.end_offset)); 68 (composition.selection.start() == underline.start_offset &&
69 composition.selection.end() == underline.end_offset));
69 segments.push_back(std::move(segment)); 70 segments.push_back(std::move(segment));
70 } 71 }
71 return segments; 72 return segments;
72 } 73 }
73 74
74 } // namespace 75 } // namespace
75 76
76 ArcImeBridgeImpl::ArcImeBridgeImpl(Delegate* delegate, 77 ArcImeBridgeImpl::ArcImeBridgeImpl(Delegate* delegate,
77 ArcBridgeService* bridge_service) 78 ArcBridgeService* bridge_service)
78 : binding_(this), delegate_(delegate), bridge_service_(bridge_service) { 79 : binding_(this), delegate_(delegate), bridge_service_(bridge_service) {
79 bridge_service_->AddObserver(this); 80 bridge_service_->ime()->AddObserver(this);
80 } 81 }
81 82
82 ArcImeBridgeImpl::~ArcImeBridgeImpl() { 83 ArcImeBridgeImpl::~ArcImeBridgeImpl() {
83 bridge_service_->RemoveObserver(this); 84 bridge_service_->ime()->RemoveObserver(this);
84 } 85 }
85 86
86 void ArcImeBridgeImpl::OnImeInstanceReady() { 87 void ArcImeBridgeImpl::OnInstanceReady(mojom::ImeInstance* ime_instance,
87 bridge_service_->ime_instance()->Init(binding_.CreateInterfacePtrAndBind()); 88 uint32_t version) {
89 ime_instance->Init(binding_.CreateInterfacePtrAndBind());
88 } 90 }
89 91
90 void ArcImeBridgeImpl::SendSetCompositionText( 92 void ArcImeBridgeImpl::SendSetCompositionText(
91 const ui::CompositionText& composition) { 93 const ui::CompositionText& composition) {
92 mojom::ImeInstance* ime_instance = bridge_service_->ime_instance(); 94 mojom::ImeInstance* ime_instance = bridge_service_->ime()->instance();
93 if (!ime_instance) { 95 if (!ime_instance) {
94 LOG(ERROR) << "ArcImeInstance method called before being ready."; 96 LOG(ERROR) << "ArcImeInstance method called before being ready.";
95 return; 97 return;
96 } 98 }
97 99
98 ime_instance->SetCompositionText(base::UTF16ToUTF8(composition.text), 100 ime_instance->SetCompositionText(base::UTF16ToUTF8(composition.text),
99 ConvertSegments(composition)); 101 ConvertSegments(composition));
100 } 102 }
101 103
102 void ArcImeBridgeImpl::SendConfirmCompositionText() { 104 void ArcImeBridgeImpl::SendConfirmCompositionText() {
103 mojom::ImeInstance* ime_instance = bridge_service_->ime_instance(); 105 mojom::ImeInstance* ime_instance = bridge_service_->ime()->instance();
104 if (!ime_instance) { 106 if (!ime_instance) {
105 LOG(ERROR) << "ArcImeInstance method called before being ready."; 107 LOG(ERROR) << "ArcImeInstance method called before being ready.";
106 return; 108 return;
107 } 109 }
108 110
109 ime_instance->ConfirmCompositionText(); 111 ime_instance->ConfirmCompositionText();
110 } 112 }
111 113
112 void ArcImeBridgeImpl::SendInsertText(const base::string16& text) { 114 void ArcImeBridgeImpl::SendInsertText(const base::string16& text) {
113 mojom::ImeInstance* ime_instance = bridge_service_->ime_instance(); 115 mojom::ImeInstance* ime_instance = bridge_service_->ime()->instance();
114 if (!ime_instance) { 116 if (!ime_instance) {
115 LOG(ERROR) << "ArcImeInstance method called before being ready."; 117 LOG(ERROR) << "ArcImeInstance method called before being ready.";
116 return; 118 return;
117 } 119 }
118 120
119 ime_instance->InsertText(base::UTF16ToUTF8(text)); 121 ime_instance->InsertText(base::UTF16ToUTF8(text));
120 } 122 }
121 123
122 void ArcImeBridgeImpl::SendOnKeyboardBoundsChanging( 124 void ArcImeBridgeImpl::SendOnKeyboardBoundsChanging(
123 const gfx::Rect& new_bounds) { 125 const gfx::Rect& new_bounds) {
124 mojom::ImeInstance* ime_instance = bridge_service_->ime_instance(); 126 mojom::ImeInstance* ime_instance = bridge_service_->ime()->instance();
125 if (!ime_instance) { 127 if (!ime_instance) {
126 LOG(ERROR) << "ArcImeInstance method called before being ready."; 128 LOG(ERROR) << "ArcImeInstance method called before being ready.";
127 return; 129 return;
128 } 130 }
129 if (bridge_service_->ime_version() < 131 if (bridge_service_->ime()->version() <
130 kMinVersionForOnKeyboardsBoundsChanging) { 132 kMinVersionForOnKeyboardsBoundsChanging) {
131 LOG(ERROR) << "ArcImeInstance is too old for OnKeyboardsBoundsChanging."; 133 LOG(ERROR) << "ArcImeInstance is too old for OnKeyboardsBoundsChanging.";
132 return; 134 return;
133 } 135 }
134 136
135 ime_instance->OnKeyboardBoundsChanging(new_bounds); 137 ime_instance->OnKeyboardBoundsChanging(new_bounds);
136 } 138 }
137 139
138 void ArcImeBridgeImpl::OnTextInputTypeChanged(arc::mojom::TextInputType type) { 140 void ArcImeBridgeImpl::OnTextInputTypeChanged(arc::mojom::TextInputType type) {
139 delegate_->OnTextInputTypeChanged(ConvertTextInputType(type)); 141 delegate_->OnTextInputTypeChanged(ConvertTextInputType(type));
140 } 142 }
141 143
142 void ArcImeBridgeImpl::OnCursorRectChanged(arc::mojom::CursorRectPtr rect) { 144 void ArcImeBridgeImpl::OnCursorRectChanged(arc::mojom::CursorRectPtr rect) {
143 delegate_->OnCursorRectChanged(gfx::Rect( 145 delegate_->OnCursorRectChanged(gfx::Rect(rect->left, rect->top,
144 rect->left, 146 rect->right - rect->left,
145 rect->top, 147 rect->bottom - rect->top));
146 rect->right - rect->left,
147 rect->bottom - rect->top));
148 } 148 }
149 149
150 void ArcImeBridgeImpl::OnCancelComposition() { 150 void ArcImeBridgeImpl::OnCancelComposition() {
151 delegate_->OnCancelComposition(); 151 delegate_->OnCancelComposition();
152 } 152 }
153 153
154 void ArcImeBridgeImpl::ShowImeIfNeeded() { 154 void ArcImeBridgeImpl::ShowImeIfNeeded() {
155 delegate_->ShowImeIfNeeded(); 155 delegate_->ShowImeIfNeeded();
156 } 156 }
157 157
158 } // namespace arc 158 } // namespace arc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698