Reset insets when inset computer is removed.

When an inset computer is registered with the view tree observer,
we report content insets to the window manager.  When an inset computer
is subsequently unregistered, we must take care to clear these insets.

This patch remembers whether the previously computed insets were
non-empty so that it can force insets to be reset when needed.

Bug: 10840662
Change-Id: I4cce5ba64cc5234b98363b025ac4bb42e64349f1
diff --git a/core/java/android/view/ViewTreeObserver.java b/core/java/android/view/ViewTreeObserver.java
index f9298ea..a9444b4 100644
--- a/core/java/android/view/ViewTreeObserver.java
+++ b/core/java/android/view/ViewTreeObserver.java
@@ -241,6 +241,13 @@
             mTouchableInsets = TOUCHABLE_INSETS_FRAME;
         }
 
+        boolean isEmpty() {
+            return contentInsets.isEmpty()
+                    && visibleInsets.isEmpty()
+                    && touchableRegion.isEmpty()
+                    && mTouchableInsets == TOUCHABLE_INSETS_FRAME;
+        }
+
         @Override
         public int hashCode() {
             int result = contentInsets.hashCode();