Merge "Rename a data storage object to better reflect its intended usage."
This commit is contained in:
committed by
Android (Google) Code Review
commit
59ec92c4e3
@@ -6033,11 +6033,9 @@ public class WebView extends AbsoluteLayout
|
||||
spawnContentScrollTo(msg.arg1, msg.arg2);
|
||||
break;
|
||||
case UPDATE_ZOOM_RANGE: {
|
||||
WebViewCore.RestoreState restoreState
|
||||
= (WebViewCore.RestoreState) msg.obj;
|
||||
WebViewCore.ViewState viewState = (WebViewCore.ViewState) msg.obj;
|
||||
// mScrollX contains the new minPrefWidth
|
||||
mZoomManager.updateZoomRange(restoreState, getViewWidth(),
|
||||
restoreState.mScrollX);
|
||||
mZoomManager.updateZoomRange(viewState, getViewWidth(), viewState.mScrollX);
|
||||
break;
|
||||
}
|
||||
case NEW_PICTURE_MSG_ID: {
|
||||
@@ -6051,12 +6049,12 @@ public class WebView extends AbsoluteLayout
|
||||
final WebViewCore.DrawData draw = (WebViewCore.DrawData) msg.obj;
|
||||
|
||||
final Point viewSize = draw.mViewPoint;
|
||||
WebViewCore.RestoreState restoreState = draw.mRestoreState;
|
||||
boolean hasRestoreState = restoreState != null;
|
||||
if (hasRestoreState) {
|
||||
mZoomManager.restoreZoomState(draw);
|
||||
WebViewCore.ViewState viewState = draw.mViewState;
|
||||
boolean isPictureAfterFirstLayout = viewState != null;
|
||||
if (isPictureAfterFirstLayout) {
|
||||
mZoomManager.onFirstLayout(draw);
|
||||
if (!mDrawHistory) {
|
||||
setContentScrollTo(restoreState.mScrollX, restoreState.mScrollY);
|
||||
setContentScrollTo(viewState.mScrollX, viewState.mScrollY);
|
||||
// As we are on a new page, remove the WebTextView. This
|
||||
// is necessary for page loads driven by webkit, and in
|
||||
// particular when the user was on a password field, so
|
||||
@@ -6090,7 +6088,7 @@ public class WebView extends AbsoluteLayout
|
||||
if (draw.mFocusSizeChanged && inEditingMode()) {
|
||||
mFocusSizeChanged = true;
|
||||
}
|
||||
if (hasRestoreState) {
|
||||
if (isPictureAfterFirstLayout) {
|
||||
mViewManager.postReadyToDrawAll();
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -1738,11 +1738,11 @@ final class WebViewCore {
|
||||
// Used to suspend drawing.
|
||||
private boolean mDrawIsPaused;
|
||||
|
||||
// mRestoreState is set in didFirstLayout(), and reset in the next
|
||||
// webkitDraw after passing it to the UI thread.
|
||||
private RestoreState mRestoreState = null;
|
||||
// mInitialViewState is set by didFirstLayout() and then reset in the
|
||||
// next webkitDraw after passing the state to the UI thread.
|
||||
private ViewState mInitialViewState = null;
|
||||
|
||||
static class RestoreState {
|
||||
static class ViewState {
|
||||
float mMinScale;
|
||||
float mMaxScale;
|
||||
float mViewScale;
|
||||
@@ -1762,8 +1762,8 @@ final class WebViewCore {
|
||||
Point mViewPoint;
|
||||
Point mWidthHeight;
|
||||
int mMinPrefWidth;
|
||||
RestoreState mRestoreState; // only non-null if it is for the first
|
||||
// picture set after the first layout
|
||||
// only non-null if it is for the first picture set after the first layout
|
||||
ViewState mViewState;
|
||||
boolean mFocusSizeChanged;
|
||||
}
|
||||
|
||||
@@ -1788,9 +1788,9 @@ final class WebViewCore {
|
||||
: mViewportWidth),
|
||||
nativeGetContentMinPrefWidth());
|
||||
}
|
||||
if (mRestoreState != null) {
|
||||
draw.mRestoreState = mRestoreState;
|
||||
mRestoreState = null;
|
||||
if (mInitialViewState != null) {
|
||||
draw.mViewState = mInitialViewState;
|
||||
mInitialViewState = null;
|
||||
}
|
||||
if (DebugFlags.WEB_VIEW_CORE) Log.v(LOGTAG, "webkitDraw NEW_PICTURE_MSG_ID");
|
||||
Message.obtain(mWebView.mPrivateHandler,
|
||||
@@ -2065,12 +2065,12 @@ final class WebViewCore {
|
||||
|
||||
if (mWebView == null) return;
|
||||
|
||||
boolean updateRestoreState = standardLoad || mRestoredScale > 0;
|
||||
setupViewport(updateRestoreState);
|
||||
boolean updateViewState = standardLoad || mRestoredScale > 0;
|
||||
setupViewport(updateViewState);
|
||||
// if updateRestoreState is true, ViewManager.postReadyToDrawAll() will
|
||||
// be called after the WebView restore the state. If updateRestoreState
|
||||
// be called after the WebView updates its state. If updateRestoreState
|
||||
// is false, start to draw now as it is ready.
|
||||
if (!updateRestoreState) {
|
||||
if (!updateViewState) {
|
||||
mWebView.mViewManager.postReadyToDrawAll();
|
||||
}
|
||||
|
||||
@@ -2096,7 +2096,7 @@ final class WebViewCore {
|
||||
}
|
||||
}
|
||||
|
||||
private void setupViewport(boolean updateRestoreState) {
|
||||
private void setupViewport(boolean updateViewState) {
|
||||
// set the viewport settings from WebKit
|
||||
setViewportSettingsFromNative();
|
||||
|
||||
@@ -2148,17 +2148,17 @@ final class WebViewCore {
|
||||
}
|
||||
|
||||
// if mViewportWidth is 0, it means device-width, always update.
|
||||
if (mViewportWidth != 0 && !updateRestoreState) {
|
||||
RestoreState restoreState = new RestoreState();
|
||||
restoreState.mMinScale = mViewportMinimumScale / 100.0f;
|
||||
restoreState.mMaxScale = mViewportMaximumScale / 100.0f;
|
||||
restoreState.mDefaultScale = adjust;
|
||||
if (mViewportWidth != 0 && !updateViewState) {
|
||||
ViewState viewState = new ViewState();
|
||||
viewState.mMinScale = mViewportMinimumScale / 100.0f;
|
||||
viewState.mMaxScale = mViewportMaximumScale / 100.0f;
|
||||
viewState.mDefaultScale = adjust;
|
||||
// as mViewportWidth is not 0, it is not mobile site.
|
||||
restoreState.mMobileSite = false;
|
||||
viewState.mMobileSite = false;
|
||||
// for non-mobile site, we don't need minPrefWidth, set it as 0
|
||||
restoreState.mScrollX = 0;
|
||||
viewState.mScrollX = 0;
|
||||
Message.obtain(mWebView.mPrivateHandler,
|
||||
WebView.UPDATE_ZOOM_RANGE, restoreState).sendToTarget();
|
||||
WebView.UPDATE_ZOOM_RANGE, viewState).sendToTarget();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2179,32 +2179,31 @@ final class WebViewCore {
|
||||
} else {
|
||||
webViewWidth = Math.round(viewportWidth * mCurrentViewScale);
|
||||
}
|
||||
mRestoreState = new RestoreState();
|
||||
mRestoreState.mMinScale = mViewportMinimumScale / 100.0f;
|
||||
mRestoreState.mMaxScale = mViewportMaximumScale / 100.0f;
|
||||
mRestoreState.mDefaultScale = adjust;
|
||||
mRestoreState.mScrollX = mRestoredX;
|
||||
mRestoreState.mScrollY = mRestoredY;
|
||||
mRestoreState.mMobileSite = (0 == mViewportWidth);
|
||||
mInitialViewState = new ViewState();
|
||||
mInitialViewState.mMinScale = mViewportMinimumScale / 100.0f;
|
||||
mInitialViewState.mMaxScale = mViewportMaximumScale / 100.0f;
|
||||
mInitialViewState.mDefaultScale = adjust;
|
||||
mInitialViewState.mScrollX = mRestoredX;
|
||||
mInitialViewState.mScrollY = mRestoredY;
|
||||
mInitialViewState.mMobileSite = (0 == mViewportWidth);
|
||||
if (mRestoredScale > 0) {
|
||||
mRestoreState.mViewScale = mRestoredScale / 100.0f;
|
||||
mInitialViewState.mViewScale = mRestoredScale / 100.0f;
|
||||
if (mRestoredTextWrapScale > 0) {
|
||||
mRestoreState.mTextWrapScale =
|
||||
mRestoredTextWrapScale / 100.0f;
|
||||
mInitialViewState.mTextWrapScale = mRestoredTextWrapScale / 100.0f;
|
||||
} else {
|
||||
mRestoreState.mTextWrapScale = mRestoreState.mViewScale;
|
||||
mInitialViewState.mTextWrapScale = mInitialViewState.mViewScale;
|
||||
}
|
||||
} else {
|
||||
if (mViewportInitialScale > 0) {
|
||||
mRestoreState.mViewScale = mRestoreState.mTextWrapScale =
|
||||
mInitialViewState.mViewScale = mInitialViewState.mTextWrapScale =
|
||||
mViewportInitialScale / 100.0f;
|
||||
} else if (mViewportWidth > 0 && mViewportWidth < webViewWidth) {
|
||||
mRestoreState.mViewScale = mRestoreState.mTextWrapScale =
|
||||
mInitialViewState.mViewScale = mInitialViewState.mTextWrapScale =
|
||||
(float) webViewWidth / mViewportWidth;
|
||||
} else {
|
||||
mRestoreState.mTextWrapScale = adjust;
|
||||
mInitialViewState.mTextWrapScale = adjust;
|
||||
// 0 will trigger WebView to turn on zoom overview mode
|
||||
mRestoreState.mViewScale = 0;
|
||||
mInitialViewState.mViewScale = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2245,15 +2244,15 @@ final class WebViewCore {
|
||||
// mViewScale as 0 means it is in zoom overview mode. So we don't
|
||||
// know the exact scale. If mRestoredScale is non-zero, use it;
|
||||
// otherwise just use mTextWrapScale as the initial scale.
|
||||
data.mScale = mRestoreState.mViewScale == 0
|
||||
data.mScale = mInitialViewState.mViewScale == 0
|
||||
? (mRestoredScale > 0 ? mRestoredScale / 100.0f
|
||||
: mRestoreState.mTextWrapScale)
|
||||
: mRestoreState.mViewScale;
|
||||
: mInitialViewState.mTextWrapScale)
|
||||
: mInitialViewState.mViewScale;
|
||||
if (DebugFlags.WEB_VIEW_CORE) {
|
||||
Log.v(LOGTAG, "setupViewport"
|
||||
+ " mRestoredScale=" + mRestoredScale
|
||||
+ " mViewScale=" + mRestoreState.mViewScale
|
||||
+ " mTextWrapScale=" + mRestoreState.mTextWrapScale
|
||||
+ " mViewScale=" + mInitialViewState.mViewScale
|
||||
+ " mTextWrapScale=" + mInitialViewState.mTextWrapScale
|
||||
);
|
||||
}
|
||||
data.mWidth = Math.round(webViewWidth / data.mScale);
|
||||
@@ -2266,7 +2265,7 @@ final class WebViewCore {
|
||||
Math.round(mWebView.getViewHeight() / data.mScale)
|
||||
: mCurrentViewHeight * data.mWidth / viewportWidth;
|
||||
data.mTextWrapWidth = Math.round(webViewWidth
|
||||
/ mRestoreState.mTextWrapScale);
|
||||
/ mInitialViewState.mTextWrapScale);
|
||||
data.mIgnoreHeight = false;
|
||||
data.mAnchorX = data.mAnchorY = 0;
|
||||
// send VIEW_SIZE_CHANGED to the front of the queue so that we
|
||||
|
||||
@@ -720,15 +720,15 @@ class ZoomManager {
|
||||
}
|
||||
}
|
||||
|
||||
public void updateZoomRange(WebViewCore.RestoreState restoreState,
|
||||
public void updateZoomRange(WebViewCore.ViewState viewState,
|
||||
int viewWidth, int minPrefWidth) {
|
||||
if (restoreState.mMinScale == 0) {
|
||||
if (restoreState.mMobileSite) {
|
||||
if (viewState.mMinScale == 0) {
|
||||
if (viewState.mMobileSite) {
|
||||
if (minPrefWidth > Math.max(0, viewWidth)) {
|
||||
mMinZoomScale = (float) viewWidth / minPrefWidth;
|
||||
mMinZoomScaleFixed = false;
|
||||
} else {
|
||||
mMinZoomScale = restoreState.mDefaultScale;
|
||||
mMinZoomScale = viewState.mDefaultScale;
|
||||
mMinZoomScaleFixed = true;
|
||||
}
|
||||
} else {
|
||||
@@ -736,13 +736,13 @@ class ZoomManager {
|
||||
mMinZoomScaleFixed = false;
|
||||
}
|
||||
} else {
|
||||
mMinZoomScale = restoreState.mMinScale;
|
||||
mMinZoomScale = viewState.mMinScale;
|
||||
mMinZoomScaleFixed = true;
|
||||
}
|
||||
if (restoreState.mMaxScale == 0) {
|
||||
if (viewState.mMaxScale == 0) {
|
||||
mMaxZoomScale = mDefaultMaxZoomScale;
|
||||
} else {
|
||||
mMaxZoomScale = restoreState.mMaxScale;
|
||||
mMaxZoomScale = viewState.mMaxScale;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -776,18 +776,21 @@ class ZoomManager {
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates zoom values when Webkit restores a old picture. This method
|
||||
* Updates zoom values after Webkit completes the initial page layout. It
|
||||
* is called when visiting a page for the first time as well as when the
|
||||
* user navigates back to a page (in which case we may need to restore the
|
||||
* zoom levels to the state they were when you left the page). This method
|
||||
* should only be called from the UI thread's message handler.
|
||||
*/
|
||||
public void restoreZoomState(WebViewCore.DrawData drawData) {
|
||||
public void onFirstLayout(WebViewCore.DrawData drawData) {
|
||||
// precondition check
|
||||
assert drawData != null;
|
||||
assert drawData.mRestoreState != null;
|
||||
assert drawData.mViewState != null;
|
||||
assert mWebView.getSettings() != null;
|
||||
|
||||
WebViewCore.RestoreState restoreState = drawData.mRestoreState;
|
||||
WebViewCore.ViewState viewState = drawData.mViewState;
|
||||
final Point viewSize = drawData.mViewPoint;
|
||||
updateZoomRange(restoreState, viewSize.x, drawData.mMinPrefWidth);
|
||||
updateZoomRange(viewState, viewSize.x, drawData.mMinPrefWidth);
|
||||
|
||||
if (!mWebView.drawHistory()) {
|
||||
final float scale;
|
||||
@@ -796,9 +799,9 @@ class ZoomManager {
|
||||
if (mInitialScale > 0) {
|
||||
scale = mInitialScale;
|
||||
reflowText = exceedsMinScaleIncrement(mTextWrapScale, scale);
|
||||
} else if (restoreState.mViewScale > 0) {
|
||||
mTextWrapScale = restoreState.mTextWrapScale;
|
||||
scale = restoreState.mViewScale;
|
||||
} else if (viewState.mViewScale > 0) {
|
||||
mTextWrapScale = viewState.mTextWrapScale;
|
||||
scale = viewState.mViewScale;
|
||||
reflowText = false;
|
||||
} else {
|
||||
WebSettings settings = mWebView.getSettings();
|
||||
@@ -806,7 +809,7 @@ class ZoomManager {
|
||||
mInitialZoomOverview = true;
|
||||
scale = (float) mWebView.getViewWidth() / WebView.DEFAULT_VIEWPORT_WIDTH;
|
||||
} else {
|
||||
scale = restoreState.mTextWrapScale;
|
||||
scale = viewState.mTextWrapScale;
|
||||
}
|
||||
reflowText = exceedsMinScaleIncrement(mTextWrapScale, scale);
|
||||
}
|
||||
|
||||
@@ -61,9 +61,9 @@ public class ZoomManagerTest extends AndroidTestCase {
|
||||
// test the case where the minZoomScale has changed to be < the default
|
||||
float newDefaultScale = 1.50f;
|
||||
float minZoomScale = ZoomManager.DEFAULT_MIN_ZOOM_SCALE_FACTOR * newDefaultScale;
|
||||
WebViewCore.RestoreState minRestoreState = new WebViewCore.RestoreState();
|
||||
minRestoreState.mMinScale = minZoomScale - 0.1f;
|
||||
zoomManager.updateZoomRange(minRestoreState, 0, 0);
|
||||
WebViewCore.ViewState minViewState = new WebViewCore.ViewState();
|
||||
minViewState.mMinScale = minZoomScale - 0.1f;
|
||||
zoomManager.updateZoomRange(minViewState, 0, 0);
|
||||
zoomManager.updateDefaultZoomDensity(newDefaultScale);
|
||||
defaultScaleTest(newDefaultScale);
|
||||
}
|
||||
@@ -72,9 +72,9 @@ public class ZoomManagerTest extends AndroidTestCase {
|
||||
// test the case where the minZoomScale has changed to be > the default
|
||||
float newDefaultScale = 1.50f;
|
||||
float minZoomScale = ZoomManager.DEFAULT_MIN_ZOOM_SCALE_FACTOR * newDefaultScale;
|
||||
WebViewCore.RestoreState minRestoreState = new WebViewCore.RestoreState();
|
||||
minRestoreState.mMinScale = minZoomScale + 0.1f;
|
||||
zoomManager.updateZoomRange(minRestoreState, 0, 0);
|
||||
WebViewCore.ViewState minViewState = new WebViewCore.ViewState();
|
||||
minViewState.mMinScale = minZoomScale + 0.1f;
|
||||
zoomManager.updateZoomRange(minViewState, 0, 0);
|
||||
zoomManager.updateDefaultZoomDensity(newDefaultScale);
|
||||
defaultScaleTest(newDefaultScale);
|
||||
}
|
||||
@@ -83,9 +83,9 @@ public class ZoomManagerTest extends AndroidTestCase {
|
||||
// test the case where the maxZoomScale has changed to be < the default
|
||||
float newDefaultScale = 1.50f;
|
||||
float maxZoomScale = ZoomManager.DEFAULT_MAX_ZOOM_SCALE_FACTOR * newDefaultScale;
|
||||
WebViewCore.RestoreState maxRestoreState = new WebViewCore.RestoreState();
|
||||
maxRestoreState.mMaxScale = maxZoomScale - 0.1f;
|
||||
zoomManager.updateZoomRange(maxRestoreState, 0, 0);
|
||||
WebViewCore.ViewState maxViewState = new WebViewCore.ViewState();
|
||||
maxViewState.mMaxScale = maxZoomScale - 0.1f;
|
||||
zoomManager.updateZoomRange(maxViewState, 0, 0);
|
||||
zoomManager.updateDefaultZoomDensity(newDefaultScale);
|
||||
defaultScaleTest(newDefaultScale);
|
||||
}
|
||||
@@ -94,9 +94,9 @@ public class ZoomManagerTest extends AndroidTestCase {
|
||||
// test the case where the maxZoomScale has changed to be > the default
|
||||
float newDefaultScale = 1.50f;
|
||||
float maxZoomScale = ZoomManager.DEFAULT_MAX_ZOOM_SCALE_FACTOR * newDefaultScale;
|
||||
WebViewCore.RestoreState maxRestoreState = new WebViewCore.RestoreState();
|
||||
maxRestoreState.mMaxScale = maxZoomScale + 0.1f;
|
||||
zoomManager.updateZoomRange(maxRestoreState, 0, 0);
|
||||
WebViewCore.ViewState maxViewState = new WebViewCore.ViewState();
|
||||
maxViewState.mMaxScale = maxZoomScale + 0.1f;
|
||||
zoomManager.updateZoomRange(maxViewState, 0, 0);
|
||||
zoomManager.updateDefaultZoomDensity(newDefaultScale);
|
||||
defaultScaleTest(newDefaultScale);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user