summaryrefslogtreecommitdiff
path: root/java/com/android/voicemail/impl/sync
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/voicemail/impl/sync')
-rw-r--r--java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java39
-rw-r--r--java/com/android/voicemail/impl/sync/SyncOneTask.java2
-rw-r--r--java/com/android/voicemail/impl/sync/SyncTask.java2
-rw-r--r--java/com/android/voicemail/impl/sync/UploadTask.java2
-rw-r--r--java/com/android/voicemail/impl/sync/VoicemailsQueryHelper.java24
5 files changed, 31 insertions, 38 deletions
diff --git a/java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java b/java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java
index af934dd3c..3443737cd 100644
--- a/java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java
+++ b/java/com/android/voicemail/impl/sync/OmtpVvmSyncService.java
@@ -36,6 +36,7 @@ import com.android.voicemail.impl.VvmLog;
import com.android.voicemail.impl.fetch.VoicemailFetchedCallback;
import com.android.voicemail.impl.imap.ImapHelper;
import com.android.voicemail.impl.imap.ImapHelper.InitializingException;
+import com.android.voicemail.impl.mail.store.ImapFolder.Quota;
import com.android.voicemail.impl.scheduling.BaseTask;
import com.android.voicemail.impl.settings.VisualVoicemailSettingsUtil;
import com.android.voicemail.impl.sync.VvmNetworkRequest.NetworkWrapper;
@@ -152,21 +153,28 @@ public class OmtpVvmSyncService {
*/
private void autoDeleteAndArchiveVM(
ImapHelper imapHelper, PhoneAccountHandle phoneAccountHandle) {
-
- if (isArchiveAllowedAndEnabled(mContext, phoneAccountHandle)) {
- if ((float) imapHelper.getOccuupiedQuota() / (float) imapHelper.getTotalQuota()
- > AUTO_DELETE_ARCHIVE_VM_THRESHOLD) {
- deleteAndArchiveVM(imapHelper);
- imapHelper.updateQuota();
- LoggerUtils.logImpressionOnMainThread(
- mContext, DialerImpression.Type.VVM_ARCHIVE_AUTO_DELETED_VM_FROM_SERVER);
- } else {
- VvmLog.i(TAG, "no need to archive and auto delete VM, quota below threshold");
- }
- } else {
+ if (!isArchiveAllowedAndEnabled(mContext, phoneAccountHandle)) {
VvmLog.i(TAG, "autoDeleteAndArchiveVM is turned off");
LoggerUtils.logImpressionOnMainThread(
mContext, DialerImpression.Type.VVM_ARCHIVE_AUTO_DELETE_TURNED_OFF);
+ return;
+ }
+ Quota quotaOnServer = imapHelper.getQuota();
+ if (quotaOnServer == null) {
+ LoggerUtils.logImpressionOnMainThread(
+ mContext, DialerImpression.Type.VVM_ARCHIVE_AUTO_DELETE_FAILED_DUE_TO_FAILED_QUOTA_CHECK);
+ VvmLog.e(TAG, "autoDeleteAndArchiveVM failed - Can't retrieve Imap quota.");
+ return;
+ }
+
+ if ((float) quotaOnServer.occupied / (float) quotaOnServer.total
+ > AUTO_DELETE_ARCHIVE_VM_THRESHOLD) {
+ deleteAndArchiveVM(imapHelper, quotaOnServer);
+ imapHelper.updateQuota();
+ LoggerUtils.logImpressionOnMainThread(
+ mContext, DialerImpression.Type.VVM_ARCHIVE_AUTO_DELETED_VM_FROM_SERVER);
+ } else {
+ VvmLog.i(TAG, "no need to archive and auto delete VM, quota below threshold");
}
}
@@ -190,14 +198,15 @@ public class OmtpVvmSyncService {
return true;
}
- private void deleteAndArchiveVM(ImapHelper imapHelper) {
+ private void deleteAndArchiveVM(ImapHelper imapHelper, Quota quotaOnServer) {
// Archive column should only be used for 0 and above
Assert.isTrue(BuildCompat.isAtLeastO());
+
// The number of voicemails that exceed our threshold and should be deleted from the server
int numVoicemails =
- imapHelper.getOccuupiedQuota()
- - (int) (AUTO_DELETE_ARCHIVE_VM_THRESHOLD * imapHelper.getTotalQuota());
+ quotaOnServer.occupied - (int) (AUTO_DELETE_ARCHIVE_VM_THRESHOLD * quotaOnServer.total);
List<Voicemail> oldestVoicemails = mQueryHelper.oldestVoicemailsOnServer(numVoicemails);
+ VvmLog.w(TAG, "number of voicemails to delete " + numVoicemails);
if (!oldestVoicemails.isEmpty()) {
mQueryHelper.markArchivedInDatabase(oldestVoicemails);
imapHelper.markMessagesAsDeleted(oldestVoicemails);
diff --git a/java/com/android/voicemail/impl/sync/SyncOneTask.java b/java/com/android/voicemail/impl/sync/SyncOneTask.java
index 19419ec8a..cd2782abb 100644
--- a/java/com/android/voicemail/impl/sync/SyncOneTask.java
+++ b/java/com/android/voicemail/impl/sync/SyncOneTask.java
@@ -51,7 +51,7 @@ public class SyncOneTask extends BaseTask {
intent.putExtra(EXTRA_PHONE_ACCOUNT_HANDLE, phone);
intent.putExtra(EXTRA_SYNC_TYPE, OmtpVvmSyncService.SYNC_DOWNLOAD_ONE_TRANSCRIPTION);
intent.putExtra(EXTRA_VOICEMAIL, voicemail);
- context.startService(intent);
+ context.sendBroadcast(intent);
}
public SyncOneTask() {
diff --git a/java/com/android/voicemail/impl/sync/SyncTask.java b/java/com/android/voicemail/impl/sync/SyncTask.java
index 27f803401..0b3e090bf 100644
--- a/java/com/android/voicemail/impl/sync/SyncTask.java
+++ b/java/com/android/voicemail/impl/sync/SyncTask.java
@@ -48,7 +48,7 @@ public class SyncTask extends BaseTask {
Intent intent = BaseTask.createIntent(context, SyncTask.class, phone);
intent.putExtra(EXTRA_PHONE_ACCOUNT_HANDLE, phone);
intent.putExtra(EXTRA_SYNC_TYPE, syncType);
- context.startService(intent);
+ context.sendBroadcast(intent);
}
public SyncTask() {
diff --git a/java/com/android/voicemail/impl/sync/UploadTask.java b/java/com/android/voicemail/impl/sync/UploadTask.java
index 403074572..f2b2036b5 100644
--- a/java/com/android/voicemail/impl/sync/UploadTask.java
+++ b/java/com/android/voicemail/impl/sync/UploadTask.java
@@ -44,7 +44,7 @@ public class UploadTask extends BaseTask {
public static void start(Context context, PhoneAccountHandle phoneAccountHandle) {
Intent intent = BaseTask.createIntent(context, UploadTask.class, phoneAccountHandle);
- context.startService(intent);
+ context.sendBroadcast(intent);
}
@Override
diff --git a/java/com/android/voicemail/impl/sync/VoicemailsQueryHelper.java b/java/com/android/voicemail/impl/sync/VoicemailsQueryHelper.java
index bfc2e5f20..9b295dbb7 100644
--- a/java/com/android/voicemail/impl/sync/VoicemailsQueryHelper.java
+++ b/java/com/android/voicemail/impl/sync/VoicemailsQueryHelper.java
@@ -27,7 +27,6 @@ import android.provider.VoicemailContract;
import android.provider.VoicemailContract.Voicemails;
import android.support.annotation.NonNull;
import android.telecom.PhoneAccountHandle;
-import android.text.TextUtils;
import com.android.dialer.common.Assert;
import com.android.voicemail.impl.Voicemail;
import java.util.ArrayList;
@@ -54,12 +53,6 @@ public class VoicemailsQueryHelper {
Voicemails.DIRTY + "=1 AND " + Voicemails.DELETED + "!=1 AND " + Voicemails.IS_READ + "=1";
static final String DELETED_SELECTION = Voicemails.DELETED + "=1";
static final String ARCHIVED_SELECTION = Voicemails.ARCHIVED + "=0";
- private static final String PHONE_ACCOUNT_HANDLE_SELECTION =
- "("
- + Voicemails.PHONE_ACCOUNT_COMPONENT_NAME
- + "=? AND "
- + Voicemails.PHONE_ACCOUNT_ID
- + "=?)";
private Context mContext;
private ContentResolver mContentResolver;
@@ -101,23 +94,14 @@ public class VoicemailsQueryHelper {
/**
* Utility method to make queries to the voicemail database.
*
+ * <p>TODO(b/36588206) add PhoneAccountHandle filtering back
+ *
* @param selection A filter declaring which rows to return. {@code null} returns all rows.
* @return A list of voicemails according to the selection statement.
*/
private List<Voicemail> getLocalVoicemails(
- @NonNull PhoneAccountHandle phoneAccountHandle, String selection) {
-
- String[] selectionArgs =
- new String[] {
- phoneAccountHandle.getComponentName().flattenToString(), phoneAccountHandle.getId()
- };
- if (TextUtils.isEmpty(selection)) {
- selection = PHONE_ACCOUNT_HANDLE_SELECTION;
- } else {
- selection = PHONE_ACCOUNT_HANDLE_SELECTION + " AND (" + selection + ")";
- }
-
- Cursor cursor = mContentResolver.query(mSourceUri, PROJECTION, selection, selectionArgs, null);
+ @NonNull PhoneAccountHandle unusedPhoneAccountHandle, String selection) {
+ Cursor cursor = mContentResolver.query(mSourceUri, PROJECTION, selection, null, null);
if (cursor == null) {
return null;
}