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

Side by Side Diff: Source/web/WebViewImpl.cpp

Issue 23187005: [DevTools] Use device metrics emulation implemented in content. (Closed) Base URL: svn://svn.chromium.org/blink/trunk/
Patch Set: Reupload Created 7 years, 2 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 , m_maximumZoomLevel(zoomFactorToZoomLevel(maxTextSizeMultiplier)) 392 , m_maximumZoomLevel(zoomFactorToZoomLevel(maxTextSizeMultiplier))
393 , m_savedPageScaleFactor(0) 393 , m_savedPageScaleFactor(0)
394 , m_doubleTapZoomPageScaleFactor(0) 394 , m_doubleTapZoomPageScaleFactor(0)
395 , m_doubleTapZoomPending(false) 395 , m_doubleTapZoomPending(false)
396 , m_enableFakePageScaleAnimationForTesting(false) 396 , m_enableFakePageScaleAnimationForTesting(false)
397 , m_fakePageScaleAnimationPageScaleFactor(0) 397 , m_fakePageScaleAnimationPageScaleFactor(0)
398 , m_fakePageScaleAnimationUseAnchor(false) 398 , m_fakePageScaleAnimationUseAnchor(false)
399 , m_contextMenuAllowed(false) 399 , m_contextMenuAllowed(false)
400 , m_doingDragAndDrop(false) 400 , m_doingDragAndDrop(false)
401 , m_ignoreInputEvents(false) 401 , m_ignoreInputEvents(false)
402 , m_emulatedDeviceScaleFactor(0)
403 , m_rootLayerScale(0)
aelias_OOO_until_Jul13 2013/10/01 08:08:51 Let's make rootLayerScale default to 1 instead.
dgozman 2013/10/01 15:26:34 Done.
402 , m_suppressNextKeypressEvent(false) 404 , m_suppressNextKeypressEvent(false)
403 , m_imeAcceptEvents(true) 405 , m_imeAcceptEvents(true)
404 , m_operationsAllowed(WebDragOperationNone) 406 , m_operationsAllowed(WebDragOperationNone)
405 , m_dragOperation(WebDragOperationNone) 407 , m_dragOperation(WebDragOperationNone)
406 , m_featureSwitchClient(adoptPtr(new ContextFeaturesClientImpl())) 408 , m_featureSwitchClient(adoptPtr(new ContextFeaturesClientImpl()))
407 , m_autofillPopupShowing(false) 409 , m_autofillPopupShowing(false)
408 , m_autofillPopup(0) 410 , m_autofillPopup(0)
409 , m_isTransparent(false) 411 , m_isTransparent(false)
410 , m_tabsToLinks(false) 412 , m_tabsToLinks(false)
411 , m_layerTreeView(0) 413 , m_layerTreeView(0)
(...skipping 1293 matching lines...) Expand 10 before | Expand all | Expand 10 after
1705 viewportAnchor.setAnchor(view->visibleContentRect(), 1707 viewportAnchor.setAnchor(view->visibleContentRect(),
1706 FloatSize(viewportAnchorXCoord, viewportAnchorY Coord)); 1708 FloatSize(viewportAnchorXCoord, viewportAnchorY Coord));
1707 } 1709 }
1708 1710
1709 // Set the fixed layout size from the viewport constraints before resizing. 1711 // Set the fixed layout size from the viewport constraints before resizing.
1710 updatePageDefinedPageScaleConstraints(mainFrameImpl()->frame()->document()-> viewportArguments()); 1712 updatePageDefinedPageScaleConstraints(mainFrameImpl()->frame()->document()-> viewportArguments());
1711 1713
1712 WebDevToolsAgentPrivate* agentPrivate = devToolsAgentPrivate(); 1714 WebDevToolsAgentPrivate* agentPrivate = devToolsAgentPrivate();
1713 if (agentPrivate) 1715 if (agentPrivate)
1714 agentPrivate->webViewResized(newSize); 1716 agentPrivate->webViewResized(newSize);
1715 if (!agentPrivate || !agentPrivate->metricsOverridden()) { 1717 WebFrameImpl* webFrame = mainFrameImpl();
1716 WebFrameImpl* webFrame = mainFrameImpl(); 1718 if (webFrame->frameView()) {
1717 if (webFrame->frameView()) { 1719 webFrame->frameView()->resize(m_size);
1718 webFrame->frameView()->resize(m_size); 1720 if (m_pinchViewports)
1719 if (m_pinchViewports) 1721 m_pinchViewports->setViewportSize(m_size);
1720 m_pinchViewports->setViewportSize(m_size);
1721 }
1722 } 1722 }
1723 1723
1724 if (settings()->viewportEnabled() && !m_fixedLayoutSizeLock) { 1724 if (settings()->viewportEnabled() && !m_fixedLayoutSizeLock) {
1725 // Relayout immediately to recalculate the minimum scale limit. 1725 // Relayout immediately to recalculate the minimum scale limit.
1726 if (view->needsLayout()) 1726 if (view->needsLayout())
1727 view->layout(); 1727 view->layout();
1728 1728
1729 if (shouldAnchorAndRescaleViewport) { 1729 if (shouldAnchorAndRescaleViewport) {
1730 float viewportWidthRatio = static_cast<float>(newSize.width) / oldSi ze.width; 1730 float viewportWidthRatio = static_cast<float>(newSize.width) / oldSi ze.width;
1731 float contentsWidthRatio = static_cast<float>(contentsSize().width() ) / oldContentsWidth; 1731 float contentsWidthRatio = static_cast<float>(contentsSize().width() ) / oldContentsWidth;
(...skipping 1173 matching lines...) Expand 10 before | Expand all | Expand 10 after
2905 } 2905 }
2906 2906
2907 void WebViewImpl::setDeviceScaleFactor(float scaleFactor) 2907 void WebViewImpl::setDeviceScaleFactor(float scaleFactor)
2908 { 2908 {
2909 if (!page()) 2909 if (!page())
2910 return; 2910 return;
2911 2911
2912 page()->setDeviceScaleFactor(scaleFactor); 2912 page()->setDeviceScaleFactor(scaleFactor);
2913 2913
2914 if (m_layerTreeView) 2914 if (m_layerTreeView)
2915 m_layerTreeView->setDeviceScaleFactor(scaleFactor); 2915 updateLayerTreeDeviceScaleFactor();
2916 } 2916 }
2917 2917
2918 bool WebViewImpl::isFixedLayoutModeEnabled() const 2918 bool WebViewImpl::isFixedLayoutModeEnabled() const
2919 { 2919 {
2920 if (!page()) 2920 if (!page())
2921 return false; 2921 return false;
2922 2922
2923 Frame* frame = page()->mainFrame(); 2923 Frame* frame = page()->mainFrame();
2924 if (!frame || !frame->view()) 2924 if (!frame || !frame->view())
2925 return false; 2925 return false;
(...skipping 829 matching lines...) Expand 10 before | Expand all | Expand 10 after
3755 m_newNavigationLoader = m_page->mainFrame()->loader()->documentLoader(); 3755 m_newNavigationLoader = m_page->mainFrame()->loader()->documentLoader();
3756 #endif 3756 #endif
3757 } 3757 }
3758 3758
3759 void WebViewImpl::setIgnoreInputEvents(bool newValue) 3759 void WebViewImpl::setIgnoreInputEvents(bool newValue)
3760 { 3760 {
3761 ASSERT(m_ignoreInputEvents != newValue); 3761 ASSERT(m_ignoreInputEvents != newValue);
3762 m_ignoreInputEvents = newValue; 3762 m_ignoreInputEvents = newValue;
3763 } 3763 }
3764 3764
3765 void WebViewImpl::setDeviceEmulationParameters(bool enabled, float deviceScaleFa ctor, float rootLayerScale)
aelias_OOO_until_Jul13 2013/10/01 08:08:51 The other args are ignored when enabled = false wh
3766 {
3767 m_emulatedDeviceScaleFactor = enabled ? deviceScaleFactor : 0;
3768 m_rootLayerScale = enabled ? rootLayerScale : 0;
3769 if (mainFrameImpl())
3770 mainFrameImpl()->setInputEventsScaleFactorForEmulation(enabled ? rootLay erScale : 1);
3771 if (page() && m_layerTreeView)
3772 updateLayerTreeDeviceScaleFactor();
3773 updateRootLayerTransform();
3774 }
3775
3765 void WebViewImpl::addPageOverlay(WebPageOverlay* overlay, int zOrder) 3776 void WebViewImpl::addPageOverlay(WebPageOverlay* overlay, int zOrder)
3766 { 3777 {
3767 if (!m_pageOverlays) 3778 if (!m_pageOverlays)
3768 m_pageOverlays = PageOverlayList::create(this); 3779 m_pageOverlays = PageOverlayList::create(this);
3769 3780
3770 m_pageOverlays->add(overlay, zOrder); 3781 m_pageOverlays->add(overlay, zOrder);
3771 } 3782 }
3772 3783
3773 void WebViewImpl::removePageOverlay(WebPageOverlay* overlay) 3784 void WebViewImpl::removePageOverlay(WebPageOverlay* overlay)
3774 { 3785 {
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
3865 m_rootGraphicsLayer = 0; 3876 m_rootGraphicsLayer = 0;
3866 m_rootLayer = 0; 3877 m_rootLayer = 0;
3867 } 3878 }
3868 } else { 3879 } else {
3869 m_rootGraphicsLayer = layer; 3880 m_rootGraphicsLayer = layer;
3870 m_rootLayer = layer ? layer->platformLayer() : 0; 3881 m_rootLayer = layer ? layer->platformLayer() : 0;
3871 } 3882 }
3872 3883
3873 setIsAcceleratedCompositingActive(layer); 3884 setIsAcceleratedCompositingActive(layer);
3874 3885
3886 updateRootLayerTransform();
3887
3875 if (m_layerTreeView) { 3888 if (m_layerTreeView) {
3876 if (m_rootLayer) { 3889 if (m_rootLayer) {
3877 m_layerTreeView->setRootLayer(*m_rootLayer); 3890 m_layerTreeView->setRootLayer(*m_rootLayer);
3878 // We register viewport layers here since there may not be a layer 3891 // We register viewport layers here since there may not be a layer
3879 // tree view prior to this point. 3892 // tree view prior to this point.
3880 if (m_pinchViewports) { 3893 if (m_pinchViewports) {
3881 m_pinchViewports->registerViewportLayersWithTreeView(m_layerTree View); 3894 m_pinchViewports->registerViewportLayersWithTreeView(m_layerTree View);
3882 } else { 3895 } else {
3883 GraphicsLayer* rootScrollLayer = compositor()->scrollLayer(); 3896 GraphicsLayer* rootScrollLayer = compositor()->scrollLayer();
3884 ASSERT(rootScrollLayer); 3897 ASSERT(rootScrollLayer);
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
3987 } else { 4000 } else {
3988 TRACE_EVENT0("webkit", "WebViewImpl::setIsAcceleratedCompositingActive(t rue)"); 4001 TRACE_EVENT0("webkit", "WebViewImpl::setIsAcceleratedCompositingActive(t rue)");
3989 4002
3990 m_client->initializeLayerTreeView(); 4003 m_client->initializeLayerTreeView();
3991 m_layerTreeView = m_client->layerTreeView(); 4004 m_layerTreeView = m_client->layerTreeView();
3992 if (m_layerTreeView) { 4005 if (m_layerTreeView) {
3993 m_layerTreeView->setRootLayer(*m_rootLayer); 4006 m_layerTreeView->setRootLayer(*m_rootLayer);
3994 4007
3995 bool visible = page()->visibilityState() == PageVisibilityStateVisib le; 4008 bool visible = page()->visibilityState() == PageVisibilityStateVisib le;
3996 m_layerTreeView->setVisible(visible); 4009 m_layerTreeView->setVisible(visible);
3997 m_layerTreeView->setDeviceScaleFactor(page()->deviceScaleFactor()); 4010 updateLayerTreeDeviceScaleFactor();
3998 m_layerTreeView->setPageScaleFactorAndLimits(pageScaleFactor(), mini mumPageScaleFactor(), maximumPageScaleFactor()); 4011 m_layerTreeView->setPageScaleFactorAndLimits(pageScaleFactor(), mini mumPageScaleFactor(), maximumPageScaleFactor());
3999 m_layerTreeView->setBackgroundColor(backgroundColor()); 4012 m_layerTreeView->setBackgroundColor(backgroundColor());
4000 m_layerTreeView->setHasTransparentBackground(isTransparent()); 4013 m_layerTreeView->setHasTransparentBackground(isTransparent());
4001 updateLayerTreeViewport(); 4014 updateLayerTreeViewport();
4002 m_client->didActivateCompositor(0); 4015 m_client->didActivateCompositor(0);
4003 m_isAcceleratedCompositingActive = true; 4016 m_isAcceleratedCompositingActive = true;
4004 m_compositorCreationFailed = false; 4017 m_compositorCreationFailed = false;
4005 if (m_pageOverlays) 4018 if (m_pageOverlays)
4006 m_pageOverlays->update(); 4019 m_pageOverlays->update();
4007 m_layerTreeView->setShowFPSCounter(m_showFPSCounter); 4020 m_layerTreeView->setShowFPSCounter(m_showFPSCounter);
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
4072 } 4085 }
4073 4086
4074 void WebViewImpl::updateLayerTreeViewport() 4087 void WebViewImpl::updateLayerTreeViewport()
4075 { 4088 {
4076 if (!page() || !m_layerTreeView) 4089 if (!page() || !m_layerTreeView)
4077 return; 4090 return;
4078 4091
4079 m_layerTreeView->setPageScaleFactorAndLimits(pageScaleFactor(), minimumPageS caleFactor(), maximumPageScaleFactor()); 4092 m_layerTreeView->setPageScaleFactorAndLimits(pageScaleFactor(), minimumPageS caleFactor(), maximumPageScaleFactor());
4080 } 4093 }
4081 4094
4095 void WebViewImpl::updateLayerTreeDeviceScaleFactor()
4096 {
4097 ASSERT(page());
4098 ASSERT(m_layerTreeView);
4099
4100 float deviceScaleFactor = m_emulatedDeviceScaleFactor ? m_emulatedDeviceScal eFactor : page()->deviceScaleFactor();
4101 m_layerTreeView->setDeviceScaleFactor(deviceScaleFactor);
4102 }
4103
4104 void WebViewImpl::updateRootLayerTransform()
4105 {
4106 if (m_rootGraphicsLayer) {
4107 WebCore::TransformationMatrix transform;
4108 if (m_rootLayerScale)
4109 transform = transform.scale(m_rootLayerScale);
4110 m_rootGraphicsLayer->setChildrenTransform(transform);
4111 }
4112 }
4113
4082 void WebViewImpl::selectAutofillSuggestionAtIndex(unsigned listIndex) 4114 void WebViewImpl::selectAutofillSuggestionAtIndex(unsigned listIndex)
4083 { 4115 {
4084 if (m_autofillPopupClient && listIndex < m_autofillPopupClient->getSuggestio nsCount()) 4116 if (m_autofillPopupClient && listIndex < m_autofillPopupClient->getSuggestio nsCount())
4085 m_autofillPopupClient->valueChanged(listIndex); 4117 m_autofillPopupClient->valueChanged(listIndex);
4086 } 4118 }
4087 4119
4088 bool WebViewImpl::detectContentOnTouch(const WebPoint& position) 4120 bool WebViewImpl::detectContentOnTouch(const WebPoint& position)
4089 { 4121 {
4090 HitTestResult touchHit = hitTestResultForWindowPos(position); 4122 HitTestResult touchHit = hitTestResultForWindowPos(position);
4091 4123
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
4184 // the initial viewport width. 4216 // the initial viewport width.
4185 // 2. The author has disabled viewport zoom. 4217 // 2. The author has disabled viewport zoom.
4186 4218
4187 const PageScaleConstraints& constraints = m_pageScaleConstraintsSet.pageDefi nedConstraints(); 4219 const PageScaleConstraints& constraints = m_pageScaleConstraintsSet.pageDefi nedConstraints();
4188 4220
4189 return fixedLayoutSize().width == m_size.width 4221 return fixedLayoutSize().width == m_size.width
4190 || (constraints.minimumScale == constraints.maximumScale && constraints. minimumScale != -1); 4222 || (constraints.minimumScale == constraints.maximumScale && constraints. minimumScale != -1);
4191 } 4223 }
4192 4224
4193 } // namespace WebKit 4225 } // namespace WebKit
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698