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

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

Issue 2599673005: arc: Use GET_INTERFACE_FOR_METHOD macro (Closed)
Patch Set: Addressed feedback Created 3 years, 11 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 <utility> 7 #include <utility>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
12 #include "components/arc/arc_bridge_service.h" 12 #include "components/arc/arc_bridge_service.h"
13 #include "ui/base/ime/composition_text.h" 13 #include "ui/base/ime/composition_text.h"
14 #include "ui/base/ime/text_input_type.h" 14 #include "ui/base/ime/text_input_type.h"
15 #include "ui/gfx/geometry/rect.h" 15 #include "ui/gfx/geometry/rect.h"
16 16
17 namespace arc { 17 namespace arc {
18 namespace { 18 namespace {
19 19
20 constexpr uint32_t kMinVersionForOnKeyboardsBoundsChanging = 3;
21 constexpr uint32_t kMinVersionForExtendSelectionAndDelete = 4;
22
23 ui::TextInputType ConvertTextInputType(mojom::TextInputType ipc_type) { 20 ui::TextInputType ConvertTextInputType(mojom::TextInputType ipc_type) {
24 // The two enum types are similar, but intentionally made not identical. 21 // The two enum types are similar, but intentionally made not identical.
25 // We cannot force them to be in sync. If we do, updates in ui::TextInputType 22 // We cannot force them to be in sync. If we do, updates in ui::TextInputType
26 // must always be propagated to the mojom::TextInputType mojo definition in 23 // must always be propagated to the mojom::TextInputType mojo definition in
27 // ARC container side, which is in a different repository than Chromium. 24 // ARC container side, which is in a different repository than Chromium.
28 // We don't want such dependency. 25 // We don't want such dependency.
29 // 26 //
30 // That's why we need a lengthy switch statement instead of static_cast 27 // That's why we need a lengthy switch statement instead of static_cast
31 // guarded by a static assert on the two enums to be in sync. 28 // guarded by a static assert on the two enums to be in sync.
32 switch (ipc_type) { 29 switch (ipc_type) {
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 ArcBridgeService* bridge_service) 76 ArcBridgeService* bridge_service)
80 : binding_(this), delegate_(delegate), bridge_service_(bridge_service) { 77 : binding_(this), delegate_(delegate), bridge_service_(bridge_service) {
81 bridge_service_->ime()->AddObserver(this); 78 bridge_service_->ime()->AddObserver(this);
82 } 79 }
83 80
84 ArcImeBridgeImpl::~ArcImeBridgeImpl() { 81 ArcImeBridgeImpl::~ArcImeBridgeImpl() {
85 bridge_service_->ime()->RemoveObserver(this); 82 bridge_service_->ime()->RemoveObserver(this);
86 } 83 }
87 84
88 void ArcImeBridgeImpl::OnInstanceReady() { 85 void ArcImeBridgeImpl::OnInstanceReady() {
89 auto* instance = bridge_service_->ime()->GetInstanceForMethod("Init"); 86 auto* instance = ARC_GET_INSTANCE_FOR_METHOD(bridge_service_->ime(), Init);
90 DCHECK(instance); 87 DCHECK(instance);
91 instance->Init(binding_.CreateInterfacePtrAndBind()); 88 instance->Init(binding_.CreateInterfacePtrAndBind());
92 } 89 }
93 90
94 void ArcImeBridgeImpl::SendSetCompositionText( 91 void ArcImeBridgeImpl::SendSetCompositionText(
95 const ui::CompositionText& composition) { 92 const ui::CompositionText& composition) {
96 auto* ime_instance = 93 auto* ime_instance =
97 bridge_service_->ime()->GetInstanceForMethod("SetCompositionText"); 94 ARC_GET_INSTANCE_FOR_METHOD(bridge_service_->ime(), SetCompositionText);
98 if (!ime_instance) 95 if (!ime_instance)
99 return; 96 return;
100 97
101 ime_instance->SetCompositionText(base::UTF16ToUTF8(composition.text), 98 ime_instance->SetCompositionText(base::UTF16ToUTF8(composition.text),
102 ConvertSegments(composition)); 99 ConvertSegments(composition));
103 } 100 }
104 101
105 void ArcImeBridgeImpl::SendConfirmCompositionText() { 102 void ArcImeBridgeImpl::SendConfirmCompositionText() {
106 auto* ime_instance = 103 auto* ime_instance = ARC_GET_INSTANCE_FOR_METHOD(bridge_service_->ime(),
107 bridge_service_->ime()->GetInstanceForMethod("ConfirmCompositionText"); 104 ConfirmCompositionText);
108 if (!ime_instance) 105 if (!ime_instance)
109 return; 106 return;
110 107
111 ime_instance->ConfirmCompositionText(); 108 ime_instance->ConfirmCompositionText();
112 } 109 }
113 110
114 void ArcImeBridgeImpl::SendInsertText(const base::string16& text) { 111 void ArcImeBridgeImpl::SendInsertText(const base::string16& text) {
115 auto* ime_instance = 112 auto* ime_instance =
116 bridge_service_->ime()->GetInstanceForMethod("InsertText"); 113 ARC_GET_INSTANCE_FOR_METHOD(bridge_service_->ime(), InsertText);
117 if (!ime_instance) 114 if (!ime_instance)
118 return; 115 return;
119 116
120 ime_instance->InsertText(base::UTF16ToUTF8(text)); 117 ime_instance->InsertText(base::UTF16ToUTF8(text));
121 } 118 }
122 119
123 void ArcImeBridgeImpl::SendOnKeyboardBoundsChanging( 120 void ArcImeBridgeImpl::SendOnKeyboardBoundsChanging(
124 const gfx::Rect& new_bounds) { 121 const gfx::Rect& new_bounds) {
125 auto* ime_instance = bridge_service_->ime()->GetInstanceForMethod( 122 auto* ime_instance = ARC_GET_INSTANCE_FOR_METHOD(bridge_service_->ime(),
126 "OnKeyboardBoundsChanging", kMinVersionForOnKeyboardsBoundsChanging); 123 OnKeyboardBoundsChanging);
127 if (!ime_instance) 124 if (!ime_instance)
128 return; 125 return;
129 126
130 ime_instance->OnKeyboardBoundsChanging(new_bounds); 127 ime_instance->OnKeyboardBoundsChanging(new_bounds);
131 } 128 }
132 129
133 void ArcImeBridgeImpl::SendExtendSelectionAndDelete( 130 void ArcImeBridgeImpl::SendExtendSelectionAndDelete(
134 size_t before, size_t after) { 131 size_t before, size_t after) {
135 auto* ime_instance = bridge_service_->ime()->GetInstanceForMethod( 132 auto* ime_instance = ARC_GET_INSTANCE_FOR_METHOD(bridge_service_->ime(),
136 "ExtendSelectionAndDelete", kMinVersionForExtendSelectionAndDelete); 133 ExtendSelectionAndDelete);
137 if (!ime_instance) 134 if (!ime_instance)
138 return; 135 return;
139 136
140 ime_instance->ExtendSelectionAndDelete(before, after); 137 ime_instance->ExtendSelectionAndDelete(before, after);
141 } 138 }
142 139
143 void ArcImeBridgeImpl::OnTextInputTypeChanged(mojom::TextInputType type) { 140 void ArcImeBridgeImpl::OnTextInputTypeChanged(mojom::TextInputType type) {
144 delegate_->OnTextInputTypeChanged(ConvertTextInputType(type)); 141 delegate_->OnTextInputTypeChanged(ConvertTextInputType(type));
145 } 142 }
146 143
147 void ArcImeBridgeImpl::OnCursorRectChanged(mojom::CursorRectPtr rect) { 144 void ArcImeBridgeImpl::OnCursorRectChanged(mojom::CursorRectPtr rect) {
148 delegate_->OnCursorRectChanged(gfx::Rect(rect->left, rect->top, 145 delegate_->OnCursorRectChanged(gfx::Rect(rect->left, rect->top,
149 rect->right - rect->left, 146 rect->right - rect->left,
150 rect->bottom - rect->top)); 147 rect->bottom - rect->top));
151 } 148 }
152 149
153 void ArcImeBridgeImpl::OnCancelComposition() { 150 void ArcImeBridgeImpl::OnCancelComposition() {
154 delegate_->OnCancelComposition(); 151 delegate_->OnCancelComposition();
155 } 152 }
156 153
157 void ArcImeBridgeImpl::ShowImeIfNeeded() { 154 void ArcImeBridgeImpl::ShowImeIfNeeded() {
158 delegate_->ShowImeIfNeeded(); 155 delegate_->ShowImeIfNeeded();
159 } 156 }
160 157
161 } // namespace arc 158 } // namespace arc
OLDNEW
« no previous file with comments | « components/arc/crash_collector/arc_crash_collector_bridge.cc ('k') | components/arc/instance_holder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698