Index: components/arc/ime/arc_ime_service.cc |
diff --git a/components/arc/ime/arc_ime_service.cc b/components/arc/ime/arc_ime_service.cc |
index 9259f31aad29e083415249ddb1dc897270a5f615..5b80309e779d35ed8ce3478649335374e7a3790b 100644 |
--- a/components/arc/ime/arc_ime_service.cc |
+++ b/components/arc/ime/arc_ime_service.cc |
@@ -18,6 +18,7 @@ |
#include "ui/events/base_event_utils.h" |
#include "ui/events/event.h" |
#include "ui/events/keycodes/keyboard_codes.h" |
+#include "ui/gfx/range/range.h" |
namespace arc { |
@@ -231,6 +232,17 @@ void ArcImeService::ShowImeIfNeeded() { |
} |
} |
+void ArcImeService::OnCursorRectChangedWithSurroundingText( |
+ const gfx::Rect& rect, |
+ const gfx::Range& text_range, |
+ const base::string16& text_in_range, |
+ const gfx::Range& selection_range) { |
+ text_range_ = text_range; |
hidehiko
2017/05/11 14:32:32
These values should be invalidated when the text i
yhanada
2017/05/12 07:52:06
These value should be used from InputMethod::OnCar
|
+ text_in_range_ = text_in_range; |
+ selection_range_ = selection_range; |
+ OnCursorRectChanged(rect); |
+} |
+ |
//////////////////////////////////////////////////////////////////////////////// |
// Overridden from keyboard::KeyboardControllerObserver |
void ArcImeService::OnKeyboardBoundsChanging(const gfx::Rect& new_bounds) { |
@@ -337,6 +349,28 @@ gfx::Rect ArcImeService::GetCaretBounds() const { |
return converted; |
} |
+bool ArcImeService::GetTextRange(gfx::Range* range) const { |
+ if (!text_range_.IsValid()) |
+ return false; |
+ *range = text_range_; |
+ return true; |
+} |
+ |
+bool ArcImeService::GetSelectionRange(gfx::Range* range) const { |
+ if (!selection_range_.IsValid()) |
+ return false; |
+ *range = selection_range_; |
+ return true; |
+} |
+ |
+bool ArcImeService::GetTextFromRange(const gfx::Range& range, |
+ base::string16* text) const { |
+ if (!text_range_.IsValid() || range != text_range_) |
hidehiko
2017/05/11 14:32:31
Could you document the limitation of the range?
(I
yhanada
2017/05/12 07:52:06
As I commented above, I suppose that this method i
|
+ return false; |
+ *text = text_in_range_; |
+ return true; |
+} |
+ |
ui::TextInputMode ArcImeService::GetTextInputMode() const { |
return ui::TEXT_INPUT_MODE_DEFAULT; |
} |
@@ -366,18 +400,10 @@ bool ArcImeService::HasCompositionText() const { |
return has_composition_text_; |
} |
-bool ArcImeService::GetTextRange(gfx::Range* range) const { |
- return false; |
-} |
- |
bool ArcImeService::GetCompositionTextRange(gfx::Range* range) const { |
return false; |
} |
-bool ArcImeService::GetSelectionRange(gfx::Range* range) const { |
- return false; |
-} |
- |
bool ArcImeService::SetSelectionRange(const gfx::Range& range) { |
return false; |
} |
@@ -386,11 +412,6 @@ bool ArcImeService::DeleteRange(const gfx::Range& range) { |
return false; |
} |
-bool ArcImeService::GetTextFromRange( |
- const gfx::Range& range, base::string16* text) const { |
- return false; |
-} |
- |
bool ArcImeService::ChangeTextDirectionAndLayoutAlignment( |
base::i18n::TextDirection direction) { |
return false; |