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

Side by Side Diff: android_webview/java/src/org/chromium/android_webview/AwContents.java

Issue 23533051: [android_webview] Use a fraction to calculate scroll offset. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: revert changes from previous patch set as they break AwSettings tests 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 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.android_webview; 5 package org.chromium.android_webview;
6 6
7 import android.content.pm.PackageManager; 7 import android.content.pm.PackageManager;
8 import android.content.res.Configuration; 8 import android.content.res.Configuration;
9 import android.graphics.Bitmap; 9 import android.graphics.Bitmap;
10 import android.graphics.Canvas; 10 import android.graphics.Canvas;
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 // Bound method for suppling Picture instances to the AwContentsClient. Will be null if the 178 // Bound method for suppling Picture instances to the AwContentsClient. Will be null if the
179 // picture listener API has not yet been enabled, or if it is using invalida tion-only mode. 179 // picture listener API has not yet been enabled, or if it is using invalida tion-only mode.
180 private Callable<Picture> mPictureListenerContentProvider; 180 private Callable<Picture> mPictureListenerContentProvider;
181 181
182 private boolean mContainerViewFocused; 182 private boolean mContainerViewFocused;
183 private boolean mWindowFocused; 183 private boolean mWindowFocused;
184 184
185 private boolean mClearViewActive; 185 private boolean mClearViewActive;
186 private boolean mPictureListenerEnabled; 186 private boolean mPictureListenerEnabled;
187 187
188 // These come from the compositor and are updated immediately (in contrast t o the values in
189 // ContentViewCore, which are updated at end of every frame).
190 private float mPageScaleFactor = 1.0f;
191 private float mContentWidthDip;
192 private float mContentHeightDip;
193
188 private AwAutofillManagerDelegate mAwAutofillManagerDelegate; 194 private AwAutofillManagerDelegate mAwAutofillManagerDelegate;
189 195
190 private static final class DestroyRunnable implements Runnable { 196 private static final class DestroyRunnable implements Runnable {
191 private int mNativeAwContents; 197 private int mNativeAwContents;
192 private DestroyRunnable(int nativeAwContents) { 198 private DestroyRunnable(int nativeAwContents) {
193 mNativeAwContents = nativeAwContents; 199 mNativeAwContents = nativeAwContents;
194 } 200 }
195 @Override 201 @Override
196 public void run() { 202 public void run() {
197 // This is a no-op if not currently attached. 203 // This is a no-op if not currently attached.
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 mInternalAccessAdapter.setMeasuredDimension(measuredWidth, measuredH eight); 354 mInternalAccessAdapter.setMeasuredDimension(measuredWidth, measuredH eight);
349 } 355 }
350 356
351 @Override 357 @Override
352 public void setFixedLayoutSize(int widthDip, int heightDip) { 358 public void setFixedLayoutSize(int widthDip, int heightDip) {
353 nativeSetFixedLayoutSize(mNativeAwContents, widthDip, heightDip); 359 nativeSetFixedLayoutSize(mNativeAwContents, widthDip, heightDip);
354 } 360 }
355 } 361 }
356 362
357 //-------------------------------------------------------------------------- ------------------ 363 //-------------------------------------------------------------------------- ------------------
358 // NOTE: This content size change notification comes from the compositor and reflects the size
359 // of the content on screen (but not neccessarily in the renderer main threa d).
360 private class AwContentUpdateFrameInfoListener
361 implements ContentViewCore.UpdateFrameInfoListener {
362 @Override
363 public void onFrameInfoUpdated(float widthCss, float heightCss, float pa geScaleFactor) {
364 if (mNativeAwContents == 0) return;
365 int widthPix = (int) Math.floor(widthCss * mDIPScale * pageScaleFact or);
366 int heightPix = (int) Math.floor(heightCss * mDIPScale * pageScaleFa ctor);
367 mScrollOffsetManager.setContentSize(widthPix, heightPix);
368
369 nativeSetDisplayedPageScaleFactor(mNativeAwContents, pageScaleFactor );
370 }
371 }
372
373 //-------------------------------------------------------------------------- ------------------
374 private class AwScrollOffsetManagerDelegate implements AwScrollOffsetManager .Delegate { 364 private class AwScrollOffsetManagerDelegate implements AwScrollOffsetManager .Delegate {
375 @Override 365 @Override
376 public void overScrollContainerViewBy(int deltaX, int deltaY, int scroll X, int scrollY, 366 public void overScrollContainerViewBy(int deltaX, int deltaY, int scroll X, int scrollY,
377 int scrollRangeX, int scrollRangeY, boolean isTouchEvent) { 367 int scrollRangeX, int scrollRangeY, boolean isTouchEvent) {
378 mInternalAccessAdapter.overScrollBy(deltaX, deltaY, scrollX, scrollY , 368 mInternalAccessAdapter.overScrollBy(deltaX, deltaY, scrollX, scrollY ,
379 scrollRangeX, scrollRangeY, 0, 0, isTouchEvent); 369 scrollRangeX, scrollRangeY, 0, 0, isTouchEvent);
380 } 370 }
381 371
382 @Override 372 @Override
383 public void scrollContainerViewTo(int x, int y) { 373 public void scrollContainerViewTo(int x, int y) {
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 mCleanupReference = new CleanupReference(this, new DestroyRunnable(mNati veAwContents)); 550 mCleanupReference = new CleanupReference(this, new DestroyRunnable(mNati veAwContents));
561 551
562 int nativeWebContents = nativeGetWebContents(mNativeAwContents); 552 int nativeWebContents = nativeGetWebContents(mNativeAwContents);
563 mContentViewCore = createAndInitializeContentViewCore( 553 mContentViewCore = createAndInitializeContentViewCore(
564 mContainerView, mInternalAccessAdapter, nativeWebContents, 554 mContainerView, mInternalAccessAdapter, nativeWebContents,
565 new AwGestureStateListener(), mContentsClient.getContentViewClie nt(), 555 new AwGestureStateListener(), mContentsClient.getContentViewClie nt(),
566 mZoomControls); 556 mZoomControls);
567 nativeSetJavaPeers(mNativeAwContents, this, mWebContentsDelegate, mConte ntsClientBridge, 557 nativeSetJavaPeers(mNativeAwContents, this, mWebContentsDelegate, mConte ntsClientBridge,
568 mIoThreadClient, mInterceptNavigationDelegate); 558 mIoThreadClient, mInterceptNavigationDelegate);
569 mContentsClient.installWebContentsObserver(mContentViewCore); 559 mContentsClient.installWebContentsObserver(mContentViewCore);
570 mContentViewCore.setUpdateFrameInfoListener(new AwContentUpdateFrameInfo Listener());
571 mSettings.setWebContents(nativeWebContents); 560 mSettings.setWebContents(nativeWebContents);
572 nativeSetDipScale(mNativeAwContents, (float) mDIPScale); 561 nativeSetDipScale(mNativeAwContents, (float) mDIPScale);
573 updateGlobalVisibleRect(); 562 updateGlobalVisibleRect();
574 563
575 // The only call to onShow. onHide should never be called. 564 // The only call to onShow. onHide should never be called.
576 mContentViewCore.onShow(); 565 mContentViewCore.onShow();
577 } 566 }
578 567
579 /** 568 /**
580 * Called on the "source" AwContents that is opening the popup window to 569 * Called on the "source" AwContents that is opening the popup window to
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 mScrollOffsetManager.computeMaximumVerticalScrollOffset())) { 738 mScrollOffsetManager.computeMaximumVerticalScrollOffset())) {
750 mContainerView.invalidate(); 739 mContainerView.invalidate();
751 } 740 }
752 } 741 }
753 742
754 public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 743 public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
755 mLayoutSizer.onMeasure(widthMeasureSpec, heightMeasureSpec); 744 mLayoutSizer.onMeasure(widthMeasureSpec, heightMeasureSpec);
756 } 745 }
757 746
758 public int getContentHeightCss() { 747 public int getContentHeightCss() {
759 return (int) Math.ceil(mContentViewCore.getContentHeightCss()); 748 return (int) Math.ceil(mContentHeightDip);
760 } 749 }
761 750
762 public int getContentWidthCss() { 751 public int getContentWidthCss() {
763 return (int) Math.ceil(mContentViewCore.getContentWidthCss()); 752 return (int) Math.ceil(mContentWidthDip);
764 } 753 }
765 754
766 public Picture capturePicture() { 755 public Picture capturePicture() {
767 if (mNativeAwContents == 0) return null; 756 if (mNativeAwContents == 0) return null;
768 return new AwPicture(nativeCapturePicture(mNativeAwContents, 757 return new AwPicture(nativeCapturePicture(mNativeAwContents,
769 mScrollOffsetManager.computeHorizontalScrollRange(), 758 mScrollOffsetManager.computeHorizontalScrollRange(),
770 mScrollOffsetManager.computeVerticalScrollRange())); 759 mScrollOffsetManager.computeVerticalScrollRange()));
771 } 760 }
772 761
773 public void clearView() { 762 public void clearView() {
(...skipping 564 matching lines...) Expand 10 before | Expand all | Expand 10 after
1338 msg.sendToTarget(); 1327 msg.sendToTarget();
1339 } 1328 }
1340 1329
1341 /** 1330 /**
1342 * @see android.webkit.WebView#getScale() 1331 * @see android.webkit.WebView#getScale()
1343 * 1332 *
1344 * Please note that the scale returned is the page scale multiplied by 1333 * Please note that the scale returned is the page scale multiplied by
1345 * the screen density factor. See CTS WebViewTest.testSetInitialScale. 1334 * the screen density factor. See CTS WebViewTest.testSetInitialScale.
1346 */ 1335 */
1347 public float getScale() { 1336 public float getScale() {
1348 return (float)(mContentViewCore.getScale() * mDIPScale); 1337 return (float)(mPageScaleFactor * mDIPScale);
1349 } 1338 }
1350 1339
1351 /** 1340 /**
1352 * @see android.webkit.WebView#flingScroll(int, int) 1341 * @see android.webkit.WebView#flingScroll(int, int)
1353 */ 1342 */
1354 public void flingScroll(int velocityX, int velocityY) { 1343 public void flingScroll(int velocityX, int velocityY) {
1355 mScrollOffsetManager.flingScroll(velocityX, velocityY); 1344 mScrollOffsetManager.flingScroll(velocityX, velocityY);
1356 } 1345 }
1357 1346
1358 /** 1347 /**
(...skipping 457 matching lines...) Expand 10 before | Expand all | Expand 10 after
1816 mLayoutSizer.onPageScaleChanged(webLayoutPageScaleFactor); 1805 mLayoutSizer.onPageScaleChanged(webLayoutPageScaleFactor);
1817 } 1806 }
1818 1807
1819 @CalledByNative 1808 @CalledByNative
1820 private void onWebLayoutContentsSizeChanged(int widthCss, int heightCss) { 1809 private void onWebLayoutContentsSizeChanged(int widthCss, int heightCss) {
1821 // This change notification comes from the renderer thread, not from the cc/ impl thread. 1810 // This change notification comes from the renderer thread, not from the cc/ impl thread.
1822 mLayoutSizer.onContentSizeChanged(widthCss, heightCss); 1811 mLayoutSizer.onContentSizeChanged(widthCss, heightCss);
1823 } 1812 }
1824 1813
1825 @CalledByNative 1814 @CalledByNative
1815 private void setMaxContainerViewScrollOffset(int maxX, int maxY) {
1816 mScrollOffsetManager.setMaxScrollOffset(maxX, maxY);
1817 }
1818
1819 @CalledByNative
1826 private void scrollContainerViewTo(int x, int y) { 1820 private void scrollContainerViewTo(int x, int y) {
1827 mScrollOffsetManager.scrollContainerViewTo(x, y); 1821 mScrollOffsetManager.scrollContainerViewTo(x, y);
1828 } 1822 }
1829 1823
1830 @CalledByNative 1824 @CalledByNative
1825 private void setContentsSize(int widthDip, int heightDip) {
1826 mContentWidthDip = widthDip;
1827 mContentHeightDip = heightDip;
1828 }
1829
1830 @CalledByNative
1831 private void setPageScaleFactor(float pageScaleFactor) {
1832 mPageScaleFactor = pageScaleFactor;
1833 }
1834
1835 @CalledByNative
1831 private void setAwAutofillManagerDelegate(AwAutofillManagerDelegate delegate ) { 1836 private void setAwAutofillManagerDelegate(AwAutofillManagerDelegate delegate ) {
1832 mAwAutofillManagerDelegate = delegate; 1837 mAwAutofillManagerDelegate = delegate;
1833 delegate.init(mContentViewCore); 1838 delegate.init(mContentViewCore);
1834 } 1839 }
1835 1840
1836 @CalledByNative 1841 @CalledByNative
1837 private void didOverscroll(int deltaX, int deltaY) { 1842 private void didOverscroll(int deltaX, int deltaY) {
1838 if (mOverScrollGlow != null) { 1843 if (mOverScrollGlow != null) {
1839 mOverScrollGlow.setOverScrollDeltas(deltaX, deltaY); 1844 mOverScrollGlow.setOverScrollDeltas(deltaX, deltaY);
1840 } 1845 }
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
1935 private native void nativeUpdateLastHitTestData(int nativeAwContents); 1940 private native void nativeUpdateLastHitTestData(int nativeAwContents);
1936 1941
1937 private native void nativeOnSizeChanged(int nativeAwContents, int w, int h, int ow, int oh); 1942 private native void nativeOnSizeChanged(int nativeAwContents, int w, int h, int ow, int oh);
1938 private native void nativeScrollTo(int nativeAwContents, int x, int y); 1943 private native void nativeScrollTo(int nativeAwContents, int x, int y);
1939 private native void nativeSetViewVisibility(int nativeAwContents, boolean vi sible); 1944 private native void nativeSetViewVisibility(int nativeAwContents, boolean vi sible);
1940 private native void nativeSetWindowVisibility(int nativeAwContents, boolean visible); 1945 private native void nativeSetWindowVisibility(int nativeAwContents, boolean visible);
1941 private native void nativeSetIsPaused(int nativeAwContents, boolean paused); 1946 private native void nativeSetIsPaused(int nativeAwContents, boolean paused);
1942 private native void nativeOnAttachedToWindow(int nativeAwContents, int w, in t h); 1947 private native void nativeOnAttachedToWindow(int nativeAwContents, int w, in t h);
1943 private static native void nativeOnDetachedFromWindow(int nativeAwContents); 1948 private static native void nativeOnDetachedFromWindow(int nativeAwContents);
1944 private native void nativeSetDipScale(int nativeAwContents, float dipScale); 1949 private native void nativeSetDipScale(int nativeAwContents, float dipScale);
1945 private native void nativeSetDisplayedPageScaleFactor(int nativeAwContents,
1946 float pageScaleFactor);
1947 private native void nativeSetFixedLayoutSize(int nativeAwContents, int width Dip, int heightDip); 1950 private native void nativeSetFixedLayoutSize(int nativeAwContents, int width Dip, int heightDip);
1948 1951
1949 // Returns null if save state fails. 1952 // Returns null if save state fails.
1950 private native byte[] nativeGetOpaqueState(int nativeAwContents); 1953 private native byte[] nativeGetOpaqueState(int nativeAwContents);
1951 1954
1952 // Returns false if restore state fails. 1955 // Returns false if restore state fails.
1953 private native boolean nativeRestoreFromOpaqueState(int nativeAwContents, by te[] state); 1956 private native boolean nativeRestoreFromOpaqueState(int nativeAwContents, by te[] state);
1954 1957
1955 private native int nativeReleasePopupAwContents(int nativeAwContents); 1958 private native int nativeReleasePopupAwContents(int nativeAwContents);
1956 private native void nativeFocusFirstNode(int nativeAwContents); 1959 private native void nativeFocusFirstNode(int nativeAwContents);
1957 private native void nativeSetBackgroundColor(int nativeAwContents, int color ); 1960 private native void nativeSetBackgroundColor(int nativeAwContents, int color );
1958 1961
1959 private native int nativeGetAwDrawGLViewContext(int nativeAwContents); 1962 private native int nativeGetAwDrawGLViewContext(int nativeAwContents);
1960 private native int nativeCapturePicture(int nativeAwContents, int width, int height); 1963 private native int nativeCapturePicture(int nativeAwContents, int width, int height);
1961 private native void nativeEnableOnNewPicture(int nativeAwContents, boolean e nabled); 1964 private native void nativeEnableOnNewPicture(int nativeAwContents, boolean e nabled);
1962 1965
1963 private native void nativeInvokeGeolocationCallback( 1966 private native void nativeInvokeGeolocationCallback(
1964 int nativeAwContents, boolean value, String requestingFrame); 1967 int nativeAwContents, boolean value, String requestingFrame);
1965 1968
1966 private native void nativeSetJsOnlineProperty(int nativeAwContents, boolean networkUp); 1969 private native void nativeSetJsOnlineProperty(int nativeAwContents, boolean networkUp);
1967 } 1970 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698