Chromium Code Reviews| 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 f277597430666c6620800831408388b7a028c846..0067d13358cb529fa5caa92f4574be9ab07bc97a 100644 |
| --- a/chrome/browser/renderer_host/render_widget_host_view_views.cc |
| +++ b/chrome/browser/renderer_host/render_widget_host_view_views.cc |
| @@ -752,9 +752,10 @@ bool RenderWidgetHostViewViews::HasCompositionText() { |
| } |
| bool RenderWidgetHostViewViews::GetTextRange(ui::Range* range) { |
| - // TODO(suzhe): implement this method when fixing http://crbug.com/55130. |
| - NOTIMPLEMENTED(); |
| - return false; |
| + DCHECK(range); |
|
jam
2011/10/25 00:32:13
nit: we avoid DCHECKING pointers before using them
Peng
2011/10/25 15:51:39
Done.
|
| + *range = ui::Range(selection_text_offset_, |
| + selection_text_offset_ + selection_text_.length()); |
| + return true; |
| } |
| bool RenderWidgetHostViewViews::GetCompositionTextRange(ui::Range* range) { |
| @@ -764,9 +765,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; |
| + DCHECK(range); |
| + *range = selection_range_; |
| + return true; |
| } |
| bool RenderWidgetHostViewViews::SetSelectionRange(const ui::Range& range) { |
| @@ -783,10 +784,22 @@ 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* actual_range) { |
| + ui::Range selection_text_range( |
| + selection_text_offset_, |
| + selection_text_offset_ + selection_text_.length()); |
| + *actual_range = selection_text_range.Intersect(range); |
| + |
| + if (!actual_range->IsValid() || actual_range->is_empty()) { |
| + text->clear(); |
| + } else { |
| + *text = selection_text_.substr( |
| + actual_range->GetMin() - selection_text_offset_, |
| + actual_range->length()); |
| + } |
| + |
| + return true; |
| } |
| void RenderWidgetHostViewViews::OnInputMethodChanged() { |