diff options
author | Ta-wei Yen <twyen@google.com> | 2017-01-09 11:16:25 -0800 |
---|---|---|
committer | Ta-wei Yen <twyen@google.com> | 2017-01-09 11:17:53 -0800 |
commit | e4f651b96552f9abc39e035c87547492c2b2682e (patch) | |
tree | 46967b9f3fed2ef9ce42f59f846e0192a34ba0c5 | |
parent | c0febc48e8e72bd25b67048584c38df83edb89e5 (diff) | |
download | android_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.java | 32 |
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); + } } |