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

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: More rebasing 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
« no previous file with comments | « components/arc/ime/arc_ime_bridge_impl.h ('k') | components/arc/instance_holder.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 57
58 mojo::Array<arc::mojom::CompositionSegmentPtr> ConvertSegments( 58 mojo::Array<arc::mojom::CompositionSegmentPtr> ConvertSegments(
59 const ui::CompositionText& composition) { 59 const ui::CompositionText& composition) {
60 mojo::Array<arc::mojom::CompositionSegmentPtr> segments = 60 mojo::Array<arc::mojom::CompositionSegmentPtr> segments =
61 mojo::Array<arc::mojom::CompositionSegmentPtr>::New(0); 61 mojo::Array<arc::mojom::CompositionSegmentPtr>::New(0);
62 for (const ui::CompositionUnderline& underline : composition.underlines) { 62 for (const ui::CompositionUnderline& underline : composition.underlines) {
63 arc::mojom::CompositionSegmentPtr segment = 63 arc::mojom::CompositionSegmentPtr segment =
64 arc::mojom::CompositionSegment::New(); 64 arc::mojom::CompositionSegment::New();
65 segment->start_offset = underline.start_offset; 65 segment->start_offset = underline.start_offset;
66 segment->end_offset = underline.end_offset; 66 segment->end_offset = underline.end_offset;
67 segment->emphasized = (underline.thick || 67 segment->emphasized =
68 (composition.selection.start() == underline.start_offset && 68 (underline.thick ||
69 composition.selection.end() == underline.end_offset)); 69 (composition.selection.start() == underline.start_offset &&
70 composition.selection.end() == underline.end_offset));
70 segments.push_back(std::move(segment)); 71 segments.push_back(std::move(segment));
71 } 72 }
72 return segments; 73 return segments;
73 } 74 }
74 75
75 } // namespace 76 } // namespace
76 77
77 ArcImeBridgeImpl::ArcImeBridgeImpl(Delegate* delegate, 78 ArcImeBridgeImpl::ArcImeBridgeImpl(Delegate* delegate,
78 ArcBridgeService* bridge_service) 79 ArcBridgeService* bridge_service)
79 : binding_(this), delegate_(delegate), bridge_service_(bridge_service) { 80 : binding_(this), delegate_(delegate), bridge_service_(bridge_service) {
80 bridge_service_->AddObserver(this); 81 bridge_service_->ime()->AddObserver(this);
81 } 82 }
82 83
83 ArcImeBridgeImpl::~ArcImeBridgeImpl() { 84 ArcImeBridgeImpl::~ArcImeBridgeImpl() {
84 bridge_service_->RemoveObserver(this); 85 bridge_service_->ime()->RemoveObserver(this);
85 } 86 }
86 87
87 void ArcImeBridgeImpl::OnImeInstanceReady() { 88 void ArcImeBridgeImpl::OnInstanceReady() {
88 bridge_service_->ime_instance()->Init(binding_.CreateInterfacePtrAndBind()); 89 bridge_service_->ime()->instance()->Init(
90 binding_.CreateInterfacePtrAndBind());
89 } 91 }
90 92
91 void ArcImeBridgeImpl::SendSetCompositionText( 93 void ArcImeBridgeImpl::SendSetCompositionText(
92 const ui::CompositionText& composition) { 94 const ui::CompositionText& composition) {
93 mojom::ImeInstance* ime_instance = bridge_service_->ime_instance(); 95 mojom::ImeInstance* ime_instance = bridge_service_->ime()->instance();
94 if (!ime_instance) { 96 if (!ime_instance) {
95 LOG(ERROR) << "ArcImeInstance method called before being ready."; 97 LOG(ERROR) << "ArcImeInstance method called before being ready.";
96 return; 98 return;
97 } 99 }
98 100
99 ime_instance->SetCompositionText(base::UTF16ToUTF8(composition.text), 101 ime_instance->SetCompositionText(base::UTF16ToUTF8(composition.text),
100 ConvertSegments(composition)); 102 ConvertSegments(composition));
101 } 103 }
102 104
103 void ArcImeBridgeImpl::SendConfirmCompositionText() { 105 void ArcImeBridgeImpl::SendConfirmCompositionText() {
104 mojom::ImeInstance* ime_instance = bridge_service_->ime_instance(); 106 mojom::ImeInstance* ime_instance = bridge_service_->ime()->instance();
105 if (!ime_instance) { 107 if (!ime_instance) {
106 LOG(ERROR) << "ArcImeInstance method called before being ready."; 108 LOG(ERROR) << "ArcImeInstance method called before being ready.";
107 return; 109 return;
108 } 110 }
109 111
110 ime_instance->ConfirmCompositionText(); 112 ime_instance->ConfirmCompositionText();
111 } 113 }
112 114
113 void ArcImeBridgeImpl::SendInsertText(const base::string16& text) { 115 void ArcImeBridgeImpl::SendInsertText(const base::string16& text) {
114 mojom::ImeInstance* ime_instance = bridge_service_->ime_instance(); 116 mojom::ImeInstance* ime_instance = bridge_service_->ime()->instance();
115 if (!ime_instance) { 117 if (!ime_instance) {
116 LOG(ERROR) << "ArcImeInstance method called before being ready."; 118 LOG(ERROR) << "ArcImeInstance method called before being ready.";
117 return; 119 return;
118 } 120 }
119 121
120 ime_instance->InsertText(base::UTF16ToUTF8(text)); 122 ime_instance->InsertText(base::UTF16ToUTF8(text));
121 } 123 }
122 124
123 void ArcImeBridgeImpl::SendOnKeyboardBoundsChanging( 125 void ArcImeBridgeImpl::SendOnKeyboardBoundsChanging(
124 const gfx::Rect& new_bounds) { 126 const gfx::Rect& new_bounds) {
125 mojom::ImeInstance* ime_instance = bridge_service_->ime_instance(); 127 mojom::ImeInstance* ime_instance = bridge_service_->ime()->instance();
126 if (!ime_instance) { 128 if (!ime_instance) {
127 LOG(ERROR) << "ArcImeInstance method called before being ready."; 129 LOG(ERROR) << "ArcImeInstance method called before being ready.";
128 return; 130 return;
129 } 131 }
130 if (bridge_service_->ime_version() < 132 if (bridge_service_->ime()->version() <
131 kMinVersionForOnKeyboardsBoundsChanging) { 133 kMinVersionForOnKeyboardsBoundsChanging) {
132 LOG(ERROR) << "ArcImeInstance is too old for OnKeyboardsBoundsChanging."; 134 LOG(ERROR) << "ArcImeInstance is too old for OnKeyboardsBoundsChanging.";
133 return; 135 return;
134 } 136 }
135 137
136 ime_instance->OnKeyboardBoundsChanging(new_bounds); 138 ime_instance->OnKeyboardBoundsChanging(new_bounds);
137 } 139 }
138 140
139 void ArcImeBridgeImpl::SendExtendSelectionAndDelete( 141 void ArcImeBridgeImpl::SendExtendSelectionAndDelete(
140 size_t before, size_t after) { 142 size_t before, size_t after) {
141 mojom::ImeInstance* ime_instance = bridge_service_->ime_instance(); 143 mojom::ImeInstance* ime_instance = bridge_service_->ime()->instance();
142 if (!ime_instance) { 144 if (!ime_instance) {
143 LOG(ERROR) << "ArcImeInstance method called before being ready."; 145 LOG(ERROR) << "ArcImeInstance method called before being ready.";
144 return; 146 return;
145 } 147 }
146 if (bridge_service_->ime_version() < 148 if (bridge_service_->ime()->version() <
147 kMinVersionForExtendSelectionAndDelete) { 149 kMinVersionForExtendSelectionAndDelete) {
148 LOG(ERROR) << "ArcImeInstance is too old for ExtendSelectionAndDelete."; 150 LOG(ERROR) << "ArcImeInstance is too old for ExtendSelectionAndDelete.";
149 return; 151 return;
150 } 152 }
151 153
152 ime_instance->ExtendSelectionAndDelete(before, after); 154 ime_instance->ExtendSelectionAndDelete(before, after);
153 } 155 }
154 156
155 void ArcImeBridgeImpl::OnTextInputTypeChanged(arc::mojom::TextInputType type) { 157 void ArcImeBridgeImpl::OnTextInputTypeChanged(arc::mojom::TextInputType type) {
156 delegate_->OnTextInputTypeChanged(ConvertTextInputType(type)); 158 delegate_->OnTextInputTypeChanged(ConvertTextInputType(type));
157 } 159 }
158 160
159 void ArcImeBridgeImpl::OnCursorRectChanged(arc::mojom::CursorRectPtr rect) { 161 void ArcImeBridgeImpl::OnCursorRectChanged(arc::mojom::CursorRectPtr rect) {
160 delegate_->OnCursorRectChanged(gfx::Rect( 162 delegate_->OnCursorRectChanged(gfx::Rect(rect->left, rect->top,
161 rect->left, 163 rect->right - rect->left,
162 rect->top, 164 rect->bottom - rect->top));
163 rect->right - rect->left,
164 rect->bottom - rect->top));
165 } 165 }
166 166
167 void ArcImeBridgeImpl::OnCancelComposition() { 167 void ArcImeBridgeImpl::OnCancelComposition() {
168 delegate_->OnCancelComposition(); 168 delegate_->OnCancelComposition();
169 } 169 }
170 170
171 void ArcImeBridgeImpl::ShowImeIfNeeded() { 171 void ArcImeBridgeImpl::ShowImeIfNeeded() {
172 delegate_->ShowImeIfNeeded(); 172 delegate_->ShowImeIfNeeded();
173 } 173 }
174 174
175 } // namespace arc 175 } // namespace arc
OLDNEW
« no previous file with comments | « components/arc/ime/arc_ime_bridge_impl.h ('k') | components/arc/instance_holder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698