| 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/renderer/render_view_impl.h" | 5 #include "content/renderer/render_view_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <cmath> | 8 #include <cmath> |
| 9 | 9 |
| 10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
| (...skipping 2641 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2652 Send(new ViewHostMsg_RunFileChooser(routing_id_, | 2652 Send(new ViewHostMsg_RunFileChooser(routing_id_, |
| 2653 file_chooser_completions_.front()->params)); | 2653 file_chooser_completions_.front()->params)); |
| 2654 } | 2654 } |
| 2655 } | 2655 } |
| 2656 | 2656 |
| 2657 void RenderViewImpl::OnEnableAutoResize(const gfx::Size& min_size, | 2657 void RenderViewImpl::OnEnableAutoResize(const gfx::Size& min_size, |
| 2658 const gfx::Size& max_size) { | 2658 const gfx::Size& max_size) { |
| 2659 DCHECK(disable_scrollbars_size_limit_.IsEmpty()); | 2659 DCHECK(disable_scrollbars_size_limit_.IsEmpty()); |
| 2660 if (!webview()) | 2660 if (!webview()) |
| 2661 return; | 2661 return; |
| 2662 | |
| 2663 auto_resize_mode_ = true; | 2662 auto_resize_mode_ = true; |
| 2664 if (IsUseZoomForDSFEnabled()) { | 2663 webview()->enableAutoResizeMode(min_size, max_size); |
| 2665 webview()->enableAutoResizeMode( | |
| 2666 gfx::ScaleToCeiledSize(min_size, device_scale_factor_), | |
| 2667 gfx::ScaleToCeiledSize(max_size, device_scale_factor_)); | |
| 2668 } else { | |
| 2669 webview()->enableAutoResizeMode(min_size, max_size); | |
| 2670 } | |
| 2671 } | 2664 } |
| 2672 | 2665 |
| 2673 void RenderViewImpl::OnDisableAutoResize(const gfx::Size& new_size) { | 2666 void RenderViewImpl::OnDisableAutoResize(const gfx::Size& new_size) { |
| 2674 DCHECK(disable_scrollbars_size_limit_.IsEmpty()); | 2667 DCHECK(disable_scrollbars_size_limit_.IsEmpty()); |
| 2675 if (!webview()) | 2668 if (!webview()) |
| 2676 return; | 2669 return; |
| 2677 auto_resize_mode_ = false; | 2670 auto_resize_mode_ = false; |
| 2678 webview()->disableAutoResizeMode(); | 2671 webview()->disableAutoResizeMode(); |
| 2679 | 2672 |
| 2680 if (!new_size.IsEmpty()) { | 2673 if (!new_size.IsEmpty()) { |
| (...skipping 564 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3245 return RenderWidget::GetTextInputType(); | 3238 return RenderWidget::GetTextInputType(); |
| 3246 } | 3239 } |
| 3247 | 3240 |
| 3248 void RenderViewImpl::GetSelectionBounds(gfx::Rect* start, gfx::Rect* end) { | 3241 void RenderViewImpl::GetSelectionBounds(gfx::Rect* start, gfx::Rect* end) { |
| 3249 #if defined(ENABLE_PLUGINS) | 3242 #if defined(ENABLE_PLUGINS) |
| 3250 if (focused_pepper_plugin_) { | 3243 if (focused_pepper_plugin_) { |
| 3251 // TODO(kinaba) http://crbug.com/101101 | 3244 // TODO(kinaba) http://crbug.com/101101 |
| 3252 // Current Pepper IME API does not handle selection bounds. So we simply | 3245 // Current Pepper IME API does not handle selection bounds. So we simply |
| 3253 // use the caret position as an empty range for now. It will be updated | 3246 // use the caret position as an empty range for now. It will be updated |
| 3254 // after Pepper API equips features related to surrounding text retrieval. | 3247 // after Pepper API equips features related to surrounding text retrieval. |
| 3255 blink::WebRect caret(focused_pepper_plugin_->GetCaretBounds()); | 3248 gfx::Rect caret = focused_pepper_plugin_->GetCaretBounds(); |
| 3256 convertViewportToWindow(&caret); | |
| 3257 *start = caret; | 3249 *start = caret; |
| 3258 *end = caret; | 3250 *end = caret; |
| 3259 return; | 3251 return; |
| 3260 } | 3252 } |
| 3261 #endif | 3253 #endif |
| 3262 RenderWidget::GetSelectionBounds(start, end); | 3254 RenderWidget::GetSelectionBounds(start, end); |
| 3263 } | 3255 } |
| 3264 | 3256 |
| 3265 void RenderViewImpl::FocusChangeComplete() { | 3257 void RenderViewImpl::FocusChangeComplete() { |
| 3266 RenderWidget::FocusChangeComplete(); | 3258 RenderWidget::FocusChangeComplete(); |
| 3267 FOR_EACH_OBSERVER(RenderViewObserver, observers_, FocusChangeComplete()); | 3259 FOR_EACH_OBSERVER(RenderViewObserver, observers_, FocusChangeComplete()); |
| 3268 } | 3260 } |
| 3269 | 3261 |
| 3270 void RenderViewImpl::GetCompositionCharacterBounds( | 3262 void RenderViewImpl::GetCompositionCharacterBounds( |
| 3271 std::vector<gfx::Rect>* bounds_in_window) { | 3263 std::vector<gfx::Rect>* bounds) { |
| 3272 DCHECK(bounds_in_window); | 3264 DCHECK(bounds); |
| 3273 bounds_in_window->clear(); | 3265 bounds->clear(); |
| 3274 | 3266 |
| 3275 #if defined(ENABLE_PLUGINS) | 3267 #if defined(ENABLE_PLUGINS) |
| 3276 if (focused_pepper_plugin_) { | 3268 if (focused_pepper_plugin_) { |
| 3277 return; | 3269 return; |
| 3278 } | 3270 } |
| 3279 #endif | 3271 #endif |
| 3280 | 3272 |
| 3281 if (!webview()) | 3273 if (!webview()) |
| 3282 return; | 3274 return; |
| 3283 size_t start_offset = 0; | 3275 size_t start_offset = 0; |
| 3284 size_t character_count = 0; | 3276 size_t character_count = 0; |
| 3285 if (!webview()->compositionRange(&start_offset, &character_count)) | 3277 if (!webview()->compositionRange(&start_offset, &character_count)) |
| 3286 return; | 3278 return; |
| 3287 if (character_count == 0) | 3279 if (character_count == 0) |
| 3288 return; | 3280 return; |
| 3289 | 3281 |
| 3290 blink::WebFrame* frame = webview()->focusedFrame(); | 3282 blink::WebFrame* frame = webview()->focusedFrame(); |
| 3291 if (!frame) | 3283 if (!frame) |
| 3292 return; | 3284 return; |
| 3293 | 3285 |
| 3294 bounds_in_window->reserve(character_count); | 3286 bounds->reserve(character_count); |
| 3295 blink::WebRect webrect; | 3287 blink::WebRect webrect; |
| 3296 for (size_t i = 0; i < character_count; ++i) { | 3288 for (size_t i = 0; i < character_count; ++i) { |
| 3297 if (!frame->firstRectForCharacterRange(start_offset + i, 1, webrect)) { | 3289 if (!frame->firstRectForCharacterRange(start_offset + i, 1, webrect)) { |
| 3298 DLOG(ERROR) << "Could not retrieve character rectangle at " << i; | 3290 DLOG(ERROR) << "Could not retrieve character rectangle at " << i; |
| 3299 bounds_in_window->clear(); | 3291 bounds->clear(); |
| 3300 return; | 3292 return; |
| 3301 } | 3293 } |
| 3302 convertViewportToWindow(&webrect); | 3294 bounds->push_back(webrect); |
| 3303 bounds_in_window->push_back(webrect); | |
| 3304 } | 3295 } |
| 3305 } | 3296 } |
| 3306 | 3297 |
| 3307 void RenderViewImpl::GetCompositionRange(gfx::Range* range) { | 3298 void RenderViewImpl::GetCompositionRange(gfx::Range* range) { |
| 3308 #if defined(ENABLE_PLUGINS) | 3299 #if defined(ENABLE_PLUGINS) |
| 3309 if (focused_pepper_plugin_) { | 3300 if (focused_pepper_plugin_) { |
| 3310 return; | 3301 return; |
| 3311 } | 3302 } |
| 3312 #endif | 3303 #endif |
| 3313 RenderWidget::GetCompositionRange(range); | 3304 RenderWidget::GetCompositionRange(range); |
| (...skipping 405 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3719 if (IsUseZoomForDSFEnabled()) { | 3710 if (IsUseZoomForDSFEnabled()) { |
| 3720 compositor_->SetPaintedDeviceScaleFactor(device_scale_factor_); | 3711 compositor_->SetPaintedDeviceScaleFactor(device_scale_factor_); |
| 3721 webview()->setZoomFactorForDeviceScaleFactor( | 3712 webview()->setZoomFactorForDeviceScaleFactor( |
| 3722 device_scale_factor_); | 3713 device_scale_factor_); |
| 3723 } else { | 3714 } else { |
| 3724 webview()->setDeviceScaleFactor(device_scale_factor_); | 3715 webview()->setDeviceScaleFactor(device_scale_factor_); |
| 3725 } | 3716 } |
| 3726 } | 3717 } |
| 3727 | 3718 |
| 3728 } // namespace content | 3719 } // namespace content |
| OLD | NEW |