Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e86cdeb8 authored by Shimeng (Simon) Wang's avatar Shimeng (Simon) Wang
Browse files

Fix reflow for mobile sites.

1. use correct mDefaultScale instead of 1.0f.
2. ignore mMinZoomScaleFixed in case of using wide viewport since
sometimes mobile site will impose a min scale while the web content
will make it bigger than overview scale.

issue: 4257815

Change-Id: Ib4ca9b4dab8585827081a32432076eeeaedecd38
parent 82a07704
Loading
Loading
Loading
Loading
+8 −9
Original line number Original line Diff line number Diff line
@@ -991,16 +991,16 @@ class ZoomManager {
            settings.getUseFixedViewport() &&
            settings.getUseFixedViewport() &&
            (mInitialZoomOverview || mInZoomOverview)) {
            (mInitialZoomOverview || mInZoomOverview)) {
            // Keep mobile site's text wrap scale unchanged.  For mobile sites,
            // Keep mobile site's text wrap scale unchanged.  For mobile sites,
            // the text wrap scale is the same as zoom overview scale, which is 1.0f.
            // the text wrap scale is the same as zoom overview scale.
            if (exceedsMinScaleIncrement(mTextWrapScale, 1.0f) ||
            if (exceedsMinScaleIncrement(mTextWrapScale, mDefaultScale) ||
                    exceedsMinScaleIncrement(newZoomOverviewScale, 1.0f)) {
                    exceedsMinScaleIncrement(newZoomOverviewScale, mDefaultScale)) {
                mTextWrapScale = getReadingLevelScale();
                mTextWrapScale = getReadingLevelScale();
            } else {
            } else {
                mTextWrapScale = newZoomOverviewScale;
                mTextWrapScale = newZoomOverviewScale;
            }
            }
        }
        }


        if (!mMinZoomScaleFixed) {
        if (!mMinZoomScaleFixed || settings.getUseWideViewPort()) {
            mMinZoomScale = newZoomOverviewScale;
            mMinZoomScale = newZoomOverviewScale;
            mMaxZoomScale = Math.max(mMaxZoomScale, mMinZoomScale);
            mMaxZoomScale = Math.max(mMaxZoomScale, mMinZoomScale);
        }
        }
@@ -1013,9 +1013,9 @@ class ZoomManager {
        // Make sure mobile sites are correctly handled since mobile site will
        // Make sure mobile sites are correctly handled since mobile site will
        // change content width after rotating.
        // change content width after rotating.
        boolean mobileSiteInOverview = mInZoomOverview &&
        boolean mobileSiteInOverview = mInZoomOverview &&
                !exceedsMinScaleIncrement(newZoomOverviewScale, 1.0f);
                !exceedsMinScaleIncrement(newZoomOverviewScale, mDefaultScale);
        if (!mWebView.drawHistory() &&
        if (!mWebView.drawHistory() &&
            (scaleLessThanOverview ||
            ((scaleLessThanOverview && settings.getUseWideViewPort())||
                ((mInitialZoomOverview || mobileSiteInOverview) &&
                ((mInitialZoomOverview || mobileSiteInOverview) &&
                    scaleHasDiff && zoomOverviewWidthChanged))) {
                    scaleHasDiff && zoomOverviewWidthChanged))) {
            mInitialZoomOverview = false;
            mInitialZoomOverview = false;
@@ -1071,7 +1071,8 @@ class ZoomManager {
        updateZoomRange(viewState, viewSize.x, drawData.mMinPrefWidth);
        updateZoomRange(viewState, viewSize.x, drawData.mMinPrefWidth);
        setupZoomOverviewWidth(drawData, mWebView.getViewWidth());
        setupZoomOverviewWidth(drawData, mWebView.getViewWidth());
        final float overviewScale = getZoomOverviewScale();
        final float overviewScale = getZoomOverviewScale();
        if (!mMinZoomScaleFixed) {
        WebSettings settings = mWebView.getSettings();
        if (!mMinZoomScaleFixed || settings.getUseWideViewPort()) {
            mMinZoomScale = (mInitialScale > 0) ?
            mMinZoomScale = (mInitialScale > 0) ?
                    Math.min(mInitialScale, overviewScale) : overviewScale;
                    Math.min(mInitialScale, overviewScale) : overviewScale;
            mMaxZoomScale = Math.max(mMaxZoomScale, mMinZoomScale);
            mMaxZoomScale = Math.max(mMaxZoomScale, mMinZoomScale);
@@ -1079,8 +1080,6 @@ class ZoomManager {


        if (!mWebView.drawHistory()) {
        if (!mWebView.drawHistory()) {
            float scale;
            float scale;
            WebSettings settings = mWebView.getSettings();

            if (mInitialScale > 0) {
            if (mInitialScale > 0) {
                scale = mInitialScale;
                scale = mInitialScale;
            } else if (viewState.mViewScale > 0) {
            } else if (viewState.mViewScale > 0) {