OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/browser/renderer_host/render_widget_host_view_win.h" | 5 #include "content/browser/renderer_host/render_widget_host_view_win.h" |
6 | 6 |
7 #include <InputScope.h> | 7 #include <InputScope.h> |
8 #include <wtsapi32.h> | 8 #include <wtsapi32.h> |
9 #pragma comment(lib, "wtsapi32.lib") | 9 #pragma comment(lib, "wtsapi32.lib") |
10 | 10 |
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
402 being_destroyed_(false), | 402 being_destroyed_(false), |
403 tooltip_hwnd_(NULL), | 403 tooltip_hwnd_(NULL), |
404 tooltip_showing_(false), | 404 tooltip_showing_(false), |
405 weak_factory_(this), | 405 weak_factory_(this), |
406 is_loading_(false), | 406 is_loading_(false), |
407 text_input_type_(ui::TEXT_INPUT_TYPE_NONE), | 407 text_input_type_(ui::TEXT_INPUT_TYPE_NONE), |
408 text_input_mode_(ui::TEXT_INPUT_MODE_DEFAULT), | 408 text_input_mode_(ui::TEXT_INPUT_MODE_DEFAULT), |
409 can_compose_inline_(true), | 409 can_compose_inline_(true), |
410 is_fullscreen_(false), | 410 is_fullscreen_(false), |
411 ignore_mouse_movement_(true), | 411 ignore_mouse_movement_(true), |
412 composition_range_(ui::Range::InvalidRange()), | 412 composition_range_(gfx::Range::InvalidRange()), |
413 touch_state_(new WebTouchState(this)), | 413 touch_state_(new WebTouchState(this)), |
414 pointer_down_context_(false), | 414 pointer_down_context_(false), |
415 last_touch_location_(-1, -1), | 415 last_touch_location_(-1, -1), |
416 touch_events_enabled_(ui::AreTouchEventsEnabled()), | 416 touch_events_enabled_(ui::AreTouchEventsEnabled()), |
417 gesture_recognizer_(ui::GestureRecognizer::Create(this)) { | 417 gesture_recognizer_(ui::GestureRecognizer::Create(this)) { |
418 render_widget_host_->SetView(this); | 418 render_widget_host_->SetView(this); |
419 registrar_.Add(this, | 419 registrar_.Add(this, |
420 NOTIFICATION_RENDERER_PROCESS_TERMINATED, | 420 NOTIFICATION_RENDERER_PROCESS_TERMINATED, |
421 NotificationService::AllBrowserContextsAndSources()); | 421 NotificationService::AllBrowserContextsAndSources()); |
422 } | 422 } |
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
719 } | 719 } |
720 | 720 |
721 void RenderWidgetHostViewWin::ScrollOffsetChanged() { | 721 void RenderWidgetHostViewWin::ScrollOffsetChanged() { |
722 } | 722 } |
723 | 723 |
724 void RenderWidgetHostViewWin::ImeCancelComposition() { | 724 void RenderWidgetHostViewWin::ImeCancelComposition() { |
725 imm32_manager_->CancelIME(m_hWnd); | 725 imm32_manager_->CancelIME(m_hWnd); |
726 } | 726 } |
727 | 727 |
728 void RenderWidgetHostViewWin::ImeCompositionRangeChanged( | 728 void RenderWidgetHostViewWin::ImeCompositionRangeChanged( |
729 const ui::Range& range, | 729 const gfx::Range& range, |
730 const std::vector<gfx::Rect>& character_bounds) { | 730 const std::vector<gfx::Rect>& character_bounds) { |
731 composition_range_ = range; | 731 composition_range_ = range; |
732 composition_character_bounds_ = character_bounds; | 732 composition_character_bounds_ = character_bounds; |
733 } | 733 } |
734 | 734 |
735 void RenderWidgetHostViewWin::Redraw() { | 735 void RenderWidgetHostViewWin::Redraw() { |
736 RECT damage_bounds; | 736 RECT damage_bounds; |
737 GetUpdateRect(&damage_bounds, FALSE); | 737 GetUpdateRect(&damage_bounds, FALSE); |
738 | 738 |
739 base::win::ScopedGDIObject<HRGN> damage_region(CreateRectRgn(0, 0, 0, 0)); | 739 base::win::ScopedGDIObject<HRGN> damage_region(CreateRectRgn(0, 0, 0, 0)); |
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1014 NOTIMPLEMENTED(); | 1014 NOTIMPLEMENTED(); |
1015 } | 1015 } |
1016 | 1016 |
1017 void RenderWidgetHostViewWin::InsertText(const string16& text) { | 1017 void RenderWidgetHostViewWin::InsertText(const string16& text) { |
1018 if (!base::win::IsTSFAwareRequired()) { | 1018 if (!base::win::IsTSFAwareRequired()) { |
1019 NOTREACHED(); | 1019 NOTREACHED(); |
1020 return; | 1020 return; |
1021 } | 1021 } |
1022 if (render_widget_host_) | 1022 if (render_widget_host_) |
1023 render_widget_host_->ImeConfirmComposition(text, | 1023 render_widget_host_->ImeConfirmComposition(text, |
1024 ui::Range::InvalidRange(), | 1024 gfx::Range::InvalidRange(), |
1025 false); | 1025 false); |
1026 } | 1026 } |
1027 | 1027 |
1028 void RenderWidgetHostViewWin::InsertChar(char16 ch, int flags) { | 1028 void RenderWidgetHostViewWin::InsertChar(char16 ch, int flags) { |
1029 if (!base::win::IsTSFAwareRequired()) { | 1029 if (!base::win::IsTSFAwareRequired()) { |
1030 NOTREACHED(); | 1030 NOTREACHED(); |
1031 return; | 1031 return; |
1032 } | 1032 } |
1033 // TODO(nona): Implement this function. | 1033 // TODO(nona): Implement this function. |
1034 NOTIMPLEMENTED(); | 1034 NOTIMPLEMENTED(); |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1092 bool RenderWidgetHostViewWin::HasCompositionText() { | 1092 bool RenderWidgetHostViewWin::HasCompositionText() { |
1093 if (!base::win::IsTSFAwareRequired()) { | 1093 if (!base::win::IsTSFAwareRequired()) { |
1094 NOTREACHED(); | 1094 NOTREACHED(); |
1095 return false; | 1095 return false; |
1096 } | 1096 } |
1097 // TODO(nona): Implement this function. | 1097 // TODO(nona): Implement this function. |
1098 NOTIMPLEMENTED(); | 1098 NOTIMPLEMENTED(); |
1099 return false; | 1099 return false; |
1100 } | 1100 } |
1101 | 1101 |
1102 bool RenderWidgetHostViewWin::GetTextRange(ui::Range* range) { | 1102 bool RenderWidgetHostViewWin::GetTextRange(gfx::Range* range) { |
1103 if (!base::win::IsTSFAwareRequired()) { | 1103 if (!base::win::IsTSFAwareRequired()) { |
1104 NOTREACHED(); | 1104 NOTREACHED(); |
1105 return false; | 1105 return false; |
1106 } | 1106 } |
1107 range->set_start(selection_text_offset_); | 1107 range->set_start(selection_text_offset_); |
1108 range->set_end(selection_text_offset_ + selection_text_.length()); | 1108 range->set_end(selection_text_offset_ + selection_text_.length()); |
1109 return false; | 1109 return false; |
1110 } | 1110 } |
1111 | 1111 |
1112 bool RenderWidgetHostViewWin::GetCompositionTextRange(ui::Range* range) { | 1112 bool RenderWidgetHostViewWin::GetCompositionTextRange(gfx::Range* range) { |
1113 if (!base::win::IsTSFAwareRequired()) { | 1113 if (!base::win::IsTSFAwareRequired()) { |
1114 NOTREACHED(); | 1114 NOTREACHED(); |
1115 return false; | 1115 return false; |
1116 } | 1116 } |
1117 // TODO(nona): Implement this function. | 1117 // TODO(nona): Implement this function. |
1118 NOTIMPLEMENTED(); | 1118 NOTIMPLEMENTED(); |
1119 return false; | 1119 return false; |
1120 } | 1120 } |
1121 | 1121 |
1122 bool RenderWidgetHostViewWin::GetSelectionRange(ui::Range* range) { | 1122 bool RenderWidgetHostViewWin::GetSelectionRange(gfx::Range* range) { |
1123 if (!base::win::IsTSFAwareRequired()) { | 1123 if (!base::win::IsTSFAwareRequired()) { |
1124 NOTREACHED(); | 1124 NOTREACHED(); |
1125 return false; | 1125 return false; |
1126 } | 1126 } |
1127 range->set_start(selection_range_.start()); | 1127 range->set_start(selection_range_.start()); |
1128 range->set_end(selection_range_.end()); | 1128 range->set_end(selection_range_.end()); |
1129 return false; | 1129 return false; |
1130 } | 1130 } |
1131 | 1131 |
1132 bool RenderWidgetHostViewWin::SetSelectionRange(const ui::Range& range) { | 1132 bool RenderWidgetHostViewWin::SetSelectionRange(const gfx::Range& range) { |
1133 if (!base::win::IsTSFAwareRequired()) { | 1133 if (!base::win::IsTSFAwareRequired()) { |
1134 NOTREACHED(); | 1134 NOTREACHED(); |
1135 return false; | 1135 return false; |
1136 } | 1136 } |
1137 // TODO(nona): Implement this function. | 1137 // TODO(nona): Implement this function. |
1138 NOTIMPLEMENTED(); | 1138 NOTIMPLEMENTED(); |
1139 return false; | 1139 return false; |
1140 } | 1140 } |
1141 | 1141 |
1142 bool RenderWidgetHostViewWin::DeleteRange(const ui::Range& range) { | 1142 bool RenderWidgetHostViewWin::DeleteRange(const gfx::Range& range) { |
1143 if (!base::win::IsTSFAwareRequired()) { | 1143 if (!base::win::IsTSFAwareRequired()) { |
1144 NOTREACHED(); | 1144 NOTREACHED(); |
1145 return false; | 1145 return false; |
1146 } | 1146 } |
1147 // TODO(nona): Implement this function. | 1147 // TODO(nona): Implement this function. |
1148 NOTIMPLEMENTED(); | 1148 NOTIMPLEMENTED(); |
1149 return false; | 1149 return false; |
1150 } | 1150 } |
1151 | 1151 |
1152 bool RenderWidgetHostViewWin::GetTextFromRange(const ui::Range& range, | 1152 bool RenderWidgetHostViewWin::GetTextFromRange(const gfx::Range& range, |
1153 string16* text) { | 1153 string16* text) { |
1154 if (!base::win::IsTSFAwareRequired()) { | 1154 if (!base::win::IsTSFAwareRequired()) { |
1155 NOTREACHED(); | 1155 NOTREACHED(); |
1156 return false; | 1156 return false; |
1157 } | 1157 } |
1158 ui::Range selection_text_range(selection_text_offset_, | 1158 gfx::Range selection_text_range(selection_text_offset_, |
1159 selection_text_offset_ + selection_text_.length()); | 1159 selection_text_offset_ + selection_text_.length()); |
1160 if (!selection_text_range.Contains(range)) { | 1160 if (!selection_text_range.Contains(range)) { |
1161 text->clear(); | 1161 text->clear(); |
1162 return false; | 1162 return false; |
1163 } | 1163 } |
1164 if (selection_text_range.EqualsIgnoringDirection(range)) { | 1164 if (selection_text_range.EqualsIgnoringDirection(range)) { |
1165 *text = selection_text_; | 1165 *text = selection_text_; |
1166 } else { | 1166 } else { |
1167 *text = selection_text_.substr( | 1167 *text = selection_text_.substr( |
1168 range.GetMin() - selection_text_offset_, | 1168 range.GetMin() - selection_text_offset_, |
(...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1663 // WebKit::WebCompositionUnderline, so that we can do reinterpret_cast safely. | 1663 // WebKit::WebCompositionUnderline, so that we can do reinterpret_cast safely. |
1664 COMPILE_ASSERT(sizeof(ui::CompositionUnderline) == | 1664 COMPILE_ASSERT(sizeof(ui::CompositionUnderline) == |
1665 sizeof(WebKit::WebCompositionUnderline), | 1665 sizeof(WebKit::WebCompositionUnderline), |
1666 ui_CompositionUnderline__WebKit_WebCompositionUnderline_diff); | 1666 ui_CompositionUnderline__WebKit_WebCompositionUnderline_diff); |
1667 | 1667 |
1668 // Retrieve the result string and its attributes of the ongoing composition | 1668 // Retrieve the result string and its attributes of the ongoing composition |
1669 // and send it to a renderer process. | 1669 // and send it to a renderer process. |
1670 ui::CompositionText composition; | 1670 ui::CompositionText composition; |
1671 if (imm32_manager_->GetResult(m_hWnd, lparam, &composition.text)) { | 1671 if (imm32_manager_->GetResult(m_hWnd, lparam, &composition.text)) { |
1672 render_widget_host_->ImeConfirmComposition( | 1672 render_widget_host_->ImeConfirmComposition( |
1673 composition.text, ui::Range::InvalidRange(), false); | 1673 composition.text, gfx::Range::InvalidRange(), false); |
1674 imm32_manager_->ResetComposition(m_hWnd); | 1674 imm32_manager_->ResetComposition(m_hWnd); |
1675 // Fall though and try reading the composition string. | 1675 // Fall though and try reading the composition string. |
1676 // Japanese IMEs send a message containing both GCS_RESULTSTR and | 1676 // Japanese IMEs send a message containing both GCS_RESULTSTR and |
1677 // GCS_COMPSTR, which means an ongoing composition has been finished | 1677 // GCS_COMPSTR, which means an ongoing composition has been finished |
1678 // by the start of another composition. | 1678 // by the start of another composition. |
1679 } | 1679 } |
1680 // Retrieve the composition string and its attributes of the ongoing | 1680 // Retrieve the composition string and its attributes of the ongoing |
1681 // composition and send it to a renderer process. | 1681 // composition and send it to a renderer process. |
1682 if (imm32_manager_->GetComposition(m_hWnd, lparam, &composition)) { | 1682 if (imm32_manager_->GetComposition(m_hWnd, lparam, &composition)) { |
1683 // TODO(suzhe): due to a bug of webkit, we can't use selection range with | 1683 // TODO(suzhe): due to a bug of webkit, we can't use selection range with |
1684 // composition string. See: https://bugs.webkit.org/show_bug.cgi?id=37788 | 1684 // composition string. See: https://bugs.webkit.org/show_bug.cgi?id=37788 |
1685 composition.selection = ui::Range(composition.selection.end()); | 1685 composition.selection = gfx::Range(composition.selection.end()); |
1686 | 1686 |
1687 // TODO(suzhe): convert both renderer_host and renderer to use | 1687 // TODO(suzhe): convert both renderer_host and renderer to use |
1688 // ui::CompositionText. | 1688 // ui::CompositionText. |
1689 const std::vector<WebKit::WebCompositionUnderline>& underlines = | 1689 const std::vector<WebKit::WebCompositionUnderline>& underlines = |
1690 reinterpret_cast<const std::vector<WebKit::WebCompositionUnderline>&>( | 1690 reinterpret_cast<const std::vector<WebKit::WebCompositionUnderline>&>( |
1691 composition.underlines); | 1691 composition.underlines); |
1692 render_widget_host_->ImeSetComposition( | 1692 render_widget_host_->ImeSetComposition( |
1693 composition.text, underlines, | 1693 composition.text, underlines, |
1694 composition.selection.start(), composition.selection.end()); | 1694 composition.selection.start(), composition.selection.end()); |
1695 } | 1695 } |
(...skipping 1503 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3199 return new RenderWidgetHostViewWin(widget); | 3199 return new RenderWidgetHostViewWin(widget); |
3200 } | 3200 } |
3201 | 3201 |
3202 // static | 3202 // static |
3203 void RenderWidgetHostViewPort::GetDefaultScreenInfo( | 3203 void RenderWidgetHostViewPort::GetDefaultScreenInfo( |
3204 WebKit::WebScreenInfo* results) { | 3204 WebKit::WebScreenInfo* results) { |
3205 GetScreenInfoForWindow(0, results); | 3205 GetScreenInfoForWindow(0, results); |
3206 } | 3206 } |
3207 | 3207 |
3208 } // namespace content | 3208 } // namespace content |
OLD | NEW |