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.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 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
173 | 173 |
174 private DefaultVideoPosterRequestHandler mDefaultVideoPosterRequestHandler; | 174 private DefaultVideoPosterRequestHandler mDefaultVideoPosterRequestHandler; |
175 | 175 |
176 // Bound method for suppling Picture instances to the AwContentsClient. Will be null if the | 176 // Bound method for suppling Picture instances to the AwContentsClient. Will be null if the |
177 // picture listener API has not yet been enabled, or if it is using invalida tion-only mode. | 177 // picture listener API has not yet been enabled, or if it is using invalida tion-only mode. |
178 private Callable<Picture> mPictureListenerContentProvider; | 178 private Callable<Picture> mPictureListenerContentProvider; |
179 | 179 |
180 private boolean mContainerViewFocused; | 180 private boolean mContainerViewFocused; |
181 private boolean mWindowFocused; | 181 private boolean mWindowFocused; |
182 | 182 |
183 private boolean mClearViewActive; | |
184 private boolean mPictureListenerEnabled; | |
185 | |
183 private AwAutofillManagerDelegate mAwAutofillManagerDelegate; | 186 private AwAutofillManagerDelegate mAwAutofillManagerDelegate; |
184 | 187 |
185 private static final class DestroyRunnable implements Runnable { | 188 private static final class DestroyRunnable implements Runnable { |
186 private int mNativeAwContents; | 189 private int mNativeAwContents; |
187 private DestroyRunnable(int nativeAwContents) { | 190 private DestroyRunnable(int nativeAwContents) { |
188 mNativeAwContents = nativeAwContents; | 191 mNativeAwContents = nativeAwContents; |
189 } | 192 } |
190 @Override | 193 @Override |
191 public void run() { | 194 public void run() { |
192 // This is a no-op if not currently attached. | 195 // This is a no-op if not currently attached. |
(...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
687 // Only valid within onDraw(). | 690 // Only valid within onDraw(). |
688 private final Rect mClipBoundsTemporary = new Rect(); | 691 private final Rect mClipBoundsTemporary = new Rect(); |
689 | 692 |
690 public void onDraw(Canvas canvas) { | 693 public void onDraw(Canvas canvas) { |
691 if (mNativeAwContents == 0) { | 694 if (mNativeAwContents == 0) { |
692 canvas.drawColor(getEffectiveBackgroundColor()); | 695 canvas.drawColor(getEffectiveBackgroundColor()); |
693 return; | 696 return; |
694 } | 697 } |
695 | 698 |
696 mScrollOffsetManager.syncScrollOffsetFromOnDraw(); | 699 mScrollOffsetManager.syncScrollOffsetFromOnDraw(); |
700 canvas.getClipBounds(mClipBoundsTemporary); | |
697 | 701 |
698 canvas.getClipBounds(mClipBoundsTemporary); | 702 if (mClearViewActive) { |
699 if (!nativeOnDraw(mNativeAwContents, canvas, canvas.isHardwareAccelerate d(), | 703 canvas.drawColor(getEffectiveBackgroundColor()); |
700 mContainerView.getScrollX(), mContainerView.getScrollY(), | 704 } else if (!nativeOnDraw(mNativeAwContents, canvas, canvas.isHardwareAcc elerated(), |
701 mClipBoundsTemporary.left, mClipBoundsTemporary.top, | 705 mContainerView.getScrollX(), mContainerView.getScrollY(), |
702 mClipBoundsTemporary.right, mClipBoundsTemporary.bottom)) { | 706 mClipBoundsTemporary.left, mClipBoundsTemporary.top, |
707 mClipBoundsTemporary.right, mClipBoundsTemporary.bottom)) { | |
703 Log.w(TAG, "nativeOnDraw failed; clearing to background color."); | 708 Log.w(TAG, "nativeOnDraw failed; clearing to background color."); |
704 canvas.drawColor(getEffectiveBackgroundColor()); | 709 canvas.drawColor(getEffectiveBackgroundColor()); |
705 } | 710 } |
706 | 711 |
707 if (mOverScrollGlow != null && mOverScrollGlow.drawEdgeGlows(canvas, | 712 if (mOverScrollGlow != null && mOverScrollGlow.drawEdgeGlows(canvas, |
708 mScrollOffsetManager.computeMaximumHorizontalScrollOffset(), | 713 mScrollOffsetManager.computeMaximumHorizontalScrollOffset(), |
709 mScrollOffsetManager.computeMaximumVerticalScrollOffset())) { | 714 mScrollOffsetManager.computeMaximumVerticalScrollOffset())) { |
710 mContainerView.invalidate(); | 715 mContainerView.invalidate(); |
711 } | 716 } |
712 } | 717 } |
713 | 718 |
714 public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { | 719 public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { |
715 mLayoutSizer.onMeasure(widthMeasureSpec, heightMeasureSpec); | 720 mLayoutSizer.onMeasure(widthMeasureSpec, heightMeasureSpec); |
716 } | 721 } |
717 | 722 |
718 public int getContentHeightCss() { | 723 public int getContentHeightCss() { |
719 return (int) Math.ceil(mContentViewCore.getContentHeightCss()); | 724 return (int) Math.ceil(mContentViewCore.getContentHeightCss()); |
720 } | 725 } |
721 | 726 |
722 public int getContentWidthCss() { | 727 public int getContentWidthCss() { |
723 return (int) Math.ceil(mContentViewCore.getContentWidthCss()); | 728 return (int) Math.ceil(mContentViewCore.getContentWidthCss()); |
724 } | 729 } |
725 | 730 |
726 public Picture capturePicture() { | 731 public Picture capturePicture() { |
727 return new AwPicture(nativeCapturePicture(mNativeAwContents, | 732 return new AwPicture(nativeCapturePicture(mNativeAwContents, |
728 mScrollOffsetManager.computeHorizontalScrollRange(), | 733 mScrollOffsetManager.computeHorizontalScrollRange(), |
729 mScrollOffsetManager.computeVerticalScrollRange())); | 734 mScrollOffsetManager.computeVerticalScrollRange())); |
730 } | 735 } |
731 | 736 |
737 public void clearView() { | |
738 mClearViewActive = true; | |
739 nativeEnableOnNewPicture(mNativeAwContents, true); | |
joth
2013/08/16 21:41:04
invalidate();
Kristian Monsen
2013/08/16 22:57:10
Done.
| |
740 } | |
741 | |
732 /** | 742 /** |
733 * Enable the onNewPicture callback. | 743 * Enable the onNewPicture callback. |
734 * @param enabled Flag to enable the callback. | 744 * @param enabled Flag to enable the callback. |
735 * @param invalidationOnly Flag to call back only on invalidation without pr oviding a picture. | 745 * @param invalidationOnly Flag to call back only on invalidation without pr oviding a picture. |
736 */ | 746 */ |
737 public void enableOnNewPicture(boolean enabled, boolean invalidationOnly) { | 747 public void enableOnNewPicture(boolean enabled, boolean invalidationOnly) { |
738 if (invalidationOnly) { | 748 if (invalidationOnly) { |
739 mPictureListenerContentProvider = null; | 749 mPictureListenerContentProvider = null; |
740 } else if (enabled && mPictureListenerContentProvider == null) { | 750 } else if (enabled && mPictureListenerContentProvider == null) { |
741 mPictureListenerContentProvider = new Callable<Picture>() { | 751 mPictureListenerContentProvider = new Callable<Picture>() { |
742 @Override | 752 @Override |
743 public Picture call() { | 753 public Picture call() { |
744 return capturePicture(); | 754 return capturePicture(); |
745 } | 755 } |
746 }; | 756 }; |
747 } | 757 } |
758 mPictureListenerEnabled = enabled; | |
759 if (mClearViewActive) { | |
760 enabled = true; | |
761 } | |
748 nativeEnableOnNewPicture(mNativeAwContents, enabled); | 762 nativeEnableOnNewPicture(mNativeAwContents, enabled); |
joth
2013/08/16 21:41:04
suggest collecting all three nativeEnableOnNewPict
Kristian Monsen
2013/08/16 22:57:10
Done.
| |
749 } | 763 } |
750 | 764 |
751 public void findAllAsync(String searchString) { | 765 public void findAllAsync(String searchString) { |
752 if (mNativeAwContents == 0) return; | 766 if (mNativeAwContents == 0) return; |
753 nativeFindAllAsync(mNativeAwContents, searchString); | 767 nativeFindAllAsync(mNativeAwContents, searchString); |
754 } | 768 } |
755 | 769 |
756 public void findNext(boolean forward) { | 770 public void findNext(boolean forward) { |
757 if (mNativeAwContents == 0) return; | 771 if (mNativeAwContents == 0) return; |
758 nativeFindNext(mNativeAwContents, forward); | 772 nativeFindNext(mNativeAwContents, forward); |
(...skipping 919 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1678 } | 1692 } |
1679 | 1693 |
1680 @CalledByNative | 1694 @CalledByNative |
1681 public void onFindResultReceived(int activeMatchOrdinal, int numberOfMatches , | 1695 public void onFindResultReceived(int activeMatchOrdinal, int numberOfMatches , |
1682 boolean isDoneCounting) { | 1696 boolean isDoneCounting) { |
1683 mContentsClient.onFindResultReceived(activeMatchOrdinal, numberOfMatches , isDoneCounting); | 1697 mContentsClient.onFindResultReceived(activeMatchOrdinal, numberOfMatches , isDoneCounting); |
1684 } | 1698 } |
1685 | 1699 |
1686 @CalledByNative | 1700 @CalledByNative |
1687 public void onNewPicture() { | 1701 public void onNewPicture() { |
1702 // Clear up any results from a previous clearView call | |
1703 mClearViewActive = false; | |
joth
2013/08/16 21:41:04
if (mClearViewActive) {
invalidate();
mClearVi
Kristian Monsen
2013/08/16 22:57:10
Done.
| |
1704 nativeEnableOnNewPicture(mNativeAwContents, mPictureListenerEnabled); | |
1705 | |
1688 // Don't call capturePicture() here but instead defer it until the poste d task runs within | 1706 // Don't call capturePicture() here but instead defer it until the poste d task runs within |
1689 // the callback helper, to avoid doubling back into the renderer composi tor in the middle | 1707 // the callback helper, to avoid doubling back into the renderer composi tor in the middle |
1690 // of the notification it is sending up to here. | 1708 // of the notification it is sending up to here. |
1691 mContentsClient.getCallbackHelper().postOnNewPicture(mPictureListenerCon tentProvider); | 1709 mContentsClient.getCallbackHelper().postOnNewPicture(mPictureListenerCon tentProvider); |
1692 } | 1710 } |
1693 | 1711 |
1694 // Called as a result of nativeUpdateLastHitTestData. | 1712 // Called as a result of nativeUpdateLastHitTestData. |
1695 @CalledByNative | 1713 @CalledByNative |
1696 private void updateHitTestData( | 1714 private void updateHitTestData( |
1697 int type, String extra, String href, String anchorText, String imgSr c) { | 1715 int type, String extra, String href, String anchorText, String imgSr c) { |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1868 private native void nativeFocusFirstNode(int nativeAwContents); | 1886 private native void nativeFocusFirstNode(int nativeAwContents); |
1869 private native void nativeSetBackgroundColor(int nativeAwContents, int color ); | 1887 private native void nativeSetBackgroundColor(int nativeAwContents, int color ); |
1870 | 1888 |
1871 private native int nativeGetAwDrawGLViewContext(int nativeAwContents); | 1889 private native int nativeGetAwDrawGLViewContext(int nativeAwContents); |
1872 private native int nativeCapturePicture(int nativeAwContents, int width, int height); | 1890 private native int nativeCapturePicture(int nativeAwContents, int width, int height); |
1873 private native void nativeEnableOnNewPicture(int nativeAwContents, boolean e nabled); | 1891 private native void nativeEnableOnNewPicture(int nativeAwContents, boolean e nabled); |
1874 | 1892 |
1875 private native void nativeInvokeGeolocationCallback( | 1893 private native void nativeInvokeGeolocationCallback( |
1876 int nativeAwContents, boolean value, String requestingFrame); | 1894 int nativeAwContents, boolean value, String requestingFrame); |
1877 } | 1895 } |
OLD | NEW |