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 a13d19a9f6241710df6429fdd36991af5051fd7e..406e7bc8b0d8151e3c30bf42272926f5905ff5d7 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) { |
|
Hironori Bono
2011/10/27 06:17:47
nit: I prefer adding 'DCHECK(range)' here.
Peng
2011/10/27 16:12:24
I used those kind of DHCECK() for input arguments.
|
| - // TODO(suzhe): implement this method when fixing http://crbug.com/55130. |
| - NOTIMPLEMENTED(); |
| - return false; |
| + *range = ui::Range(selection_text_offset_, |
|
Hironori Bono
2011/10/27 06:17:47
nit: can we use operator= for ui::Range? In genera
Peng
2011/10/27 16:12:24
Done.
Peng
2011/10/27 16:12:24
Done.
|
| + selection_text_offset_ + selection_text_.length()); |
| + return true; |
| } |
| bool RenderWidgetHostViewViews::GetCompositionTextRange(ui::Range* range) { |
| @@ -764,9 +761,8 @@ bool RenderWidgetHostViewViews::GetCompositionTextRange(ui::Range* range) { |
| } |
| bool RenderWidgetHostViewViews::GetSelectionRange(ui::Range* range) { |
|
Hironori Bono
2011/10/27 06:17:47
nit: I prefer adding 'DCHECK(range)' here.
Peng
2011/10/27 16:12:24
ditto
|
| - // TODO(suzhe): implement this method when fixing http://crbug.com/55130. |
| - NOTIMPLEMENTED(); |
| - return false; |
| + *range = selection_range_; |
|
Hironori Bono
2011/10/27 06:17:47
nit: if ui::Range explicitly allows using copy con
Peng
2011/10/27 16:12:24
Done.
|
| + return true; |
| } |
| bool RenderWidgetHostViewViews::SetSelectionRange(const ui::Range& range) { |
| @@ -783,10 +779,25 @@ 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) { |
|
Hironori Bono
2011/10/27 06:17:47
nit: I prefer adding 'DCHECK(text)' here.
Peng
2011/10/27 16:12:24
ditto
|
| + 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 (range.GetMin() == selection_text_range.start() && |
| + range.GetMax() == selection_text_range.end()) { |
| + // 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() { |