summaryrefslogtreecommitdiff
path: root/core/java/android/webkit/WebView.java
diff options
context:
space:
mode:
authorAdam Powell <adamp@google.com>2011-09-11 17:48:42 -0700
committerAdam Powell <adamp@google.com>2011-09-12 18:04:00 -0700
commite00e8a78374cdcf01a25bd6327d2b94944b2bc3f (patch)
treeaef28b84fceda7b456c523553a1fbbdc876f8d3c /core/java/android/webkit/WebView.java
parentaeb116750110cf9cc1ef82d208f3a8ba3b8be009 (diff)
Pause WebKit drawing when WebView loses window focus.
This prevents animations and other live page content from consuming too many resources while the user is interacting with a popup window. Bug 5300522 Change-Id: I40fb6d16d56b540c431172052a1ae7fead7109be
Diffstat (limited to 'core/java/android/webkit/WebView.java')
-rw-r--r--core/java/android/webkit/WebView.java15
1 files changed, 15 insertions, 0 deletions
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 47abbc2e6d2d..065beb1e58a1 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -908,6 +908,9 @@ public class WebView extends AbsoluteLayout
// used for serializing asynchronously handled touch events.
private final TouchEventQueue mTouchEventQueue = new TouchEventQueue();
+ // Used to track whether picture updating was paused due to a window focus change.
+ private boolean mPictureUpdatePausedForFocusChange = false;
+
// Used to notify listeners of a new picture.
private PictureListener mPictureListener;
/**
@@ -5570,8 +5573,20 @@ public class WebView extends AbsoluteLayout
setActive(hasWindowFocus);
if (hasWindowFocus) {
JWebCoreJavaBridge.setActiveWebView(this);
+ if (mPictureUpdatePausedForFocusChange) {
+ WebViewCore.resumeUpdatePicture(mWebViewCore);
+ nativeSetIsScrolling(false);
+ mPictureUpdatePausedForFocusChange = false;
+ }
} else {
JWebCoreJavaBridge.removeActiveWebView(this);
+ final WebSettings settings = getSettings();
+ if (settings != null && settings.enableSmoothTransition() &&
+ mWebViewCore != null && !WebViewCore.isUpdatePicturePaused(mWebViewCore)) {
+ WebViewCore.pauseUpdatePicture(mWebViewCore);
+ nativeSetIsScrolling(true);
+ mPictureUpdatePausedForFocusChange = true;
+ }
}
super.onWindowFocusChanged(hasWindowFocus);
}