| OLD | NEW |
| 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.content.browser; | 5 package org.chromium.content.browser; |
| 6 | 6 |
| 7 import android.annotation.SuppressLint; | 7 import android.annotation.SuppressLint; |
| 8 import android.app.Activity; | 8 import android.app.Activity; |
| 9 import android.app.SearchManager; | 9 import android.app.SearchManager; |
| 10 import android.content.ClipboardManager; | 10 import android.content.ClipboardManager; |
| (...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 253 | 253 |
| 254 private PopupTouchHandleDrawableDelegate mTouchHandleDelegate; | 254 private PopupTouchHandleDrawableDelegate mTouchHandleDelegate; |
| 255 | 255 |
| 256 private PositionObserver mPositionObserver; | 256 private PositionObserver mPositionObserver; |
| 257 | 257 |
| 258 // Size of the viewport in physical pixels as set from onSizeChanged. | 258 // Size of the viewport in physical pixels as set from onSizeChanged. |
| 259 private int mViewportWidthPix; | 259 private int mViewportWidthPix; |
| 260 private int mViewportHeightPix; | 260 private int mViewportHeightPix; |
| 261 private int mPhysicalBackingWidthPix; | 261 private int mPhysicalBackingWidthPix; |
| 262 private int mPhysicalBackingHeightPix; | 262 private int mPhysicalBackingHeightPix; |
| 263 private int mOverdrawBottomHeightPix; | 263 private int mTopControlsLayoutHeightPix; |
| 264 private int mViewportSizeOffsetWidthPix; | |
| 265 private int mViewportSizeOffsetHeightPix; | |
| 266 | 264 |
| 267 // Cached copy of all positions and scales as reported by the renderer. | 265 // Cached copy of all positions and scales as reported by the renderer. |
| 268 private final RenderCoordinates mRenderCoordinates; | 266 private final RenderCoordinates mRenderCoordinates; |
| 269 | 267 |
| 270 // Tracks whether a selection is currently active. When applied to selected
text, indicates | 268 // Tracks whether a selection is currently active. When applied to selected
text, indicates |
| 271 // whether the last selected text is still highlighted. | 269 // whether the last selected text is still highlighted. |
| 272 private boolean mHasSelection; | 270 private boolean mHasSelection; |
| 273 private boolean mHasInsertion; | 271 private boolean mHasInsertion; |
| 274 private String mLastSelectedText; | 272 private String mLastSelectedText; |
| 275 private boolean mFocusedNodeEditable; | 273 private boolean mFocusedNodeEditable; |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 390 return mContainerView; | 388 return mContainerView; |
| 391 } | 389 } |
| 392 | 390 |
| 393 /** | 391 /** |
| 394 * @return The WebContents currently being rendered. | 392 * @return The WebContents currently being rendered. |
| 395 */ | 393 */ |
| 396 public WebContents getWebContents() { | 394 public WebContents getWebContents() { |
| 397 return mWebContents; | 395 return mWebContents; |
| 398 } | 396 } |
| 399 | 397 |
| 398 /* TODO(aelias): Remove this after downstream callers switch to setTopContro
lsLayoutHeight. */ |
| 399 public void setViewportSizeOffset(int offsetXPix, int offsetYPix) { |
| 400 setTopControlsLayoutHeight(offsetYPix); |
| 401 } |
| 402 |
| 400 /** | 403 /** |
| 401 * Specifies how much smaller the WebKit layout size should be relative to t
he size of this | 404 * Specifies how much smaller the Blink layout size should be relative to th
e size of this |
| 402 * view. | 405 * view. |
| 403 * @param offsetXPix The X amount in pixels to shrink the viewport by. | 406 * @param topControlsLayoutHeightPix The Y amount in pixels to shrink the vi
ewport by. |
| 404 * @param offsetYPix The Y amount in pixels to shrink the viewport by. | |
| 405 */ | 407 */ |
| 406 public void setViewportSizeOffset(int offsetXPix, int offsetYPix) { | 408 public void setTopControlsLayoutHeight(int topControlsLayoutHeightPix) { |
| 407 if (offsetXPix != mViewportSizeOffsetWidthPix || | 409 if (topControlsLayoutHeightPix != mTopControlsLayoutHeightPix) { |
| 408 offsetYPix != mViewportSizeOffsetHeightPix) { | 410 mTopControlsLayoutHeightPix = topControlsLayoutHeightPix; |
| 409 mViewportSizeOffsetWidthPix = offsetXPix; | |
| 410 mViewportSizeOffsetHeightPix = offsetYPix; | |
| 411 if (mNativeContentViewCore != 0) nativeWasResized(mNativeContentView
Core); | 411 if (mNativeContentViewCore != 0) nativeWasResized(mNativeContentView
Core); |
| 412 } | 412 } |
| 413 } | 413 } |
| 414 | 414 |
| 415 /** | 415 /** |
| 416 * Returns a delegate that can be used to add and remove views from the Cont
ainerView. | 416 * Returns a delegate that can be used to add and remove views from the Cont
ainerView. |
| 417 * | 417 * |
| 418 * NOTE: Use with care, as not all ContentViewCore users setup their Contain
erView in the same | 418 * NOTE: Use with care, as not all ContentViewCore users setup their Contain
erView in the same |
| 419 * way. In particular, the Android WebView has limitations on what implement
ation details can | 419 * way. In particular, the Android WebView has limitations on what implement
ation details can |
| 420 * be provided via a child view, as they are visible in the API and could in
troduce | 420 * be provided via a child view, as they are visible in the API and could in
troduce |
| (...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 925 @CalledByNative | 925 @CalledByNative |
| 926 public int getPhysicalBackingWidthPix() { return mPhysicalBackingWidthPix; } | 926 public int getPhysicalBackingWidthPix() { return mPhysicalBackingWidthPix; } |
| 927 | 927 |
| 928 /** | 928 /** |
| 929 * @return Height of underlying physical surface. | 929 * @return Height of underlying physical surface. |
| 930 */ | 930 */ |
| 931 @CalledByNative | 931 @CalledByNative |
| 932 public int getPhysicalBackingHeightPix() { return mPhysicalBackingHeightPix;
} | 932 public int getPhysicalBackingHeightPix() { return mPhysicalBackingHeightPix;
} |
| 933 | 933 |
| 934 /** | 934 /** |
| 935 * @return Amount the output surface extends past the bottom of the window v
iewport. | 935 * @return The amount that the viewport size given to Blink is shrunk by the
URL-bar.. |
| 936 */ | 936 */ |
| 937 @CalledByNative | 937 @CalledByNative |
| 938 public int getOverdrawBottomHeightPix() { return mOverdrawBottomHeightPix; } | 938 public int getTopControlsLayoutHeightPix() { return mTopControlsLayoutHeight
Pix; } |
| 939 | |
| 940 /** | |
| 941 * @return The amount to shrink the viewport relative to {@link #getViewport
WidthPix()}. | |
| 942 */ | |
| 943 @CalledByNative | |
| 944 public int getViewportSizeOffsetWidthPix() { return mViewportSizeOffsetWidth
Pix; } | |
| 945 | |
| 946 /** | |
| 947 * @return The amount to shrink the viewport relative to {@link #getViewport
HeightPix()}. | |
| 948 */ | |
| 949 @CalledByNative | |
| 950 public int getViewportSizeOffsetHeightPix() { return mViewportSizeOffsetHeig
htPix; } | |
| 951 | 939 |
| 952 /** | 940 /** |
| 953 * @see android.webkit.WebView#getContentHeight() | 941 * @see android.webkit.WebView#getContentHeight() |
| 954 */ | 942 */ |
| 955 public float getContentHeightCss() { | 943 public float getContentHeightCss() { |
| 956 return mRenderCoordinates.getContentHeightCss(); | 944 return mRenderCoordinates.getContentHeightCss(); |
| 957 } | 945 } |
| 958 | 946 |
| 959 /** | 947 /** |
| 960 * @see android.webkit.WebView#getContentWidth() | 948 * @see android.webkit.WebView#getContentWidth() |
| (...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1573 if (mPhysicalBackingWidthPix == wPix && mPhysicalBackingHeightPix == hPi
x) return; | 1561 if (mPhysicalBackingWidthPix == wPix && mPhysicalBackingHeightPix == hPi
x) return; |
| 1574 | 1562 |
| 1575 mPhysicalBackingWidthPix = wPix; | 1563 mPhysicalBackingWidthPix = wPix; |
| 1576 mPhysicalBackingHeightPix = hPix; | 1564 mPhysicalBackingHeightPix = hPix; |
| 1577 | 1565 |
| 1578 if (mNativeContentViewCore != 0) { | 1566 if (mNativeContentViewCore != 0) { |
| 1579 nativeWasResized(mNativeContentViewCore); | 1567 nativeWasResized(mNativeContentViewCore); |
| 1580 } | 1568 } |
| 1581 } | 1569 } |
| 1582 | 1570 |
| 1583 /** | 1571 /* TODO(aelias): Remove this after downstream callers disappear. */ |
| 1584 * Called when the amount the surface is overdrawing off the bottom has chan
ged. | |
| 1585 * @param overdrawHeightPix The overdraw height. | |
| 1586 */ | |
| 1587 public void onOverdrawBottomHeightChanged(int overdrawHeightPix) { | 1572 public void onOverdrawBottomHeightChanged(int overdrawHeightPix) { |
| 1588 if (mOverdrawBottomHeightPix == overdrawHeightPix) return; | |
| 1589 | |
| 1590 mOverdrawBottomHeightPix = overdrawHeightPix; | |
| 1591 | |
| 1592 if (mNativeContentViewCore != 0) { | |
| 1593 nativeWasResized(mNativeContentViewCore); | |
| 1594 } | |
| 1595 } | 1573 } |
| 1596 | 1574 |
| 1597 private void updateAfterSizeChanged() { | 1575 private void updateAfterSizeChanged() { |
| 1598 mPopupZoomer.hide(false); | 1576 mPopupZoomer.hide(false); |
| 1599 | 1577 |
| 1600 // Execute a delayed form focus operation because the OSK was brought | 1578 // Execute a delayed form focus operation because the OSK was brought |
| 1601 // up earlier. | 1579 // up earlier. |
| 1602 if (!mFocusPreOSKViewportRect.isEmpty()) { | 1580 if (!mFocusPreOSKViewportRect.isEmpty()) { |
| 1603 Rect rect = new Rect(); | 1581 Rect rect = new Rect(); |
| 1604 getContainerView().getWindowVisibleDisplayFrame(rect); | 1582 getContainerView().getWindowVisibleDisplayFrame(rect); |
| (...skipping 608 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2213 getContentViewClient().onImeStateChangeRequested(false); | 2191 getContentViewClient().onImeStateChangeRequested(false); |
| 2214 } | 2192 } |
| 2215 | 2193 |
| 2216 @SuppressWarnings("unused") | 2194 @SuppressWarnings("unused") |
| 2217 @CalledByNative | 2195 @CalledByNative |
| 2218 private void updateFrameInfo( | 2196 private void updateFrameInfo( |
| 2219 float scrollOffsetX, float scrollOffsetY, | 2197 float scrollOffsetX, float scrollOffsetY, |
| 2220 float pageScaleFactor, float minPageScaleFactor, float maxPageScaleF
actor, | 2198 float pageScaleFactor, float minPageScaleFactor, float maxPageScaleF
actor, |
| 2221 float contentWidth, float contentHeight, | 2199 float contentWidth, float contentHeight, |
| 2222 float viewportWidth, float viewportHeight, | 2200 float viewportWidth, float viewportHeight, |
| 2223 float controlsOffsetYCss, float contentOffsetYCss, | 2201 float controlsOffsetYCss, float contentOffsetYCss) { |
| 2224 float overdrawBottomHeightCss) { | |
| 2225 TraceEvent.begin("ContentViewCore:updateFrameInfo"); | 2202 TraceEvent.begin("ContentViewCore:updateFrameInfo"); |
| 2226 // Adjust contentWidth/Height to be always at least as big as | 2203 // Adjust contentWidth/Height to be always at least as big as |
| 2227 // the actual viewport (as set by onSizeChanged). | 2204 // the actual viewport (as set by onSizeChanged). |
| 2228 final float deviceScale = mRenderCoordinates.getDeviceScaleFactor(); | 2205 final float deviceScale = mRenderCoordinates.getDeviceScaleFactor(); |
| 2229 contentWidth = Math.max(contentWidth, | 2206 contentWidth = Math.max(contentWidth, |
| 2230 mViewportWidthPix / (deviceScale * pageScaleFactor)); | 2207 mViewportWidthPix / (deviceScale * pageScaleFactor)); |
| 2231 contentHeight = Math.max(contentHeight, | 2208 contentHeight = Math.max(contentHeight, |
| 2232 mViewportHeightPix / (deviceScale * pageScaleFactor)); | 2209 mViewportHeightPix / (deviceScale * pageScaleFactor)); |
| 2233 final float contentOffsetYPix = mRenderCoordinates.fromDipToPix(contentO
ffsetYCss); | 2210 final float contentOffsetYPix = mRenderCoordinates.fromDipToPix(contentO
ffsetYCss); |
| 2234 | 2211 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2273 mGestureStateListenersIterator.next().onScrollOffsetOrExtentChan
ged( | 2250 mGestureStateListenersIterator.next().onScrollOffsetOrExtentChan
ged( |
| 2274 computeVerticalScrollOffset(), | 2251 computeVerticalScrollOffset(), |
| 2275 computeVerticalScrollExtent()); | 2252 computeVerticalScrollExtent()); |
| 2276 } | 2253 } |
| 2277 } | 2254 } |
| 2278 | 2255 |
| 2279 if (needUpdateZoomControls) mZoomControlsDelegate.updateZoomControls(); | 2256 if (needUpdateZoomControls) mZoomControlsDelegate.updateZoomControls(); |
| 2280 | 2257 |
| 2281 // Update offsets for fullscreen. | 2258 // Update offsets for fullscreen. |
| 2282 final float controlsOffsetPix = controlsOffsetYCss * deviceScale; | 2259 final float controlsOffsetPix = controlsOffsetYCss * deviceScale; |
| 2283 final float overdrawBottomHeightPix = overdrawBottomHeightCss * deviceSc
ale; | 2260 // TODO(aelias): Remove last argument after downstream removes it. |
| 2284 getContentViewClient().onOffsetsForFullscreenChanged( | 2261 getContentViewClient().onOffsetsForFullscreenChanged( |
| 2285 controlsOffsetPix, contentOffsetYPix, overdrawBottomHeightPix); | 2262 controlsOffsetPix, contentOffsetYPix, 0); |
| 2286 | 2263 |
| 2287 if (mBrowserAccessibilityManager != null) { | 2264 if (mBrowserAccessibilityManager != null) { |
| 2288 mBrowserAccessibilityManager.notifyFrameInfoInitialized(); | 2265 mBrowserAccessibilityManager.notifyFrameInfoInitialized(); |
| 2289 } | 2266 } |
| 2290 TraceEvent.end("ContentViewCore:updateFrameInfo"); | 2267 TraceEvent.end("ContentViewCore:updateFrameInfo"); |
| 2291 } | 2268 } |
| 2292 | 2269 |
| 2293 @CalledByNative | 2270 @CalledByNative |
| 2294 private void updateImeAdapter(long nativeImeAdapterAndroid, int textInputTyp
e, | 2271 private void updateImeAdapter(long nativeImeAdapterAndroid, int textInputTyp
e, |
| 2295 int textInputFlags, String text, int selectionStart, int selectionEn
d, | 2272 int textInputFlags, String text, int selectionStart, int selectionEn
d, |
| (...skipping 911 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3207 private native void nativeWasResized(long nativeContentViewCoreImpl); | 3184 private native void nativeWasResized(long nativeContentViewCoreImpl); |
| 3208 | 3185 |
| 3209 private native void nativeSetAccessibilityEnabled( | 3186 private native void nativeSetAccessibilityEnabled( |
| 3210 long nativeContentViewCoreImpl, boolean enabled); | 3187 long nativeContentViewCoreImpl, boolean enabled); |
| 3211 | 3188 |
| 3212 private native void nativeExtractSmartClipData(long nativeContentViewCoreImp
l, | 3189 private native void nativeExtractSmartClipData(long nativeContentViewCoreImp
l, |
| 3213 int x, int y, int w, int h); | 3190 int x, int y, int w, int h); |
| 3214 | 3191 |
| 3215 private native void nativeSetBackgroundOpaque(long nativeContentViewCoreImpl
, boolean opaque); | 3192 private native void nativeSetBackgroundOpaque(long nativeContentViewCoreImpl
, boolean opaque); |
| 3216 } | 3193 } |
| OLD | NEW |