[automerger skipped] DO NOT MERGE - qt-qpr1-dev-plus-aosp-without-vendor@5915889 into stage-aosp-master am: 80a6f0558b
am: f2dd2154aa -s ours
am skip reason: subject contains skip directive

Change-Id: I8ef5867da89e6c2a81071a8c5492a20a2e56504a
diff --git a/java/com/android/incallui/answer/impl/AnswerFragment.java b/java/com/android/incallui/answer/impl/AnswerFragment.java
index 8d8b087..2405b8e 100644
--- a/java/com/android/incallui/answer/impl/AnswerFragment.java
+++ b/java/com/android/incallui/answer/impl/AnswerFragment.java
@@ -22,10 +22,15 @@
 import android.animation.AnimatorSet;
 import android.animation.ObjectAnimator;
 import android.annotation.SuppressLint;
+import android.annotation.TargetApi;
+import android.app.KeyguardManager;
+import android.app.KeyguardManager.KeyguardDismissCallback;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.location.Location;
 import android.net.Uri;
+import android.os.Build.VERSION;
+import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
@@ -1052,14 +1057,47 @@
   }
 
   @Override
+  @TargetApi(VERSION_CODES.O)
   public void smsSelected(@Nullable CharSequence text) {
     LogUtil.i("AnswerFragment.smsSelected", null);
     textResponsesFragment = null;
 
     if (text == null) {
-      createCustomSmsDialogFragment = CreateCustomSmsDialogFragment.newInstance();
-      createCustomSmsDialogFragment.show(getChildFragmentManager(), null);
-      return;
+      if (VERSION.SDK_INT < VERSION_CODES.O) {
+        LogUtil.i("AnswerFragment.smsSelected", "below O, showing dialog directly");
+        showCustomSmsDialog();
+        return;
+      }
+      if (!getContext().getSystemService(KeyguardManager.class).isKeyguardLocked()) {
+        LogUtil.i("AnswerFragment.smsSelected", "not locked, showing dialog directly");
+        showCustomSmsDialog();
+        return;
+      }
+
+      // Show the custom reply dialog only after device is unlocked, as it may cause impersonation
+      // see b/137134588
+      LogUtil.i("AnswerFragment.smsSelected", "dismissing keyguard");
+      getContext()
+          .getSystemService(KeyguardManager.class)
+          .requestDismissKeyguard(
+              getActivity(),
+              new KeyguardDismissCallback() {
+                @Override
+                public void onDismissCancelled() {
+                  LogUtil.i("AnswerFragment.smsSelected", "onDismissCancelled");
+                }
+
+                @Override
+                public void onDismissError() {
+                  LogUtil.i("AnswerFragment.smsSelected", "onDismissError");
+                }
+
+                @Override
+                public void onDismissSucceeded() {
+                  LogUtil.i("AnswerFragment.smsSelected", "onDismissSucceeded");
+                  showCustomSmsDialog();
+                }
+              });return;
     }
 
     if (primaryCallState != null && canRejectCallWithSms()) {
@@ -1068,6 +1106,11 @@
     }
   }
 
