Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(720)

Side by Side Diff: content/renderer/render_widget.cc

Issue 302193002: Set visible viewport value in screen emulation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_widget.h" 5 #include "content/renderer/render_widget.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 // The following methods alter handlers' behavior for messages related to 181 // The following methods alter handlers' behavior for messages related to
182 // widget size and position. 182 // widget size and position.
183 void OnResizeMessage(const ViewMsg_Resize_Params& params); 183 void OnResizeMessage(const ViewMsg_Resize_Params& params);
184 void OnUpdateScreenRectsMessage(const gfx::Rect& view_screen_rect, 184 void OnUpdateScreenRectsMessage(const gfx::Rect& view_screen_rect,
185 const gfx::Rect& window_screen_rect); 185 const gfx::Rect& window_screen_rect);
186 void OnShowContextMenu(ContextMenuParams* params); 186 void OnShowContextMenu(ContextMenuParams* params);
187 187
188 private: 188 private:
189 void Reapply(); 189 void Reapply();
190 void Apply(float overdraw_bottom_height, 190 void Apply(float overdraw_bottom_height,
191 const gfx::Size& visible_viewport_size,
192 gfx::Rect resizer_rect, 191 gfx::Rect resizer_rect,
193 bool is_fullscreen); 192 bool is_fullscreen);
194 193
195 RenderWidget* widget_; 194 RenderWidget* widget_;
196 195
197 // Parameters as passed by RenderWidget::EnableScreenMetricsEmulation. 196 // Parameters as passed by RenderWidget::EnableScreenMetricsEmulation.
198 WebDeviceEmulationParams params_; 197 WebDeviceEmulationParams params_;
199 198
200 // The computed scale and offset used to fit widget into browser window. 199 // The computed scale and offset used to fit widget into browser window.
201 float scale_; 200 float scale_;
202 gfx::Point offset_; 201 gfx::Point offset_;
203 202
204 // Widget rect as passed to webwidget. 203 // Widget rect as passed to webwidget.
205 gfx::Rect applied_widget_rect_; 204 gfx::Rect applied_widget_rect_;
206 205
207 // Original values to restore back after emulation ends. 206 // Original values to restore back after emulation ends.
208 gfx::Size original_size_; 207 gfx::Size original_size_;
209 gfx::Size original_physical_backing_size_; 208 gfx::Size original_physical_backing_size_;
209 gfx::Size original_visible_viewport_size_;
210 blink::WebScreenInfo original_screen_info_; 210 blink::WebScreenInfo original_screen_info_;
211 gfx::Rect original_view_screen_rect_; 211 gfx::Rect original_view_screen_rect_;
212 gfx::Rect original_window_screen_rect_; 212 gfx::Rect original_window_screen_rect_;
213 }; 213 };
214 214
215 RenderWidget::ScreenMetricsEmulator::ScreenMetricsEmulator( 215 RenderWidget::ScreenMetricsEmulator::ScreenMetricsEmulator(
216 RenderWidget* widget, 216 RenderWidget* widget,
217 const WebDeviceEmulationParams& params) 217 const WebDeviceEmulationParams& params)
218 : widget_(widget), 218 : widget_(widget),
219 params_(params), 219 params_(params),
220 scale_(1.f) { 220 scale_(1.f) {
221 original_size_ = widget_->size_; 221 original_size_ = widget_->size_;
222 original_physical_backing_size_ = widget_->physical_backing_size_; 222 original_physical_backing_size_ = widget_->physical_backing_size_;
223 original_visible_viewport_size_ = widget_->visible_viewport_size_;
223 original_screen_info_ = widget_->screen_info_; 224 original_screen_info_ = widget_->screen_info_;
224 original_view_screen_rect_ = widget_->view_screen_rect_; 225 original_view_screen_rect_ = widget_->view_screen_rect_;
225 original_window_screen_rect_ = widget_->window_screen_rect_; 226 original_window_screen_rect_ = widget_->window_screen_rect_;
226 Apply(widget_->overdraw_bottom_height_, widget_->visible_viewport_size_, 227 Apply(widget_->overdraw_bottom_height_, widget_->resizer_rect_,
227 widget_->resizer_rect_, widget_->is_fullscreen_); 228 widget_->is_fullscreen_);
228 } 229 }
229 230
230 RenderWidget::ScreenMetricsEmulator::~ScreenMetricsEmulator() { 231 RenderWidget::ScreenMetricsEmulator::~ScreenMetricsEmulator() {
231 widget_->screen_info_ = original_screen_info_; 232 widget_->screen_info_ = original_screen_info_;
232 233
233 widget_->SetDeviceScaleFactor(original_screen_info_.deviceScaleFactor); 234 widget_->SetDeviceScaleFactor(original_screen_info_.deviceScaleFactor);
234 widget_->SetScreenMetricsEmulationParameters(0.f, gfx::Point(), 1.f); 235 widget_->SetScreenMetricsEmulationParameters(0.f, gfx::Point(), 1.f);
235 widget_->view_screen_rect_ = original_view_screen_rect_; 236 widget_->view_screen_rect_ = original_view_screen_rect_;
236 widget_->window_screen_rect_ = original_window_screen_rect_; 237 widget_->window_screen_rect_ = original_window_screen_rect_;
237 widget_->Resize(original_size_, original_physical_backing_size_, 238 widget_->Resize(original_size_, original_physical_backing_size_,
238 widget_->overdraw_bottom_height_, widget_->visible_viewport_size_, 239 widget_->overdraw_bottom_height_, original_visible_viewport_size_,
239 widget_->resizer_rect_, widget_->is_fullscreen_, NO_RESIZE_ACK); 240 widget_->resizer_rect_, widget_->is_fullscreen_, NO_RESIZE_ACK);
240 } 241 }
241 242
242 void RenderWidget::ScreenMetricsEmulator::ChangeEmulationParams( 243 void RenderWidget::ScreenMetricsEmulator::ChangeEmulationParams(
243 const WebDeviceEmulationParams& params) { 244 const WebDeviceEmulationParams& params) {
244 params_ = params; 245 params_ = params;
245 Reapply(); 246 Reapply();
246 } 247 }
247 248
248 void RenderWidget::ScreenMetricsEmulator::Reapply() { 249 void RenderWidget::ScreenMetricsEmulator::Reapply() {
249 Apply(widget_->overdraw_bottom_height_, widget_->visible_viewport_size_, 250 Apply(widget_->overdraw_bottom_height_, widget_->resizer_rect_,
250 widget_->resizer_rect_, widget_->is_fullscreen_); 251 widget_->is_fullscreen_);
251 } 252 }
252 253
253 void RenderWidget::ScreenMetricsEmulator::Apply( 254 void RenderWidget::ScreenMetricsEmulator::Apply(
254 float overdraw_bottom_height, 255 float overdraw_bottom_height,
255 const gfx::Size& visible_viewport_size,
256 gfx::Rect resizer_rect, 256 gfx::Rect resizer_rect,
257 bool is_fullscreen) { 257 bool is_fullscreen) {
258 applied_widget_rect_.set_size(gfx::Size(params_.viewSize)); 258 applied_widget_rect_.set_size(gfx::Size(params_.viewSize));
259 if (!applied_widget_rect_.width()) 259 if (!applied_widget_rect_.width())
260 applied_widget_rect_.set_width(original_size_.width()); 260 applied_widget_rect_.set_width(original_size_.width());
261 if (!applied_widget_rect_.height()) 261 if (!applied_widget_rect_.height())
262 applied_widget_rect_.set_height(original_size_.height()); 262 applied_widget_rect_.set_height(original_size_.height());
263 263
264 if (params_.fitToView && !original_size_.IsEmpty()) { 264 if (params_.fitToView && !original_size_.IsEmpty()) {
265 int width_with_gutter = 265 int width_with_gutter =
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 // root layer. 306 // root layer.
307 widget_->SetScreenMetricsEmulationParameters( 307 widget_->SetScreenMetricsEmulationParameters(
308 original_screen_info_.deviceScaleFactor, offset_, scale_); 308 original_screen_info_.deviceScaleFactor, offset_, scale_);
309 309
310 widget_->SetDeviceScaleFactor(applied_device_scale_factor); 310 widget_->SetDeviceScaleFactor(applied_device_scale_factor);
311 widget_->view_screen_rect_ = applied_widget_rect_; 311 widget_->view_screen_rect_ = applied_widget_rect_;
312 312
313 gfx::Size physical_backing_size = gfx::ToCeiledSize(gfx::ScaleSize( 313 gfx::Size physical_backing_size = gfx::ToCeiledSize(gfx::ScaleSize(
314 original_size_, original_screen_info_.deviceScaleFactor)); 314 original_size_, original_screen_info_.deviceScaleFactor));
315 widget_->Resize(applied_widget_rect_.size(), physical_backing_size, 315 widget_->Resize(applied_widget_rect_.size(), physical_backing_size,
316 overdraw_bottom_height, visible_viewport_size, resizer_rect, 316 overdraw_bottom_height, applied_widget_rect_.size(), resizer_rect,
317 is_fullscreen, NO_RESIZE_ACK); 317 is_fullscreen, NO_RESIZE_ACK);
318 } 318 }
319 319
320 void RenderWidget::ScreenMetricsEmulator::OnResizeMessage( 320 void RenderWidget::ScreenMetricsEmulator::OnResizeMessage(
321 const ViewMsg_Resize_Params& params) { 321 const ViewMsg_Resize_Params& params) {
322 bool need_ack = params.new_size != original_size_ && 322 bool need_ack = params.new_size != original_size_ &&
323 !params.new_size.IsEmpty() && !params.physical_backing_size.IsEmpty(); 323 !params.new_size.IsEmpty() && !params.physical_backing_size.IsEmpty();
324 original_size_ = params.new_size; 324 original_size_ = params.new_size;
325 original_physical_backing_size_ = params.physical_backing_size; 325 original_physical_backing_size_ = params.physical_backing_size;
326 original_screen_info_ = params.screen_info; 326 original_screen_info_ = params.screen_info;
327 Apply(params.overdraw_bottom_height, params.visible_viewport_size, 327 Apply(params.overdraw_bottom_height, params.resizer_rect,
dgozman 2014/05/30 19:17:52 You should update |original_visible_viewport_size_
bokan 2014/05/30 19:43:46 Good catch, thanks.
328 params.resizer_rect, params.is_fullscreen); 328 params.is_fullscreen);
329 329
330 if (need_ack) { 330 if (need_ack) {
331 widget_->set_next_paint_is_resize_ack(); 331 widget_->set_next_paint_is_resize_ack();
332 if (widget_->compositor_) 332 if (widget_->compositor_)
333 widget_->compositor_->SetNeedsRedrawRect(gfx::Rect(widget_->size_)); 333 widget_->compositor_->SetNeedsRedrawRect(gfx::Rect(widget_->size_));
334 } 334 }
335 } 335 }
336 336
337 void RenderWidget::ScreenMetricsEmulator::OnUpdateScreenRectsMessage( 337 void RenderWidget::ScreenMetricsEmulator::OnUpdateScreenRectsMessage(
338 const gfx::Rect& view_screen_rect, 338 const gfx::Rect& view_screen_rect,
(...skipping 1792 matching lines...) Expand 10 before | Expand all | Expand 10 after
2131 void RenderWidget::RegisterVideoHoleFrame(RenderFrameImpl* frame) { 2131 void RenderWidget::RegisterVideoHoleFrame(RenderFrameImpl* frame) {
2132 video_hole_frames_.AddObserver(frame); 2132 video_hole_frames_.AddObserver(frame);
2133 } 2133 }
2134 2134
2135 void RenderWidget::UnregisterVideoHoleFrame(RenderFrameImpl* frame) { 2135 void RenderWidget::UnregisterVideoHoleFrame(RenderFrameImpl* frame) {
2136 video_hole_frames_.RemoveObserver(frame); 2136 video_hole_frames_.RemoveObserver(frame);
2137 } 2137 }
2138 #endif // defined(VIDEO_HOLE) 2138 #endif // defined(VIDEO_HOLE)
2139 2139
2140 } // namespace content 2140 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698