Speed up layers rendering when using animations
Cherry-pick from master

Bug:2522049
Change-Id: I441f00b6e7551930c4f76983681f4cd0c57ce017
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index ff233d2..e2f5de4 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -3219,18 +3219,14 @@
         }
     }
 
-    private void drawExtras(Canvas canvas, int extras) {
+    private void drawExtras(Canvas canvas, int extras, boolean animationsRunning) {
         // If mNativeClass is 0, we should not reach here, so we do not
         // need to check it again.
-        // Currently for each draw we compute the animation values;
-        // We may in the future decide to do that independently.
-        if (nativeEvaluateLayersAnimations()) {
-            // If we have unfinished (or unstarted) animations,
-            // we ask for a repaint.
-            invalidate();
+        if (animationsRunning) {
+            canvas.setDrawFilter(mWebViewCore.mZoomFilter);
         }
-
         nativeDrawExtras(canvas, extras);
+        canvas.setDrawFilter(null);
     }
 
     private void drawCoreAndCursorRing(Canvas canvas, int color,
@@ -3315,8 +3311,18 @@
             canvas.scale(mActualScale, mActualScale);
         }
 
+        boolean UIAnimationsRunning = false;
+        // Currently for each draw we compute the animation values;
+        // We may in the future decide to do that independently.
+        if (mNativeClass != 0 && nativeEvaluateLayersAnimations()) {
+            UIAnimationsRunning = true;
+            // If we have unfinished (or unstarted) animations,
+            // we ask for a repaint.
+            invalidate();
+        }
         mWebViewCore.drawContentPicture(canvas, color,
-                (animateZoom || mPreviewZoomOnly), animateScroll);
+                (animateZoom || mPreviewZoomOnly || UIAnimationsRunning),
+                animateScroll);
         if (mNativeClass == 0) return;
         // decide which adornments to draw
         int extras = DRAW_EXTRAS_NONE;
@@ -3337,7 +3343,7 @@
         } else if (drawCursorRing) {
             extras = DRAW_EXTRAS_CURSOR_RING;
         }
-        drawExtras(canvas, extras);
+        drawExtras(canvas, extras, UIAnimationsRunning);
 
         if (extras == DRAW_EXTRAS_CURSOR_RING) {
             if (mTouchMode == TOUCH_SHORTPRESS_START_MODE) {