| Index: chrome/browser/renderer_host/render_widget_host_view_views.cc
|
| diff --git a/chrome/browser/renderer_host/render_widget_host_view_views.cc b/chrome/browser/renderer_host/render_widget_host_view_views.cc
|
| index a13d19a9f6241710df6429fdd36991af5051fd7e..602b4309ee585a680cd08314a409e972f6366f2b 100644
|
| --- a/chrome/browser/renderer_host/render_widget_host_view_views.cc
|
| +++ b/chrome/browser/renderer_host/render_widget_host_view_views.cc
|
| @@ -384,10 +384,7 @@ void RenderWidgetHostViewViews::SetTooltipText(const string16& tip) {
|
| void RenderWidgetHostViewViews::SelectionChanged(const string16& text,
|
| size_t offset,
|
| const ui::Range& range) {
|
| - selection_text_ = text;
|
| - selection_text_offset_ = offset;
|
| - selection_range_ = range;
|
| -
|
| + RenderWidgetHostView::SelectionChanged(text, offset, range);
|
| // TODO(anicolao): deal with the clipboard without GTK
|
| NOTIMPLEMENTED();
|
| }
|
| @@ -752,9 +749,9 @@ bool RenderWidgetHostViewViews::HasCompositionText() {
|
| }
|
|
|
| bool RenderWidgetHostViewViews::GetTextRange(ui::Range* range) {
|
| - // TODO(suzhe): implement this method when fixing http://crbug.com/55130.
|
| - NOTIMPLEMENTED();
|
| - return false;
|
| + range->set_start(selection_text_offset_);
|
| + range->set_end(selection_text_offset_ + selection_text_.length());
|
| + return true;
|
| }
|
|
|
| bool RenderWidgetHostViewViews::GetCompositionTextRange(ui::Range* range) {
|
| @@ -764,9 +761,9 @@ bool RenderWidgetHostViewViews::GetCompositionTextRange(ui::Range* range) {
|
| }
|
|
|
| bool RenderWidgetHostViewViews::GetSelectionRange(ui::Range* range) {
|
| - // TODO(suzhe): implement this method when fixing http://crbug.com/55130.
|
| - NOTIMPLEMENTED();
|
| - return false;
|
| + range->set_start(selection_range_.start());
|
| + range->set_end(selection_range_.end());
|
| + return true;
|
| }
|
|
|
| bool RenderWidgetHostViewViews::SetSelectionRange(const ui::Range& range) {
|
| @@ -783,10 +780,23 @@ bool RenderWidgetHostViewViews::DeleteRange(const ui::Range& range) {
|
|
|
| bool RenderWidgetHostViewViews::GetTextFromRange(
|
| const ui::Range& range,
|
| - const base::Callback<void(const string16&)>& callback) {
|
| - // TODO(suzhe): implement this method when fixing http://crbug.com/55130.
|
| - NOTIMPLEMENTED();
|
| - return false;
|
| + string16* text) {
|
| + ui::Range selection_text_range(selection_text_offset_,
|
| + selection_text_offset_ + selection_text_.length());
|
| +
|
| + if (!selection_text_range.Contains(range)) {
|
| + text->clear();
|
| + return false;
|
| + }
|
| + if (selection_text_range.EqualsIgnoringDirection(range)) {
|
| + // Avoid calling substr which performance is low.
|
| + *text = selection_text_;
|
| + } else {
|
| + *text = selection_text_.substr(
|
| + range.GetMin() - selection_text_offset_,
|
| + range.length());
|
| + }
|
| + return true;
|
| }
|
|
|
| void RenderWidgetHostViewViews::OnInputMethodChanged() {
|
|
|