summaryrefslogtreecommitdiff
path: root/java/com/android/voicemail/impl/settings
diff options
context:
space:
mode:
authoruabdullah <uabdullah@google.com>2018-03-22 18:32:26 -0700
committerCopybara-Service <copybara-piper@google.com>2018-03-26 22:17:03 -0700
commit74831c35e09344ef700efbdac4ec14d6590be40f (patch)
treed46d57c1823d6ecdd78b4162eaa5ccb5f8f65b20 /java/com/android/voicemail/impl/settings
parent4fde0acedbfb4802ac3ee236507a0c5a485f59e7 (diff)
Delete locally transcribed transcripts when transcription is turned off.
When a user turns off transcription setting we should delete all the voicemails locally transcribed by google. We do this by deleting all the transcripts associated with the source package of the app. Bug: 74033229,76167428 Test: Unit Test PiperOrigin-RevId: 190159353 Change-Id: I328aece594aa0e66de59e43fa3619b5e9ae15f78
Diffstat (limited to 'java/com/android/voicemail/impl/settings')
-rw-r--r--java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java75
1 files changed, 73 insertions, 2 deletions
diff --git a/java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java b/java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java
index 3e006988e..e7248c40f 100644
--- a/java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java
+++ b/java/com/android/voicemail/impl/settings/VisualVoicemailSettingsUtil.java
@@ -15,18 +15,22 @@
*/
package com.android.voicemail.impl.settings;
+import android.content.ContentValues;
import android.content.Context;
+import android.provider.CallLog;
+import android.provider.CallLog.Calls;
+import android.provider.VoicemailContract.Voicemails;
import android.support.annotation.VisibleForTesting;
import android.telecom.PhoneAccountHandle;
import com.android.dialer.common.Assert;
import com.android.dialer.common.concurrent.DialerExecutor.Worker;
import com.android.dialer.common.concurrent.DialerExecutorComponent;
+import com.android.dialer.common.database.Selection;
import com.android.voicemail.VoicemailComponent;
import com.android.voicemail.impl.OmtpVvmCarrierConfigHelper;
import com.android.voicemail.impl.VisualVoicemailPreferences;
import com.android.voicemail.impl.VvmLog;
import com.android.voicemail.impl.sync.VvmAccountManager;
-import com.android.voicemail.impl.utils.VoicemailDatabaseUtil;
/** Save whether or not a particular account is enabled in shared to be retrieved later. */
public class VisualVoicemailSettingsUtil {
@@ -88,6 +92,28 @@ public class VisualVoicemailSettingsUtil {
.edit()
.putBoolean(TRANSCRIBE_VOICEMAILS_KEY, isEnabled)
.apply();
+
+ if (!isEnabled) {
+ VvmLog.i(
+ "VisualVoicemailSettingsUtil.setVoicemailTranscriptionEnabled",
+ "clear all Google transcribed voicemail.");
+ DialerExecutorComponent.get(context)
+ .dialerExecutorFactory()
+ .createNonUiTaskBuilder(new ClearGoogleTranscribedVoicemailTranscriptionWorker(context))
+ .onSuccess(
+ (result) ->
+ VvmLog.i(
+ "VisualVoicemailSettingsUtil.setVoicemailTranscriptionEnabled",
+ "voicemail transciptions cleared successfully"))
+ .onFailure(
+ (throwable) ->
+ VvmLog.e(
+ "VisualVoicemailSettingsUtil.setVoicemailTranscriptionEnabled",
+ "unable to clear Google transcribed voicemails",
+ throwable))
+ .build()
+ .executeParallel(null);
+ }
}
public static void setVoicemailDonationEnabled(
@@ -153,6 +179,7 @@ public class VisualVoicemailSettingsUtil {
return prefs.contains(IS_ENABLED_KEY);
}
+ /** Delete all the voicemails whose source_package field matches this package */
private static class VoicemailDeleteWorker implements Worker<Void, Void> {
private final Context context;
@@ -162,9 +189,53 @@ public class VisualVoicemailSettingsUtil {
@Override
public Void doInBackground(Void unused) {
- int deleted = VoicemailDatabaseUtil.deleteAll(context);
+ int deleted =
+ context
+ .getContentResolver()
+ .delete(Voicemails.buildSourceUri(context.getPackageName()), null, null);
+
VvmLog.i("VisualVoicemailSettingsUtil.doInBackground", "deleted " + deleted + " voicemails");
return null;
}
}
+
+ /**
+ * Clears all the voicemail transcripts in the call log whose source_package field matches this
+ * package
+ */
+ private static class ClearGoogleTranscribedVoicemailTranscriptionWorker
+ implements Worker<Void, Void> {
+ private final Context context;
+
+ ClearGoogleTranscribedVoicemailTranscriptionWorker(Context context) {
+ this.context = context;
+ }
+
+ @Override
+ public Void doInBackground(Void unused) {
+
+ ContentValues contentValues = new ContentValues();
+ contentValues.put(Voicemails.TRANSCRIPTION, "");
+
+ Selection selection =
+ Selection.builder()
+ .and(Selection.column(CallLog.Calls.TYPE).is("=", Calls.VOICEMAIL_TYPE))
+ .and(Selection.column(Voicemails.SOURCE_PACKAGE).is("=", context.getPackageName()))
+ .build();
+
+ int cleared =
+ context
+ .getContentResolver()
+ .update(
+ Calls.CONTENT_URI_WITH_VOICEMAIL,
+ contentValues,
+ selection.getSelection(),
+ selection.getSelectionArgs());
+
+ VvmLog.i(
+ "VisualVoicemailSettingsUtil.doInBackground",
+ "cleared " + cleared + " voicemail transcription");
+ return null;
+ }
+ }
}