Update Dialer to v10 RC32

This release was created following the instructions at:
go/dialer-aosp-release

Subsequent dialer releases will follow as O bugs are
fixed, until we reach our final RC.

Version: 10
Candidate: RC32
Branch: dialer-android_release_branch/153304843.1
dialer-android_20170416.00/dialer-android_20170416.00_RC32

This release contains the following bug fixes since RC17:
Bug: 33176679 33272455 3646510 36773894 37297649 37413780
37513689 37640315 37680595 37698062 37873639 37901752
37919295 37953423 38062852 38069600 38137349 38173549
38180252 38191514

Test: make, on device
Change-Id: I4e4bb630082758e418ff24892b7db3142c6eb09a
diff --git a/java/com/android/incallui/InCallActivityCommon.java b/java/com/android/incallui/InCallActivityCommon.java
index e6c74b0..4b0a3cd 100644
--- a/java/com/android/incallui/InCallActivityCommon.java
+++ b/java/com/android/incallui/InCallActivityCommon.java
@@ -62,6 +62,8 @@
 import com.android.incallui.call.DialerCall;
 import com.android.incallui.call.DialerCall.State;
 import com.android.incallui.call.TelecomAdapter;
+import com.android.incallui.telecomeventui.InternationalCallOnWifiDialogFragment;
+import com.android.incallui.telecomeventui.InternationalCallOnWifiDialogFragment.Callback;
 import com.android.incallui.wifi.EnableWifiCallingPrompt;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -80,6 +82,7 @@
 
   private static final String TAG_SELECT_ACCOUNT_FRAGMENT = "tag_select_account_fragment";
   private static final String TAG_DIALPAD_FRAGMENT = "tag_dialpad_fragment";
+  private static final String TAG_INTERNATIONAL_CALL_ON_WIFI = "tag_international_call_on_wifi";
 
   @Retention(RetentionPolicy.SOURCE)
   @IntDef({
@@ -107,7 +110,7 @@
   private String dtmfTextToPreopulate;
   @DialpadRequestType private int showDialpadRequest = DIALPAD_REQUEST_NONE;
 
-  private SelectPhoneAccountListener selectAccountListener =
+  private final SelectPhoneAccountListener selectAccountListener =
       new SelectPhoneAccountListener() {
         @Override
         public void onPhoneAccountSelected(
@@ -133,6 +136,25 @@
         }
       };
 
+  private InternationalCallOnWifiDialogFragment.Callback internationalCallOnWifiCallback =
+      new Callback() {
+        @Override
+        public void continueCall(@NonNull String callId) {
+          LogUtil.i("InCallActivityCommon.continueCall", "continuing call with id: %s", callId);
+        }
+
+        @Override
+        public void cancelCall(@NonNull String callId) {
+          DialerCall call = CallList.getInstance().getCallById(callId);
+          if (call == null) {
+            LogUtil.i("InCallActivityCommon.cancelCall", "call destroyed before dialog closed");
+            return;
+          }
+          LogUtil.i("InCallActivityCommon.cancelCall", "disconnecting international call on wifi");
+          call.disconnect();
+        }
+      };
+
   public static void setIntentExtras(
       Intent intent, boolean showDialpad, boolean newOutgoingCall, boolean isForFullScreen) {
     if (showDialpad) {
@@ -210,6 +232,17 @@
       }
     }
 
+    InternationalCallOnWifiDialogFragment existingInternationalFragment =
+        (InternationalCallOnWifiDialogFragment)
+            inCallActivity
+                .getSupportFragmentManager()
+                .findFragmentByTag(TAG_INTERNATIONAL_CALL_ON_WIFI);
+    if (existingInternationalFragment != null) {
+      LogUtil.i(
+          "InCallActivityCommon.onCreate", "international fragment exists attaching callback");
+      existingInternationalFragment.setCallback(internationalCallOnWifiCallback);
+    }
+
     inCallOrientationEventListener = new InCallOrientationEventListener(inCallActivity);
   }
 
@@ -510,6 +543,18 @@
       selectPhoneAccountDialogFragment.dismiss();
       selectPhoneAccountDialogFragment = null;
     }
+
+    InternationalCallOnWifiDialogFragment internationalCallOnWifiFragment =
+        (InternationalCallOnWifiDialogFragment)
+            inCallActivity
+                .getSupportFragmentManager()
+                .findFragmentByTag(TAG_INTERNATIONAL_CALL_ON_WIFI);
+    if (internationalCallOnWifiFragment != null) {
+      LogUtil.i(
+          "InCallActivityCommon.dismissPendingDialogs",
+          "dismissing InternationalCallOnWifiDialogFragment");
+      internationalCallOnWifiFragment.dismiss();
+    }
   }
 
   private static boolean shouldShowDisconnectErrorDialog(@NonNull DisconnectCause cause) {
@@ -584,6 +629,21 @@
     }
   }
 
+  void showInternationalCallOnWifiDialog(@NonNull DialerCall call) {
+    LogUtil.enterBlock("InCallActivityCommon.showInternationalCallOnWifiDialog");
+    if (!InternationalCallOnWifiDialogFragment.shouldShow(inCallActivity)) {
+      LogUtil.i(
+          "InCallActivityCommon.showInternationalCallOnWifiDialog",
+          "InternationalCallOnWifiDialogFragment.shouldShow returned false");
+      return;
+    }
+
+    InternationalCallOnWifiDialogFragment fragment =
+        InternationalCallOnWifiDialogFragment.newInstance(
+            call.getId(), internationalCallOnWifiCallback);
+    fragment.show(inCallActivity.getSupportFragmentManager(), TAG_INTERNATIONAL_CALL_ON_WIFI);
+  }
+
   public void showWifiToLteHandoverToast(DialerCall call) {
     if (call.hasShownWiFiToLteHandoverToast()) {
       return;