Chromium Code Reviews| Index: android_webview/java/src/org/chromium/android_webview/AwContents.java |
| diff --git a/android_webview/java/src/org/chromium/android_webview/AwContents.java b/android_webview/java/src/org/chromium/android_webview/AwContents.java |
| index abebba74d0243ed09f218e36d21cdf6229ec8205..a04147f280d24e72ba239c700345083a37243200 100644 |
| --- a/android_webview/java/src/org/chromium/android_webview/AwContents.java |
| +++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java |
| @@ -359,6 +359,10 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| // Do not use directly, call isDestroyed() instead. |
| private boolean mIsDestroyed; |
| + // True if this AwContents is in no operation state. |
| + // Do not use directly, call isNoOperation() instead. |
| + private boolean mIsNoOperation; |
|
Tobias Sargeant
2017/01/13 10:48:38
Given that this is only set to true, and not reset
michaelbai
2017/01/13 21:01:38
The name indicates what we need to do if it is tru
|
| + |
| private static String sCurrentLocales = ""; |
| private static final class AwContentsDestroyRunnable implements Runnable { |
| @@ -580,13 +584,14 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| @Override |
| public void scrollNativeTo(int x, int y) { |
| - if (!isDestroyed(NO_WARN)) nativeScrollTo(mNativeAwContents, x, y); |
| + if (!isDestroyedOrNoOperation(NO_WARN)) nativeScrollTo(mNativeAwContents, x, y); |
| } |
| @Override |
| public void smoothScroll(int targetX, int targetY, long durationMs) { |
| - if (!isDestroyed(NO_WARN)) nativeSmoothScroll( |
| - mNativeAwContents, targetX, targetY, durationMs); |
| + if (!isDestroyedOrNoOperation(NO_WARN)) { |
| + nativeSmoothScroll(mNativeAwContents, targetX, targetY, durationMs); |
| + } |
| } |
| @Override |
| @@ -659,7 +664,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
| @Override |
| public void run() { |
| - if (isDestroyed(NO_WARN)) return; |
| + if (isDestroyedOrNoOperation(NO_WARN)) return; |
| if (level >= TRIM_MEMORY_MODERATE) { |
| mInitialFunctor.deleteHardwareRenderer(); |
| if (mFullScreenFunctor != null) { |
| @@ -750,7 +755,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| new AwContentsClientCallbackHelper.CancelCallbackPoller() { |
| @Override |
| public boolean cancelAllCallbacks() { |
| - return AwContents.this.isDestroyed(NO_WARN); |
| + return AwContents.this.isDestroyedOrNoOperation(NO_WARN); |
| } |
| }); |
| mAwViewMethods = new AwViewMethodsImpl(); |
| @@ -781,7 +786,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| @Override |
| public void onGestureZoomSupportChanged( |
| boolean supportsDoubleTapZoom, boolean supportsMultiTouchZoom) { |
| - if (isDestroyed(NO_WARN)) return; |
| + if (isDestroyedOrNoOperation(NO_WARN)) return; |
| mContentViewCore.updateDoubleTapSupport(supportsDoubleTapZoom); |
| mContentViewCore.updateMultiTouchZoomSupport(supportsMultiTouchZoom); |
| } |
| @@ -827,7 +832,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| View enterFullScreen() { |
| assert !isFullScreen(); |
| - if (isDestroyed(NO_WARN)) return null; |
| + if (isDestroyedOrNoOperation(NO_WARN)) return null; |
| // Detach to tear down the GL functor if this is still associated with the old |
| // container view. It will be recreated during the next call to onDraw attached to |
| @@ -858,7 +863,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| * Called when the app has requested to exit fullscreen. |
| */ |
| void requestExitFullscreen() { |
| - if (!isDestroyed(NO_WARN)) mContentViewCore.getWebContents().exitFullscreen(); |
| + if (!isDestroyedOrNoOperation(NO_WARN)) mContentViewCore.getWebContents().exitFullscreen(); |
| } |
| /** |
| @@ -866,7 +871,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| * in the WebView. |
| */ |
| void exitFullScreen() { |
| - if (!isFullScreen() || isDestroyed(NO_WARN)) { |
| + if (!isFullScreen() || isDestroyedOrNoOperation(NO_WARN)) { |
| // exitFullScreen() can be called without a prior call to enterFullScreen() if a |
| // "misbehave" app overrides onShowCustomView but does not add the custom view to |
| // the window. Exiting avoids a crash. |
| @@ -1084,7 +1089,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| * provide the AwContents to host the pop up content. |
| */ |
| public void supplyContentsForPopup(AwContents newContents) { |
| - if (isDestroyed(WARN)) return; |
| + if (isDestroyedOrNoOperation(WARN)) return; |
| long popupNativeAwContents = nativeReleasePopupAwContents(mNativeAwContents); |
| if (popupNativeAwContents == 0) { |
| Log.w(TAG, "Popup WebView bind failed: no pending content."); |
| @@ -1102,7 +1107,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| // Recap: supplyContentsForPopup() is called on the parent window's content, this method is |
| // called on the popup window's content. |
| private void receivePopupContents(long popupNativeAwContents) { |
| - if (isDestroyed(WARN)) return; |
| + if (isDestroyedOrNoOperation(WARN)) return; |
| mDeferredShouldOverrideUrlLoadingIsPendingForPopup = true; |
| // Save existing view state. |
| final boolean wasAttached = mIsAttachedToWindow; |
| @@ -1157,6 +1162,32 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| } |
| } |
| + @CalledByNative |
| + private void onRenderProcessGone(int childProcessID) { |
| + // This is the first callback we got for render process gone, we can't destroy the WebView |
| + // now because we need to get next callback onRenderProcessGoneWithDetail() to know whether |
| + // render process crashed or was killed. |
| + // However, we should make WebView no operation to avoid being in weird states. |
| + // TODO: We might be able to combine destroyed and no operation states. |
| + mIsNoOperation = true; |
| + } |
| + |
| + @CalledByNative |
| + private boolean onRenderProcessGoneWithDetail(int childProcessID, boolean crashed) { |
| + // Once WebView have multiple render processes, we might provide URL that loaded by render |
| + // process as detail. |
|
michaelbai
2017/01/12 22:54:24
It doesn't have to be done in this patch, I will s
|
| + if (isDestroyed(NO_WARN)) return false; |
| + return mContentsClient.onRenderProcessGone(new AwRenderProcessGoneDetail(crashed)); |
| + } |
| + |
| + private boolean isNoOperation() { |
| + return mIsNoOperation; |
| + } |
| + |
| + private boolean isDestroyedOrNoOperation(int warnIfDestroyed) { |
|
Torne
2017/01/13 13:24:08
It looks like you've changed every place that call
michaelbai
2017/01/13 21:01:38
Do you mean we still use isDestroyed() everywhere,
Torne
2017/01/16 12:20:32
If none of the callers actually care about the dif
michaelbai
2017/01/17 17:09:42
I don't they are useful or not, there are two plac
|
| + return isDestroyed(warnIfDestroyed) || isNoOperation(); |
| + } |
| + |
| /** |
| * Destroys this object and deletes its native counterpart. |
| */ |
| @@ -1177,6 +1208,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| // Need to call detach to avoid leaks because the real detach later will be ignored. |
| onDetachedFromWindow(); |
| } |
| + mIsNoOperation = true; |
|
Tobias Sargeant
2017/01/13 10:48:38
No need to set this to true here (especially if it
michaelbai
2017/01/13 21:01:38
Let's see if we will change the name
|
| mIsDestroyed = true; |
| mHandler.post(new Runnable() { |
| @Override |
| @@ -1255,7 +1287,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| } |
| public AwPdfExporter getPdfExporter() { |
| - if (isDestroyed(WARN)) return null; |
| + if (isDestroyedOrNoOperation(WARN)) return null; |
| if (mAwPdfExporter == null) { |
| mAwPdfExporter = new AwPdfExporter(mContainerView); |
| nativeCreatePdfExporter(mNativeAwContents, mAwPdfExporter); |
| @@ -1291,7 +1323,9 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| * to ensure backwards compatible behavior. |
| */ |
| public void disableJavascriptInterfacesInspection() { |
| - if (!isDestroyed(WARN)) mContentViewCore.setAllowJavascriptInterfacesInspection(false); |
| + if (!isDestroyedOrNoOperation(WARN)) { |
| + mContentViewCore.setAllowJavascriptInterfacesInspection(false); |
| + } |
| } |
| /** |
| @@ -1336,18 +1370,18 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| } |
| public int getContentHeightCss() { |
| - if (isDestroyed(WARN)) return 0; |
| + if (isDestroyedOrNoOperation(WARN)) return 0; |
| return (int) Math.ceil(mContentHeightDip); |
| } |
| public int getContentWidthCss() { |
| - if (isDestroyed(WARN)) return 0; |
| + if (isDestroyedOrNoOperation(WARN)) return 0; |
| return (int) Math.ceil(mContentWidthDip); |
| } |
| public Picture capturePicture() { |
| if (TRACE) Log.i(TAG, "%s capturePicture", this); |
| - if (isDestroyed(WARN)) return null; |
| + if (isDestroyedOrNoOperation(WARN)) return null; |
| return new AwPicture(nativeCapturePicture(mNativeAwContents, |
| mScrollOffsetManager.computeHorizontalScrollRange(), |
| mScrollOffsetManager.computeVerticalScrollRange())); |
| @@ -1355,7 +1389,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| public void clearView() { |
| if (TRACE) Log.i(TAG, "%s clearView", this); |
| - if (!isDestroyed(WARN)) nativeClearView(mNativeAwContents); |
| + if (!isDestroyedOrNoOperation(WARN)) nativeClearView(mNativeAwContents); |
| } |
| /** |
| @@ -1365,7 +1399,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public void enableOnNewPicture(boolean enabled, boolean invalidationOnly) { |
| if (TRACE) Log.i(TAG, "%s enableOnNewPicture=%s", this, enabled); |
| - if (isDestroyed(WARN)) return; |
| + if (isDestroyedOrNoOperation(WARN)) return; |
| if (invalidationOnly) { |
| mPictureListenerContentProvider = null; |
| } else if (enabled && mPictureListenerContentProvider == null) { |
| @@ -1381,30 +1415,30 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| public void findAllAsync(String searchString) { |
| if (TRACE) Log.i(TAG, "%s findAllAsync", this); |
| - if (!isDestroyed(WARN)) nativeFindAllAsync(mNativeAwContents, searchString); |
| + if (!isDestroyedOrNoOperation(WARN)) nativeFindAllAsync(mNativeAwContents, searchString); |
| } |
| public void findNext(boolean forward) { |
| if (TRACE) Log.i(TAG, "%s findNext", this); |
| - if (!isDestroyed(WARN)) nativeFindNext(mNativeAwContents, forward); |
| + if (!isDestroyedOrNoOperation(WARN)) nativeFindNext(mNativeAwContents, forward); |
| } |
| public void clearMatches() { |
| if (TRACE) Log.i(TAG, "%s clearMatches", this); |
| - if (!isDestroyed(WARN)) nativeClearMatches(mNativeAwContents); |
| + if (!isDestroyedOrNoOperation(WARN)) nativeClearMatches(mNativeAwContents); |
| } |
| /** |
| * @return load progress of the WebContents. |
| */ |
| public int getMostRecentProgress() { |
| - if (isDestroyed(WARN)) return 0; |
| + if (isDestroyedOrNoOperation(WARN)) return 0; |
| // WebContentsDelegateAndroid conveniently caches the most recent notified value for us. |
| return mWebContentsDelegate.getMostRecentProgress(); |
| } |
| public Bitmap getFavicon() { |
| - if (isDestroyed(WARN)) return null; |
| + if (isDestroyedOrNoOperation(WARN)) return null; |
| return mFavicon; |
| } |
| @@ -1423,7 +1457,9 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| ThreadUtils.runOnUiThread(new Runnable() { |
| @Override |
| public void run() { |
| - if (!isDestroyed(NO_WARN)) nativeAddVisitedLinks(mNativeAwContents, value); |
| + if (!isDestroyedOrNoOperation(NO_WARN)) { |
| + nativeAddVisitedLinks(mNativeAwContents, value); |
| + } |
| } |
| }); |
| } |
| @@ -1436,7 +1472,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public void loadUrl(String url, Map<String, String> additionalHttpHeaders) { |
| if (TRACE) Log.i(TAG, "%s loadUrl(extra headers)=%s", this, url); |
| - if (isDestroyed(WARN)) return; |
| + if (isDestroyedOrNoOperation(WARN)) return; |
| // TODO: We may actually want to do some sanity checks here (like filter about://chrome). |
| // For backwards compatibility, apps targeting less than K will have JS URLs evaluated |
| @@ -1462,7 +1498,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public void loadUrl(String url) { |
| if (TRACE) Log.i(TAG, "%s loadUrl=%s", this, url); |
| - if (isDestroyed(WARN)) return; |
| + if (isDestroyedOrNoOperation(WARN)) return; |
| // Early out to match old WebView implementation |
| if (url == null) { |
| return; |
| @@ -1475,7 +1511,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public void postUrl(String url, byte[] postData) { |
| if (TRACE) Log.i(TAG, "%s postUrl=%s", this, url); |
| - if (isDestroyed(WARN)) return; |
| + if (isDestroyedOrNoOperation(WARN)) return; |
| LoadUrlParams params = LoadUrlParams.createLoadHttpPostParams(url, postData); |
| Map<String, String> headers = new HashMap<String, String>(); |
| headers.put("Content-Type", "application/x-www-form-urlencoded"); |
| @@ -1508,7 +1544,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public void loadData(String data, String mimeType, String encoding) { |
| if (TRACE) Log.i(TAG, "%s loadData", this); |
| - if (isDestroyed(WARN)) return; |
| + if (isDestroyedOrNoOperation(WARN)) return; |
| loadUrl(LoadUrlParams.createLoadDataParams( |
| fixupData(data), fixupMimeType(mimeType), isBase64Encoded(encoding))); |
| } |
| @@ -1519,7 +1555,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| public void loadDataWithBaseURL( |
| String baseUrl, String data, String mimeType, String encoding, String historyUrl) { |
| if (TRACE) Log.i(TAG, "%s loadDataWithBaseURL=%s", this, baseUrl); |
| - if (isDestroyed(WARN)) return; |
| + if (isDestroyedOrNoOperation(WARN)) return; |
| data = fixupData(data); |
| mimeType = fixupMimeType(mimeType); |
| @@ -1625,7 +1661,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| * @return The URL of the current page or null if it's empty. |
| */ |
| public String getUrl() { |
| - if (isDestroyed(WARN)) return null; |
| + if (isDestroyedOrNoOperation(WARN)) return null; |
| String url = mWebContents.getUrl(); |
| if (url == null || url.trim().isEmpty()) return null; |
| return url; |
| @@ -1638,7 +1674,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| * @return The URL of the current page or null if it's empty. |
| */ |
| public String getLastCommittedUrl() { |
| - if (isDestroyed(NO_WARN)) return null; |
| + if (isDestroyedOrNoOperation(NO_WARN)) return null; |
| String url = mWebContents.getLastCommittedUrl(); |
| if (url == null || url.trim().isEmpty()) return null; |
| return url; |
| @@ -1650,7 +1686,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| public void setBackgroundColor(int color) { |
| mBaseBackgroundColor = color; |
| - if (!isDestroyed(WARN)) nativeSetBackgroundColor(mNativeAwContents, color); |
| + if (!isDestroyedOrNoOperation(WARN)) nativeSetBackgroundColor(mNativeAwContents, color); |
| } |
| /** |
| @@ -1664,7 +1700,8 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| // Do not ask the ContentViewCore for the background color, as it will always |
| // report white prior to initial navigation or post destruction, whereas we want |
| // to use the client supplied base value in those cases. |
| - if (isDestroyed(NO_WARN) || !mContentsClient.isCachedRendererBackgroundColorValid()) { |
| + if (isDestroyedOrNoOperation(NO_WARN) |
| + || !mContentsClient.isCachedRendererBackgroundColorValid()) { |
| return mBaseBackgroundColor; |
| } |
| return mContentsClient.getCachedRendererBackgroundColor(); |
| @@ -1760,7 +1797,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| * @see android.webkit.WebView#requestChildRectangleOnScreen(View, Rect, boolean) |
| */ |
| public boolean requestChildRectangleOnScreen(View child, Rect rect, boolean immediate) { |
| - if (isDestroyed(WARN)) return false; |
| + if (isDestroyedOrNoOperation(WARN)) return false; |
| return mScrollOffsetManager.requestChildRectangleOnScreen( |
| child.getLeft() - child.getScrollX(), child.getTop() - child.getScrollY(), |
| rect, immediate); |
| @@ -1813,7 +1850,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public void stopLoading() { |
| if (TRACE) Log.i(TAG, "%s stopLoading", this); |
| - if (!isDestroyed(WARN)) mWebContents.stop(); |
| + if (!isDestroyedOrNoOperation(WARN)) mWebContents.stop(); |
| } |
| /** |
| @@ -1821,14 +1858,14 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public void reload() { |
| if (TRACE) Log.i(TAG, "%s reload", this); |
| - if (!isDestroyed(WARN)) mNavigationController.reload(true); |
| + if (!isDestroyedOrNoOperation(WARN)) mNavigationController.reload(true); |
| } |
| /** |
| * @see android.webkit.WebView#canGoBack() |
| */ |
| public boolean canGoBack() { |
| - return isDestroyed(WARN) ? false : mNavigationController.canGoBack(); |
| + return isDestroyedOrNoOperation(WARN) ? false : mNavigationController.canGoBack(); |
| } |
| /** |
| @@ -1836,14 +1873,14 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public void goBack() { |
| if (TRACE) Log.i(TAG, "%s goBack", this); |
| - if (!isDestroyed(WARN)) mNavigationController.goBack(); |
| + if (!isDestroyedOrNoOperation(WARN)) mNavigationController.goBack(); |
| } |
| /** |
| * @see android.webkit.WebView#canGoForward() |
| */ |
| public boolean canGoForward() { |
| - return isDestroyed(WARN) ? false : mNavigationController.canGoForward(); |
| + return isDestroyedOrNoOperation(WARN) ? false : mNavigationController.canGoForward(); |
| } |
| /** |
| @@ -1851,14 +1888,14 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public void goForward() { |
| if (TRACE) Log.i(TAG, "%s goForward", this); |
| - if (!isDestroyed(WARN)) mNavigationController.goForward(); |
| + if (!isDestroyedOrNoOperation(WARN)) mNavigationController.goForward(); |
| } |
| /** |
| * @see android.webkit.WebView#canGoBackOrForward(int) |
| */ |
| public boolean canGoBackOrForward(int steps) { |
| - return isDestroyed(WARN) ? false : mNavigationController.canGoToOffset(steps); |
| + return isDestroyedOrNoOperation(WARN) ? false : mNavigationController.canGoToOffset(steps); |
| } |
| /** |
| @@ -1866,7 +1903,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public void goBackOrForward(int steps) { |
| if (TRACE) Log.i(TAG, "%s goBackOrForwad=%d", this, steps); |
| - if (!isDestroyed(WARN)) mNavigationController.goToOffset(steps); |
| + if (!isDestroyedOrNoOperation(WARN)) mNavigationController.goToOffset(steps); |
| } |
| /** |
| @@ -1874,7 +1911,9 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public void pauseTimers() { |
| if (TRACE) Log.i(TAG, "%s pauseTimers", this); |
| - if (!isDestroyed(WARN)) ContentViewStatics.setWebKitSharedTimersSuspended(true); |
| + if (!isDestroyedOrNoOperation(WARN)) { |
| + ContentViewStatics.setWebKitSharedTimersSuspended(true); |
| + } |
| } |
| /** |
| @@ -1882,7 +1921,9 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public void resumeTimers() { |
| if (TRACE) Log.i(TAG, "%s resumeTimers", this); |
| - if (!isDestroyed(WARN)) ContentViewStatics.setWebKitSharedTimersSuspended(false); |
| + if (!isDestroyedOrNoOperation(WARN)) { |
| + ContentViewStatics.setWebKitSharedTimersSuspended(false); |
| + } |
| } |
| /** |
| @@ -1890,7 +1931,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public void onPause() { |
| if (TRACE) Log.i(TAG, "%s onPause", this); |
| - if (mIsPaused || isDestroyed(NO_WARN)) return; |
| + if (mIsPaused || isDestroyedOrNoOperation(NO_WARN)) return; |
| mIsPaused = true; |
| nativeSetIsPaused(mNativeAwContents, mIsPaused); |
| @@ -1903,7 +1944,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public void onResume() { |
| if (TRACE) Log.i(TAG, "%s onResume", this); |
| - if (!mIsPaused || isDestroyed(NO_WARN)) return; |
| + if (!mIsPaused || isDestroyedOrNoOperation(NO_WARN)) return; |
| mIsPaused = false; |
| nativeSetIsPaused(mNativeAwContents, mIsPaused); |
| updateContentViewCoreVisibility(); |
| @@ -1913,7 +1954,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| * @see android.webkit.WebView#isPaused() |
| */ |
| public boolean isPaused() { |
| - return isDestroyed(WARN) ? false : mIsPaused; |
| + return isDestroyedOrNoOperation(WARN) ? false : mIsPaused; |
| } |
| /** |
| @@ -1952,11 +1993,11 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public void clearCache(boolean includeDiskFiles) { |
| if (TRACE) Log.i(TAG, "%s clearCache", this); |
| - if (!isDestroyed(WARN)) nativeClearCache(mNativeAwContents, includeDiskFiles); |
| + if (!isDestroyedOrNoOperation(WARN)) nativeClearCache(mNativeAwContents, includeDiskFiles); |
| } |
| public void documentHasImages(Message message) { |
| - if (!isDestroyed(WARN)) nativeDocumentHasImages(mNativeAwContents, message); |
| + if (!isDestroyedOrNoOperation(WARN)) nativeDocumentHasImages(mNativeAwContents, message); |
| } |
| public void saveWebArchive( |
| @@ -1982,7 +2023,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| } |
| public String getOriginalUrl() { |
| - if (isDestroyed(WARN)) return null; |
| + if (isDestroyedOrNoOperation(WARN)) return null; |
| NavigationHistory history = mNavigationController.getNavigationHistory(); |
| int currentIndex = history.getCurrentEntryIndex(); |
| if (currentIndex >= 0 && currentIndex < history.getEntryCount()) { |
| @@ -1995,14 +2036,14 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| * @see ContentViewCore#getNavigationHistory() |
| */ |
| public NavigationHistory getNavigationHistory() { |
| - return isDestroyed(WARN) ? null : mNavigationController.getNavigationHistory(); |
| + return isDestroyedOrNoOperation(WARN) ? null : mNavigationController.getNavigationHistory(); |
| } |
| /** |
| * @see android.webkit.WebView#getTitle() |
| */ |
| public String getTitle() { |
| - return isDestroyed(WARN) ? null : mWebContents.getTitle(); |
| + return isDestroyedOrNoOperation(WARN) ? null : mWebContents.getTitle(); |
| } |
| /** |
| @@ -2010,14 +2051,14 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public void clearHistory() { |
| if (TRACE) Log.i(TAG, "%s clearHistory", this); |
| - if (!isDestroyed(WARN)) mNavigationController.clearHistory(); |
| + if (!isDestroyedOrNoOperation(WARN)) mNavigationController.clearHistory(); |
| } |
| /** |
| * @see android.webkit.WebView#getCertificate() |
| */ |
| public SslCertificate getCertificate() { |
| - return isDestroyed(WARN) ? null |
| + return isDestroyedOrNoOperation(WARN) ? null |
| : SslUtil.getCertificateFromDerBytes(nativeGetCertificate(mNativeAwContents)); |
| } |
| @@ -2026,7 +2067,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public void clearSslPreferences() { |
| if (TRACE) Log.i(TAG, "%s clearSslPreferences", this); |
| - if (!isDestroyed(WARN)) mNavigationController.clearSslPreferences(); |
| + if (!isDestroyedOrNoOperation(WARN)) mNavigationController.clearSslPreferences(); |
| } |
| /** |
| @@ -2037,7 +2078,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public HitTestData getLastHitTestResult() { |
| if (TRACE) Log.i(TAG, "%s getLastHitTestResult", this); |
| - if (isDestroyed(WARN)) return null; |
| + if (isDestroyedOrNoOperation(WARN)) return null; |
| nativeUpdateLastHitTestData(mNativeAwContents); |
| return mPossiblyStaleHitTestData; |
| } |
| @@ -2047,7 +2088,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public void requestFocusNodeHref(Message msg) { |
| if (TRACE) Log.i(TAG, "%s requestFocusNodeHref", this); |
| - if (msg == null || isDestroyed(WARN)) return; |
| + if (msg == null || isDestroyedOrNoOperation(WARN)) return; |
| nativeUpdateLastHitTestData(mNativeAwContents); |
| Bundle data = msg.getData(); |
| @@ -2067,7 +2108,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public void requestImageRef(Message msg) { |
| if (TRACE) Log.i(TAG, "%s requestImageRef", this); |
| - if (msg == null || isDestroyed(WARN)) return; |
| + if (msg == null || isDestroyedOrNoOperation(WARN)) return; |
| nativeUpdateLastHitTestData(mNativeAwContents); |
| Bundle data = msg.getData(); |
| @@ -2088,7 +2129,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| * the screen density factor. See CTS WebViewTest.testSetInitialScale. |
| */ |
| public float getScale() { |
| - if (isDestroyed(WARN)) return 1; |
| + if (isDestroyedOrNoOperation(WARN)) return 1; |
| return mPageScaleFactor * mContentViewCore.getDeviceScaleFactor(); |
| } |
| @@ -2097,7 +2138,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public void flingScroll(int velocityX, int velocityY) { |
| if (TRACE) Log.i(TAG, "%s flingScroll", this); |
| - if (isDestroyed(WARN)) return; |
| + if (isDestroyedOrNoOperation(WARN)) return; |
| mContentViewCore.flingViewport(SystemClock.uptimeMillis(), -velocityX, -velocityY); |
| } |
| @@ -2106,7 +2147,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public boolean pageUp(boolean top) { |
| if (TRACE) Log.i(TAG, "%s pageUp", this); |
| - if (isDestroyed(WARN)) return false; |
| + if (isDestroyedOrNoOperation(WARN)) return false; |
| return mScrollOffsetManager.pageUp(top); |
| } |
| @@ -2115,7 +2156,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public boolean pageDown(boolean bottom) { |
| if (TRACE) Log.i(TAG, "%s pageDown", this); |
| - if (isDestroyed(WARN)) return false; |
| + if (isDestroyedOrNoOperation(WARN)) return false; |
| return mScrollOffsetManager.pageDown(bottom); |
| } |
| @@ -2125,7 +2166,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| // This method uses the term 'zoom' for legacy reasons, but relates |
| // to what chrome calls the 'page scale factor'. |
| public boolean canZoomIn() { |
| - if (isDestroyed(WARN)) return false; |
| + if (isDestroyedOrNoOperation(WARN)) return false; |
| final float zoomInExtent = mMaxPageScaleFactor - mPageScaleFactor; |
| return zoomInExtent > ZOOM_CONTROLS_EPSILON; |
| } |
| @@ -2136,7 +2177,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| // This method uses the term 'zoom' for legacy reasons, but relates |
| // to what chrome calls the 'page scale factor'. |
| public boolean canZoomOut() { |
| - if (isDestroyed(WARN)) return false; |
| + if (isDestroyedOrNoOperation(WARN)) return false; |
| final float zoomOutExtent = mPageScaleFactor - mMinPageScaleFactor; |
| return zoomOutExtent > ZOOM_CONTROLS_EPSILON; |
| } |
| @@ -2173,7 +2214,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| // This method uses the term 'zoom' for legacy reasons, but relates |
| // to what chrome calls the 'page scale factor'. |
| public void zoomBy(float delta) { |
| - if (isDestroyed(WARN)) return; |
| + if (isDestroyedOrNoOperation(WARN)) return; |
| if (delta < 0.01f || delta > 100.0f) { |
| throw new IllegalStateException("zoom delta value outside [0.01, 100] range."); |
| } |
| @@ -2185,14 +2226,14 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public void invokeZoomPicker() { |
| if (TRACE) Log.i(TAG, "%s invokeZoomPicker", this); |
| - if (!isDestroyed(WARN)) mZoomControls.invokeZoomPicker(); |
| + if (!isDestroyedOrNoOperation(WARN)) mZoomControls.invokeZoomPicker(); |
| } |
| /** |
| * @see android.webkit.WebView#preauthorizePermission(Uri, long) |
| */ |
| public void preauthorizePermission(Uri origin, long resources) { |
| - if (isDestroyed(NO_WARN)) return; |
| + if (isDestroyedOrNoOperation(NO_WARN)) return; |
| nativePreauthorizePermission(mNativeAwContents, origin.toString(), resources); |
| } |
| @@ -2201,7 +2242,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public void evaluateJavaScript(String script, final ValueCallback<String> callback) { |
| if (TRACE) Log.i(TAG, "%s evaluateJavascript=%s", this, script); |
| - if (isDestroyed(WARN)) return; |
| + if (isDestroyedOrNoOperation(WARN)) return; |
| JavaScriptCallback jsCallback = null; |
| if (callback != null) { |
| jsCallback = new JavaScriptCallback() { |
| @@ -2217,7 +2258,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| public void evaluateJavaScriptForTests(String script, final ValueCallback<String> callback) { |
| if (TRACE) Log.i(TAG, "%s evaluateJavascriptForTests=%s", this, script); |
| - if (isDestroyed(NO_WARN)) return; |
| + if (isDestroyedOrNoOperation(NO_WARN)) return; |
| JavaScriptCallback jsCallback = null; |
| if (callback != null) { |
| jsCallback = new JavaScriptCallback() { |
| @@ -2243,7 +2284,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public void postMessageToFrame( |
| String frameName, String message, String targetOrigin, MessagePort[] sentPorts) { |
| - if (isDestroyed(WARN)) return; |
| + if (isDestroyedOrNoOperation(WARN)) return; |
| if (mPostMessageSender == null) { |
| AppWebMessagePortService service = mBrowserContext.getMessagePortService(); |
| mPostMessageSender = new PostMessageSender(this, service); |
| @@ -2268,7 +2309,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| public void postMessageToWeb(String frameName, String message, String targetOrigin, |
| int[] sentPortIds) { |
| if (TRACE) Log.i(TAG, "%s postMessageToWeb. TargetOrigin=%s", this, targetOrigin); |
| - if (isDestroyed(NO_WARN)) return; |
| + if (isDestroyedOrNoOperation(NO_WARN)) return; |
| nativePostMessageToFrame(mNativeAwContents, frameName, message, targetOrigin, |
| sentPortIds); |
| } |
| @@ -2278,20 +2319,20 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public AppWebMessagePort[] createMessageChannel() { |
| if (TRACE) Log.i(TAG, "%s createMessageChannel", this); |
| - if (isDestroyed(WARN)) return null; |
| + if (isDestroyedOrNoOperation(WARN)) return null; |
| AppWebMessagePort[] ports = mBrowserContext.getMessagePortService().createMessageChannel(); |
| nativeCreateMessageChannel(mNativeAwContents, ports); |
| return ports; |
| } |
| public boolean hasAccessedInitialDocument() { |
| - if (isDestroyed(NO_WARN)) return false; |
| + if (isDestroyedOrNoOperation(NO_WARN)) return false; |
| return mWebContents.hasAccessedInitialDocument(); |
| } |
| @TargetApi(Build.VERSION_CODES.M) |
| public void onProvideVirtualStructure(ViewStructure structure) { |
| - if (isDestroyed(WARN)) return; |
| + if (isDestroyedOrNoOperation(WARN)) return; |
| if (!mWebContentsObserver.didEverCommitNavigation()) { |
| // TODO(sgurun) write a test case for this condition crbug/605251 |
| structure.setChildCount(0); |
| @@ -2365,7 +2406,8 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| * @see android.view.View#onGenericMotionEvent() |
| */ |
| public boolean onGenericMotionEvent(MotionEvent event) { |
| - return isDestroyed(NO_WARN) ? false : mContentViewCore.onGenericMotionEvent(event); |
| + return isDestroyedOrNoOperation(NO_WARN) ? false : |
| + mContentViewCore.onGenericMotionEvent(event); |
| } |
| /** |
| @@ -2448,7 +2490,9 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| private void setViewVisibilityInternal(boolean visible) { |
| mIsViewVisible = visible; |
| - if (!isDestroyed(NO_WARN)) nativeSetViewVisibility(mNativeAwContents, mIsViewVisible); |
| + if (!isDestroyedOrNoOperation(NO_WARN)) { |
| + nativeSetViewVisibility(mNativeAwContents, mIsViewVisible); |
| + } |
| updateContentViewCoreVisibility(); |
| } |
| @@ -2456,7 +2500,9 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| mInvalidateRootViewOnNextDraw |= Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP |
| && visible && !mIsWindowVisible; |
| mIsWindowVisible = visible; |
| - if (!isDestroyed(NO_WARN)) nativeSetWindowVisibility(mNativeAwContents, mIsWindowVisible); |
| + if (!isDestroyedOrNoOperation(NO_WARN)) { |
| + nativeSetWindowVisibility(mNativeAwContents, mIsWindowVisible); |
| + } |
| postUpdateContentViewCoreVisibility(); |
| } |
| @@ -2478,7 +2524,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| private void updateContentViewCoreVisibility() { |
| mIsUpdateVisibilityTaskPending = false; |
| - if (isDestroyed(NO_WARN)) return; |
| + if (isDestroyedOrNoOperation(NO_WARN)) return; |
| boolean contentViewCoreVisible = nativeIsVisible(mNativeAwContents); |
| if (contentViewCoreVisible && !mIsContentViewCoreVisible) { |
| @@ -2497,7 +2543,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| @VisibleForTesting |
| public boolean isPageVisible() { |
| - if (isDestroyed(NO_WARN)) return mIsContentViewCoreVisible; |
| + if (isDestroyedOrNoOperation(NO_WARN)) return mIsContentViewCoreVisible; |
| return nativeIsVisible(mNativeAwContents); |
| } |
| @@ -2512,7 +2558,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public boolean saveState(Bundle outState) { |
| if (TRACE) Log.i(TAG, "%s saveState", this); |
| - if (isDestroyed(WARN) || outState == null) return false; |
| + if (isDestroyedOrNoOperation(WARN) || outState == null) return false; |
| byte[] state = nativeGetOpaqueState(mNativeAwContents); |
| if (state == null) return false; |
| @@ -2528,7 +2574,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public boolean restoreState(Bundle inState) { |
| if (TRACE) Log.i(TAG, "%s restoreState", this); |
| - if (isDestroyed(WARN) || inState == null) return false; |
| + if (isDestroyedOrNoOperation(WARN) || inState == null) return false; |
| byte[] state = inState.getByteArray(SAVE_RESTORE_STATE_KEY); |
| if (state == null) return false; |
| @@ -2550,7 +2596,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| @SuppressLint("NewApi") // JavascriptInterface requires API level 17. |
| public void addJavascriptInterface(Object object, String name) { |
| if (TRACE) Log.i(TAG, "%s addJavascriptInterface=%s", this, name); |
| - if (isDestroyed(WARN)) return; |
| + if (isDestroyedOrNoOperation(WARN)) return; |
| Class<? extends Annotation> requiredAnnotation = null; |
| if (mAppTargetSdkVersion >= Build.VERSION_CODES.JELLY_BEAN_MR1) { |
| requiredAnnotation = JavascriptInterface.class; |
| @@ -2563,7 +2609,9 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| */ |
| public void removeJavascriptInterface(String interfaceName) { |
| if (TRACE) Log.i(TAG, "%s removeJavascriptInterface=%s", this, interfaceName); |
| - if (!isDestroyed(WARN)) mContentViewCore.removeJavascriptInterface(interfaceName); |
| + if (!isDestroyedOrNoOperation(WARN)) { |
| + mContentViewCore.removeJavascriptInterface(interfaceName); |
| + } |
| } |
| /** |
| @@ -2573,7 +2621,8 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| * @return The AccessibilityNodeProvider, if available, or null otherwise. |
| */ |
| public AccessibilityNodeProvider getAccessibilityNodeProvider() { |
| - return isDestroyed(WARN) ? null : mContentViewCore.getAccessibilityNodeProvider(); |
| + return isDestroyedOrNoOperation(WARN) ? null |
| + : mContentViewCore.getAccessibilityNodeProvider(); |
| } |
| /** |
| @@ -2591,14 +2640,15 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| } |
| public boolean supportsAccessibilityAction(int action) { |
| - return isDestroyed(WARN) ? false : mContentViewCore.supportsAccessibilityAction(action); |
| + return isDestroyedOrNoOperation(WARN) ? false |
| + : mContentViewCore.supportsAccessibilityAction(action); |
| } |
| /** |
| * @see android.webkit.WebView#performAccessibilityAction(int, Bundle) |
| */ |
| public boolean performAccessibilityAction(int action, Bundle arguments) { |
| - return isDestroyed(WARN) ? false |
| + return isDestroyedOrNoOperation(WARN) ? false |
| : mContentViewCore.performAccessibilityAction(action, arguments); |
| } |
| @@ -2614,7 +2664,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| public void setNetworkAvailable(boolean networkUp) { |
| if (TRACE) Log.i(TAG, "%s setNetworkAvailable=%s", this, networkUp); |
| - if (!isDestroyed(WARN)) { |
| + if (!isDestroyedOrNoOperation(WARN)) { |
| // For backward compatibility when an app uses this API disable the |
| // Network Information API to prevent inconsistencies, |
| // see crbug.com/520088. |
| @@ -2644,6 +2694,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| if (TRACE) Log.i(TAG, "%s insertVisualStateCallback", this); |
| if (isDestroyed(NO_WARN)) throw new IllegalStateException( |
| "insertVisualStateCallback cannot be called after the WebView has been destroyed"); |
| + if (isNoOperation()) return; |
|
Tobias Sargeant
2017/01/13 10:48:38
I think this should not silently not add the callb
michaelbai
2017/01/13 21:01:38
I don't know whether there is side-effect to inser
boliu
2017/01/13 21:06:12
throwing is bound to cause crashes
I'd go with po
michaelbai
2017/01/13 21:59:06
Done.
|
| nativeInsertVisualStateCallback(mNativeAwContents, requestId, callback); |
| } |
| @@ -2697,13 +2748,13 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| } |
| public void invokeGeolocationCallback(boolean value, String requestingFrame) { |
| - if (isDestroyed(NO_WARN)) return; |
| + if (isDestroyedOrNoOperation(NO_WARN)) return; |
| nativeInvokeGeolocationCallback(mNativeAwContents, value, requestingFrame); |
| } |
| @CalledByNative |
| private void onGeolocationPermissionsShowPrompt(String origin) { |
| - if (isDestroyed(NO_WARN)) return; |
| + if (isDestroyedOrNoOperation(NO_WARN)) return; |
| AwGeolocationPermissions permissions = mBrowserContext.getGeolocationPermissions(); |
| // Reject if geoloaction is disabled, or the origin has a retained deny |
| if (!mSettings.getGeolocationEnabled()) { |
| @@ -2876,7 +2927,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| } |
| private void saveWebArchiveInternal(String path, final ValueCallback<String> callback) { |
| - if (path == null || isDestroyed(WARN)) { |
| + if (path == null || isDestroyedOrNoOperation(WARN)) { |
| ThreadUtils.runOnUiThread(new Runnable() { |
| @Override |
| public void run() { |
| @@ -2924,12 +2975,14 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| @Override |
| public void extractSmartClipData(int x, int y, int width, int height) { |
| - if (!isDestroyed(WARN)) mContentViewCore.extractSmartClipData(x, y, width, height); |
| + if (!isDestroyedOrNoOperation(WARN)) { |
| + mContentViewCore.extractSmartClipData(x, y, width, height); |
| + } |
| } |
| @Override |
| public void setSmartClipResultHandler(final Handler resultHandler) { |
| - if (isDestroyed(WARN)) return; |
| + if (isDestroyedOrNoOperation(WARN)) return; |
| if (resultHandler == null) { |
| mContentViewCore.setSmartClipDataListener(null); |
| @@ -2958,7 +3011,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| protected void insertVisualStateCallbackIfNotDestroyed( |
| long requestId, VisualStateCallback callback) { |
| if (TRACE) Log.i(TAG, "%s insertVisualStateCallbackIfNotDestroyed", this); |
| - if (isDestroyed(NO_WARN)) return; |
| + if (isDestroyedOrNoOperation(NO_WARN)) return; |
| nativeInsertVisualStateCallback(mNativeAwContents, requestId, callback); |
| } |
| @@ -2975,7 +3028,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| @Override |
| public void onDraw(Canvas canvas) { |
| - if (isDestroyed(NO_WARN)) { |
| + if (isDestroyedOrNoOperation(NO_WARN)) { |
| TraceEvent.instant("EarlyOut_destroyed"); |
| canvas.drawColor(getEffectiveBackgroundColor()); |
| return; |
| @@ -3026,7 +3079,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| @Override |
| public void requestFocus() { |
| - if (isDestroyed(NO_WARN)) return; |
| + if (isDestroyedOrNoOperation(NO_WARN)) return; |
| if (!mContainerView.isInTouchMode() && mSettings.shouldFocusFirstNode()) { |
| nativeFocusFirstNode(mNativeAwContents); |
| } |
| @@ -3047,7 +3100,8 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| @Override |
| public InputConnection onCreateInputConnection(EditorInfo outAttrs) { |
| - return isDestroyed(NO_WARN) ? null : mContentViewCore.onCreateInputConnection(outAttrs); |
| + return isDestroyedOrNoOperation(NO_WARN) ? null |
| + : mContentViewCore.onCreateInputConnection(outAttrs); |
| } |
| @Override |
| @@ -3057,12 +3111,13 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| @Override |
| public boolean onKeyUp(int keyCode, KeyEvent event) { |
| - return isDestroyed(NO_WARN) ? false : mContentViewCore.onKeyUp(keyCode, event); |
| + return isDestroyedOrNoOperation(NO_WARN) ? false |
| + : mContentViewCore.onKeyUp(keyCode, event); |
| } |
| @Override |
| public boolean dispatchKeyEvent(KeyEvent event) { |
| - if (isDestroyed(NO_WARN)) return false; |
| + if (isDestroyedOrNoOperation(NO_WARN)) return false; |
| if (isDpadEvent(event)) { |
| mSettings.setSpatialNavigationEnabled(true); |
| } |
| @@ -3085,7 +3140,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| @Override |
| public boolean onTouchEvent(MotionEvent event) { |
| - if (isDestroyed(NO_WARN)) return false; |
| + if (isDestroyedOrNoOperation(NO_WARN)) return false; |
| if (event.getActionMasked() == MotionEvent.ACTION_DOWN) { |
| mSettings.setSpatialNavigationEnabled(false); |
| } |
| @@ -3118,22 +3173,25 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| @Override |
| public boolean onHoverEvent(MotionEvent event) { |
| - return isDestroyed(NO_WARN) ? false : mContentViewCore.onHoverEvent(event); |
| + return isDestroyedOrNoOperation(NO_WARN) ? false : mContentViewCore.onHoverEvent(event); |
| } |
| @Override |
| public boolean onGenericMotionEvent(MotionEvent event) { |
| - return isDestroyed(NO_WARN) ? false : mContentViewCore.onGenericMotionEvent(event); |
| + return isDestroyedOrNoOperation(NO_WARN) ? false |
| + : mContentViewCore.onGenericMotionEvent(event); |
| } |
| @Override |
| public void onConfigurationChanged(Configuration newConfig) { |
| - if (!isDestroyed(NO_WARN)) mContentViewCore.onConfigurationChanged(newConfig); |
| + if (!isDestroyedOrNoOperation(NO_WARN)) { |
| + mContentViewCore.onConfigurationChanged(newConfig); |
| + } |
| } |
| @Override |
| public void onAttachedToWindow() { |
| - if (isDestroyed(NO_WARN)) return; |
| + if (isDestroyedOrNoOperation(NO_WARN)) return; |
| if (mIsAttachedToWindow) { |
| Log.w(TAG, "onAttachedToWindow called when already attached. Ignoring"); |
| return; |
| @@ -3157,7 +3215,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| @Override |
| public void onDetachedFromWindow() { |
| - if (isDestroyed(NO_WARN)) return; |
| + if (isDestroyedOrNoOperation(NO_WARN)) return; |
| if (!mIsAttachedToWindow) { |
| Log.w(TAG, "onDetachedFromWindow called when already detached. Ignoring"); |
| return; |
| @@ -3182,21 +3240,21 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| @Override |
| public void onWindowFocusChanged(boolean hasWindowFocus) { |
| - if (isDestroyed(NO_WARN)) return; |
| + if (isDestroyedOrNoOperation(NO_WARN)) return; |
| mWindowFocused = hasWindowFocus; |
| mContentViewCore.onWindowFocusChanged(hasWindowFocus); |
| } |
| @Override |
| public void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { |
| - if (isDestroyed(NO_WARN)) return; |
| + if (isDestroyedOrNoOperation(NO_WARN)) return; |
| mContainerViewFocused = focused; |
| mContentViewCore.onFocusChanged(focused); |
| } |
| @Override |
| public void onSizeChanged(int w, int h, int ow, int oh) { |
| - if (isDestroyed(NO_WARN)) return; |
| + if (isDestroyedOrNoOperation(NO_WARN)) return; |
| mScrollOffsetManager.setContainerViewSize(w, h); |
| // The AwLayoutSizer needs to go first so that if we're in |
| // fixedLayoutSize mode the update |
| @@ -3274,7 +3332,7 @@ public class AwContents implements SmartClipProvider, PostMessageSender.PostMess |
| @Override |
| public void computeScroll() { |
| - if (isDestroyed(NO_WARN)) return; |
| + if (isDestroyedOrNoOperation(NO_WARN)) return; |
| nativeOnComputeScroll(mNativeAwContents, AnimationUtils.currentAnimationTimeMillis()); |
| } |
| } |