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

Side by Side Diff: third_party/WebKit/Source/web/DevToolsEmulator.cpp

Issue 2096633002: Adds scroll position/scale emulation to DevTools. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Split off size override, address reviewer comments. 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 "web/DevToolsEmulator.h" 5 #include "web/DevToolsEmulator.h"
6 6
7 #include "core/frame/FrameHost.h" 7 #include "core/frame/FrameHost.h"
8 #include "core/frame/FrameView.h" 8 #include "core/frame/FrameView.h"
9 #include "core/frame/Settings.h" 9 #include "core/frame/Settings.h"
10 #include "core/frame/VisualViewport.h" 10 #include "core/frame/VisualViewport.h"
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 if (params.screenPosition == WebDeviceEmulationParams::Mobile) 216 if (params.screenPosition == WebDeviceEmulationParams::Mobile)
217 enableMobileEmulation(); 217 enableMobileEmulation();
218 else 218 else
219 disableMobileEmulation(); 219 disableMobileEmulation();
220 220
221 m_webViewImpl->setCompositorDeviceScaleFactorOverride(params.deviceScaleFact or); 221 m_webViewImpl->setCompositorDeviceScaleFactorOverride(params.deviceScaleFact or);
222 m_webViewImpl->setRootLayerTransform(WebSize(params.offset.x, params.offset. y), params.scale); 222 m_webViewImpl->setRootLayerTransform(WebSize(params.offset.x, params.offset. y), params.scale);
223 // TODO(dgozman): mainFrameImpl() is null when it's remote. Figure out how 223 // TODO(dgozman): mainFrameImpl() is null when it's remote. Figure out how
224 // we end up with enabling emulation in this case. 224 // we end up with enabling emulation in this case.
225 if (m_webViewImpl->mainFrameImpl()) { 225 if (m_webViewImpl->mainFrameImpl()) {
226 m_webViewImpl->mainFrameImpl()->frameView()->layout();
226 if (Document* document = m_webViewImpl->mainFrameImpl()->frame()->docume nt()) 227 if (Document* document = m_webViewImpl->mainFrameImpl()->frame()->docume nt())
227 document->mediaQueryAffectingValueChanged(); 228 document->mediaQueryAffectingValueChanged();
228 } 229 }
229 } 230 }
230 231
231 void DevToolsEmulator::disableDeviceEmulation() 232 void DevToolsEmulator::disableDeviceEmulation()
232 { 233 {
233 if (!m_deviceMetricsEnabled) 234 if (!m_deviceMetricsEnabled)
234 return; 235 return;
235 236
236 m_deviceMetricsEnabled = false; 237 m_deviceMetricsEnabled = false;
237 m_webViewImpl->setBackgroundColorOverride(Color::transparent); 238 m_webViewImpl->setBackgroundColorOverride(Color::transparent);
238 m_webViewImpl->page()->settings().setDeviceScaleAdjustment(m_embedderDeviceS caleAdjustment); 239 m_webViewImpl->page()->settings().setDeviceScaleAdjustment(m_embedderDeviceS caleAdjustment);
239 disableMobileEmulation(); 240 disableMobileEmulation();
240 m_webViewImpl->setCompositorDeviceScaleFactorOverride(0.f); 241 m_webViewImpl->setCompositorDeviceScaleFactorOverride(0.f);
241 m_webViewImpl->setRootLayerTransform(WebSize(0.f, 0.f), 1.f); 242 m_webViewImpl->setRootLayerTransform(WebSize(0.f, 0.f), 1.f);
242 m_webViewImpl->setPageScaleFactor(1.f); 243 m_webViewImpl->resetScaleStateImmediately();
243 // mainFrameImpl() could be null during cleanup or remote <-> local swap. 244 // mainFrameImpl() could be null during cleanup or remote <-> local swap.
244 if (m_webViewImpl->mainFrameImpl()) { 245 if (m_webViewImpl->mainFrameImpl()) {
246 m_webViewImpl->mainFrameImpl()->frameView()->layout();
245 if (Document* document = m_webViewImpl->mainFrameImpl()->frame()->docume nt()) 247 if (Document* document = m_webViewImpl->mainFrameImpl()->frame()->docume nt())
246 document->mediaQueryAffectingValueChanged(); 248 document->mediaQueryAffectingValueChanged();
247 } 249 }
248 } 250 }
249 251
250 bool DevToolsEmulator::resizeIsDeviceSizeChange() 252 bool DevToolsEmulator::resizeIsDeviceSizeChange()
251 { 253 {
252 return m_deviceMetricsEnabled && m_emulateMobileEnabled; 254 return m_deviceMetricsEnabled && m_emulateMobileEnabled;
253 } 255 }
254 256
(...skipping 20 matching lines...) Expand all
275 m_webViewImpl->page()->settings().setAvailablePointerTypes(PointerTypeCoarse ); 277 m_webViewImpl->page()->settings().setAvailablePointerTypes(PointerTypeCoarse );
276 m_webViewImpl->page()->settings().setPrimaryPointerType(PointerTypeCoarse); 278 m_webViewImpl->page()->settings().setPrimaryPointerType(PointerTypeCoarse);
277 m_webViewImpl->page()->settings().setAvailableHoverTypes(HoverTypeOnDemand); 279 m_webViewImpl->page()->settings().setAvailableHoverTypes(HoverTypeOnDemand);
278 m_webViewImpl->page()->settings().setPrimaryHoverType(HoverTypeOnDemand); 280 m_webViewImpl->page()->settings().setPrimaryHoverType(HoverTypeOnDemand);
279 m_webViewImpl->page()->settings().setResizeIsDeviceSizeChange(true); 281 m_webViewImpl->page()->settings().setResizeIsDeviceSizeChange(true);
280 m_webViewImpl->setZoomFactorOverride(1); 282 m_webViewImpl->setZoomFactorOverride(1);
281 283
282 m_originalDefaultMinimumPageScaleFactor = m_webViewImpl->defaultMinimumPageS caleFactor(); 284 m_originalDefaultMinimumPageScaleFactor = m_webViewImpl->defaultMinimumPageS caleFactor();
283 m_originalDefaultMaximumPageScaleFactor = m_webViewImpl->defaultMaximumPageS caleFactor(); 285 m_originalDefaultMaximumPageScaleFactor = m_webViewImpl->defaultMaximumPageS caleFactor();
284 m_webViewImpl->setDefaultPageScaleLimits(0.25f, 5); 286 m_webViewImpl->setDefaultPageScaleLimits(0.25f, 5);
285 // TODO(dgozman): mainFrameImpl() is null when it's remote. Figure out how
286 // we end up with enabling emulation in this case.
287 if (m_webViewImpl->mainFrameImpl())
288 m_webViewImpl->mainFrameImpl()->frameView()->layout();
289 } 287 }
290 288
291 void DevToolsEmulator::disableMobileEmulation() 289 void DevToolsEmulator::disableMobileEmulation()
292 { 290 {
293 if (!m_emulateMobileEnabled) 291 if (!m_emulateMobileEnabled)
294 return; 292 return;
295 RuntimeEnabledFeatures::setOverlayScrollbarsEnabled(m_isOverlayScrollbarsEna bled); 293 RuntimeEnabledFeatures::setOverlayScrollbarsEnabled(m_isOverlayScrollbarsEna bled);
296 RuntimeEnabledFeatures::setOrientationEventEnabled(m_isOrientationEventEnabl ed); 294 RuntimeEnabledFeatures::setOrientationEventEnabled(m_isOrientationEventEnabl ed);
297 RuntimeEnabledFeatures::setMobileLayoutThemeEnabled(m_isMobileLayoutThemeEna bled); 295 RuntimeEnabledFeatures::setMobileLayoutThemeEnabled(m_isMobileLayoutThemeEna bled);
298 ComputedStyle::invalidateInitialStyle(); 296 ComputedStyle::invalidateInitialStyle();
299 m_webViewImpl->page()->settings().setViewportEnabled(false); 297 m_webViewImpl->page()->settings().setViewportEnabled(false);
300 m_webViewImpl->page()->settings().setViewportMetaEnabled(false); 298 m_webViewImpl->page()->settings().setViewportMetaEnabled(false);
301 m_webViewImpl->page()->frameHost().visualViewport().initializeScrollbars(); 299 m_webViewImpl->page()->frameHost().visualViewport().initializeScrollbars();
302 m_webViewImpl->settings()->setShrinksViewportContentToFit(false); 300 m_webViewImpl->settings()->setShrinksViewportContentToFit(false);
303 m_webViewImpl->page()->settings().setTextAutosizingEnabled(m_embedderTextAut osizingEnabled); 301 m_webViewImpl->page()->settings().setTextAutosizingEnabled(m_embedderTextAut osizingEnabled);
304 m_webViewImpl->page()->settings().setPreferCompositingToLCDTextEnabled(m_emb edderPreferCompositingToLCDTextEnabled); 302 m_webViewImpl->page()->settings().setPreferCompositingToLCDTextEnabled(m_emb edderPreferCompositingToLCDTextEnabled);
305 m_webViewImpl->page()->settings().setViewportStyle(m_embedderViewportStyle); 303 m_webViewImpl->page()->settings().setViewportStyle(m_embedderViewportStyle);
306 m_webViewImpl->page()->settings().setPluginsEnabled(m_embedderPluginsEnabled ); 304 m_webViewImpl->page()->settings().setPluginsEnabled(m_embedderPluginsEnabled );
307 m_webViewImpl->page()->settings().setAvailablePointerTypes(m_embedderAvailab lePointerTypes); 305 m_webViewImpl->page()->settings().setAvailablePointerTypes(m_embedderAvailab lePointerTypes);
308 m_webViewImpl->page()->settings().setPrimaryPointerType(m_embedderPrimaryPoi nterType); 306 m_webViewImpl->page()->settings().setPrimaryPointerType(m_embedderPrimaryPoi nterType);
309 m_webViewImpl->page()->settings().setAvailableHoverTypes(m_embedderAvailable HoverTypes); 307 m_webViewImpl->page()->settings().setAvailableHoverTypes(m_embedderAvailable HoverTypes);
310 m_webViewImpl->page()->settings().setPrimaryHoverType(m_embedderPrimaryHover Type); 308 m_webViewImpl->page()->settings().setPrimaryHoverType(m_embedderPrimaryHover Type);
311 m_webViewImpl->page()->settings().setResizeIsDeviceSizeChange(false); 309 m_webViewImpl->page()->settings().setResizeIsDeviceSizeChange(false);
312 m_webViewImpl->setZoomFactorOverride(0); 310 m_webViewImpl->setZoomFactorOverride(0);
313 m_emulateMobileEnabled = false; 311 m_emulateMobileEnabled = false;
314 m_webViewImpl->setDefaultPageScaleLimits( 312 m_webViewImpl->setDefaultPageScaleLimits(
315 m_originalDefaultMinimumPageScaleFactor, 313 m_originalDefaultMinimumPageScaleFactor,
316 m_originalDefaultMaximumPageScaleFactor); 314 m_originalDefaultMaximumPageScaleFactor);
317 // mainFrameImpl() could be null during cleanup or remote <-> local swap.
318 if (m_webViewImpl->mainFrameImpl())
319 m_webViewImpl->mainFrameImpl()->frameView()->layout();
320 } 315 }
321 316
322 void DevToolsEmulator::setTouchEventEmulationEnabled(bool enabled) 317 void DevToolsEmulator::setTouchEventEmulationEnabled(bool enabled)
323 { 318 {
324 if (m_touchEventEmulationEnabled == enabled) 319 if (m_touchEventEmulationEnabled == enabled)
325 return; 320 return;
326 if (!m_touchEventEmulationEnabled) { 321 if (!m_touchEventEmulationEnabled) {
327 m_originalTouchEnabled = RuntimeEnabledFeatures::touchEnabled(); 322 m_originalTouchEnabled = RuntimeEnabledFeatures::touchEnabled();
328 m_originalDeviceSupportsMouse = m_webViewImpl->page()->settings().device SupportsMouse(); 323 m_originalDeviceSupportsMouse = m_webViewImpl->page()->settings().device SupportsMouse();
329 m_originalDeviceSupportsTouch = m_webViewImpl->page()->settings().device SupportsTouch(); 324 m_originalDeviceSupportsTouch = m_webViewImpl->page()->settings().device SupportsTouch();
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 m_lastPinchAnchorCss.reset(); 377 m_lastPinchAnchorCss.reset();
383 m_lastPinchAnchorDip.reset(); 378 m_lastPinchAnchorDip.reset();
384 } 379 }
385 return true; 380 return true;
386 } 381 }
387 382
388 return false; 383 return false;
389 } 384 }
390 385
391 } // namespace blink 386 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp ('k') | third_party/WebKit/Source/web/InspectorEmulationAgent.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698