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

Side by Side Diff: content/browser/devtools/protocol/emulation_handler.cc

Issue 2096633002: Adds scroll position/scale emulation to DevTools. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Sync, patch in 2169483002 (+ regression test), add DevTools tests. Created 4 years, 5 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/devtools/protocol/emulation_handler.h" 5 #include "content/browser/devtools/protocol/emulation_handler.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/strings/string_number_conversions.h" 9 #include "base/strings/string_number_conversions.h"
10 #include "build/build_config.h" 10 #include "build/build_config.h"
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 double device_scale_factor, 139 double device_scale_factor,
140 bool mobile, 140 bool mobile,
141 bool fit_window, 141 bool fit_window,
142 const double* optional_scale, 142 const double* optional_scale,
143 const double* optional_offset_x, 143 const double* optional_offset_x,
144 const double* optional_offset_y, 144 const double* optional_offset_y,
145 const int* screen_width, 145 const int* screen_width,
146 const int* screen_height, 146 const int* screen_height,
147 const int* position_x, 147 const int* position_x,
148 const int* position_y, 148 const int* position_y,
149 const std::unique_ptr<base::DictionaryValue>& screen_orientation) { 149 const std::unique_ptr<base::DictionaryValue>& screen_orientation,
150 const int* visual_viewport_width,
151 const int* visual_viewport_height) {
150 const static int max_size = 10000000; 152 const static int max_size = 10000000;
151 const static double max_scale = 10; 153 const static double max_scale = 10;
152 const static int max_orientation_angle = 360; 154 const static int max_orientation_angle = 360;
153 155
154 if (!host_) 156 if (!host_)
155 return Response::InternalError("Could not connect to view"); 157 return Response::InternalError("Could not connect to view");
156 158
157 if (screen_width && screen_height && 159 if (screen_width && screen_height &&
158 (*screen_width < 0 || *screen_height < 0 || 160 (*screen_width < 0 || *screen_height < 0 ||
159 *screen_width > max_size || *screen_height > max_size)) { 161 *screen_width > max_size || *screen_height > max_size)) {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 return Response::InvalidParams( 202 return Response::InvalidParams(
201 "Screen orientation angle must be a number"); 203 "Screen orientation angle must be a number");
202 } 204 }
203 if (orientationAngle < 0 || orientationAngle >= max_orientation_angle) { 205 if (orientationAngle < 0 || orientationAngle >= max_orientation_angle) {
204 return Response::InvalidParams( 206 return Response::InvalidParams(
205 "Screen orientation angle must be non-negative, less than " + 207 "Screen orientation angle must be non-negative, less than " +
206 base::IntToString(max_orientation_angle)); 208 base::IntToString(max_orientation_angle));
207 } 209 }
208 } 210 }
209 211
212 if ((visual_viewport_width &&
213 (*visual_viewport_width < 0 || *visual_viewport_width > max_size)) ||
214 (visual_viewport_height &&
215 (*visual_viewport_height < 0 || *visual_viewport_height > max_size))) {
216 return Response::InvalidParams(
217 "Visible_width and visible_height values must be positive, not greater "
dgozman 2016/07/21 20:54:08 Visual viewport dimensions must be positive, not g
Eric Seckler 2016/07/22 14:44:48 Done.
218 "than " +
219 base::IntToString(max_size));
220 }
221
210 blink::WebDeviceEmulationParams params; 222 blink::WebDeviceEmulationParams params;
211 params.screenPosition = mobile ? blink::WebDeviceEmulationParams::Mobile : 223 params.screenPosition = mobile ? blink::WebDeviceEmulationParams::Mobile :
212 blink::WebDeviceEmulationParams::Desktop; 224 blink::WebDeviceEmulationParams::Desktop;
213 if (screen_width && screen_height) 225 if (screen_width && screen_height)
214 params.screenSize = blink::WebSize(*screen_width, *screen_height); 226 params.screenSize = blink::WebSize(*screen_width, *screen_height);
215 if (position_x && position_y) 227 if (position_x && position_y)
216 params.viewPosition = blink::WebPoint(*position_x, *position_y); 228 params.viewPosition = blink::WebPoint(*position_x, *position_y);
217 params.deviceScaleFactor = device_scale_factor; 229 params.deviceScaleFactor = device_scale_factor;
218 params.viewSize = blink::WebSize(width, height); 230 params.viewSize = blink::WebSize(width, height);
219 params.fitToView = fit_window; 231 params.fitToView = fit_window;
220 params.scale = optional_scale ? *optional_scale : 1; 232 params.scale = optional_scale ? *optional_scale : 1;
221 params.offset = blink::WebFloatPoint( 233 params.offset = blink::WebFloatPoint(
222 optional_offset_x ? *optional_offset_x : 0.f, 234 optional_offset_x ? *optional_offset_x : 0.f,
223 optional_offset_y ? *optional_offset_y : 0.f); 235 optional_offset_y ? *optional_offset_y : 0.f);
224 params.screenOrientationType = orientationType; 236 params.screenOrientationType = orientationType;
225 params.screenOrientationAngle = orientationAngle; 237 params.screenOrientationAngle = orientationAngle;
238 params.visualViewportSize =
239 blink::WebSize(visual_viewport_width ? *visual_viewport_width : 0,
240 visual_viewport_height ? *visual_viewport_height : 0);
226 241
227 if (device_emulation_enabled_ && params == device_emulation_params_) 242 if (device_emulation_enabled_ && params == device_emulation_params_)
228 return Response::OK(); 243 return Response::OK();
229 244
230 device_emulation_enabled_ = true; 245 device_emulation_enabled_ = true;
231 device_emulation_params_ = params; 246 device_emulation_params_ = params;
232 UpdateDeviceEmulationState(); 247 UpdateDeviceEmulationState();
233 return Response::OK(); 248 return Response::OK();
234 } 249 }
235 250
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 widget_host->GetRoutingID(), device_emulation_params_)); 286 widget_host->GetRoutingID(), device_emulation_params_));
272 } else { 287 } else {
273 widget_host->Send(new ViewMsg_DisableDeviceEmulation( 288 widget_host->Send(new ViewMsg_DisableDeviceEmulation(
274 widget_host->GetRoutingID())); 289 widget_host->GetRoutingID()));
275 } 290 }
276 } 291 }
277 292
278 } // namespace emulation 293 } // namespace emulation
279 } // namespace devtools 294 } // namespace devtools
280 } // namespace content 295 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698