From 9ce20d0d9da7545b5ef9226e1fc06f9fe2b741e7 Mon Sep 17 00:00:00 2001 From: uabdullah Date: Thu, 3 Aug 2017 22:22:35 -0700 Subject: Remove Dialer Backup and Restore Code We want to clean up all the Dialer Backup and Restore. This includes the existing Dolly backup code for settings/preferences (causes a crash) and the Hangouts K/V Backup (does not work). The idea is to just have a clean simple K/V backup and restore for dialer, which will be in a follow up CL. Bug: 64363054 Test: Manual. Builds successfully. PiperOrigin-RevId: 164225991 Change-Id: Ic71cfaeed37a5c9f0002d8d12db757f19c0ddf1e --- java/com/android/dialer/backup/AndroidManifest.xml | 26 -- .../android/dialer/backup/DialerBackupAgent.java | 263 --------------- .../android/dialer/backup/DialerBackupUtils.java | 363 --------------------- .../dialer/backup/proto/voicemail_info.proto | 31 -- 4 files changed, 683 deletions(-) delete mode 100644 java/com/android/dialer/backup/AndroidManifest.xml delete mode 100644 java/com/android/dialer/backup/DialerBackupAgent.java delete mode 100644 java/com/android/dialer/backup/DialerBackupUtils.java delete mode 100644 java/com/android/dialer/backup/proto/voicemail_info.proto (limited to 'java/com/android/dialer/backup') diff --git a/java/com/android/dialer/backup/AndroidManifest.xml b/java/com/android/dialer/backup/AndroidManifest.xml deleted file mode 100644 index 1cbbe5339..000000000 --- a/java/com/android/dialer/backup/AndroidManifest.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/java/com/android/dialer/backup/DialerBackupAgent.java b/java/com/android/dialer/backup/DialerBackupAgent.java deleted file mode 100644 index a0baf39f7..000000000 --- a/java/com/android/dialer/backup/DialerBackupAgent.java +++ /dev/null @@ -1,263 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.dialer.backup; - -import android.annotation.TargetApi; -import android.app.backup.BackupAgent; -import android.app.backup.BackupDataInput; -import android.app.backup.BackupDataOutput; -import android.app.backup.FullBackupDataOutput; -import android.content.ContentResolver; -import android.content.ContentValues; -import android.database.Cursor; -import android.net.Uri; -import android.os.Build.VERSION_CODES; -import android.os.ParcelFileDescriptor; -import android.provider.CallLog; -import android.provider.CallLog.Calls; -import android.provider.VoicemailContract; -import android.provider.VoicemailContract.Voicemails; -import android.telecom.PhoneAccountHandle; -import android.util.Pair; -import com.android.dialer.common.Assert; -import com.android.dialer.common.LogUtil; -import com.android.dialer.logging.DialerImpression; -import com.android.dialer.logging.Logger; -import com.android.dialer.telecom.TelecomUtil; -import java.io.File; -import java.io.IOException; -import java.io.OutputStream; -import java.util.List; -import java.util.Locale; - -/** - * The Dialer backup agent to backup voicemails, and files under files, shared prefs and databases - */ -public class DialerBackupAgent extends BackupAgent { - // File names suffix for backup/restore. - private static final String VOICEMAIL_BACKUP_FILE_SUFFIX = "_voicemail_backup.proto"; - // File name formats for backup. It looks like 000000_voicemail_backup.proto, 0000001... - private static final String VOICEMAIL_BACKUP_FILE_FORMAT = "%06d" + VOICEMAIL_BACKUP_FILE_SUFFIX; - // Order by Date entries from database. We start backup from the newest. - private static final String ORDER_BY_DATE = "date DESC"; - // Voicemail Uri Column - public static final String VOICEMAIL_URI = "voicemail_uri"; - // Voicemail packages to backup - public static final String VOICEMAIL_SOURCE_PACKAGE = "com.google.android.dialer"; - - private long voicemailsBackedupSoFar = 0; - private long sizeOfVoicemailsBackedupSoFar = 0; - private boolean maxVoicemailBackupReached = false; - - /** - * onBackup is used for Key/Value backup. Since we are using Dolly/Android Auto backup, we do not - * need to implement this method and Dolly should not be calling this. Instead Dolly will be - * calling onFullBackup. - */ - @Override - public void onBackup( - ParcelFileDescriptor parcelFileDescriptor, - BackupDataOutput backupDataOutput, - ParcelFileDescriptor parcelFileDescriptor1) - throws IOException { - Logger.get(this).logImpression(DialerImpression.Type.BACKUP_ON_BACKUP); - Assert.fail("Android Backup should not call DialerBackupAgent.onBackup"); - } - - /** - * onRestore is used for Key/Value restore. Since we are using Dolly/Android Auto backup/restore, - * we need to implement this method only for backwards compatibility. Dolly should be calling - * onFileRestore during its restore. - */ - @Override - public void onRestore( - BackupDataInput backupDataInput, int i, ParcelFileDescriptor parcelFileDescriptor) - throws IOException { - Logger.get(this).logImpression(DialerImpression.Type.BACKUP_ON_RESTORE); - } - - @TargetApi(VERSION_CODES.M) - @Override - public void onFullBackup(FullBackupDataOutput data) throws IOException { - Logger.get(this).logImpression(DialerImpression.Type.BACKUP_ON_FULL_BACKUP); - LogUtil.i("DialerBackupAgent.onFullBackup", "performing dialer backup"); - - List phoneAccountsToArchive = - DialerBackupUtils.getPhoneAccountsToArchive(this); - - if (!maxVoicemailBackupReached && !phoneAccountsToArchive.isEmpty()) { - voicemailsBackedupSoFar = 0; - sizeOfVoicemailsBackedupSoFar = 0; - - LogUtil.i("DialerBackupAgent.onFullBackup", "autoBackup is enabled"); - ContentResolver contentResolver = getContentResolver(); - int limit = 1000; - - Uri uri = - TelecomUtil.getCallLogUri(this) - .buildUpon() - .appendQueryParameter(Calls.LIMIT_PARAM_KEY, Integer.toString(limit)) - .build(); - - LogUtil.i("DialerBackupAgent.onFullBackup", "backing up from: " + uri); - - try (Cursor cursor = - contentResolver.query( - uri, - null, - String.format( - "(%s = ? AND deleted = 0 AND %s = ? AND ?)", - Calls.TYPE, Voicemails.SOURCE_PACKAGE), - new String[] { - Integer.toString(CallLog.Calls.VOICEMAIL_TYPE), - VOICEMAIL_SOURCE_PACKAGE, - DialerBackupUtils.getPhoneAccountClause(phoneAccountsToArchive) - }, - ORDER_BY_DATE, - null)) { - - if (cursor == null) { - LogUtil.i("DialerBackupAgent.onFullBackup", "cursor was null"); - return; - } - - LogUtil.i("DialerBackupAgent.onFullBackup", "cursor count: " + cursor.getCount()); - if (cursor.moveToFirst()) { - int fileNum = 0; - do { - backupRow( - data, cursor, String.format(Locale.US, VOICEMAIL_BACKUP_FILE_FORMAT, fileNum++)); - } while (cursor.moveToNext() && !maxVoicemailBackupReached); - } else { - LogUtil.i("DialerBackupAgent.onFullBackup", "cursor.moveToFirst failed"); - } - } - } - LogUtil.i( - "DialerBackupAgent.onFullBackup", - "vm files backed up: %d, vm size backed up:%d, " - + "max vm backup reached:%b, phone accounts to archive: %d", - voicemailsBackedupSoFar, - sizeOfVoicemailsBackedupSoFar, - maxVoicemailBackupReached, - phoneAccountsToArchive.size()); - super.onFullBackup(data); - Logger.get(this).logImpression(DialerImpression.Type.BACKUP_FULL_BACKED_UP); - } - - private void backupRow(FullBackupDataOutput data, Cursor cursor, String fileName) - throws IOException { - - VoicemailInfo cursorRowInProto = - DialerBackupUtils.convertVoicemailCursorRowToProto(cursor, getContentResolver()); - - File file = new File(getFilesDir(), fileName); - DialerBackupUtils.writeProtoToFile(file, cursorRowInProto); - - if (sizeOfVoicemailsBackedupSoFar + file.length() - > DialerBackupUtils.maxVoicemailSizeToBackup) { - Logger.get(this).logImpression(DialerImpression.Type.BACKUP_MAX_VM_BACKUP_REACHED); - maxVoicemailBackupReached = true; - file.delete(); - return; - } - - backupFile(file, data); - } - - // TODO: Write to FullBackupDataOutput directly (b/33849960) - private void backupFile(File file, FullBackupDataOutput data) throws IOException { - try { - super.fullBackupFile(file, data); - sizeOfVoicemailsBackedupSoFar = sizeOfVoicemailsBackedupSoFar + file.length(); - voicemailsBackedupSoFar++; - Logger.get(this).logImpression(DialerImpression.Type.BACKUP_VOICEMAIL_BACKED_UP); - LogUtil.i("DialerBackupAgent.backupFile", "file backed up:" + file.getAbsolutePath()); - } finally { - file.delete(); - } - } - - // Being tracked in b/33839952 - @Override - public void onQuotaExceeded(long backupDataBytes, long quotaBytes) { - Logger.get(this).logImpression(DialerImpression.Type.BACKUP_ON_QUOTA_EXCEEDED); - LogUtil.i("DialerBackupAgent.onQuotaExceeded", "does nothing"); - } - - @TargetApi(VERSION_CODES.M) - @Override - public void onRestoreFile( - ParcelFileDescriptor data, long size, File destination, int type, long mode, long mtime) - throws IOException { - LogUtil.i("DialerBackupAgent.onRestoreFile", "size:" + size + " destination: " + destination); - - String fileName = destination.getName(); - LogUtil.i("DialerBackupAgent.onRestoreFile", "file name: " + fileName); - - if (fileName.endsWith(VOICEMAIL_BACKUP_FILE_SUFFIX)) { - if (DialerBackupUtils.canRestoreVoicemails(getContentResolver(), this)) { - try { - super.onRestoreFile(data, size, destination, type, mode, mtime); - restoreVoicemail(destination); - destination.delete(); - } catch (IOException e) { - Logger.get(this).logImpression(DialerImpression.Type.BACKUP_ON_RESTORE_IO_EXCEPTION); - LogUtil.e( - "DialerBackupAgent.onRestoreFile", "could not restore voicemail - IOException: ", e); - } - } else { - LogUtil.i("DialerBackupAgent.onRestoreFile", "build does not support restoring voicemails"); - } - - } else { - super.onRestoreFile(data, size, destination, type, mode, mtime); - LogUtil.i("DialerBackupAgent.onRestoreFile", "restored: " + fileName); - Logger.get(this).logImpression(DialerImpression.Type.BACKUP_RESTORED_FILE); - } - } - - @Override - public void onRestoreFinished() { - Logger.get(this).logImpression(DialerImpression.Type.BACKUP_ON_RESTORE_FINISHED); - LogUtil.i("DialerBackupAgent.onRestoreFinished", "do nothing"); - } - - @TargetApi(VERSION_CODES.M) - private void restoreVoicemail(File file) throws IOException { - Pair pair = - DialerBackupUtils.convertVoicemailProtoFileToContentValueAndAudioBytes( - file, getApplicationContext()); - - if (pair == null) { - LogUtil.i("DialerBackupAgent.restoreVoicemail", "not restoring VM due to duplicate"); - Logger.get(this) - .logImpression(DialerImpression.Type.BACKUP_ON_RESTORE_VM_DUPLICATE_NOT_RESTORING); - return; - } - - // TODO: Uniquely identify backup agent as the creator of this voicemail b/34084298 - try (OutputStream restoreStream = - getContentResolver() - .openOutputStream( - getContentResolver() - .insert(VoicemailContract.Voicemails.CONTENT_URI, pair.first))) { - DialerBackupUtils.copyAudioBytesToContentUri(pair.second, restoreStream); - Logger.get(this).logImpression(DialerImpression.Type.BACKUP_RESTORED_VOICEMAIL); - } - } -} diff --git a/java/com/android/dialer/backup/DialerBackupUtils.java b/java/com/android/dialer/backup/DialerBackupUtils.java deleted file mode 100644 index fe714f636..000000000 --- a/java/com/android/dialer/backup/DialerBackupUtils.java +++ /dev/null @@ -1,363 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.dialer.backup; - -import android.annotation.TargetApi; -import android.content.ContentResolver; -import android.content.ContentValues; -import android.content.Context; -import android.database.Cursor; -import android.net.Uri; -import android.os.Build.VERSION_CODES; -import android.provider.VoicemailContract; -import android.provider.VoicemailContract.Voicemails; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.telecom.PhoneAccountHandle; -import android.telecom.TelecomManager; -import android.util.Pair; -import com.android.dialer.common.Assert; -import com.android.dialer.common.LogUtil; -import com.android.dialer.configprovider.ConfigProviderBindings; -import com.android.voicemail.VoicemailComponent; -import com.google.common.io.ByteStreams; -import com.google.common.io.Files; -import com.google.protobuf.ByteString; -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.ArrayList; -import java.util.List; - -/** Helper functions for DialerBackupAgent */ -public class DialerBackupUtils { - // Backup voicemails up to 20MB - static long maxVoicemailSizeToBackup = 20000000L; - static final String RESTORED_COLUMN = "restored"; - - private DialerBackupUtils() {} - - public static void copyAudioBytesToContentUri( - @NonNull byte[] audioBytesArray, @NonNull OutputStream restoreStream) throws IOException { - LogUtil.i("DialerBackupUtils.copyStream", "audioByteArray length: " + audioBytesArray.length); - - ByteArrayInputStream decodedStream = new ByteArrayInputStream(audioBytesArray); - LogUtil.i( - "DialerBackupUtils.copyStream", "decodedStream.available: " + decodedStream.available()); - - ByteStreams.copy(decodedStream, restoreStream); - } - - public static @Nullable ByteString audioStreamToByteString(@NonNull InputStream stream) - throws IOException { - if (stream.available() > 0) { - return ByteString.readFrom(stream); - } else { - LogUtil.i("DialerBackupUtils.audioStreamToByteArray", "no audio stream to backup"); - } - return ByteString.EMPTY; - } - - public static void writeProtoToFile(@NonNull File file, @NonNull VoicemailInfo voicemailInfo) - throws IOException { - LogUtil.i( - "DialerBackupUtils.writeProtoToFile", - "backup " + voicemailInfo + " to " + file.getAbsolutePath()); - - byte[] bytes = voicemailInfo.toByteArray(); - Files.write(bytes, file); - } - - /** Only restore voicemails that have the restored column in calllog (NMR2+ builds) */ - @TargetApi(VERSION_CODES.M) - public static boolean canRestoreVoicemails(ContentResolver contentResolver, Context context) { - try (Cursor cursor = contentResolver.query(Voicemails.CONTENT_URI, null, null, null, null)) { - // Restored column only exists in NMR2 and above builds. - if (cursor.getColumnIndex(RESTORED_COLUMN) != -1) { - LogUtil.i("DialerBackupUtils.canRestoreVoicemails", "Build supports restore"); - return true; - } else { - LogUtil.i("DialerBackupUtils.canRestoreVoicemails", "Build does not support restore"); - return false; - } - } - } - - public static VoicemailInfo protoFileToVoicemailInfo(@NonNull File file) throws IOException { - byte[] byteArray = Files.toByteArray(file); - return VoicemailInfo.parseFrom(byteArray); - } - - @TargetApi(VERSION_CODES.M) - public static VoicemailInfo convertVoicemailCursorRowToProto( - @NonNull Cursor cursor, @NonNull ContentResolver contentResolver) throws IOException { - - VoicemailInfo.Builder voicemailInfo = VoicemailInfo.newBuilder(); - - for (int i = 0; i < cursor.getColumnCount(); ++i) { - String name = cursor.getColumnName(i); - String value = cursor.getString(i); - - LogUtil.i( - "DialerBackupUtils.convertVoicemailCursorRowToProto", - "column index: %d, column name: %s, column value: %s", - i, - name, - value); - - switch (name) { - case Voicemails.DATE: - voicemailInfo.setDate(value); - break; - case Voicemails.DELETED: - voicemailInfo.setDeleted(value); - break; - case Voicemails.DIRTY: - voicemailInfo.setDirty(value); - break; - case Voicemails.DIR_TYPE: - voicemailInfo.setDirType(value); - break; - case Voicemails.DURATION: - voicemailInfo.setDuration(value); - break; - case Voicemails.HAS_CONTENT: - voicemailInfo.setHasContent(value); - break; - case Voicemails.IS_READ: - voicemailInfo.setIsRead(value); - break; - case Voicemails.ITEM_TYPE: - voicemailInfo.setItemType(value); - break; - case Voicemails.LAST_MODIFIED: - voicemailInfo.setLastModified(value); - break; - case Voicemails.MIME_TYPE: - voicemailInfo.setMimeType(value); - break; - case Voicemails.NUMBER: - voicemailInfo.setNumber(value); - break; - case Voicemails.PHONE_ACCOUNT_COMPONENT_NAME: - voicemailInfo.setPhoneAccountComponentName(value); - break; - case Voicemails.PHONE_ACCOUNT_ID: - voicemailInfo.setPhoneAccountId(value); - break; - case Voicemails.SOURCE_DATA: - voicemailInfo.setSourceData(value); - break; - case Voicemails.SOURCE_PACKAGE: - voicemailInfo.setSourcePackage(value); - break; - case Voicemails.TRANSCRIPTION: - voicemailInfo.setTranscription(value); - break; - case DialerBackupAgent.VOICEMAIL_URI: - try (InputStream audioStream = contentResolver.openInputStream(Uri.parse(value))) { - voicemailInfo.setEncodedVoicemailKey(audioStreamToByteString(audioStream)); - } - break; - default: - LogUtil.i( - "DialerBackupUtils.convertVoicemailCursorRowToProto", - "Not backing up column: %s, with value: %s", - name, - value); - break; - } - } - return voicemailInfo.build(); - } - - public static Pair convertVoicemailProtoFileToContentValueAndAudioBytes( - @NonNull File file, Context context) throws IOException { - - VoicemailInfo voicemailInfo = DialerBackupUtils.protoFileToVoicemailInfo(file); - LogUtil.i( - "DialerBackupUtils.convertVoicemailProtoFileToContentValueAndEncodedAudio", - "file name: " - + file.getName() - + " voicemailInfo size: " - + voicemailInfo.getSerializedSize()); - - if (isDuplicate(context, voicemailInfo)) { - LogUtil.i( - "DialerBackupUtils.convertVoicemailProtoFileToContentValueAndEncodedAudio", - "voicemail already exists"); - return null; - } else { - ContentValues contentValues = new ContentValues(); - - if (voicemailInfo.hasDate()) { - contentValues.put(Voicemails.DATE, voicemailInfo.getDate()); - } - if (voicemailInfo.hasDeleted()) { - contentValues.put(Voicemails.DELETED, voicemailInfo.getDeleted()); - } - if (!voicemailInfo.hasDirty()) { - contentValues.put(Voicemails.DIRTY, voicemailInfo.getDirty()); - } - if (!voicemailInfo.hasDuration()) { - contentValues.put(Voicemails.DURATION, voicemailInfo.getDuration()); - } - if (!voicemailInfo.hasIsRead()) { - contentValues.put(Voicemails.IS_READ, voicemailInfo.getIsRead()); - } - if (!voicemailInfo.hasLastModified()) { - contentValues.put(Voicemails.LAST_MODIFIED, voicemailInfo.getLastModified()); - } - if (!voicemailInfo.hasMimeType()) { - contentValues.put(Voicemails.MIME_TYPE, voicemailInfo.getMimeType()); - } - if (!voicemailInfo.hasNumber()) { - contentValues.put(Voicemails.NUMBER, voicemailInfo.getNumber()); - } - if (!voicemailInfo.hasPhoneAccountComponentName()) { - contentValues.put( - Voicemails.PHONE_ACCOUNT_COMPONENT_NAME, voicemailInfo.getPhoneAccountComponentName()); - } - if (!voicemailInfo.hasPhoneAccountId()) { - contentValues.put(Voicemails.PHONE_ACCOUNT_ID, voicemailInfo.getPhoneAccountId()); - } - if (!voicemailInfo.hasSourceData()) { - contentValues.put(Voicemails.SOURCE_DATA, voicemailInfo.getSourceData()); - } - if (!voicemailInfo.hasSourcePackage()) { - contentValues.put(Voicemails.SOURCE_PACKAGE, voicemailInfo.getSourcePackage()); - } - if (!voicemailInfo.hasTranscription()) { - contentValues.put(Voicemails.TRANSCRIPTION, voicemailInfo.getTranscription()); - } - contentValues.put(VoicemailContract.Voicemails.HAS_CONTENT, 1); - contentValues.put(RESTORED_COLUMN, "1"); - contentValues.put(Voicemails.SOURCE_PACKAGE, getSourcePackage(context, voicemailInfo)); - - LogUtil.i( - "DialerBackupUtils.convertVoicemailProtoFileToContentValueAndEncodedAudio", - "cv: " + contentValues); - - return Pair.create(contentValues, voicemailInfo.getEncodedVoicemailKey().toByteArray()); - } - } - - /** - * We should be using the system package name as the source package if there is no endless VM/VM - * archive present on the device. This is to separate pre-O (no endless VM) and O+ (endless VM) - * devices. This ensures that the source of truth for VMs is the VM server when endless VM is not - * enabled, and when endless VM/archived VMs is present, the source of truth for VMs is the device - * itself. - */ - private static String getSourcePackage(Context context, VoicemailInfo voicemailInfo) { - if (ConfigProviderBindings.get(context) - .getBoolean("voicemail_restore_force_system_source_package", false)) { - LogUtil.i("DialerBackupUtils.getSourcePackage", "forcing system source package"); - return "com.android.phone"; - } - if (ConfigProviderBindings.get(context) - .getBoolean("voicemail_restore_check_archive_for_source_package", true)) { - if ("1".equals(voicemailInfo.getArchived())) { - LogUtil.i( - "DialerBackupUtils.getSourcePackage", - "voicemail was archived, using app source package"); - // Using our app's source package will prevent the archived voicemail from being deleted by - // the system when it syncs with the voicemail server. In most cases the user will not see - // duplicate voicemails because this voicemail was archived and likely deleted from the - // voicemail server. - return context.getPackageName(); - } else { - // Use the system source package. This means that if the voicemail is not present on the - // voicemail server then the system will delete it when it syncs. - LogUtil.i( - "DialerBackupUtils.getSourcePackage", - "voicemail was not archived, using system source package"); - return "com.android.phone"; - } - } - // Use our app's source package. This means that if the system syncs voicemail from the server - // the user could potentially get duplicate voicemails. - LogUtil.i("DialerBackupUtils.getSourcePackage", "defaulting to using app source package"); - return context.getPackageName(); - } - - @TargetApi(VERSION_CODES.M) - private static boolean isDuplicate(Context context, VoicemailInfo voicemailInfo) { - // This checks for VM that might already exist, and doesn't restore them - try (Cursor cursor = - context - .getContentResolver() - .query( - VoicemailContract.Voicemails.CONTENT_URI, - null, - String.format( - "(%s = ? AND %s = ? AND %s = ?)", - Voicemails.NUMBER, Voicemails.DATE, Voicemails.DURATION), - new String[] { - voicemailInfo.getNumber(), voicemailInfo.getDate(), voicemailInfo.getDuration() - }, - null, - null)) { - if (cursor.moveToFirst() - && ConfigProviderBindings.get(context) - .getBoolean("enable_vm_restore_no_duplicate", true)) { - return true; - } - } - return false; - } - - public static String getPhoneAccountClause(List phoneAccountsToArchive) { - Assert.checkArgument(!phoneAccountsToArchive.isEmpty()); - StringBuilder whereQuery = new StringBuilder(); - - whereQuery.append("("); - - for (int i = 0; i < phoneAccountsToArchive.size(); i++) { - whereQuery.append( - Voicemails.PHONE_ACCOUNT_ID + " = " + phoneAccountsToArchive.get(i).getId()); - - if (phoneAccountsToArchive.size() > 1 && i < phoneAccountsToArchive.size() - 1) { - whereQuery.append(" OR "); - } - } - whereQuery.append(")"); - return whereQuery.toString(); - } - - public static List getPhoneAccountsToArchive(Context context) { - List phoneAccountsToBackUp = new ArrayList<>(); - - for (PhoneAccountHandle handle : - context.getSystemService(TelecomManager.class).getCallCapablePhoneAccounts()) { - - if (VoicemailComponent.get(context) - .getVoicemailClient() - .isVoicemailArchiveEnabled(context, handle)) { - phoneAccountsToBackUp.add(handle); - LogUtil.i( - "DialerBackupUtils.getPhoneAccountsToArchive", "enabled for: " + handle.toString()); - } else { - LogUtil.i( - "DialerBackupUtils.getPhoneAccountsToArchive", "not enabled for: " + handle.toString()); - } - } - return phoneAccountsToBackUp; - } -} diff --git a/java/com/android/dialer/backup/proto/voicemail_info.proto b/java/com/android/dialer/backup/proto/voicemail_info.proto deleted file mode 100644 index 749768359..000000000 --- a/java/com/android/dialer/backup/proto/voicemail_info.proto +++ /dev/null @@ -1,31 +0,0 @@ -syntax = "proto2"; - -option java_package = "com.android.dialer.backup"; -option java_multiple_files = true; -option optimize_for = LITE_RUNTIME; - - -package com.android.dialer.backup; - -// Next id: 20 -message VoicemailInfo { - optional string date = 1; - optional string deleted = 2; - optional string dirty = 3; - optional string dir_type = 4; - optional string duration = 5; - optional string has_content = 6; - optional string is_read = 7; - optional string item_type = 8; - optional string last_modified = 9; - optional string mime_type = 10; - optional string number = 11; - optional string phone_account_component_name = 12; - optional string phone_account_id = 13; - optional string source_data = 14; - optional string source_package = 15; - optional string transcription = 16; - optional string voicemail_uri = 17; - optional bytes encoded_voicemail_key = 18; - optional string archived = 19; -} -- cgit v1.2.3