Chromium Code Reviews| Index: android_webview/java/src/org/chromium/android_webview/AwScrollOffsetManager.java |
| diff --git a/android_webview/java/src/org/chromium/android_webview/AwScrollOffsetManager.java b/android_webview/java/src/org/chromium/android_webview/AwScrollOffsetManager.java |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..c23b37bb4b5ed4b0b5892c692d354029a41f5bb4 |
| --- /dev/null |
| +++ b/android_webview/java/src/org/chromium/android_webview/AwScrollOffsetManager.java |
| @@ -0,0 +1,54 @@ |
| +// Copyright 2012 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +package org.chromium.android_webview; |
| + |
| +import org.chromium.base.CalledByNative; |
| + |
| +class AwScrollOffsetManager { |
| + public interface Delegate { |
| + // Returns whether the update succeeded |
| + boolean scrollContainerViewTo(int xPix, int yPix); |
| + void scrollNativeTo(int xCss, int yCss); |
| + int getContainerViewScrollXPix(); |
| + int getContainerViewScrollYPix(); |
| + } |
| + |
| + final Delegate mDelegate; |
| + final double mDIPScale; |
| + boolean mIgnoreContainerViewScrollChanges; |
| + int mNativeScrollXPix; |
| + int mNativeScrollYPix; |
| + |
| + public AwScrollOffsetManager(Delegate delegate, double dipScale) { |
| + mDelegate = delegate; |
| + mDIPScale = dipScale; |
| + } |
| + |
| + public void scrollContainerViewTo(int xCss, int yCss) { |
|
joth
2013/06/18 03:19:50
don't CSS pixels normally travel in a float?
mkosiba (inactive)
2013/06/18 18:09:25
yes, they should.
|
| + mNativeScrollXPix = (int) (xCss * mDIPScale); |
| + mNativeScrollYPix = (int) (yCss * mDIPScale); |
|
joth
2013/06/18 03:19:50
maybe it's not difference either way, but I was ho
mkosiba (inactive)
2013/06/18 18:09:25
I don't think there is a really compelling reason.
joth
2013/06/19 05:34:45
I think in_process_view_renderer.cc will need to k
|
| + |
| + if (!mDelegate.scrollContainerViewTo(mNativeScrollXPix, mNativeScrollYPix)) { |
| + scrollNativeTo(mDelegate.getContainerViewScrollXPix(), |
| + mDelegate.getContainerViewScrollYPix()); |
|
joth
2013/06/18 03:19:50
the logic in this class is verging on so simple it
mkosiba (inactive)
2013/06/18 18:09:25
the main reason I opted to make this a separate cl
|
| + } |
| + } |
| + |
| + public void onContainerViewScrollChanged(int xPix, int yPix) { |
| + scrollNativeTo(xPix, yPix); |
| + } |
| + |
| + private void scrollNativeTo(int xPix, int yPix) { |
| + if (xPix == mNativeScrollXPix && yPix == mNativeScrollYPix) |
| + return; |
| + |
| + mNativeScrollXPix = xPix; |
| + mNativeScrollYPix = yPix; |
| + |
| + int xCss = (int) (xPix / mDIPScale); |
| + int yCss = (int) (yPix / mDIPScale); |
| + mDelegate.scrollNativeTo(xCss, yCss); |
| + } |
| +} |