summaryrefslogtreecommitdiff
path: root/java/com/android/voicemail/impl/sync
diff options
context:
space:
mode:
authorEric Erfanian <erfanian@google.com>2017-04-06 09:41:50 -0700
committerEric Erfanian <erfanian@google.com>2017-04-06 09:41:50 -0700
commitd8046e520a866b9948ee9ba47cf642b441ca8e23 (patch)
tree8d08d4f2292aa84dc435d455891e7ab633d95a25 /java/com/android/voicemail/impl/sync
parentcdb1edf966a892abebcba425a85b7d4e47758302 (diff)
Update AOSP Dialer source from internal google3 repository at
cl/152373142. Test: make, treehugger This CL updates the AOSP Dialer source with all the changes that have gone into the private google3 repository. This includes all the changes from cl/151342913 (3/27/2017) to cl/152373142 (4/06/2017). This goal of these drops is to keep the AOSP source in sync with the internal google3 repository. Currently these sync are done by hand with very minor modifications to the internal source code. See the Android.mk file for list of modifications. Our current goal is to do frequent drops (daily if possible) and eventually switched to an automated process. Change-Id: I2fbc88cf6867b90ac8b65f75e5e34468988c7217
Diffstat (limited to 'java/com/android/voicemail/impl/sync')
-rw-r--r--java/com/android/voicemail/impl/sync/OmtpVvmSyncReceiver.java2
-rw-r--r--java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java29
-rw-r--r--java/com/android/voicemail/impl/sync/VvmAccountManager.java37
3 files changed, 59 insertions, 9 deletions
diff --git a/java/com/android/voicemail/impl/sync/OmtpVvmSyncReceiver.java b/java/com/android/voicemail/impl/sync/OmtpVvmSyncReceiver.java
index ef6f6322c..b2ec49e9f 100644
--- a/java/com/android/voicemail/impl/sync/OmtpVvmSyncReceiver.java
+++ b/java/com/android/voicemail/impl/sync/OmtpVvmSyncReceiver.java
@@ -35,7 +35,7 @@ public class OmtpVvmSyncReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
if (!VoicemailComponent.get(context).getVoicemailClient().isVoicemailModuleEnabled()) {
- // ACTION_SYNC_VOICEMAIL is available pre-O
+ // ACTION_SYNC_VOICEMAIL is available pre-O, ignore if received.
return;
}
diff --git a/java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java b/java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java
index 25325eeb7..83a3960dd 100644
--- a/java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java
+++ b/java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java
@@ -24,9 +24,9 @@ import android.support.v4.os.BuildCompat;
import android.telecom.PhoneAccountHandle;
import android.text.TextUtils;
import android.util.ArrayMap;
-import com.android.dialer.common.ConfigProviderBindings;
import com.android.dialer.logging.Logger;
import com.android.dialer.logging.nano.DialerImpression;
+import com.android.voicemail.VoicemailComponent;
import com.android.voicemail.impl.ActivationTask;
import com.android.voicemail.impl.Assert;
import com.android.voicemail.impl.OmtpEvents;
@@ -153,9 +153,7 @@ public class OmtpVvmSyncService {
private void autoDeleteAndArchiveVM(
ImapHelper imapHelper, PhoneAccountHandle phoneAccountHandle) {
- if (ConfigProviderBindings.get(mContext)
- .getBoolean(VisualVoicemailSettingsUtil.ALLOW_VOICEMAIL_ARCHIVE, true)
- && isArchiveEnabled(mContext, phoneAccountHandle)) {
+ if (isArchiveAllowedAndEnabled(mContext, phoneAccountHandle)) {
if ((float) imapHelper.getOccuupiedQuota() / (float) imapHelper.getTotalQuota()
> AUTO_DELETE_ARCHIVE_VM_THRESHOLD) {
deleteAndArchiveVM(imapHelper);
@@ -166,14 +164,29 @@ public class OmtpVvmSyncService {
VvmLog.i(TAG, "no need to archive and auto delete VM, quota below threshold");
}
} else {
- VvmLog.i(TAG, "autoDeleteAndArchiveVM is turned off");
+ VvmLog.i(TAG, "isArchiveAllowedAndEnabled is false");
Logger.get(mContext).logImpression(DialerImpression.Type.VVM_ARCHIVE_AUTO_DELETE_TURNED_OFF);
}
}
- private static boolean isArchiveEnabled(Context context, PhoneAccountHandle phoneAccountHandle) {
- return VisualVoicemailSettingsUtil.isArchiveEnabled(context, phoneAccountHandle)
- && VisualVoicemailSettingsUtil.isEnabled(context, phoneAccountHandle);
+ private static boolean isArchiveAllowedAndEnabled(
+ Context context, PhoneAccountHandle phoneAccountHandle) {
+
+ if (!VoicemailComponent.get(context)
+ .getVoicemailClient()
+ .isVoicemailArchiveAvailable(context)) {
+ VvmLog.i("isArchiveAllowedAndEnabled", "voicemail archive is not available");
+ return false;
+ }
+ if (!VisualVoicemailSettingsUtil.isArchiveEnabled(context, phoneAccountHandle)) {
+ VvmLog.i("isArchiveAllowedAndEnabled", "voicemail archive is turned off");
+ return false;
+ }
+ if (!VisualVoicemailSettingsUtil.isEnabled(context, phoneAccountHandle)) {
+ VvmLog.i("isArchiveAllowedAndEnabled", "voicemail is turned off");
+ return false;
+ }
+ return true;
}
private void deleteAndArchiveVM(ImapHelper imapHelper) {
diff --git a/java/com/android/voicemail/impl/sync/VvmAccountManager.java b/java/com/android/voicemail/impl/sync/VvmAccountManager.java
index 05f649450..cc4e31fe3 100644
--- a/java/com/android/voicemail/impl/sync/VvmAccountManager.java
+++ b/java/com/android/voicemail/impl/sync/VvmAccountManager.java
@@ -16,16 +16,20 @@
package com.android.voicemail.impl.sync;
import android.content.Context;
+import android.support.annotation.MainThread;
import android.support.annotation.NonNull;
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
+import android.util.ArraySet;
import com.android.dialer.common.Assert;
+import com.android.dialer.common.concurrent.ThreadUtil;
import com.android.voicemail.impl.OmtpConstants;
import com.android.voicemail.impl.VisualVoicemailPreferences;
import com.android.voicemail.impl.VoicemailStatus;
import com.android.voicemail.impl.sms.StatusMessage;
import java.util.ArrayList;
import java.util.List;
+import java.util.Set;
/**
* Tracks the activation state of a visual voicemail phone account. An account is considered
@@ -39,13 +43,28 @@ import java.util.List;
public class VvmAccountManager {
public static final String TAG = "VvmAccountManager";
+ /** Listener for activation state changes. Will be called on the main thread. */
+ public interface Listener {
+ @MainThread
+ void onActivationStateChanged(PhoneAccountHandle phoneAccountHandle, boolean isActivated);
+ }
+
private static final String IS_ACCOUNT_ACTIVATED = "is_account_activated";
+ private static Set<Listener> listeners = new ArraySet<>();
+
public static void addAccount(
Context context, PhoneAccountHandle phoneAccountHandle, StatusMessage statusMessage) {
VisualVoicemailPreferences preferences =
new VisualVoicemailPreferences(context, phoneAccountHandle);
statusMessage.putStatus(preferences.edit()).putBoolean(IS_ACCOUNT_ACTIVATED, true).apply();
+
+ ThreadUtil.postOnUiThread(
+ () -> {
+ for (Listener listener : listeners) {
+ listener.onActivationStateChanged(phoneAccountHandle, true);
+ }
+ });
}
public static void removeAccount(Context context, PhoneAccountHandle phoneAccount) {
@@ -57,6 +76,12 @@ public class VvmAccountManager {
.putString(OmtpConstants.IMAP_USER_NAME, null)
.putString(OmtpConstants.IMAP_PASSWORD, null)
.apply();
+ ThreadUtil.postOnUiThread(
+ () -> {
+ for (Listener listener : listeners) {
+ listener.onActivationStateChanged(phoneAccount, false);
+ }
+ });
}
public static boolean isAccountActivated(Context context, PhoneAccountHandle phoneAccount) {
@@ -76,4 +101,16 @@ public class VvmAccountManager {
}
return results;
}
+
+ @MainThread
+ public static void addListener(Listener listener) {
+ Assert.isMainThread();
+ listeners.add(listener);
+ }
+
+ @MainThread
+ public static void removeListener(Listener listener) {
+ Assert.isMainThread();
+ listeners.remove(listener);
+ }
}