summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTa-wei Yen <twyen@google.com>2017-01-09 11:16:25 -0800
committerTa-wei Yen <twyen@google.com>2017-01-09 11:17:53 -0800
commite4f651b96552f9abc39e035c87547492c2b2682e (patch)
tree46967b9f3fed2ef9ce42f59f846e0192a34ba0c5
parentc0febc48e8e72bd25b67048584c38df83edb89e5 (diff)
downloadandroid_packages_services_Telephony-e4f651b96552f9abc39e035c87547492c2b2682e.tar.gz
android_packages_services_Telephony-e4f651b96552f9abc39e035c87547492c2b2682e.tar.bz2
android_packages_services_Telephony-e4f651b96552f9abc39e035c87547492c2b2682e.zip
Preserve PIN_NOT_SET state when reactivating on VVM3
In MR1 if the account has been activated on the device before, during reactivation the status will be wiped clean as it is just book keeping. The PIN_NOT_SET flag is also removed, so the user will not see the warning before the reactvation is done, opening a window to decline ToS and disable VVM without being warned the PIN has change after reboot. This CL checks the PIN status during reactivation. BUG: 33220569 Change-Id: I79fe08a31720315fb52ccbdef714ad8155b71425 FIXES: 33220569 TEST: manual test: set prefernce "default_old_pin" and reboot
-rw-r--r--src/com/android/phone/vvm/omtp/protocol/Vvm3EventHandler.java32
1 files changed, 24 insertions, 8 deletions
diff --git a/src/com/android/phone/vvm/omtp/protocol/Vvm3EventHandler.java b/src/com/android/phone/vvm/omtp/protocol/Vvm3EventHandler.java
index d95879f93..524c96d4c 100644
--- a/src/com/android/phone/vvm/omtp/protocol/Vvm3EventHandler.java
+++ b/src/com/android/phone/vvm/omtp/protocol/Vvm3EventHandler.java
@@ -18,13 +18,17 @@ package com.android.phone.vvm.omtp.protocol;
import android.annotation.IntDef;
import android.content.Context;
+import android.provider.VoicemailContract.Status;
+import android.telecom.PhoneAccountHandle;
import android.util.Log;
+
import com.android.phone.VoicemailStatus;
import com.android.phone.settings.VoicemailChangePinActivity;
import com.android.phone.vvm.omtp.DefaultOmtpEventHandler;
import com.android.phone.vvm.omtp.OmtpEvents;
import com.android.phone.vvm.omtp.OmtpEvents.Type;
import com.android.phone.vvm.omtp.OmtpVvmCarrierConfigHelper;
+
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -113,19 +117,22 @@ public class Vvm3EventHandler {
OmtpEvents event) {
switch (event) {
case CONFIG_REQUEST_STATUS_SUCCESS:
- if (status.getPhoneAccountHandle() == null) {
- // This should never happen.
- Log.e(TAG, "status editor has null phone account handle");
- return true;
- }
-
- if (!VoicemailChangePinActivity
- .isDefaultOldPinSet(context, status.getPhoneAccountHandle())) {
+ if (!isPinRandomized(context, status.getPhoneAccountHandle())) {
return false;
} else {
postError(status, PIN_NOT_SET);
}
break;
+ case CONFIG_ACTIVATING_SUBSEQUENT:
+ if (isPinRandomized(context, status.getPhoneAccountHandle())) {
+ status.setConfigurationState(PIN_NOT_SET);
+ } else {
+ status.setConfigurationState(Status.CONFIGURATION_STATE_OK);
+ }
+ status
+ .setNotificationChannelState(Status.NOTIFICATION_CHANNEL_STATE_OK)
+ .setDataChannelState(Status.DATA_CHANNEL_STATE_OK).apply();
+ break;
case CONFIG_DEFAULT_PIN_REPLACED:
postError(status, PIN_NOT_SET);
break;
@@ -269,4 +276,13 @@ public class Vvm3EventHandler {
}
editor.apply();
}
+
+ private static boolean isPinRandomized(Context context, PhoneAccountHandle phoneAccountHandle) {
+ if (phoneAccountHandle == null) {
+ // This should never happen.
+ Log.e(TAG, "status editor has null phone account handle");
+ return false;
+ }
+ return VoicemailChangePinActivity.isDefaultOldPinSet(context, phoneAccountHandle);
+ }
}