Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/browser/renderer_host/render_widget_host_view_views.h" | 5 #include "chrome/browser/renderer_host/render_widget_host_view_views.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 377 // Clamp the tooltip length to kMaxTooltipLength so that we don't | 377 // Clamp the tooltip length to kMaxTooltipLength so that we don't |
| 378 // accidentally DOS the user with a mega tooltip. | 378 // accidentally DOS the user with a mega tooltip. |
| 379 tooltip_text_ = ui::TruncateString(tip, kMaxTooltipLength); | 379 tooltip_text_ = ui::TruncateString(tip, kMaxTooltipLength); |
| 380 if (GetWidget()) | 380 if (GetWidget()) |
| 381 GetWidget()->TooltipTextChanged(this); | 381 GetWidget()->TooltipTextChanged(this); |
| 382 } | 382 } |
| 383 | 383 |
| 384 void RenderWidgetHostViewViews::SelectionChanged(const string16& text, | 384 void RenderWidgetHostViewViews::SelectionChanged(const string16& text, |
| 385 size_t offset, | 385 size_t offset, |
| 386 const ui::Range& range) { | 386 const ui::Range& range) { |
| 387 selection_text_ = text; | 387 RenderWidgetHostView::SelectionChanged(text, offset, range); |
| 388 selection_text_offset_ = offset; | |
| 389 selection_range_ = range; | |
| 390 | |
| 391 // TODO(anicolao): deal with the clipboard without GTK | 388 // TODO(anicolao): deal with the clipboard without GTK |
| 392 NOTIMPLEMENTED(); | 389 NOTIMPLEMENTED(); |
| 393 } | 390 } |
| 394 | 391 |
| 395 void RenderWidgetHostViewViews::SelectionBoundsChanged( | 392 void RenderWidgetHostViewViews::SelectionBoundsChanged( |
| 396 const gfx::Rect& start_rect, | 393 const gfx::Rect& start_rect, |
| 397 const gfx::Rect& end_rect) { | 394 const gfx::Rect& end_rect) { |
| 398 views::InputMethod* input_method = GetInputMethod(); | 395 views::InputMethod* input_method = GetInputMethod(); |
| 399 | 396 |
| 400 if (selection_start_rect_ == start_rect && selection_end_rect_ == end_rect) | 397 if (selection_start_rect_ == start_rect && selection_end_rect_ == end_rect) |
| (...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 744 } | 741 } |
| 745 | 742 |
| 746 gfx::Rect RenderWidgetHostViewViews::GetCaretBounds() { | 743 gfx::Rect RenderWidgetHostViewViews::GetCaretBounds() { |
| 747 return selection_start_rect_.Union(selection_end_rect_); | 744 return selection_start_rect_.Union(selection_end_rect_); |
| 748 } | 745 } |
| 749 | 746 |
| 750 bool RenderWidgetHostViewViews::HasCompositionText() { | 747 bool RenderWidgetHostViewViews::HasCompositionText() { |
| 751 return has_composition_text_; | 748 return has_composition_text_; |
| 752 } | 749 } |
| 753 | 750 |
| 754 bool RenderWidgetHostViewViews::GetTextRange(ui::Range* range) { | 751 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.
| |
| 755 // TODO(suzhe): implement this method when fixing http://crbug.com/55130. | 752 *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.
| |
| 756 NOTIMPLEMENTED(); | 753 selection_text_offset_ + selection_text_.length()); |
| 757 return false; | 754 return true; |
| 758 } | 755 } |
| 759 | 756 |
| 760 bool RenderWidgetHostViewViews::GetCompositionTextRange(ui::Range* range) { | 757 bool RenderWidgetHostViewViews::GetCompositionTextRange(ui::Range* range) { |
| 761 // TODO(suzhe): implement this method when fixing http://crbug.com/55130. | 758 // TODO(suzhe): implement this method when fixing http://crbug.com/55130. |
| 762 NOTIMPLEMENTED(); | 759 NOTIMPLEMENTED(); |
| 763 return false; | 760 return false; |
| 764 } | 761 } |
| 765 | 762 |
| 766 bool RenderWidgetHostViewViews::GetSelectionRange(ui::Range* range) { | 763 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
| |
| 767 // TODO(suzhe): implement this method when fixing http://crbug.com/55130. | 764 *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.
| |
| 768 NOTIMPLEMENTED(); | 765 return true; |
| 769 return false; | |
| 770 } | 766 } |
| 771 | 767 |
| 772 bool RenderWidgetHostViewViews::SetSelectionRange(const ui::Range& range) { | 768 bool RenderWidgetHostViewViews::SetSelectionRange(const ui::Range& range) { |
| 773 // TODO(suzhe): implement this method when fixing http://crbug.com/55130. | 769 // TODO(suzhe): implement this method when fixing http://crbug.com/55130. |
| 774 NOTIMPLEMENTED(); | 770 NOTIMPLEMENTED(); |
| 775 return false; | 771 return false; |
| 776 } | 772 } |
| 777 | 773 |
| 778 bool RenderWidgetHostViewViews::DeleteRange(const ui::Range& range) { | 774 bool RenderWidgetHostViewViews::DeleteRange(const ui::Range& range) { |
| 779 // TODO(suzhe): implement this method when fixing http://crbug.com/55130. | 775 // TODO(suzhe): implement this method when fixing http://crbug.com/55130. |
| 780 NOTIMPLEMENTED(); | 776 NOTIMPLEMENTED(); |
| 781 return false; | 777 return false; |
| 782 } | 778 } |
| 783 | 779 |
| 784 bool RenderWidgetHostViewViews::GetTextFromRange( | 780 bool RenderWidgetHostViewViews::GetTextFromRange( |
| 785 const ui::Range& range, | 781 const ui::Range& range, |
| 786 const base::Callback<void(const string16&)>& callback) { | 782 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
| |
| 787 // TODO(suzhe): implement this method when fixing http://crbug.com/55130. | 783 ui::Range selection_text_range(selection_text_offset_, |
| 788 NOTIMPLEMENTED(); | 784 selection_text_offset_ + selection_text_.length()); |
| 789 return false; | 785 |
| 786 if (!selection_text_range.Contains(range)) { | |
| 787 text->clear(); | |
| 788 return false; | |
| 789 } | |
| 790 | |
| 791 if (range.GetMin() == selection_text_range.start() && | |
| 792 range.GetMax() == selection_text_range.end()) { | |
| 793 // Avoid calling substr which performance is low. | |
| 794 *text = selection_text_; | |
| 795 } else { | |
| 796 *text = selection_text_.substr( | |
| 797 range.GetMin() - selection_text_offset_, | |
| 798 range.length()); | |
| 799 } | |
| 800 return true; | |
| 790 } | 801 } |
| 791 | 802 |
| 792 void RenderWidgetHostViewViews::OnInputMethodChanged() { | 803 void RenderWidgetHostViewViews::OnInputMethodChanged() { |
| 793 if (!host_) | 804 if (!host_) |
| 794 return; | 805 return; |
| 795 | 806 |
| 796 DCHECK(GetInputMethod()); | 807 DCHECK(GetInputMethod()); |
| 797 host_->SetInputMethodActive(GetInputMethod()->IsActive()); | 808 host_->SetInputMethodActive(GetInputMethod()->IsActive()); |
| 798 | 809 |
| 799 // TODO(suzhe): implement the newly added “locale” property of HTML DOM | 810 // TODO(suzhe): implement the newly added “locale” property of HTML DOM |
| (...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1158 for (std::vector< base::Callback<void(void)> >::const_iterator | 1169 for (std::vector< base::Callback<void(void)> >::const_iterator |
| 1159 it = on_compositing_ended_callbacks_.begin(); | 1170 it = on_compositing_ended_callbacks_.begin(); |
| 1160 it != on_compositing_ended_callbacks_.end(); ++it) { | 1171 it != on_compositing_ended_callbacks_.end(); ++it) { |
| 1161 it->Run(); | 1172 it->Run(); |
| 1162 } | 1173 } |
| 1163 on_compositing_ended_callbacks_.clear(); | 1174 on_compositing_ended_callbacks_.clear(); |
| 1164 compositor->RemoveObserver(this); | 1175 compositor->RemoveObserver(this); |
| 1165 } | 1176 } |
| 1166 | 1177 |
| 1167 #endif | 1178 #endif |
| OLD | NEW |