forked from mirrors/gecko-dev
		
	Bug 1566991: Add some assertions to sanity-check that our mobile viewport zoom factors are positive. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D38419 --HG-- extra : moz-landing-system : lando
This commit is contained in:
		
							parent
							
								
									a63f0a1fc3
								
							
						
					
					
						commit
						dd66dfe12b
					
				
					 2 changed files with 13 additions and 0 deletions
				
			
		|  | @ -11,6 +11,11 @@ | ||||||
| using namespace mozilla; | using namespace mozilla; | ||||||
| 
 | 
 | ||||||
| void nsViewportInfo::ConstrainViewportValues() { | void nsViewportInfo::ConstrainViewportValues() { | ||||||
|  |   // Non-positive zoom factors can produce NaN or negative viewport sizes,
 | ||||||
|  |   // so we better be sure our constraints will produce positive zoom factors.
 | ||||||
|  |   MOZ_ASSERT(mMinZoom > CSSToScreenScale(0.0f), "zoom factor must be positive"); | ||||||
|  |   MOZ_ASSERT(mMaxZoom > CSSToScreenScale(0.0f), "zoom factor must be positive"); | ||||||
|  | 
 | ||||||
|   if (mDefaultZoom > mMaxZoom) { |   if (mDefaultZoom > mMaxZoom) { | ||||||
|     mDefaultZoomValid = false; |     mDefaultZoomValid = false; | ||||||
|     mDefaultZoom = mMaxZoom; |     mDefaultZoom = mMaxZoom; | ||||||
|  |  | ||||||
|  | @ -219,6 +219,10 @@ void MobileViewportManager::UpdateResolution( | ||||||
|   CSSToLayoutDeviceScale cssToDev = mContext->CSSToDevPixelScale(); |   CSSToLayoutDeviceScale cssToDev = mContext->CSSToDevPixelScale(); | ||||||
|   LayoutDeviceToLayerScale res(mContext->GetResolution()); |   LayoutDeviceToLayerScale res(mContext->GetResolution()); | ||||||
|   CSSToScreenScale zoom = ResolutionToZoom(res, cssToDev); |   CSSToScreenScale zoom = ResolutionToZoom(res, cssToDev); | ||||||
|  |   // Non-positive zoom factors can produce NaN or negative viewport sizes,
 | ||||||
|  |   // so we better be sure we've got a positive zoom factor.
 | ||||||
|  |   MOZ_ASSERT(zoom > CSSToScreenScale(0.0f), "zoom factor must be positive"); | ||||||
|  | 
 | ||||||
|   Maybe<CSSToScreenScale> newZoom; |   Maybe<CSSToScreenScale> newZoom; | ||||||
| 
 | 
 | ||||||
|   ScreenIntSize compositionSize = GetCompositionSize(aDisplaySize); |   ScreenIntSize compositionSize = GetCompositionSize(aDisplaySize); | ||||||
|  | @ -391,6 +395,10 @@ void MobileViewportManager::UpdateResolution( | ||||||
| 
 | 
 | ||||||
|   // If the zoom has changed, update the pres shell resolution accordingly.
 |   // If the zoom has changed, update the pres shell resolution accordingly.
 | ||||||
|   if (newZoom) { |   if (newZoom) { | ||||||
|  |     // Non-positive zoom factors can produce NaN or negative viewport sizes,
 | ||||||
|  |     // so we better be sure we've got a positive zoom factor.
 | ||||||
|  |     MOZ_ASSERT(*newZoom > CSSToScreenScale(0.0f), | ||||||
|  |                "zoom factor must be positive"); | ||||||
|     LayoutDeviceToLayerScale resolution = ZoomToResolution(*newZoom, cssToDev); |     LayoutDeviceToLayerScale resolution = ZoomToResolution(*newZoom, cssToDev); | ||||||
|     MVM_LOG("%p: setting resolution %f\n", this, resolution.scale); |     MVM_LOG("%p: setting resolution %f\n", this, resolution.scale); | ||||||
|     mContext->SetResolutionAndScaleTo(resolution.scale); |     mContext->SetResolutionAndScaleTo(resolution.scale); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Daniel Holbert
						Daniel Holbert