| 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_aura.h" | 5 #include "content/browser/renderer_host/render_widget_host_view_aura.h" |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/callback_helpers.h" | 9 #include "base/callback_helpers.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 1034 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1045 } | 1045 } |
| 1046 } | 1046 } |
| 1047 | 1047 |
| 1048 void RenderWidgetHostViewAura::ImeCancelComposition() { | 1048 void RenderWidgetHostViewAura::ImeCancelComposition() { |
| 1049 if (GetInputMethod()) | 1049 if (GetInputMethod()) |
| 1050 GetInputMethod()->CancelComposition(this); | 1050 GetInputMethod()->CancelComposition(this); |
| 1051 has_composition_text_ = false; | 1051 has_composition_text_ = false; |
| 1052 } | 1052 } |
| 1053 | 1053 |
| 1054 void RenderWidgetHostViewAura::ImeCompositionRangeChanged( | 1054 void RenderWidgetHostViewAura::ImeCompositionRangeChanged( |
| 1055 const ui::Range& range, | 1055 const gfx::Range& range, |
| 1056 const std::vector<gfx::Rect>& character_bounds) { | 1056 const std::vector<gfx::Rect>& character_bounds) { |
| 1057 composition_character_bounds_ = character_bounds; | 1057 composition_character_bounds_ = character_bounds; |
| 1058 } | 1058 } |
| 1059 | 1059 |
| 1060 void RenderWidgetHostViewAura::DidUpdateBackingStore( | 1060 void RenderWidgetHostViewAura::DidUpdateBackingStore( |
| 1061 const gfx::Rect& scroll_rect, | 1061 const gfx::Rect& scroll_rect, |
| 1062 const gfx::Vector2d& scroll_delta, | 1062 const gfx::Vector2d& scroll_delta, |
| 1063 const std::vector<gfx::Rect>& copy_rects, | 1063 const std::vector<gfx::Rect>& copy_rects, |
| 1064 const ui::LatencyInfo& latency_info) { | 1064 const ui::LatencyInfo& latency_info) { |
| 1065 if (accelerated_compositing_state_changed_) | 1065 if (accelerated_compositing_state_changed_) |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1130 aura::client::GetTooltipClient(root_window); | 1130 aura::client::GetTooltipClient(root_window); |
| 1131 if (tooltip_client) { | 1131 if (tooltip_client) { |
| 1132 tooltip_client->UpdateTooltip(window_); | 1132 tooltip_client->UpdateTooltip(window_); |
| 1133 // Content tooltips should be visible indefinitely. | 1133 // Content tooltips should be visible indefinitely. |
| 1134 tooltip_client->SetTooltipShownTimeout(window_, 0); | 1134 tooltip_client->SetTooltipShownTimeout(window_, 0); |
| 1135 } | 1135 } |
| 1136 } | 1136 } |
| 1137 | 1137 |
| 1138 void RenderWidgetHostViewAura::SelectionChanged(const string16& text, | 1138 void RenderWidgetHostViewAura::SelectionChanged(const string16& text, |
| 1139 size_t offset, | 1139 size_t offset, |
| 1140 const ui::Range& range) { | 1140 const gfx::Range& range) { |
| 1141 RenderWidgetHostViewBase::SelectionChanged(text, offset, range); | 1141 RenderWidgetHostViewBase::SelectionChanged(text, offset, range); |
| 1142 | 1142 |
| 1143 #if defined(USE_X11) && !defined(OS_CHROMEOS) | 1143 #if defined(USE_X11) && !defined(OS_CHROMEOS) |
| 1144 if (text.empty() || range.is_empty()) | 1144 if (text.empty() || range.is_empty()) |
| 1145 return; | 1145 return; |
| 1146 | 1146 |
| 1147 // Set the BUFFER_SELECTION to the ui::Clipboard. | 1147 // Set the BUFFER_SELECTION to the ui::Clipboard. |
| 1148 ui::ScopedClipboardWriter clipboard_writer( | 1148 ui::ScopedClipboardWriter clipboard_writer( |
| 1149 ui::Clipboard::GetForCurrentThread(), | 1149 ui::Clipboard::GetForCurrentThread(), |
| 1150 ui::Clipboard::BUFFER_SELECTION); | 1150 ui::Clipboard::BUFFER_SELECTION); |
| (...skipping 985 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2136 // composition string. See: https://bugs.webkit.org/show_bug.cgi?id=37788 | 2136 // composition string. See: https://bugs.webkit.org/show_bug.cgi?id=37788 |
| 2137 host_->ImeSetComposition(composition.text, underlines, | 2137 host_->ImeSetComposition(composition.text, underlines, |
| 2138 composition.selection.end(), | 2138 composition.selection.end(), |
| 2139 composition.selection.end()); | 2139 composition.selection.end()); |
| 2140 | 2140 |
| 2141 has_composition_text_ = !composition.text.empty(); | 2141 has_composition_text_ = !composition.text.empty(); |
| 2142 } | 2142 } |
| 2143 | 2143 |
| 2144 void RenderWidgetHostViewAura::ConfirmCompositionText() { | 2144 void RenderWidgetHostViewAura::ConfirmCompositionText() { |
| 2145 if (host_ && has_composition_text_) | 2145 if (host_ && has_composition_text_) |
| 2146 host_->ImeConfirmComposition(string16(), ui::Range::InvalidRange(), false); | 2146 host_->ImeConfirmComposition(string16(), gfx::Range::InvalidRange(), false); |
| 2147 has_composition_text_ = false; | 2147 has_composition_text_ = false; |
| 2148 } | 2148 } |
| 2149 | 2149 |
| 2150 void RenderWidgetHostViewAura::ClearCompositionText() { | 2150 void RenderWidgetHostViewAura::ClearCompositionText() { |
| 2151 if (host_ && has_composition_text_) | 2151 if (host_ && has_composition_text_) |
| 2152 host_->ImeCancelComposition(); | 2152 host_->ImeCancelComposition(); |
| 2153 has_composition_text_ = false; | 2153 has_composition_text_ = false; |
| 2154 } | 2154 } |
| 2155 | 2155 |
| 2156 void RenderWidgetHostViewAura::InsertText(const string16& text) { | 2156 void RenderWidgetHostViewAura::InsertText(const string16& text) { |
| 2157 DCHECK(text_input_type_ != ui::TEXT_INPUT_TYPE_NONE); | 2157 DCHECK(text_input_type_ != ui::TEXT_INPUT_TYPE_NONE); |
| 2158 if (host_) | 2158 if (host_) |
| 2159 host_->ImeConfirmComposition(text, ui::Range::InvalidRange(), false); | 2159 host_->ImeConfirmComposition(text, gfx::Range::InvalidRange(), false); |
| 2160 has_composition_text_ = false; | 2160 has_composition_text_ = false; |
| 2161 } | 2161 } |
| 2162 | 2162 |
| 2163 void RenderWidgetHostViewAura::InsertChar(char16 ch, int flags) { | 2163 void RenderWidgetHostViewAura::InsertChar(char16 ch, int flags) { |
| 2164 if (popup_child_host_view_ && popup_child_host_view_->NeedsInputGrab()) { | 2164 if (popup_child_host_view_ && popup_child_host_view_->NeedsInputGrab()) { |
| 2165 popup_child_host_view_->InsertChar(ch, flags); | 2165 popup_child_host_view_->InsertChar(ch, flags); |
| 2166 return; | 2166 return; |
| 2167 } | 2167 } |
| 2168 | 2168 |
| 2169 if (host_) { | 2169 if (host_) { |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2245 if (index >= composition_character_bounds_.size()) | 2245 if (index >= composition_character_bounds_.size()) |
| 2246 return false; | 2246 return false; |
| 2247 *rect = ConvertRectToScreen(composition_character_bounds_[index]); | 2247 *rect = ConvertRectToScreen(composition_character_bounds_[index]); |
| 2248 return true; | 2248 return true; |
| 2249 } | 2249 } |
| 2250 | 2250 |
| 2251 bool RenderWidgetHostViewAura::HasCompositionText() { | 2251 bool RenderWidgetHostViewAura::HasCompositionText() { |
| 2252 return has_composition_text_; | 2252 return has_composition_text_; |
| 2253 } | 2253 } |
| 2254 | 2254 |
| 2255 bool RenderWidgetHostViewAura::GetTextRange(ui::Range* range) { | 2255 bool RenderWidgetHostViewAura::GetTextRange(gfx::Range* range) { |
| 2256 range->set_start(selection_text_offset_); | 2256 range->set_start(selection_text_offset_); |
| 2257 range->set_end(selection_text_offset_ + selection_text_.length()); | 2257 range->set_end(selection_text_offset_ + selection_text_.length()); |
| 2258 return true; | 2258 return true; |
| 2259 } | 2259 } |
| 2260 | 2260 |
| 2261 bool RenderWidgetHostViewAura::GetCompositionTextRange(ui::Range* range) { | 2261 bool RenderWidgetHostViewAura::GetCompositionTextRange(gfx::Range* range) { |
| 2262 // TODO(suzhe): implement this method when fixing http://crbug.com/55130. | 2262 // TODO(suzhe): implement this method when fixing http://crbug.com/55130. |
| 2263 NOTIMPLEMENTED(); | 2263 NOTIMPLEMENTED(); |
| 2264 return false; | 2264 return false; |
| 2265 } | 2265 } |
| 2266 | 2266 |
| 2267 bool RenderWidgetHostViewAura::GetSelectionRange(ui::Range* range) { | 2267 bool RenderWidgetHostViewAura::GetSelectionRange(gfx::Range* range) { |
| 2268 range->set_start(selection_range_.start()); | 2268 range->set_start(selection_range_.start()); |
| 2269 range->set_end(selection_range_.end()); | 2269 range->set_end(selection_range_.end()); |
| 2270 return true; | 2270 return true; |
| 2271 } | 2271 } |
| 2272 | 2272 |
| 2273 bool RenderWidgetHostViewAura::SetSelectionRange(const ui::Range& range) { | 2273 bool RenderWidgetHostViewAura::SetSelectionRange(const gfx::Range& range) { |
| 2274 // TODO(suzhe): implement this method when fixing http://crbug.com/55130. | 2274 // TODO(suzhe): implement this method when fixing http://crbug.com/55130. |
| 2275 NOTIMPLEMENTED(); | 2275 NOTIMPLEMENTED(); |
| 2276 return false; | 2276 return false; |
| 2277 } | 2277 } |
| 2278 | 2278 |
| 2279 bool RenderWidgetHostViewAura::DeleteRange(const ui::Range& range) { | 2279 bool RenderWidgetHostViewAura::DeleteRange(const gfx::Range& range) { |
| 2280 // TODO(suzhe): implement this method when fixing http://crbug.com/55130. | 2280 // TODO(suzhe): implement this method when fixing http://crbug.com/55130. |
| 2281 NOTIMPLEMENTED(); | 2281 NOTIMPLEMENTED(); |
| 2282 return false; | 2282 return false; |
| 2283 } | 2283 } |
| 2284 | 2284 |
| 2285 bool RenderWidgetHostViewAura::GetTextFromRange( | 2285 bool RenderWidgetHostViewAura::GetTextFromRange( |
| 2286 const ui::Range& range, | 2286 const gfx::Range& range, |
| 2287 string16* text) { | 2287 string16* text) { |
| 2288 ui::Range selection_text_range(selection_text_offset_, | 2288 gfx::Range selection_text_range(selection_text_offset_, |
| 2289 selection_text_offset_ + selection_text_.length()); | 2289 selection_text_offset_ + selection_text_.length()); |
| 2290 | 2290 |
| 2291 if (!selection_text_range.Contains(range)) { | 2291 if (!selection_text_range.Contains(range)) { |
| 2292 text->clear(); | 2292 text->clear(); |
| 2293 return false; | 2293 return false; |
| 2294 } | 2294 } |
| 2295 if (selection_text_range.EqualsIgnoringDirection(range)) { | 2295 if (selection_text_range.EqualsIgnoringDirection(range)) { |
| 2296 // Avoid calling substr whose performance is low. | 2296 // Avoid calling substr whose performance is low. |
| 2297 *text = selection_text_; | 2297 *text = selection_text_; |
| 2298 } else { | 2298 } else { |
| (...skipping 812 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3111 } | 3111 } |
| 3112 | 3112 |
| 3113 bool RenderWidgetHostViewAura::NeedsInputGrab() { | 3113 bool RenderWidgetHostViewAura::NeedsInputGrab() { |
| 3114 return popup_type_ == WebKit::WebPopupTypeSelect; | 3114 return popup_type_ == WebKit::WebPopupTypeSelect; |
| 3115 } | 3115 } |
| 3116 | 3116 |
| 3117 void RenderWidgetHostViewAura::FinishImeCompositionSession() { | 3117 void RenderWidgetHostViewAura::FinishImeCompositionSession() { |
| 3118 if (!has_composition_text_) | 3118 if (!has_composition_text_) |
| 3119 return; | 3119 return; |
| 3120 if (host_) | 3120 if (host_) |
| 3121 host_->ImeConfirmComposition(string16(), ui::Range::InvalidRange(), false); | 3121 host_->ImeConfirmComposition(string16(), gfx::Range::InvalidRange(), false); |
| 3122 ImeCancelComposition(); | 3122 ImeCancelComposition(); |
| 3123 } | 3123 } |
| 3124 | 3124 |
| 3125 void RenderWidgetHostViewAura::ModifyEventMovementAndCoords( | 3125 void RenderWidgetHostViewAura::ModifyEventMovementAndCoords( |
| 3126 WebKit::WebMouseEvent* event) { | 3126 WebKit::WebMouseEvent* event) { |
| 3127 // If the mouse has just entered, we must report zero movementX/Y. Hence we | 3127 // If the mouse has just entered, we must report zero movementX/Y. Hence we |
| 3128 // reset any global_mouse_position set previously. | 3128 // reset any global_mouse_position set previously. |
| 3129 if (event->type == WebKit::WebInputEvent::MouseEnter || | 3129 if (event->type == WebKit::WebInputEvent::MouseEnter || |
| 3130 event->type == WebKit::WebInputEvent::MouseLeave) | 3130 event->type == WebKit::WebInputEvent::MouseLeave) |
| 3131 global_mouse_position_.SetPoint(event->globalX, event->globalY); | 3131 global_mouse_position_.SetPoint(event->globalX, event->globalY); |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3269 RenderWidgetHost* widget) { | 3269 RenderWidgetHost* widget) { |
| 3270 return new RenderWidgetHostViewAura(widget); | 3270 return new RenderWidgetHostViewAura(widget); |
| 3271 } | 3271 } |
| 3272 | 3272 |
| 3273 // static | 3273 // static |
| 3274 void RenderWidgetHostViewPort::GetDefaultScreenInfo(WebScreenInfo* results) { | 3274 void RenderWidgetHostViewPort::GetDefaultScreenInfo(WebScreenInfo* results) { |
| 3275 GetScreenInfoForWindow(results, NULL); | 3275 GetScreenInfoForWindow(results, NULL); |
| 3276 } | 3276 } |
| 3277 | 3277 |
| 3278 } // namespace content | 3278 } // namespace content |
| OLD | NEW |