+  private void showCustomSmsDialog() {
+    createCustomSmsDialogFragment = CreateCustomSmsDialogFragment.newInstance();
+    createCustomSmsDialogFragment.showNow(getChildFragmentManager(), null);
+  }
+
   @Override
   public void smsDismissed() {
     LogUtil.i("AnswerFragment.smsDismissed", null);
diff --git a/java/com/android/voicemail/impl/res/xml/vvm_config.xml b/java/com/android/voicemail/impl/res/xml/vvm_config.xml
index 077d603..dd142ec 100644
--- a/java/com/android/voicemail/impl/res/xml/vvm_config.xml
+++ b/java/com/android/voicemail/impl/res/xml/vvm_config.xml
@@ -21,200 +21,4 @@
       <item value="TEST"/>
     </string-array>
   </pbundle_as_map>
-
-  <pbundle_as_map>
-    <!-- Bouygues France -->
-    <string-array name="mccmnc">
-      <item value="20820"/>
-      <item value="20821"/>
-      <item value="20888"/>
-    </string-array>
-    <string name="feature_flag_name">vvm_carrier_flag_20820</string>
-    <int
-        name="vvm_port_number_int"
-        value="5499"/>
-    <string name="vvm_destination_number_string">22344</string>
-    <string name="vvm_type_string">vvm_type_omtp</string>
-  </pbundle_as_map>
-
-  <pbundle_as_map>
-    <!-- Orange Belgium -->
-    <string-array name="mccmnc">
-      <item value="20610"/>
-    </string-array>
-
-    <int
-        name="vvm_port_number_int"
-        value="0"/>
-    <string name="vvm_destination_number_string">8082</string>
-    <string name="vvm_type_string">vvm_type_omtp</string>
-    <boolean
-        name="vvm_cellular_data_required_bool"
-        value="true"/>
-    <!-- Carrier VVM app com.orange.vvm only supports Orange FR-->
-    <string-array name="vvm_disabled_capabilities_string_array">
-      <!-- a bug -->
-      <item value="STARTTLS"/>
-    </string-array>
-  </pbundle_as_map>
-
-  <pbundle_as_map>
-    <!-- Orange France -->
-    <string-array name="mccmnc">
-      <item value="20801"/>
-      <item value="20802"/>
-    </string-array>
-
-    <int
-        name="vvm_port_number_int"
-        value="20481"/>
-    <string name="vvm_destination_number_string">21101</string>
-    <string-array name="carrier_vvm_package_name_string_array">
-      <item value="com.orange.vvm"/>
-    </string-array>
-    <string name="vvm_type_string">vvm_type_omtp</string>
-    <boolean
-        name="vvm_cellular_data_required_bool"
-        value="true"/>
-    <string-array name="vvm_disabled_capabilities_string_array">
-      <!-- a bug -->
-      <item value="STARTTLS"/>
-    </string-array>
-  </pbundle_as_map>
-
-  <pbundle_as_map>
-    <!-- T-Mobile USA-->
-    <string-array name="mccmnc">
-      <item value="310160"/>
-      <item value="310200"/>
-      <item value="310210"/>
-      <item value="310220"/>
-      <item value="310230"/>
-      <item value="310240"/>
-      <item value="310250"/>
-      <item value="310260"/>
-      <item value="310270"/>
-      <item value="310300"/>
-      <item value="310310"/>
-      <item value="310490"/>
-      <item value="310530"/>
-      <item value="310590"/>
-      <item value="310640"/>
-      <item value="310660"/>
-      <item value="310800"/>
-    </string-array>
-
-    <int
-        name="vvm_port_number_int"
-        value="1808"/>
-    <int
-        name="vvm_ssl_port_number_int"
-        value="993"/>
-    <string name="vvm_destination_number_string">122</string>
-    <string-array name="carrier_vvm_package_name_string_array">
-      <item value="com.tmobile.vvm.application"/>
-    </string-array>
-    <string name="vvm_type_string">vvm_type_cvvm</string>>
-    <string-array name="vvm_disabled_capabilities_string_array">
-      <!-- a bug -->
-      <item value="AUTH=DIGEST-MD5"/>
-    </string-array>
-    <string name="vvm_carrier_allows_ott_transcription_string">true</string>
-    <boolean
-        name="vvm_ignore_transcription"
-        value="false"/>
-  </pbundle_as_map>
-
-  <pbundle_as_map>
-    <!-- tracfone USA-->
-    <string name="feature_flag_name">vvm_carrier_flag_tracfone_usa</string>
-
-    <string-array name="mccmnc">
-      <item value="310260?gid1=4d4b"/>
-      <item value="310260?gid1=534d"/>
-      <item value="310260?gid1=6134"/>
-      <item value="310260?gid1=ddff"/>
-      <item value="310260?gid1=deff"/>
-      <item value="311480?gid1=BA01270000000000"/>
-    </string-array>
-
-    <string name="vvm_type_string">vvm_type_disable</string>>
-  </pbundle_as_map>
-
-  <pbundle_as_map>
-    <!-- Telus Canada -->
-    <string name="feature_flag_name">vvm_carrier_flag_302220</string>
-    <string-array name="mccmnc">
-      <item value="302220"/>
-    </string-array>
-    <int
-        name="vvm_port_number_int"
-        value="5499"/>
-    <string name="vvm_destination_number_string">7723</string>
-    <string name="vvm_type_string">vvm_type_omtp</string>
-    <boolean
-        name="vvm_cellular_data_required_bool"
-        value="true"/>
-  </pbundle_as_map>
-
-  <pbundle_as_map>
-    <!-- Verizon USA -->
-    <string-array name="mccmnc">
-      <item value="310004"/>
-      <item value="310010"/>
-      <item value="310012"/>
-      <item value="310013"/>
-      <item value="310590"/>
-      <item value="310890"/>
-      <item value="310910"/>
-      <item value="311110"/>
-      <item value="311270"/>
-      <item value="311271"/>
-      <item value="311272"/>
-      <item value="311273"/>
-      <item value="311274"/>
-      <item value="311275"/>
-      <item value="311276"/>
-      <item value="311277"/>
-      <item value="311278"/>
-      <item value="311279"/>
-      <item value="311280"/>
-      <item value="311281"/>
-      <item value="311282"/>
-      <item value="311283"/>
-      <item value="311284"/>
-      <item value="311285"/>
-      <item value="311286"/>
-      <item value="311287"/>
-      <item value="311288"/>
-      <item value="311289"/>
-      <item value="311390"/>
-      <item value="311480"/>
-      <item value="311481"/>
-      <item value="311482"/>
-      <item value="311483"/>
-      <item value="311484"/>
-      <item value="311485"/>
-      <item value="311486"/>
-      <item value="311487"/>
-      <item value="311488"/>
-      <item value="311489"/>
-    </string-array>
-
-    <int
-        name="vvm_port_number_int"
-        value="0"/>
-    <string name="vvm_destination_number_string">900080006200</string>
-    <string name="vvm_type_string">vvm_type_vvm3</string>
-    <string name="vvm_client_prefix_string">//VZWVVM</string>
-    <boolean
-        name="vvm_cellular_data_required_bool"
-        value="true"/>
-    <boolean
-        name="vvm_legacy_mode_enabled_bool"
-        value="true"/>
-    <!-- VVM3 specific value for the voicemail management gateway to use if the SMS didn't provide
-         one -->
-    <string name="default_vmg_url">https://mobile.vzw.com/VMGIMS/VMServices</string>
-  </pbundle_as_map>
 </list>