From e4f651b96552f9abc39e035c87547492c2b2682e Mon Sep 17 00:00:00 2001 From: Ta-wei Yen Date: Mon, 9 Jan 2017 11:16:25 -0800 Subject: 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 --- .../phone/vvm/omtp/protocol/Vvm3EventHandler.java | 32 ++++++++++++++++------ 1 file 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); + } } -- cgit v1.2.3