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

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

Issue 22849016: Implement clearView to match classic (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Invalidating Created 7 years, 4 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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());
boliu 2013/09/20 20:55:49 Documentation says draws white background, not wha
Kristian Monsen 2013/09/20 21:15:17 Classic actually does the background color as well
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();
boliu 2013/08/16 23:04:55 Badness right there...should let InProcessViewRend
mkosiba (inactive) 2013/08/19 16:14:14 could you elaborate why invalidating the view is b
boliu 2013/08/19 16:21:49 InProcessViewRenderer has logic for triggering/thr
mkosiba (inactive) 2013/08/19 16:30:17 yeath, but this isn't an invalidate for the conten
Kristian Monsen 2013/09/20 19:35:56 Not related to this change :-)
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 syncOnNewPictureStateToNative();
740 mContainerView.invalidate();
boliu 2013/08/16 23:04:55 Is this invalidate needed? Documentation only says
Kristian Monsen 2013/09/20 19:35:56 The behavior we are trying to match is pretty much
741 }
742
732 /** 743 /**
733 * Enable the onNewPicture callback. 744 * Enable the onNewPicture callback.
734 * @param enabled Flag to enable the callback. 745 * @param enabled Flag to enable the callback.
735 * @param invalidationOnly Flag to call back only on invalidation without pr oviding a picture. 746 * @param invalidationOnly Flag to call back only on invalidation without pr oviding a picture.
736 */ 747 */
737 public void enableOnNewPicture(boolean enabled, boolean invalidationOnly) { 748 public void enableOnNewPicture(boolean enabled, boolean invalidationOnly) {
738 if (invalidationOnly) { 749 if (invalidationOnly) {
739 mPictureListenerContentProvider = null; 750 mPictureListenerContentProvider = null;
740 } else if (enabled && mPictureListenerContentProvider == null) { 751 } else if (enabled && mPictureListenerContentProvider == null) {
741 mPictureListenerContentProvider = new Callable<Picture>() { 752 mPictureListenerContentProvider = new Callable<Picture>() {
742 @Override 753 @Override
743 public Picture call() { 754 public Picture call() {
744 return capturePicture(); 755 return capturePicture();
745 } 756 }
746 }; 757 };
747 } 758 }
748 nativeEnableOnNewPicture(mNativeAwContents, enabled); 759 mPictureListenerEnabled = enabled;
760 syncOnNewPictureStateToNative();
761 }
762
763 private void syncOnNewPictureStateToNative() {
764 nativeEnableOnNewPicture(mNativeAwContents, mPictureListenerEnabled || m ClearViewActive);
749 } 765 }
750 766
751 public void findAllAsync(String searchString) { 767 public void findAllAsync(String searchString) {
752 if (mNativeAwContents == 0) return; 768 if (mNativeAwContents == 0) return;
753 nativeFindAllAsync(mNativeAwContents, searchString); 769 nativeFindAllAsync(mNativeAwContents, searchString);
754 } 770 }
755 771
756 public void findNext(boolean forward) { 772 public void findNext(boolean forward) {
757 if (mNativeAwContents == 0) return; 773 if (mNativeAwContents == 0) return;
758 nativeFindNext(mNativeAwContents, forward); 774 nativeFindNext(mNativeAwContents, forward);
(...skipping 919 matching lines...) Expand 10 before | Expand all | Expand 10 after
1678 } 1694 }
1679 1695
1680 @CalledByNative 1696 @CalledByNative
1681 public void onFindResultReceived(int activeMatchOrdinal, int numberOfMatches , 1697 public void onFindResultReceived(int activeMatchOrdinal, int numberOfMatches ,
1682 boolean isDoneCounting) { 1698 boolean isDoneCounting) {
1683 mContentsClient.onFindResultReceived(activeMatchOrdinal, numberOfMatches , isDoneCounting); 1699 mContentsClient.onFindResultReceived(activeMatchOrdinal, numberOfMatches , isDoneCounting);
1684 } 1700 }
1685 1701
1686 @CalledByNative 1702 @CalledByNative
1687 public void onNewPicture() { 1703 public void onNewPicture() {
1704 // Clear up any results from a previous clearView call
1705 if (mClearViewActive) {
1706 mClearViewActive = false;
1707 mContainerView.invalidate();
boliu 2013/08/16 23:04:55 Again is this needed? If cc activates, it should s
Kristian Monsen 2013/09/20 19:35:56 I think it is safe to keep it in? Remember this is
1708 syncOnNewPictureStateToNative();
1709 }
1710
1688 // Don't call capturePicture() here but instead defer it until the poste d task runs within 1711 // 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 1712 // 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. 1713 // of the notification it is sending up to here.
1691 mContentsClient.getCallbackHelper().postOnNewPicture(mPictureListenerCon tentProvider); 1714 mContentsClient.getCallbackHelper().postOnNewPicture(mPictureListenerCon tentProvider);
1692 } 1715 }
1693 1716
1694 // Called as a result of nativeUpdateLastHitTestData. 1717 // Called as a result of nativeUpdateLastHitTestData.
1695 @CalledByNative 1718 @CalledByNative
1696 private void updateHitTestData( 1719 private void updateHitTestData(
1697 int type, String extra, String href, String anchorText, String imgSr c) { 1720 int type, String extra, String href, String anchorText, String imgSr c) {
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
1868 private native void nativeFocusFirstNode(int nativeAwContents); 1891 private native void nativeFocusFirstNode(int nativeAwContents);
1869 private native void nativeSetBackgroundColor(int nativeAwContents, int color ); 1892 private native void nativeSetBackgroundColor(int nativeAwContents, int color );
1870 1893
1871 private native int nativeGetAwDrawGLViewContext(int nativeAwContents); 1894 private native int nativeGetAwDrawGLViewContext(int nativeAwContents);
1872 private native int nativeCapturePicture(int nativeAwContents, int width, int height); 1895 private native int nativeCapturePicture(int nativeAwContents, int width, int height);
1873 private native void nativeEnableOnNewPicture(int nativeAwContents, boolean e nabled); 1896 private native void nativeEnableOnNewPicture(int nativeAwContents, boolean e nabled);
1874 1897
1875 private native void nativeInvokeGeolocationCallback( 1898 private native void nativeInvokeGeolocationCallback(
1876 int nativeAwContents, boolean value, String requestingFrame); 1899 int nativeAwContents, boolean value, String requestingFrame);
1877 } 1900 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698