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

Unified Diff: android_webview/java/src/org/chromium/android_webview/AwContents.java

Issue 1410333012: Update WebView visibility during attach/detach (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: use post task to fix the visibility flip Created 5 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 8ad3b4597e88892494eeef7fda2bebd8cf853ecb..70ebbd001fbc20bb6791c32560cf0f3ed8fc7f3b 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwContents.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java
@@ -972,7 +972,7 @@ public class AwContents implements SmartClipProvider,
installWebContentsObserver();
mSettings.setWebContents(webContents);
nativeSetDipScale(mNativeAwContents, (float) mDIPScale);
- updateContentViewCoreVisibility();
+ postUpdateContentViewCoreVisibility();
// The native side object has been bound to this java instance, so now is the time to
// bind all the native->java relationships.
@@ -1798,7 +1798,7 @@ public class AwContents implements SmartClipProvider,
if (mIsPaused || isDestroyed(NO_WARN)) return;
mIsPaused = true;
nativeSetIsPaused(mNativeAwContents, mIsPaused);
- updateContentViewCoreVisibility();
+ postUpdateContentViewCoreVisibility();
}
/**
@@ -1809,7 +1809,7 @@ public class AwContents implements SmartClipProvider,
if (!mIsPaused || isDestroyed(NO_WARN)) return;
mIsPaused = false;
nativeSetIsPaused(mNativeAwContents, mIsPaused);
- updateContentViewCoreVisibility();
+ postUpdateContentViewCoreVisibility();
}
/**
@@ -2348,7 +2348,7 @@ public class AwContents implements SmartClipProvider,
private void setViewVisibilityInternal(boolean visible) {
mIsViewVisible = visible;
if (!isDestroyed(NO_WARN)) nativeSetViewVisibility(mNativeAwContents, mIsViewVisible);
- updateContentViewCoreVisibility();
+ postUpdateContentViewCoreVisibility();
}
private void setWindowVisibilityInternal(boolean visible) {
@@ -2356,7 +2356,22 @@ public class AwContents implements SmartClipProvider,
&& visible && !mIsWindowVisible;
mIsWindowVisible = visible;
if (!isDestroyed(NO_WARN)) nativeSetWindowVisibility(mNativeAwContents, mIsWindowVisible);
- updateContentViewCoreVisibility();
+ postUpdateContentViewCoreVisibility();
+ }
+
+ private void postUpdateContentViewCoreVisibility() {
+ // When WebView is attached to a visible window, WebView will be
+ // attached to a window whose visibility is initially invisible, then
+ // the window visibility will be updated to true. This means CVC
+ // visibility will be set to false then true immediately, in the same
+ // function call of View#dispatchAttachedToWindow. To prevent this flip
+ // of CVC visibility, post the task to update CVC visibility.
+ mHandler.post(new Runnable() {
boliu 2015/11/03 22:05:46 Can you not post more than you need to? Also don'
+ @Override
+ public void run() {
+ updateContentViewCoreVisibility();
+ }
+ });
}
private void updateContentViewCoreVisibility() {
@@ -3005,6 +3020,7 @@ public class AwContents implements SmartClipProvider,
nativeOnAttachedToWindow(mNativeAwContents, mContainerView.getWidth(),
mContainerView.getHeight());
updateHardwareAcceleratedFeaturesToggle();
+ postUpdateContentViewCoreVisibility();
setLocale(LocaleUtils.getDefaultLocale());
@@ -3026,6 +3042,7 @@ public class AwContents implements SmartClipProvider,
mContentViewCore.onDetachedFromWindow();
updateHardwareAcceleratedFeaturesToggle();
+ postUpdateContentViewCoreVisibility();
if (mComponentCallbacks != null) {
mContext.unregisterComponentCallbacks(mComponentCallbacks);
« 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