Index: android_webview/java/src/org/chromium/android_webview/AwContents.java |
diff --git a/android_webview/java/src/org/chromium/android_webview/AwContents.java b/android_webview/java/src/org/chromium/android_webview/AwContents.java |
index 2805af26f729bf2fdf0bbfd2bafbe0f17055a99c..f0f286ffb8adcaf325ccd72bb5cb971b6c1d55ae 100644 |
--- a/android_webview/java/src/org/chromium/android_webview/AwContents.java |
+++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java |
@@ -185,6 +185,12 @@ public class AwContents { |
private boolean mClearViewActive; |
private boolean mPictureListenerEnabled; |
+ // These come from the compositor and are updated immediately (in contrast to the values in |
+ // ContentViewCore, which are updated at end of every frame). |
+ private float mPageScaleFactor = 1.0f; |
+ private float mContentWidthDip; |
+ private float mContentHeightDip; |
+ |
private AwAutofillManagerDelegate mAwAutofillManagerDelegate; |
private static final class DestroyRunnable implements Runnable { |
@@ -355,22 +361,6 @@ public class AwContents { |
} |
//-------------------------------------------------------------------------------------------- |
- // NOTE: This content size change notification comes from the compositor and reflects the size |
- // of the content on screen (but not neccessarily in the renderer main thread). |
- private class AwContentUpdateFrameInfoListener |
- implements ContentViewCore.UpdateFrameInfoListener { |
- @Override |
- public void onFrameInfoUpdated(float widthCss, float heightCss, float pageScaleFactor) { |
- if (mNativeAwContents == 0) return; |
- int widthPix = (int) Math.floor(widthCss * mDIPScale * pageScaleFactor); |
- int heightPix = (int) Math.floor(heightCss * mDIPScale * pageScaleFactor); |
- mScrollOffsetManager.setContentSize(widthPix, heightPix); |
- |
- nativeSetDisplayedPageScaleFactor(mNativeAwContents, pageScaleFactor); |
- } |
- } |
- |
- //-------------------------------------------------------------------------------------------- |
private class AwScrollOffsetManagerDelegate implements AwScrollOffsetManager.Delegate { |
@Override |
public void overScrollContainerViewBy(int deltaX, int deltaY, int scrollX, int scrollY, |
@@ -567,7 +557,6 @@ public class AwContents { |
nativeSetJavaPeers(mNativeAwContents, this, mWebContentsDelegate, mContentsClientBridge, |
mIoThreadClient, mInterceptNavigationDelegate); |
mContentsClient.installWebContentsObserver(mContentViewCore); |
- mContentViewCore.setUpdateFrameInfoListener(new AwContentUpdateFrameInfoListener()); |
mSettings.setWebContents(nativeWebContents); |
nativeSetDipScale(mNativeAwContents, (float) mDIPScale); |
updateGlobalVisibleRect(); |
@@ -756,11 +745,11 @@ public class AwContents { |
} |
public int getContentHeightCss() { |
- return (int) Math.ceil(mContentViewCore.getContentHeightCss()); |
+ return (int) Math.ceil(mContentHeightDip); |
} |
public int getContentWidthCss() { |
- return (int) Math.ceil(mContentViewCore.getContentWidthCss()); |
+ return (int) Math.ceil(mContentWidthDip); |
} |
public Picture capturePicture() { |
@@ -1345,7 +1334,7 @@ public class AwContents { |
* the screen density factor. See CTS WebViewTest.testSetInitialScale. |
*/ |
public float getScale() { |
- return (float)(mContentViewCore.getScale() * mDIPScale); |
+ return (float)(mPageScaleFactor * mDIPScale); |
} |
/** |
@@ -1823,11 +1812,27 @@ public class AwContents { |
} |
@CalledByNative |
+ private void setMaxContainerViewScrollOffset(int maxX, int maxY) { |
+ mScrollOffsetManager.setMaxScrollOffset(maxX, maxY); |
+ } |
+ |
+ @CalledByNative |
private void scrollContainerViewTo(int x, int y) { |
mScrollOffsetManager.scrollContainerViewTo(x, y); |
} |
@CalledByNative |
+ private void setContentsSize(int widthDip, int heightDip) { |
+ mContentWidthDip = widthDip; |
+ mContentHeightDip = heightDip; |
+ } |
+ |
+ @CalledByNative |
+ private void setPageScaleFactor(float pageScaleFactor) { |
+ mPageScaleFactor = pageScaleFactor; |
+ } |
+ |
+ @CalledByNative |
private void setAwAutofillManagerDelegate(AwAutofillManagerDelegate delegate) { |
mAwAutofillManagerDelegate = delegate; |
delegate.init(mContentViewCore); |
@@ -1942,8 +1947,6 @@ public class AwContents { |
private native void nativeOnAttachedToWindow(int nativeAwContents, int w, int h); |
private static native void nativeOnDetachedFromWindow(int nativeAwContents); |
private native void nativeSetDipScale(int nativeAwContents, float dipScale); |
- private native void nativeSetDisplayedPageScaleFactor(int nativeAwContents, |
- float pageScaleFactor); |
private native void nativeSetFixedLayoutSize(int nativeAwContents, int widthDip, int heightDip); |
// Returns null if save state fails. |