| 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_impl.h" | 5 #include "content/browser/renderer_host/render_widget_host_impl.h" |
| 6 | 6 |
| 7 #include <math.h> | 7 #include <math.h> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 163 base::TimeDelta::FromMilliseconds(kHungRendererDelayMs)), | 163 base::TimeDelta::FromMilliseconds(kHungRendererDelayMs)), |
| 164 renderer_initialized_(false), | 164 renderer_initialized_(false), |
| 165 delegate_(delegate), | 165 delegate_(delegate), |
| 166 process_(process), | 166 process_(process), |
| 167 routing_id_(routing_id), | 167 routing_id_(routing_id), |
| 168 surface_id_(0), | 168 surface_id_(0), |
| 169 is_loading_(false), | 169 is_loading_(false), |
| 170 is_hidden_(hidden), | 170 is_hidden_(hidden), |
| 171 repaint_ack_pending_(false), | 171 repaint_ack_pending_(false), |
| 172 resize_ack_pending_(false), | 172 resize_ack_pending_(false), |
| 173 screen_info_out_of_date_(false), | |
| 174 auto_resize_enabled_(false), | 173 auto_resize_enabled_(false), |
| 175 waiting_for_screen_rects_ack_(false), | 174 waiting_for_screen_rects_ack_(false), |
| 176 needs_repainting_on_restore_(false), | 175 needs_repainting_on_restore_(false), |
| 177 is_unresponsive_(false), | 176 is_unresponsive_(false), |
| 178 in_flight_event_count_(0), | 177 in_flight_event_count_(0), |
| 179 in_get_backing_store_(false), | 178 in_get_backing_store_(false), |
| 180 ignore_input_events_(false), | 179 ignore_input_events_(false), |
| 181 input_method_active_(false), | 180 input_method_active_(false), |
| 182 text_direction_updated_(false), | 181 text_direction_updated_(false), |
| 183 text_direction_(blink::WebTextDirectionLeftToRight), | 182 text_direction_(blink::WebTextDirectionLeftToRight), |
| (...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 573 // could handle both the restore and resize at once. This isn't that big a | 572 // could handle both the restore and resize at once. This isn't that big a |
| 574 // deal as RenderWidget::WasShown delays updating, so that the resize from | 573 // deal as RenderWidget::WasShown delays updating, so that the resize from |
| 575 // WasResized is usually processed before the renderer is painted. | 574 // WasResized is usually processed before the renderer is painted. |
| 576 WasResized(); | 575 WasResized(); |
| 577 } | 576 } |
| 578 | 577 |
| 579 bool RenderWidgetHostImpl::GetResizeParams( | 578 bool RenderWidgetHostImpl::GetResizeParams( |
| 580 ViewMsg_Resize_Params* resize_params) { | 579 ViewMsg_Resize_Params* resize_params) { |
| 581 *resize_params = ViewMsg_Resize_Params(); | 580 *resize_params = ViewMsg_Resize_Params(); |
| 582 | 581 |
| 583 if (!screen_info_) { | 582 GetWebScreenInfo(&resize_params->screen_info); |
| 584 screen_info_.reset(new blink::WebScreenInfo); | |
| 585 GetWebScreenInfo(screen_info_.get()); | |
| 586 } | |
| 587 resize_params->screen_info = *screen_info_; | |
| 588 resize_params->resizer_rect = GetRootWindowResizerRect(); | 583 resize_params->resizer_rect = GetRootWindowResizerRect(); |
| 589 | 584 |
| 590 if (view_) { | 585 if (view_) { |
| 591 resize_params->new_size = view_->GetRequestedRendererSize(); | 586 resize_params->new_size = view_->GetRequestedRendererSize(); |
| 592 resize_params->physical_backing_size = view_->GetPhysicalBackingSize(); | 587 resize_params->physical_backing_size = view_->GetPhysicalBackingSize(); |
| 593 resize_params->top_controls_height = view_->GetTopControlsHeight(); | 588 resize_params->top_controls_height = view_->GetTopControlsHeight(); |
| 594 resize_params->top_controls_shrink_blink_size = | 589 resize_params->top_controls_shrink_blink_size = |
| 595 view_->DoTopControlsShrinkBlinkSize(); | 590 view_->DoTopControlsShrinkBlinkSize(); |
| 596 resize_params->visible_viewport_size = view_->GetVisibleViewportSize(); | 591 resize_params->visible_viewport_size = view_->GetVisibleViewportSize(); |
| 597 resize_params->is_fullscreen_granted = IsFullscreenGranted(); | 592 resize_params->is_fullscreen_granted = IsFullscreenGranted(); |
| 598 resize_params->display_mode = GetDisplayMode(); | 593 resize_params->display_mode = GetDisplayMode(); |
| 599 } | 594 } |
| 600 | 595 |
| 601 const bool size_changed = | 596 const bool size_changed = |
| 602 !old_resize_params_ || | 597 !old_resize_params_ || |
| 603 old_resize_params_->new_size != resize_params->new_size || | 598 old_resize_params_->new_size != resize_params->new_size || |
| 604 (old_resize_params_->physical_backing_size.IsEmpty() && | 599 (old_resize_params_->physical_backing_size.IsEmpty() && |
| 605 !resize_params->physical_backing_size.IsEmpty()); | 600 !resize_params->physical_backing_size.IsEmpty()); |
| 606 bool dirty = | 601 bool dirty = size_changed || |
| 607 size_changed || screen_info_out_of_date_ || | 602 old_resize_params_->screen_info != resize_params->screen_info || |
| 608 old_resize_params_->physical_backing_size != | 603 old_resize_params_->physical_backing_size != |
| 609 resize_params->physical_backing_size || | 604 resize_params->physical_backing_size || |
| 610 old_resize_params_->is_fullscreen_granted != | 605 old_resize_params_->is_fullscreen_granted != |
| 611 resize_params->is_fullscreen_granted || | 606 resize_params->is_fullscreen_granted || |
| 612 old_resize_params_->display_mode != resize_params->display_mode || | 607 old_resize_params_->display_mode != resize_params->display_mode || |
| 613 old_resize_params_->top_controls_height != | 608 old_resize_params_->top_controls_height != |
| 614 resize_params->top_controls_height || | 609 resize_params->top_controls_height || |
| 615 old_resize_params_->top_controls_shrink_blink_size != | 610 old_resize_params_->top_controls_shrink_blink_size != |
| 616 resize_params->top_controls_shrink_blink_size || | 611 resize_params->top_controls_shrink_blink_size || |
| 617 old_resize_params_->visible_viewport_size != | 612 old_resize_params_->visible_viewport_size != |
| (...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1130 } | 1125 } |
| 1131 } | 1126 } |
| 1132 } | 1127 } |
| 1133 | 1128 |
| 1134 void RenderWidgetHostImpl::GetWebScreenInfo(blink::WebScreenInfo* result) { | 1129 void RenderWidgetHostImpl::GetWebScreenInfo(blink::WebScreenInfo* result) { |
| 1135 TRACE_EVENT0("renderer_host", "RenderWidgetHostImpl::GetWebScreenInfo"); | 1130 TRACE_EVENT0("renderer_host", "RenderWidgetHostImpl::GetWebScreenInfo"); |
| 1136 if (view_) | 1131 if (view_) |
| 1137 view_->GetScreenInfo(result); | 1132 view_->GetScreenInfo(result); |
| 1138 else | 1133 else |
| 1139 RenderWidgetHostViewBase::GetDefaultScreenInfo(result); | 1134 RenderWidgetHostViewBase::GetDefaultScreenInfo(result); |
| 1135 // TODO(sievers): find a way to make this done another way so the method |
| 1136 // can be const. |
| 1140 latency_tracker_.set_device_scale_factor(result->deviceScaleFactor); | 1137 latency_tracker_.set_device_scale_factor(result->deviceScaleFactor); |
| 1141 screen_info_out_of_date_ = false; | |
| 1142 } | 1138 } |
| 1143 | 1139 |
| 1144 const NativeWebKeyboardEvent* | 1140 const NativeWebKeyboardEvent* |
| 1145 RenderWidgetHostImpl::GetLastKeyboardEvent() const { | 1141 RenderWidgetHostImpl::GetLastKeyboardEvent() const { |
| 1146 return input_router_->GetLastKeyboardEvent(); | 1142 return input_router_->GetLastKeyboardEvent(); |
| 1147 } | 1143 } |
| 1148 | 1144 |
| 1149 void RenderWidgetHostImpl::NotifyScreenInfoChanged() { | 1145 void RenderWidgetHostImpl::NotifyScreenInfoChanged() { |
| 1150 if (delegate_) | 1146 if (delegate_) |
| 1151 delegate_->ScreenInfoChanged(); | 1147 delegate_->ScreenInfoChanged(); |
| 1152 | 1148 |
| 1153 // The resize message (which may not happen immediately) will carry with it | 1149 // The resize message (which may not happen immediately) will carry with it |
| 1154 // the screen info as well as the new size (if the screen has changed scale | 1150 // the screen info as well as the new size (if the screen has changed scale |
| 1155 // factor). | 1151 // factor). |
| 1156 InvalidateScreenInfo(); | |
| 1157 WasResized(); | 1152 WasResized(); |
| 1158 } | 1153 } |
| 1159 | 1154 |
| 1160 void RenderWidgetHostImpl::InvalidateScreenInfo() { | |
| 1161 screen_info_out_of_date_ = true; | |
| 1162 screen_info_.reset(); | |
| 1163 } | |
| 1164 | |
| 1165 void RenderWidgetHostImpl::GetSnapshotFromBrowser( | 1155 void RenderWidgetHostImpl::GetSnapshotFromBrowser( |
| 1166 const base::Callback<void(const unsigned char*,size_t)> callback) { | 1156 const base::Callback<void(const unsigned char*,size_t)> callback) { |
| 1167 int id = next_browser_snapshot_id_++; | 1157 int id = next_browser_snapshot_id_++; |
| 1168 pending_browser_snapshots_.insert(std::make_pair(id, callback)); | 1158 pending_browser_snapshots_.insert(std::make_pair(id, callback)); |
| 1169 Send(new ViewMsg_ForceRedraw(GetRoutingID(), id)); | 1159 Send(new ViewMsg_ForceRedraw(GetRoutingID(), id)); |
| 1170 } | 1160 } |
| 1171 | 1161 |
| 1172 void RenderWidgetHostImpl::OnSelectionChanged(const base::string16& text, | 1162 void RenderWidgetHostImpl::OnSelectionChanged(const base::string16& text, |
| 1173 size_t offset, | 1163 size_t offset, |
| 1174 const gfx::Range& range) { | 1164 const gfx::Range& range) { |
| (...skipping 946 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2121 } | 2111 } |
| 2122 #endif | 2112 #endif |
| 2123 | 2113 |
| 2124 SkColorType RenderWidgetHostImpl::PreferredReadbackFormat() { | 2114 SkColorType RenderWidgetHostImpl::PreferredReadbackFormat() { |
| 2125 if (view_) | 2115 if (view_) |
| 2126 return view_->PreferredReadbackFormat(); | 2116 return view_->PreferredReadbackFormat(); |
| 2127 return kN32_SkColorType; | 2117 return kN32_SkColorType; |
| 2128 } | 2118 } |
| 2129 | 2119 |
| 2130 } // namespace content | 2120 } // namespace content |
| OLD | NEW |