Cherry-pick: aw: Ensure fallback tick unsets |block_invalidates_|

Clean cherry-pick of chromium
crrev.com/d3ba7205b5a0c9154b91357c8795e772833fa798

BUG: 17111986

Original description:

Currently, if |compositor_needs_continuous_invalidate_| is unset before
PostFallbackTick or FallbackTickFired, then the fallback ticks are
cancelled, but we never unset |block_invalidates_|, which will block
invalidates indefinitely.

Fix is simply always unset |block_invalidates_| even if we skip
the fallback tick.

Change-Id: I8bf65ae614a5ac697d5bc1b62c7cd11fbbd16cad
diff --git a/android_webview/browser/browser_view_renderer.cc b/android_webview/browser/browser_view_renderer.cc
index f08a564..a736218 100644
--- a/android_webview/browser/browser_view_renderer.cc
+++ b/android_webview/browser/browser_view_renderer.cc
@@ -711,6 +711,9 @@
         FROM_HERE,
         fallback_tick_fired_.callback(),
         base::TimeDelta::FromMilliseconds(kFallbackTickTimeoutInMilliseconds));
+  } else {
+    // Pretend we just composited to unblock further invalidates.
+    DidComposite();
   }
 }
 
@@ -723,8 +726,12 @@
   // This should only be called if OnDraw or DrawGL did not come in time, which
   // means block_invalidates_ must still be true.
   DCHECK(block_invalidates_);
-  if (compositor_needs_continuous_invalidate_ && compositor_)
+  if (compositor_needs_continuous_invalidate_ && compositor_) {
     ForceFakeCompositeSW();
+  } else {
+    // Pretend we just composited to unblock further invalidates.
+    DidComposite();
+  }
 }
 
 void BrowserViewRenderer::ForceFakeCompositeSW() {