Disable action on bubble when hiding, and reable it when showing.

Allowing click or moving bubble when hiding bubble makes no sense. Also, hide()
and swapViewHolders() (called when expand/collapse) may add/remove the same
view to windowManager and cause crash.

Before: https://drive.google.com/a/google.com/file/d/0Bz1rQbdSCWSKRDEyT2JDdk9LVDA
After: https://drive.google.com/a/google.com/file/d/0Bz1rQbdSCWSKUE53aldna0RFVFE
Test: BubbleTest
PiperOrigin-RevId: 167334496
Change-Id: Id7f5ce4bdfa074840c1e9fac981abad59e261c0e
diff --git a/java/com/android/dialershared/bubble/Bubble.java b/java/com/android/dialershared/bubble/Bubble.java
index cd2c9fc..d245522 100644
--- a/java/com/android/dialershared/bubble/Bubble.java
+++ b/java/com/android/dialershared/bubble/Bubble.java
@@ -241,6 +241,7 @@
       viewHolder.getPrimaryButton().setScaleY(0);
     }
 
+    viewHolder.setChildClickable(true);
     visibility = Visibility.ENTERING;
     viewHolder
         .getPrimaryButton()
@@ -495,6 +496,9 @@
       return;
     }
 
+    // Make bubble non clickable to prevent further buggy actions
+    viewHolder.setChildClickable(false);
+
     if (textShowing) {
       hideAfterText = true;
       return;
@@ -822,6 +826,14 @@
       moveHandler = new MoveHandler(primaryButton, Bubble.this);
     }
 
+    private void setChildClickable(boolean clickable) {
+      firstButton.setClickable(clickable);
+      secondButton.setClickable(clickable);
+      thirdButton.setClickable(clickable);
+
+      primaryButton.setOnTouchListener(clickable ? moveHandler : null);
+    }
+
     public ViewGroup getRoot() {
       return root;
     }