From e128bff457303e6bfbfe40e816170668b748a393 Mon Sep 17 00:00:00 2001 From: Michael W Date: Tue, 17 Dec 2024 19:04:38 +0100 Subject: [PATCH] Messaging: Language cleanup No unnecessary boxing, enhanced for loops, redundant checks and throws, imports (removal, reordering), possible void returns Change-Id: I7a8e1b2007e3b0906e01b41785c518d02c2f3fab --- src/android/support/v7/mms/pdu/Base64.java | 6 +- .../support/v7/mms/pdu/PduHeaders.java | 4 +- .../android/messaging/BugleApplication.java | 16 +++-- .../datamodel/BugleDatabaseOperations.java | 4 +- .../datamodel/BugleNotifications.java | 27 ++++---- .../messaging/datamodel/DatabaseHelper.java | 6 -- .../messaging/datamodel/DatabaseWrapper.java | 2 +- .../FrequentContactsCursorBuilder.java | 14 ++--- .../FrequentContactsCursorQueryData.java | 3 +- .../datamodel/MessageNotificationState.java | 14 ++--- .../messaging/datamodel/MmsFileProvider.java | 2 +- .../NoConfirmationSmsSendService.java | 2 +- .../action/BackgroundWorkerService.java | 18 +++--- .../action/ProcessPendingMessagesAction.java | 4 -- .../datamodel/action/SyncMessagesAction.java | 6 +- .../datamodel/data/MessagePartData.java | 1 - .../datamodel/data/PeopleOptionsItemData.java | 3 +- .../datamodel/data/SelfParticipantsData.java | 1 + .../datamodel/media/ImageRequest.java | 3 +- .../datamodel/media/MediaResourceManager.java | 5 +- .../messaging/mmslib/SqliteWrapper.java | 21 ++----- .../messaging/mmslib/pdu/PduComposer.java | 4 +- .../messaging/mmslib/pdu/PduHeaders.java | 5 +- .../messaging/mmslib/pdu/PduPersister.java | 18 ++---- .../messaging/receiver/SmsReceiver.java | 12 ++-- .../messaging/sms/BugleApnSettingsLoader.java | 4 +- .../sms/BugleCarrierConfigValuesLoader.java | 4 +- .../messaging/sms/DatabaseMessages.java | 12 ++-- src/com/android/messaging/sms/MmsUtils.java | 61 ++++++------------- .../messaging/sms/SystemProperties.java | 12 ++-- .../android/messaging/ui/AsyncImageView.java | 3 +- .../messaging/ui/AttachmentPreview.java | 5 +- .../ui/BlockedParticipantsFragment.java | 2 +- .../messaging/ui/BugleActionBarActivity.java | 8 +-- src/com/android/messaging/ui/SnackBar.java | 7 +-- .../android/messaging/ui/UIIntentsImpl.java | 5 +- .../messaging/ui/VideoThumbnailView.java | 1 - .../android/messaging/ui/ViewPagerTabs.java | 10 +-- .../animation/PopupTransitionAnimation.java | 1 - ...ViewGroupItemVerticalExplodeAnimation.java | 3 +- .../ui/contact/ContactRecipientAdapter.java | 2 - .../ui/conversation/ComposeMessageView.java | 9 +-- .../ConversationFastScroller.java | 27 ++++---- .../ConversationInputManager.java | 17 +++--- .../ConversationMessageAdapter.java | 5 +- .../conversation/ConversationMessageView.java | 6 +- .../conversation/ConversationSimSelector.java | 1 - .../ui/conversation/SimIconView.java | 4 +- .../AbstractConversationListActivity.java | 1 - .../ConversationListAdapter.java | 2 +- .../ConversationListFragment.java | 11 ++-- .../ConversationListItemView.java | 5 +- .../conversationlist/ShareIntentAdapter.java | 2 +- .../PeopleAndOptionsFragment.java | 4 +- .../PeopleOptionsItemView.java | 2 +- .../ui/mediapicker/AudioRecordView.java | 4 +- .../ui/mediapicker/CameraManager.java | 1 - .../ui/mediapicker/MediaChooser.java | 3 +- .../messaging/ui/mediapicker/MediaPicker.java | 5 +- .../ui/mediapicker/MediaPickerPanel.java | 1 - .../camerafocus/FocusOverlayManager.java | 2 +- .../photoviewer/BuglePhotoViewFragment.java | 2 + .../messaging/util/AccessibilityUtil.java | 8 +-- .../messaging/util/BugleActivityUtil.java | 4 -- .../util/ChangeDefaultSmsAppHelper.java | 2 +- .../messaging/util/ConnectivityUtil.java | 2 - .../android/messaging/util/ContactUtil.java | 2 - .../messaging/util/ConversationIdSet.java | 3 +- src/com/android/messaging/util/Dates.java | 3 +- .../android/messaging/util/DebugUtils.java | 18 ++---- .../android/messaging/util/EmailAddress.java | 4 +- .../android/messaging/util/ImageUtils.java | 3 +- .../messaging/util/NotificationPlayer.java | 7 +-- .../android/messaging/util/PhoneUtils.java | 7 +-- .../messaging/util/exif/ExifInterface.java | 12 ++-- .../messaging/widget/BaseWidgetProvider.java | 5 +- .../widget/WidgetConversationService.java | 1 - 77 files changed, 202 insertions(+), 334 deletions(-) diff --git a/src/android/support/v7/mms/pdu/Base64.java b/src/android/support/v7/mms/pdu/Base64.java index 9e47e89..3ef3ed4 100644 --- a/src/android/support/v7/mms/pdu/Base64.java +++ b/src/android/support/v7/mms/pdu/Base64.java @@ -153,9 +153,9 @@ public class Base64 { byte[] groomedData = new byte[data.length]; int bytesCopied = 0; - for (int i = 0; i < data.length; i++) { - if (isBase64(data[i])) { - groomedData[bytesCopied++] = data[i]; + for (byte datum : data) { + if (isBase64(datum)) { + groomedData[bytesCopied++] = datum; } } diff --git a/src/android/support/v7/mms/pdu/PduHeaders.java b/src/android/support/v7/mms/pdu/PduHeaders.java index 61504ba..bdcc6de 100644 --- a/src/android/support/v7/mms/pdu/PduHeaders.java +++ b/src/android/support/v7/mms/pdu/PduHeaders.java @@ -628,8 +628,8 @@ public class PduHeaders { } ArrayList list = new ArrayList<>(); - for (int i = 0; i < value.length; i++) { - list.add(value[i]); + for (EncodedStringValue encodedStringValue : value) { + list.add(encodedStringValue); } mHeaderMap.put(field, list); } diff --git a/src/com/android/messaging/BugleApplication.java b/src/com/android/messaging/BugleApplication.java index a972a19..d034e8c 100644 --- a/src/com/android/messaging/BugleApplication.java +++ b/src/com/android/messaging/BugleApplication.java @@ -165,16 +165,14 @@ public class BugleApplication extends Application implements UncaughtExceptionHa // Start method tracing with a big enough buffer and let it run for 30s. // Note we use a logging tag as we don't want to wait for gservices to start up. final File file = DebugUtils.getDebugFile("startup.trace", true); - if (file != null) { - android.os.Debug.startMethodTracing(file.getAbsolutePath(), 160 * 1024 * 1024); - new Handler(Looper.getMainLooper()).postDelayed(() -> { - android.os.Debug.stopMethodTracing(); - // Allow world to see trace file - DebugUtils.ensureReadable(file); - LogUtil.d(LogUtil.PROFILE_TAG, "Tracing complete - " - + file.getAbsolutePath()); + android.os.Debug.startMethodTracing(file.getAbsolutePath(), 160 * 1024 * 1024); + new Handler(Looper.getMainLooper()).postDelayed(() -> { + android.os.Debug.stopMethodTracing(); + // Allow world to see trace file + DebugUtils.ensureReadable(file); + LogUtil.d(LogUtil.PROFILE_TAG, "Tracing complete - " + + file.getAbsolutePath()); }, 30000); - } } } diff --git a/src/com/android/messaging/datamodel/BugleDatabaseOperations.java b/src/com/android/messaging/datamodel/BugleDatabaseOperations.java index b83d72d..c7bbaf1 100644 --- a/src/com/android/messaging/datamodel/BugleDatabaseOperations.java +++ b/src/com/android/messaging/datamodel/BugleDatabaseOperations.java @@ -24,9 +24,10 @@ import android.database.sqlite.SQLiteDoneException; import android.database.sqlite.SQLiteStatement; import android.net.Uri; import android.os.ParcelFileDescriptor; +import android.text.TextUtils; + import androidx.collection.ArrayMap; import androidx.collection.SimpleArrayMap; -import android.text.TextUtils; import com.android.messaging.Factory; import com.android.messaging.datamodel.DatabaseHelper.ConversationColumns; @@ -55,6 +56,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.HashSet; import java.util.List; + import javax.annotation.Nullable; diff --git a/src/com/android/messaging/datamodel/BugleNotifications.java b/src/com/android/messaging/datamodel/BugleNotifications.java index 0364713..1b41d3e 100644 --- a/src/com/android/messaging/datamodel/BugleNotifications.java +++ b/src/com/android/messaging/datamodel/BugleNotifications.java @@ -35,17 +35,18 @@ import android.os.Bundle; import android.os.SystemClock; import android.provider.ContactsContract; import android.provider.ContactsContract.Contacts; -import androidx.core.app.NotificationCompat; -import androidx.core.app.NotificationCompat.WearableExtender; -import androidx.core.app.NotificationManagerCompat; -import androidx.core.app.RemoteInput; -import androidx.collection.SimpleArrayMap; import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.TextUtils; import android.text.style.StyleSpan; import android.text.style.TextAppearanceSpan; +import androidx.collection.SimpleArrayMap; +import androidx.core.app.NotificationCompat; +import androidx.core.app.NotificationCompat.WearableExtender; +import androidx.core.app.NotificationManagerCompat; +import androidx.core.app.RemoteInput; + import com.android.messaging.Factory; import com.android.messaging.R; import com.android.messaging.datamodel.MessageNotificationState.BundledMessageNotificationState; @@ -55,14 +56,12 @@ import com.android.messaging.datamodel.MessageNotificationState.MultiMessageNoti import com.android.messaging.datamodel.action.MarkAsReadAction; import com.android.messaging.datamodel.action.MarkAsSeenAction; import com.android.messaging.datamodel.action.RedownloadMmsAction; -import com.android.messaging.datamodel.data.ConversationListItemData; import com.android.messaging.datamodel.media.AvatarRequestDescriptor; import com.android.messaging.datamodel.media.ImageResource; import com.android.messaging.datamodel.media.MediaRequest; import com.android.messaging.datamodel.media.MediaResourceManager; import com.android.messaging.datamodel.media.MessagePartVideoThumbnailRequestDescriptor; import com.android.messaging.datamodel.media.UriImageRequestDescriptor; -import com.android.messaging.datamodel.media.VideoThumbnailRequest; import com.android.messaging.sms.MmsSmsUtils; import com.android.messaging.sms.MmsUtils; import com.android.messaging.ui.UIIntents; @@ -78,7 +77,6 @@ import com.android.messaging.util.LogUtil; import com.android.messaging.util.NotificationPlayer; import com.android.messaging.util.NotificationsUtil; import com.android.messaging.util.PendingIntentConstants; -import com.android.messaging.util.PhoneUtils; import com.android.messaging.util.ThreadUtil; import com.android.messaging.util.UriUtil; @@ -632,9 +630,7 @@ public class BugleNotifications { } synchronized (sPendingNotifications) { - if (sPendingNotifications.contains(notificationState)) { - sPendingNotifications.remove(notificationState); - } + sPendingNotifications.remove(notificationState); } notificationState.mNotificationBuilder @@ -662,11 +658,10 @@ public class BugleNotifications { Bitmap attachmentBitmap = null; // For messages with photo/video attachment, request an image to show in the notification. - if (attachmentUri != null && notificationState.mNotificationStyle != null && - (notificationState.mNotificationStyle instanceof - NotificationCompat.BigPictureStyle) && - (ContentType.isImageType(attachmentType) || - ContentType.isVideoType(attachmentType))) { + if (attachmentUri != null && (notificationState.mNotificationStyle instanceof + NotificationCompat.BigPictureStyle) && + (ContentType.isImageType(attachmentType) || + ContentType.isVideoType(attachmentType))) { final boolean isVideo = ContentType.isVideoType(attachmentType); MediaRequest imageRequest; diff --git a/src/com/android/messaging/datamodel/DatabaseHelper.java b/src/com/android/messaging/datamodel/DatabaseHelper.java index 433d9d8..3eb6a26 100644 --- a/src/com/android/messaging/datamodel/DatabaseHelper.java +++ b/src/com/android/messaging/datamodel/DatabaseHelper.java @@ -32,12 +32,6 @@ import com.android.messaging.util.Assert; import com.android.messaging.util.Assert.DoesNotRunOnMainThread; import com.android.messaging.util.LogUtil; -/** - * TODO: Open Issues: - * - Should we be storing the draft messages in the regular messages table or should we have a - * separate table for drafts to keep the normal messages query as simple as possible? - */ - /** * Allows access to the SQL database. This is package private. */ diff --git a/src/com/android/messaging/datamodel/DatabaseWrapper.java b/src/com/android/messaging/datamodel/DatabaseWrapper.java index 6f9282c..3de15de 100644 --- a/src/com/android/messaging/datamodel/DatabaseWrapper.java +++ b/src/com/android/messaging/datamodel/DatabaseWrapper.java @@ -57,7 +57,7 @@ public class DatabaseWrapper { // track transaction on a per thread basis private static final ThreadLocal> sTransactionDepth = - ThreadLocal.withInitial(() -> new Stack<>()); + ThreadLocal.withInitial(Stack::new); private static final String[] sFormatStrings = new String[] { "took %d ms to %s", diff --git a/src/com/android/messaging/datamodel/FrequentContactsCursorBuilder.java b/src/com/android/messaging/datamodel/FrequentContactsCursorBuilder.java index a89cb0c..2fc05d0 100644 --- a/src/com/android/messaging/datamodel/FrequentContactsCursorBuilder.java +++ b/src/com/android/messaging/datamodel/FrequentContactsCursorBuilder.java @@ -25,7 +25,6 @@ import com.android.messaging.util.Assert; import com.android.messaging.util.ContactUtil; import java.util.ArrayList; -import java.util.Collections; /** * A cursor builder that takes the frequent contacts cursor and aggregate it with the all contacts @@ -45,20 +44,16 @@ public class FrequentContactsCursorBuilder { /** * Sets the frequent contacts cursor as soon as it is loaded, or null if it's reset. - * @return this builder instance for chained operations */ - public FrequentContactsCursorBuilder setFrequents(final Cursor frequentContactsCursor) { + public void setFrequents(final Cursor frequentContactsCursor) { mFrequentContactsCursor = frequentContactsCursor; - return this; } /** * Sets the all contacts cursor as soon as it is loaded, or null if it's reset. - * @return this builder instance for chained operations */ - public FrequentContactsCursorBuilder setAllContacts(final Cursor allContactsCursor) { + public void setAllContacts(final Cursor allContactsCursor) { mAllContactsCursor = allContactsCursor; - return this; } /** @@ -153,7 +148,7 @@ public class FrequentContactsCursorBuilder { // Now we have a list of rows containing frequent contacts in alphabetical order. // Therefore, sort all the rows according to their actual ranks in the frequents list. - Collections.sort(rows, (lhs, rhs) -> { + rows.sort((lhs, rhs) -> { final String lookupKeyLhs = (String) lhs[ContactUtil.INDEX_LOOKUP_KEY]; final String lookupKeyRhs = (String) rhs[ContactUtil.INDEX_LOOKUP_KEY]; Assert.isTrue(lookupKeyToRankMap.containsKey(lookupKeyLhs) && @@ -179,8 +174,7 @@ public class FrequentContactsCursorBuilder { return 1; } else { // Use the default sort order, i.e. sort by phoneType value. - return phoneTypeLhs < phoneTypeRhs ? -1 : - (phoneTypeLhs == phoneTypeRhs ? 0 : 1); + return Integer.compare(phoneTypeLhs, phoneTypeRhs); } } }); diff --git a/src/com/android/messaging/datamodel/FrequentContactsCursorQueryData.java b/src/com/android/messaging/datamodel/FrequentContactsCursorQueryData.java index 885d1b0..acd77fd 100644 --- a/src/com/android/messaging/datamodel/FrequentContactsCursorQueryData.java +++ b/src/com/android/messaging/datamodel/FrequentContactsCursorQueryData.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2015 The Android Open Source Project + * Copyright (C) 2024 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -52,7 +53,7 @@ public class FrequentContactsCursorQueryData extends CursorQueryData { private abstract class StrequentContactsQueryStrategy implements Strategy { @Override - public Cursor execute(Void params) throws Exception { + public Cursor execute(Void params) { final Uri uri = getUri(); if (uri != null) { setUri(uri); diff --git a/src/com/android/messaging/datamodel/MessageNotificationState.java b/src/com/android/messaging/datamodel/MessageNotificationState.java index 24838ae..c11714f 100644 --- a/src/com/android/messaging/datamodel/MessageNotificationState.java +++ b/src/com/android/messaging/datamodel/MessageNotificationState.java @@ -23,10 +23,6 @@ import android.content.res.Resources; import android.database.Cursor; import android.graphics.Typeface; import android.net.Uri; -import androidx.core.app.NotificationCompat; -import androidx.core.app.NotificationCompat.Builder; -import androidx.core.app.NotificationCompat.WearableExtender; -import androidx.core.app.NotificationManagerCompat; import android.text.Html; import android.text.Spannable; import android.text.SpannableString; @@ -38,6 +34,11 @@ import android.text.style.StyleSpan; import android.text.style.TextAppearanceSpan; import android.text.style.URLSpan; +import androidx.core.app.NotificationCompat; +import androidx.core.app.NotificationCompat.Builder; +import androidx.core.app.NotificationCompat.WearableExtender; +import androidx.core.app.NotificationManagerCompat; + import com.android.messaging.Factory; import com.android.messaging.R; import com.android.messaging.datamodel.data.ConversationListItemData; @@ -46,7 +47,6 @@ import com.android.messaging.datamodel.data.ConversationParticipantsData; import com.android.messaging.datamodel.data.MessageData; import com.android.messaging.datamodel.data.MessagePartData; import com.android.messaging.datamodel.data.ParticipantData; -import com.android.messaging.datamodel.media.VideoThumbnailRequest; import com.android.messaging.sms.MmsUtils; import com.android.messaging.ui.UIIntents; import com.android.messaging.util.Assert; @@ -635,9 +635,7 @@ public abstract class MessageNotificationState extends NotificationState { continue; } - final int currentCount = firstNames.containsKey(firstName) - ? firstNames.get(firstName) - : 0; + final int currentCount = firstNames.getOrDefault(firstName, 0); firstNames.put(firstName, currentCount + 1); } return firstNames; diff --git a/src/com/android/messaging/datamodel/MmsFileProvider.java b/src/com/android/messaging/datamodel/MmsFileProvider.java index eb49802..8a642b9 100644 --- a/src/com/android/messaging/datamodel/MmsFileProvider.java +++ b/src/com/android/messaging/datamodel/MmsFileProvider.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2015 The Android Open Source Project + * Copyright (C) 2024 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +19,6 @@ package com.android.messaging.datamodel; import android.content.Context; import android.net.Uri; -import android.text.TextUtils; import com.android.messaging.Factory; import com.android.messaging.util.LogUtil; diff --git a/src/com/android/messaging/datamodel/NoConfirmationSmsSendService.java b/src/com/android/messaging/datamodel/NoConfirmationSmsSendService.java index bea4961..1185388 100644 --- a/src/com/android/messaging/datamodel/NoConfirmationSmsSendService.java +++ b/src/com/android/messaging/datamodel/NoConfirmationSmsSendService.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2015 The Android Open Source Project + * Copyright (C) 2024 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +19,6 @@ package com.android.messaging.datamodel; import android.app.IntentService; import android.content.Intent; -import android.net.Uri; import android.os.Bundle; import androidx.core.app.RemoteInput; import android.telephony.TelephonyManager; diff --git a/src/com/android/messaging/datamodel/action/BackgroundWorkerService.java b/src/com/android/messaging/datamodel/action/BackgroundWorkerService.java index e33b9ff..d68e034 100644 --- a/src/com/android/messaging/datamodel/action/BackgroundWorkerService.java +++ b/src/com/android/messaging/datamodel/action/BackgroundWorkerService.java @@ -106,17 +106,13 @@ public class BackgroundWorkerService extends JobIntentService { protected void onHandleWork(@NonNull final Intent intent) { final int opcode = intent.getIntExtra(EXTRA_OP_CODE, 0); - switch(opcode) { - case OP_PROCESS_REQUEST: { - final Action action = intent.getParcelableExtra(EXTRA_ACTION); - final int attempt = intent.getIntExtra(EXTRA_ATTEMPT, -1); - doBackgroundWork(action, attempt); - break; - } - - default: - LogUtil.w(TAG, "Unrecognized opcode in BackgroundWorkerService " + opcode); - throw new RuntimeException("Unrecognized opcode in BackgroundWorkerService"); + if (opcode == OP_PROCESS_REQUEST) { + final Action action = intent.getParcelableExtra(EXTRA_ACTION); + final int attempt = intent.getIntExtra(EXTRA_ATTEMPT, -1); + doBackgroundWork(action, attempt); + } else { + LogUtil.w(TAG, "Unrecognized opcode in BackgroundWorkerService " + opcode); + throw new RuntimeException("Unrecognized opcode in BackgroundWorkerService"); } } diff --git a/src/com/android/messaging/datamodel/action/ProcessPendingMessagesAction.java b/src/com/android/messaging/datamodel/action/ProcessPendingMessagesAction.java index 49fc4bb..703b468 100644 --- a/src/com/android/messaging/datamodel/action/ProcessPendingMessagesAction.java +++ b/src/com/android/messaging/datamodel/action/ProcessPendingMessagesAction.java @@ -30,7 +30,6 @@ import com.android.messaging.datamodel.BugleDatabaseOperations; import com.android.messaging.datamodel.DataModel; import com.android.messaging.datamodel.DataModelImpl; import com.android.messaging.datamodel.DatabaseHelper; -import com.android.messaging.datamodel.DatabaseHelper.MessageColumns; import com.android.messaging.datamodel.DatabaseWrapper; import com.android.messaging.datamodel.MessagingContentProvider; import com.android.messaging.datamodel.data.MessageData; @@ -43,9 +42,6 @@ import com.android.messaging.util.ConnectivityUtil.ConnectivityListener; import com.android.messaging.util.LogUtil; import com.android.messaging.util.PhoneUtils; -import java.util.HashSet; -import java.util.Set; - /** * Action used to lookup any messages in the pending send/download state and either fail them or * retry their action based on subscriptions. This action only initiates one retry at a time for diff --git a/src/com/android/messaging/datamodel/action/SyncMessagesAction.java b/src/com/android/messaging/datamodel/action/SyncMessagesAction.java index 21e7d83..375fa33 100644 --- a/src/com/android/messaging/datamodel/action/SyncMessagesAction.java +++ b/src/com/android/messaging/datamodel/action/SyncMessagesAction.java @@ -106,11 +106,7 @@ public class SyncMessagesAction extends Action implements Parcelable { * sending/receiving). */ public static void immediateSync() { - final long now = System.currentTimeMillis(); - // TODO: Could base this off most recent message in db but now should be okay... - final long startTimestamp = now; - - sync(startTimestamp); + sync(System.currentTimeMillis()); } private static void sync(final long startTimestamp) { diff --git a/src/com/android/messaging/datamodel/data/MessagePartData.java b/src/com/android/messaging/datamodel/data/MessagePartData.java index 48be25e..d5030c5 100644 --- a/src/com/android/messaging/datamodel/data/MessagePartData.java +++ b/src/com/android/messaging/datamodel/data/MessagePartData.java @@ -47,7 +47,6 @@ import com.android.messaging.util.SafeAsyncTask; import com.android.messaging.util.UriUtil; import java.util.Arrays; -import java.util.concurrent.TimeUnit; /** * Represents a single message part. Messages consist of one or more parts which may contain diff --git a/src/com/android/messaging/datamodel/data/PeopleOptionsItemData.java b/src/com/android/messaging/datamodel/data/PeopleOptionsItemData.java index 7441afc..6669325 100644 --- a/src/com/android/messaging/datamodel/data/PeopleOptionsItemData.java +++ b/src/com/android/messaging/datamodel/data/PeopleOptionsItemData.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2015 The Android Open Source Project + * Copyright (C) 2024 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,10 +18,8 @@ package com.android.messaging.datamodel.data; import android.content.Context; import android.database.Cursor; -import android.net.Uri; import com.android.messaging.R; -import com.android.messaging.datamodel.data.ConversationListItemData.ConversationListViewColumns; import com.android.messaging.util.Assert; public class PeopleOptionsItemData { diff --git a/src/com/android/messaging/datamodel/data/SelfParticipantsData.java b/src/com/android/messaging/datamodel/data/SelfParticipantsData.java index 852fcd6..2f0715f 100644 --- a/src/com/android/messaging/datamodel/data/SelfParticipantsData.java +++ b/src/com/android/messaging/datamodel/data/SelfParticipantsData.java @@ -18,6 +18,7 @@ package com.android.messaging.datamodel.data; import android.database.Cursor; + import androidx.collection.ArrayMap; import java.util.ArrayList; diff --git a/src/com/android/messaging/datamodel/media/ImageRequest.java b/src/com/android/messaging/datamodel/media/ImageRequest.java index fedf03b..a655dbc 100644 --- a/src/com/android/messaging/datamodel/media/ImageRequest.java +++ b/src/com/android/messaging/datamodel/media/ImageRequest.java @@ -20,7 +20,6 @@ import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; -import android.graphics.Paint; import android.graphics.RectF; import com.android.messaging.datamodel.data.MessagePartData; @@ -224,7 +223,7 @@ public abstract class ImageRequest final int backgroundColor = mDescriptor.circleBackgroundColor; final int strokeColor = mDescriptor.circleStrokeColor; ImageUtils.drawBitmapWithCircleOnCanvas(sourceBitmap, new Canvas(targetBitmap), source, - dest, null, backgroundColor == 0 ? false : true /* fillBackground */, + dest, null, backgroundColor != 0 /* fillBackground */, backgroundColor, strokeColor); return new DecodedImageResource(getKey(), targetBitmap, loadedResource.getOrientation()); diff --git a/src/com/android/messaging/datamodel/media/MediaResourceManager.java b/src/com/android/messaging/datamodel/media/MediaResourceManager.java index 4f40e3f..2930e5a 100644 --- a/src/com/android/messaging/datamodel/media/MediaResourceManager.java +++ b/src/com/android/messaging/datamodel/media/MediaResourceManager.java @@ -188,10 +188,7 @@ public class MediaResourceManager { } final MediaCache mediaCache = mediaRequest.getMediaCache(); if (mediaCache != null) { - final T mediaResource = mediaCache.fetchResourceFromCache(mediaRequest.getKey()); - if (mediaResource != null) { - return mediaResource; - } + return mediaCache.fetchResourceFromCache(mediaRequest.getKey()); } return null; } diff --git a/src/com/android/messaging/mmslib/SqliteWrapper.java b/src/com/android/messaging/mmslib/SqliteWrapper.java index 8ef0e6f..7b0d4b8 100644 --- a/src/com/android/messaging/mmslib/SqliteWrapper.java +++ b/src/com/android/messaging/mmslib/SqliteWrapper.java @@ -1,6 +1,7 @@ /* * Copyright (C) 2008 Esmertec AG. * Copyright (C) 2008 The Android Open Source Project + * Copyright (C) 2024 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -38,10 +39,7 @@ public final class SqliteWrapper { String[] projection, String selection, String[] selectionArgs, String sortOrder) { try { return resolver.query(uri, projection, selection, selectionArgs, sortOrder); - } catch (SQLiteException e) { - LogUtil.e(TAG, "SqliteWrapper: catch an exception when query", e); - return null; - } catch (IllegalArgumentException e) { + } catch (SQLiteException | IllegalArgumentException e) { LogUtil.e(TAG, "SqliteWrapper: catch an exception when query", e); return null; } @@ -51,10 +49,7 @@ public final class SqliteWrapper { ContentValues values, String where, String[] selectionArgs) { try { return resolver.update(uri, values, where, selectionArgs); - } catch (SQLiteException e) { - LogUtil.e(TAG, "SqliteWrapper: catch an exception when update", e); - return -1; - } catch (IllegalArgumentException e) { + } catch (SQLiteException | IllegalArgumentException e) { LogUtil.e(TAG, "SqliteWrapper: catch an exception when update", e); return -1; } @@ -64,10 +59,7 @@ public final class SqliteWrapper { String where, String[] selectionArgs) { try { return resolver.delete(uri, where, selectionArgs); - } catch (SQLiteException e) { - LogUtil.e(TAG, "SqliteWrapper: catch an exception when delete", e); - return -1; - } catch (IllegalArgumentException e) { + } catch (SQLiteException | IllegalArgumentException e) { LogUtil.e(TAG, "SqliteWrapper: catch an exception when delete", e); return -1; } @@ -77,10 +69,7 @@ public final class SqliteWrapper { Uri uri, ContentValues values) { try { return resolver.insert(uri, values); - } catch (SQLiteException e) { - LogUtil.e(TAG, "SqliteWrapper: catch an exception when insert", e); - return null; - } catch (IllegalArgumentException e) { + } catch (SQLiteException | IllegalArgumentException e) { LogUtil.e(TAG, "SqliteWrapper: catch an exception when insert", e); return null; } diff --git a/src/com/android/messaging/mmslib/pdu/PduComposer.java b/src/com/android/messaging/mmslib/pdu/PduComposer.java index b7b322f..517fbb9 100644 --- a/src/com/android/messaging/mmslib/pdu/PduComposer.java +++ b/src/com/android/messaging/mmslib/pdu/PduComposer.java @@ -522,8 +522,8 @@ public class PduComposer { } EncodedStringValue temp; - for (int i = 0; i < addr.length; i++) { - temp = appendAddressType(addr[i]); + for (EncodedStringValue encodedStringValue : addr) { + temp = appendAddressType(encodedStringValue); if (temp == null) { return PDU_COMPOSE_CONTENT_ERROR; } diff --git a/src/com/android/messaging/mmslib/pdu/PduHeaders.java b/src/com/android/messaging/mmslib/pdu/PduHeaders.java index b447bd4..0b98bfb 100644 --- a/src/com/android/messaging/mmslib/pdu/PduHeaders.java +++ b/src/com/android/messaging/mmslib/pdu/PduHeaders.java @@ -23,6 +23,7 @@ import android.util.SparseArray; import com.android.messaging.mmslib.InvalidHeaderValueException; import java.util.ArrayList; +import java.util.Collections; public class PduHeaders { /** @@ -648,9 +649,7 @@ public class PduHeaders { } ArrayList list = new ArrayList<>(); - for (int i = 0; i < value.length; i++) { - list.add(value[i]); - } + Collections.addAll(list, value); mHeaderMap.put(field, list); } diff --git a/src/com/android/messaging/mmslib/pdu/PduPersister.java b/src/com/android/messaging/mmslib/pdu/PduPersister.java index 6e5ac0a..5a9d1fc 100644 --- a/src/com/android/messaging/mmslib/pdu/PduPersister.java +++ b/src/com/android/messaging/mmslib/pdu/PduPersister.java @@ -31,7 +31,6 @@ import android.provider.Telephony.Mms.Addr; import android.provider.Telephony.Mms.Part; import android.provider.Telephony.MmsSms; import android.provider.Telephony.MmsSms.PendingMessages; -import androidx.collection.ArrayMap; import androidx.collection.SimpleArrayMap; import android.telephony.PhoneNumberUtils; import android.text.TextUtils; @@ -694,9 +693,8 @@ public class PduPersister { || (msgType == PduHeaders.MESSAGE_TYPE_SEND_REQ)) { final PduPart[] parts = loadParts(msgId); if (parts != null) { - final int partsNum = parts.length; - for (int i = 0; i < partsNum; i++) { - body.addPart(parts[i]); + for (PduPart part : parts) { + body.addPart(part); } } } @@ -1223,7 +1221,7 @@ public class PduPersister { values.put(Mms.TEXT_ONLY, textOnly ? 1 : 0); values.put(Mms.SUBSCRIPTION_ID, subId); - Uri res = null; + Uri res; if (existingUri) { res = uri; SqliteWrapper.update(mContext, mContentResolver, res, values, null, null); @@ -1279,10 +1277,7 @@ public class PduPersister { for (final EncodedStringValue v : array) { if (v != null) { final String number = v.getString(); - if (!recipients.contains(number)) { - // Only add numbers which aren't already included. - recipients.add(number); - } + recipients.add(number); } } } @@ -1325,10 +1320,7 @@ public class PduPersister { for (final String number : numbers) { // Only add numbers which aren't my own number. if (isSelfNumberUnavailable || !PhoneNumberUtils.compare(number, selfNumber)) { - if (!recipients.contains(number)) { - // Only add numbers which aren't already included. - recipients.add(number); - } + recipients.add(number); } } } diff --git a/src/com/android/messaging/receiver/SmsReceiver.java b/src/com/android/messaging/receiver/SmsReceiver.java index fdaebf1..cbf8588 100644 --- a/src/com/android/messaging/receiver/SmsReceiver.java +++ b/src/com/android/messaging/receiver/SmsReceiver.java @@ -28,17 +28,12 @@ import android.content.pm.PackageManager; import android.content.res.Resources; import android.provider.Telephony; import android.provider.Telephony.Sms; -import androidx.core.app.NotificationCompat; -import androidx.core.app.NotificationCompat.Builder; -import androidx.core.app.NotificationCompat.Style; -import androidx.core.app.NotificationManagerCompat; -import java.util.ArrayList; -import java.util.regex.Pattern; +import androidx.core.app.NotificationCompat; +import androidx.core.app.NotificationManagerCompat; import com.android.messaging.Factory; import com.android.messaging.R; -import com.android.messaging.datamodel.BugleNotifications; import com.android.messaging.datamodel.NoConfirmationSmsSendService; import com.android.messaging.datamodel.action.ReceiveSmsMessageAction; import com.android.messaging.sms.MmsUtils; @@ -49,6 +44,9 @@ import com.android.messaging.util.OsUtil; import com.android.messaging.util.PendingIntentConstants; import com.android.messaging.util.PhoneUtils; +import java.util.ArrayList; +import java.util.regex.Pattern; + /** * Class that receives incoming SMS messages through android.provider.Telephony.SMS_RECEIVED * diff --git a/src/com/android/messaging/sms/BugleApnSettingsLoader.java b/src/com/android/messaging/sms/BugleApnSettingsLoader.java index d83ca34..9c8cd50 100644 --- a/src/com/android/messaging/sms/BugleApnSettingsLoader.java +++ b/src/com/android/messaging/sms/BugleApnSettingsLoader.java @@ -359,7 +359,7 @@ public class BugleApnSettingsLoader implements ApnSettingsLoader { } else { uri = Telephony.Carriers.CONTENT_URI; } - Cursor cursor = null; + Cursor cursor; try { for (; ; ) { // Try different combinations of queries. Some would work on some platforms. @@ -556,7 +556,7 @@ public class BugleApnSettingsLoader implements ApnSettingsLoader { return addr; } final StringBuilder builder = new StringBuilder(16); - String result = null; + String result; for (int i = 0; i < 4; i++) { try { if (octets[i].length() > 3) { diff --git a/src/com/android/messaging/sms/BugleCarrierConfigValuesLoader.java b/src/com/android/messaging/sms/BugleCarrierConfigValuesLoader.java index 107401c..a08c47b 100644 --- a/src/com/android/messaging/sms/BugleCarrierConfigValuesLoader.java +++ b/src/com/android/messaging/sms/BugleCarrierConfigValuesLoader.java @@ -107,9 +107,7 @@ public class BugleCarrierConfigValuesLoader implements CarrierConfigValuesLoader try { final Bundle systemValues = PhoneUtils.get(subId).getSmsManager().getCarrierConfigValues(); - if (systemValues != null) { - values.putAll(systemValues); - } + values.putAll(systemValues); } catch (final Exception e) { LogUtil.w(LogUtil.BUGLE_TAG, "Calling system getCarrierConfigValues exception", e); } diff --git a/src/com/android/messaging/sms/DatabaseMessages.java b/src/com/android/messaging/sms/DatabaseMessages.java index 2396a72..377f337 100644 --- a/src/com/android/messaging/sms/DatabaseMessages.java +++ b/src/com/android/messaging/sms/DatabaseMessages.java @@ -35,7 +35,6 @@ import android.webkit.MimeTypeMap; import com.android.messaging.Factory; import com.android.messaging.datamodel.data.MessageData; -import com.android.messaging.datamodel.media.VideoThumbnailRequest; import com.android.messaging.mmslib.pdu.CharacterSets; import com.android.messaging.util.ContentType; import com.android.messaging.util.LogUtil; @@ -65,7 +64,7 @@ public class DatabaseMessages { @Override public boolean equals(final Object other) { - if (other == null || !(other instanceof DatabaseMessage)) { + if (!(other instanceof DatabaseMessage)) { return false; } final DatabaseMessage otherDbMsg = (DatabaseMessage) other; @@ -155,8 +154,8 @@ public class DatabaseMessages { mType = cursor.getInt(INDEX_TYPE); mThreadId = cursor.getLong(INDEX_THREAD_ID); mStatus = cursor.getInt(INDEX_STATUS); - mRead = cursor.getInt(INDEX_READ) == 0 ? false : true; - mSeen = cursor.getInt(INDEX_SEEN) == 0 ? false : true; + mRead = cursor.getInt(INDEX_READ) != 0; + mSeen = cursor.getInt(INDEX_SEEN) != 0; mUri = ContentUris.withAppendedId(Sms.CONTENT_URI, mRowId).toString(); mSubId = PhoneUtils.getDefault().getSubIdFromTelephony(cursor, INDEX_SUB_ID); } @@ -351,8 +350,8 @@ public class DatabaseMessages { mThreadId = cursor.getLong(INDEX_THREAD_ID); mPriority = cursor.getInt(INDEX_PRIORITY); mStatus = cursor.getInt(INDEX_STATUS); - mRead = cursor.getInt(INDEX_READ) == 0 ? false : true; - mSeen = cursor.getInt(INDEX_SEEN) == 0 ? false : true; + mRead = cursor.getInt(INDEX_READ) != 0; + mSeen = cursor.getInt(INDEX_SEEN) != 0; mContentLocation = cursor.getString(INDEX_CONTENT_LOCATION); mTransactionId = cursor.getString(INDEX_TRANSACTION_ID); mMmsMessageType = cursor.getInt(INDEX_MESSAGE_TYPE); @@ -731,6 +730,7 @@ public class DatabaseMessages { /** * Get an instance of the MMS part from the part table cursor * + * @param loadMedia Whether to load the media file of the part */ public static MmsPart get(final Cursor cursor, final boolean loadMedia) { final MmsPart part = new MmsPart(); diff --git a/src/com/android/messaging/sms/MmsUtils.java b/src/com/android/messaging/sms/MmsUtils.java index f22a1ac..38e4c10 100644 --- a/src/com/android/messaging/sms/MmsUtils.java +++ b/src/com/android/messaging/sms/MmsUtils.java @@ -29,12 +29,10 @@ import android.database.sqlite.SQLiteException; import android.media.MediaMetadataRetriever; import android.net.Uri; import android.os.Bundle; -import android.provider.Settings; import android.provider.Telephony; import android.provider.Telephony.Mms; import android.provider.Telephony.Sms; import android.provider.Telephony.Threads; -import android.telephony.SmsManager; import android.telephony.SmsMessage; import android.text.TextUtils; @@ -45,7 +43,6 @@ import com.android.messaging.datamodel.action.DownloadMmsAction; import com.android.messaging.datamodel.action.SendMessageAction; import com.android.messaging.datamodel.data.MessageData; import com.android.messaging.datamodel.data.MessagePartData; -import com.android.messaging.datamodel.data.ParticipantData; import com.android.messaging.mmslib.InvalidHeaderValueException; import com.android.messaging.mmslib.MmsException; import com.android.messaging.mmslib.SqliteWrapper; @@ -122,7 +119,7 @@ public class MmsUtils { */ public static final int MMS_REQUEST_NO_RETRY = 3; - public static final String getRequestStatusDescription(final int status) { + public static String getRequestStatusDescription(final int status) { switch (status) { case MMS_REQUEST_SUCCEEDED: return "SUCCEEDED"; @@ -889,9 +886,7 @@ public class MmsUtils { LogUtil.d(TAG, "Mmsutils: Inserted SMS message into telephony (type = " + type + ")" + ", uri: " + response); } - } catch (final SQLiteException e) { - LogUtil.e(TAG, "MmsUtils: persist sms message failure " + e, e); - } catch (final IllegalArgumentException e) { + } catch (final SQLiteException | IllegalArgumentException e) { LogUtil.e(TAG, "MmsUtils: persist sms message failure " + e, e); } return response; @@ -914,9 +909,7 @@ public class MmsUtils { } return true; } - } catch (final SQLiteException e) { - LogUtil.e(TAG, "MmsUtils: update sms message failure " + e, e); - } catch (final IllegalArgumentException e) { + } catch (final SQLiteException | IllegalArgumentException e) { LogUtil.e(TAG, "MmsUtils: update sms message failure " + e, e); } return false; @@ -999,9 +992,7 @@ public class MmsUtils { } return true; } - } catch (final SQLiteException e) { - LogUtil.e(TAG, "MmsUtils: update mms message failure " + e, e); - } catch (final IllegalArgumentException e) { + } catch (final SQLiteException | IllegalArgumentException e) { LogUtil.e(TAG, "MmsUtils: update mms message failure " + e, e); } return false; @@ -1135,9 +1126,7 @@ public class MmsUtils { if (messageUri != null) { return ContentUris.parseId(messageUri); } - } catch (final UnsupportedOperationException e) { - // Nothing to do - } catch (final NumberFormatException e) { + } catch (final UnsupportedOperationException | NumberFormatException e) { // Nothing to do } return -1; @@ -1785,9 +1774,7 @@ public class MmsUtils { } MmsSender.sendNotifyResponseForMmsDownload( context, subId, transactionId, contentLocation, status); - } catch (final MmsFailureException e) { - LogUtil.e(TAG, "sendNotifyResponseForMmsDownload: failed to retrieve message " + e, e); - } catch (final InvalidHeaderValueException e) { + } catch (final MmsFailureException | InvalidHeaderValueException e) { LogUtil.e(TAG, "sendNotifyResponseForMmsDownload: failed to retrieve message " + e, e); } } @@ -1810,9 +1797,7 @@ public class MmsUtils { return; } MmsSender.sendAcknowledgeForMmsDownload(context, subId, transactionId, contentLocation); - } catch (final MmsFailureException e) { - LogUtil.e(TAG, "sendAcknowledgeForMmsDownload: failed to retrieve message " + e, e); - } catch (final InvalidHeaderValueException e) { + } catch (final MmsFailureException | InvalidHeaderValueException e) { LogUtil.e(TAG, "sendAcknowledgeForMmsDownload: failed to retrieve message " + e, e); } } @@ -1875,12 +1860,10 @@ public class MmsUtils { status = e.retryHint; rawStatus = e.rawStatus; LogUtil.e(TAG, "MmsUtils: failed to send message " + e, e); - } catch (final InvalidHeaderValueException e) { + } catch (final MmsException e) { LogUtil.e(TAG, "MmsUtils: failed to send message " + e, e); } catch (final IllegalArgumentException e) { LogUtil.e(TAG, "MmsUtils: invalid message to send " + e, e); - } catch (final MmsException e) { - LogUtil.e(TAG, "MmsUtils: failed to send message " + e, e); } // If we get here, some exception occurred return new StatusPlusUri(status, rawStatus, messageUri); @@ -1939,8 +1922,6 @@ public class MmsUtils { private static String[] getDupNotifications(final Context context, final NotificationInd nInd) { final byte[] rawTransactionId = nInd.getTransactionId(); if (rawTransactionId != null) { - // dedup algorithm - String selection = DUP_NOTIFICATION_QUERY_SELECTION; final long nowSecs = System.currentTimeMillis() / 1000; String[] selectionArgs = new String[] { Integer.toString(PduHeaders.MESSAGE_TYPE_NOTIFICATION_IND), @@ -1952,7 +1933,7 @@ public class MmsUtils { try (Cursor cursor = SqliteWrapper.query( context, context.getContentResolver(), Mms.CONTENT_URI, new String[]{Mms._ID}, - selection, selectionArgs, null)) { + DUP_NOTIFICATION_QUERY_SELECTION, selectionArgs, null)) { final int dupCount = cursor.getCount(); if (dupCount > 0) { // We already received the same notification before. @@ -2015,7 +1996,7 @@ public class MmsUtils { } final String[] dups = getDupNotifications(context, nInd); if (dups == null) { - Uri inboxUri = null; + Uri inboxUri; try { inboxUri = p.persist(pdu, Mms.Inbox.CONTENT_URI, subId, subPhoneNumber, null); @@ -2299,9 +2280,7 @@ public class MmsUtils { if (pduData == null || pduData.length < 1) { throw new IllegalArgumentException("Empty or zero length PDU data"); } - } catch (final MmsFailureException e) { - // Nothing to do - } catch (final InvalidHeaderValueException e) { + } catch (final MmsFailureException | InvalidHeaderValueException e) { // Nothing to do } return pduData; @@ -2349,17 +2328,15 @@ public class MmsUtils { } final String dumpFileName = MmsUtils.MMS_DUMP_PREFIX + getDumpFileId(pdu); final File dumpFile = DebugUtils.getDebugFile(dumpFileName, true); - if (dumpFile != null) { - try { - final FileOutputStream fos = new FileOutputStream(dumpFile); - try (BufferedOutputStream bos = new BufferedOutputStream(fos)) { - bos.write(rawPdu); - bos.flush(); - } - DebugUtils.ensureReadable(dumpFile); - } catch (final IOException e) { - LogUtil.e(TAG, "dumpPdu: " + e, e); + try { + final FileOutputStream fos = new FileOutputStream(dumpFile); + try (BufferedOutputStream bos = new BufferedOutputStream(fos)) { + bos.write(rawPdu); + bos.flush(); } + DebugUtils.ensureReadable(dumpFile); + } catch (final IOException e) { + LogUtil.e(TAG, "dumpPdu: " + e, e); } } diff --git a/src/com/android/messaging/sms/SystemProperties.java b/src/com/android/messaging/sms/SystemProperties.java index 669e448..098c894 100644 --- a/src/com/android/messaging/sms/SystemProperties.java +++ b/src/com/android/messaging/sms/SystemProperties.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2015 The Android Open Source Project + * Copyright (C) 2024 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,20 +33,15 @@ class SystemProperties { sSystemPropertiesGetMethod = systemPropertiesClass.getMethod("get", String.class); } - } catch (final ClassNotFoundException e) { - // Nothing to do - } catch (final NoSuchMethodException e) { + } catch (final ClassNotFoundException | NoSuchMethodException e) { // Nothing to do } } if (sSystemPropertiesGetMethod != null) { try { return (String) sSystemPropertiesGetMethod.invoke(null, name); - } catch (final IllegalArgumentException e) { - // Nothing to do - } catch (final IllegalAccessException e) { - // Nothing to do - } catch (final InvocationTargetException e) { + } catch (final IllegalArgumentException | InvocationTargetException | + IllegalAccessException e) { // Nothing to do } } diff --git a/src/com/android/messaging/ui/AsyncImageView.java b/src/com/android/messaging/ui/AsyncImageView.java index 4e7688c..e377525 100644 --- a/src/com/android/messaging/ui/AsyncImageView.java +++ b/src/com/android/messaging/ui/AsyncImageView.java @@ -26,11 +26,12 @@ import android.graphics.RectF; import android.graphics.drawable.AnimatedImageDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; -import androidx.annotation.Nullable; import android.text.TextUtils; import android.util.AttributeSet; import android.widget.ImageView; +import androidx.annotation.Nullable; + import com.android.messaging.R; import com.android.messaging.datamodel.binding.Binding; import com.android.messaging.datamodel.binding.BindingBase; diff --git a/src/com/android/messaging/ui/AttachmentPreview.java b/src/com/android/messaging/ui/AttachmentPreview.java index 31a83f1..38f74c6 100644 --- a/src/com/android/messaging/ui/AttachmentPreview.java +++ b/src/com/android/messaging/ui/AttachmentPreview.java @@ -132,7 +132,7 @@ public class AttachmentPreview extends ScrollView implements OnAttachmentClickLi } // returns true if we have attachments - public boolean onAttachmentsChanged(final DraftMessageData draftMessageData) { + public void onAttachmentsChanged(final DraftMessageData draftMessageData) { final boolean isFirstUpdate = mPendingFirstUpdate; final List attachments = draftMessageData.getReadOnlyAttachments(); final List pendingAttachments = @@ -163,7 +163,7 @@ public class AttachmentPreview extends ScrollView implements OnAttachmentClickLi // Run immediately when clearing attachments mHideRunnable.run(); } - return false; + return; } cancelPendingHide(); // We're showing @@ -248,7 +248,6 @@ public class AttachmentPreview extends ScrollView implements OnAttachmentClickLi } } } - return true; } public void onMessageAnimationStart() { diff --git a/src/com/android/messaging/ui/BlockedParticipantsFragment.java b/src/com/android/messaging/ui/BlockedParticipantsFragment.java index ccddbf4..528332d 100644 --- a/src/com/android/messaging/ui/BlockedParticipantsFragment.java +++ b/src/com/android/messaging/ui/BlockedParticipantsFragment.java @@ -30,11 +30,11 @@ import androidx.fragment.app.Fragment; import androidx.loader.app.LoaderManager; import com.android.messaging.R; +import com.android.messaging.datamodel.DataModel; import com.android.messaging.datamodel.binding.Binding; import com.android.messaging.datamodel.binding.BindingBase; import com.android.messaging.datamodel.data.BlockedParticipantsData; import com.android.messaging.datamodel.data.BlockedParticipantsData.BlockedParticipantsDataListener; -import com.android.messaging.datamodel.DataModel; import com.android.messaging.util.Assert; /** diff --git a/src/com/android/messaging/ui/BugleActionBarActivity.java b/src/com/android/messaging/ui/BugleActionBarActivity.java index 6a4ec1f..2c976a7 100644 --- a/src/com/android/messaging/ui/BugleActionBarActivity.java +++ b/src/com/android/messaging/ui/BugleActionBarActivity.java @@ -19,16 +19,16 @@ package com.android.messaging.ui; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; - -import androidx.annotation.NonNull; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AppCompatActivity; import android.view.ActionMode; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; +import androidx.annotation.NonNull; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AppCompatActivity; + import com.android.messaging.R; import com.android.messaging.util.BugleActivityUtil; import com.android.messaging.util.ImeUtil; diff --git a/src/com/android/messaging/ui/SnackBar.java b/src/com/android/messaging/ui/SnackBar.java index f638877..6c1e150 100644 --- a/src/com/android/messaging/ui/SnackBar.java +++ b/src/com/android/messaging/ui/SnackBar.java @@ -32,6 +32,7 @@ import com.android.messaging.util.Assert; import java.util.ArrayList; import java.util.List; +import java.util.Objects; public class SnackBar { public static final int LONG_DURATION_IN_MS = 5000; @@ -211,11 +212,7 @@ public class SnackBar { mAction = builder.mAction; mPlacement = builder.mPlacement; mParentView = builder.mParentView; - if (builder.mInteractions == null) { - mInteractions = new ArrayList<>(); - } else { - mInteractions = builder.mInteractions; - } + mInteractions = Objects.requireNonNullElseGet(builder.mInteractions, ArrayList::new); mActionTextView = (TextView) mRootView.findViewById(R.id.snack_bar_action); mMessageView = (TextView) mRootView.findViewById(R.id.snack_bar_message); diff --git a/src/com/android/messaging/ui/UIIntentsImpl.java b/src/com/android/messaging/ui/UIIntentsImpl.java index a7242d4..f2683a2 100644 --- a/src/com/android/messaging/ui/UIIntentsImpl.java +++ b/src/com/android/messaging/ui/UIIntentsImpl.java @@ -32,11 +32,11 @@ import android.os.Bundle; import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.Intents; import android.provider.MediaStore; +import android.text.TextUtils; import androidx.annotation.Nullable; import androidx.core.app.TaskStackBuilder; import androidx.localbroadcastmanager.content.LocalBroadcastManager; -import android.text.TextUtils; import com.android.ex.photo.Intents.PhotoViewIntentBuilder; import com.android.messaging.R; @@ -345,9 +345,8 @@ public class UIIntentsImpl extends UIIntents { @Override public Intent getIntentForConversationActivity(final Context context, final String conversationId, final MessageData draft) { - final Intent intent = getConversationActivityIntent(context, conversationId, draft, + return getConversationActivityIntent(context, conversationId, draft, false /* withCustomTransition */); - return intent; } @Override diff --git a/src/com/android/messaging/ui/VideoThumbnailView.java b/src/com/android/messaging/ui/VideoThumbnailView.java index c64b5a7..d3b57df 100644 --- a/src/com/android/messaging/ui/VideoThumbnailView.java +++ b/src/com/android/messaging/ui/VideoThumbnailView.java @@ -34,7 +34,6 @@ import com.android.messaging.R; import com.android.messaging.datamodel.data.MessagePartData; import com.android.messaging.datamodel.media.ImageRequest; import com.android.messaging.datamodel.media.MessagePartVideoThumbnailRequestDescriptor; -import com.android.messaging.datamodel.media.VideoThumbnailRequest; import com.android.messaging.util.Assert; /** diff --git a/src/com/android/messaging/ui/ViewPagerTabs.java b/src/com/android/messaging/ui/ViewPagerTabs.java index 81f4719..ac3a9b0 100644 --- a/src/com/android/messaging/ui/ViewPagerTabs.java +++ b/src/com/android/messaging/ui/ViewPagerTabs.java @@ -20,9 +20,6 @@ import android.content.Context; import android.content.res.ColorStateList; import android.content.res.TypedArray; import android.graphics.Outline; -import android.graphics.drawable.ColorDrawable; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; import android.util.AttributeSet; import android.util.TypedValue; import android.view.Gravity; @@ -34,6 +31,9 @@ import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; +import androidx.viewpager.widget.PagerAdapter; +import androidx.viewpager.widget.ViewPager; + import com.android.messaging.Factory; import com.android.messaging.R; @@ -184,7 +184,7 @@ public class ViewPagerTabs extends HorizontalScrollView implements ViewPager.OnP public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { position = getRtlPosition(position); int tabStripChildCount = mTabStrip.getChildCount(); - if ((tabStripChildCount == 0) || (position < 0) || (position >= tabStripChildCount)) { + if (position < 0 || position >= tabStripChildCount) { return; } @@ -195,7 +195,7 @@ public class ViewPagerTabs extends HorizontalScrollView implements ViewPager.OnP public void onPageSelected(int position) { position = getRtlPosition(position); int tabStripChildCount = mTabStrip.getChildCount(); - if ((tabStripChildCount == 0) || (position < 0) || (position >= tabStripChildCount)) { + if (position < 0 || position >= tabStripChildCount) { return; } diff --git a/src/com/android/messaging/ui/animation/PopupTransitionAnimation.java b/src/com/android/messaging/ui/animation/PopupTransitionAnimation.java index 87cab73..1d9c4ff 100644 --- a/src/com/android/messaging/ui/animation/PopupTransitionAnimation.java +++ b/src/com/android/messaging/ui/animation/PopupTransitionAnimation.java @@ -18,7 +18,6 @@ package com.android.messaging.ui.animation; import android.animation.TypeEvaluator; -import android.app.Activity; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Rect; diff --git a/src/com/android/messaging/ui/animation/ViewGroupItemVerticalExplodeAnimation.java b/src/com/android/messaging/ui/animation/ViewGroupItemVerticalExplodeAnimation.java index d96e0b1..0656b34 100644 --- a/src/com/android/messaging/ui/animation/ViewGroupItemVerticalExplodeAnimation.java +++ b/src/com/android/messaging/ui/animation/ViewGroupItemVerticalExplodeAnimation.java @@ -25,13 +25,14 @@ import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; -import androidx.core.view.ViewCompat; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroupOverlay; import android.view.ViewOverlay; import android.widget.FrameLayout; +import androidx.core.view.ViewCompat; + import com.android.messaging.R; import com.android.messaging.util.UiUtils; diff --git a/src/com/android/messaging/ui/contact/ContactRecipientAdapter.java b/src/com/android/messaging/ui/contact/ContactRecipientAdapter.java index 2446cd4..db2a3e6 100644 --- a/src/com/android/messaging/ui/contact/ContactRecipientAdapter.java +++ b/src/com/android/messaging/ui/contact/ContactRecipientAdapter.java @@ -18,7 +18,6 @@ package com.android.messaging.ui.contact; import android.content.Context; import android.database.Cursor; -import androidx.core.util.Pair; import android.text.TextUtils; import android.text.util.Rfc822Token; import android.text.util.Rfc822Tokenizer; @@ -222,7 +221,6 @@ public final class ContactRecipientAdapter extends BaseRecipientAdapter { * Compare two RecipientEntry's, first by locale-aware display name comparison, then by * contact id comparison, finally by first-level-ness comparison. */ - @Override public int compare(RecipientEntry lhs, RecipientEntry rhs) { // Send-to-destinations always appear before everything else. final boolean sendToLhs = ContactRecipientEntryUtils diff --git a/src/com/android/messaging/ui/conversation/ComposeMessageView.java b/src/com/android/messaging/ui/conversation/ComposeMessageView.java index f0806da..ace7d12 100644 --- a/src/com/android/messaging/ui/conversation/ComposeMessageView.java +++ b/src/com/android/messaging/ui/conversation/ComposeMessageView.java @@ -21,9 +21,6 @@ import android.content.res.Resources; import android.graphics.Rect; import android.net.Uri; import android.os.Bundle; - -import androidx.annotation.NonNull; -import androidx.appcompat.app.ActionBar; import android.text.Editable; import android.text.Html; import android.text.InputFilter; @@ -41,6 +38,8 @@ import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.appcompat.app.ActionBar; import com.android.messaging.Factory; import com.android.messaging.R; import com.android.messaging.datamodel.binding.Binding; @@ -320,14 +319,12 @@ public class ComposeMessageView extends LinearLayout } // returns true if it actually shows the subject editor and false if already showing - private boolean showSubjectEditor() { + private void showSubjectEditor() { // show the subject editor if (mSubjectView.getVisibility() == View.GONE) { mSubjectView.setVisibility(View.VISIBLE); mSubjectView.requestFocus(); - return true; } - return false; } private void hideSubjectEditor() { diff --git a/src/com/android/messaging/ui/conversation/ConversationFastScroller.java b/src/com/android/messaging/ui/conversation/ConversationFastScroller.java index c785635..7366b91 100644 --- a/src/com/android/messaging/ui/conversation/ConversationFastScroller.java +++ b/src/com/android/messaging/ui/conversation/ConversationFastScroller.java @@ -24,12 +24,6 @@ import android.content.res.Resources; import android.graphics.Rect; import android.graphics.drawable.StateListDrawable; import android.os.Handler; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; -import androidx.recyclerview.widget.RecyclerView.AdapterDataObserver; -import androidx.recyclerview.widget.RecyclerView.ViewHolder; import android.util.StateSet; import android.view.LayoutInflater; import android.view.MotionEvent; @@ -40,6 +34,11 @@ import android.view.ViewGroupOverlay; import android.widget.ImageView; import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.recyclerview.widget.RecyclerView.AdapterDataObserver; +import androidx.recyclerview.widget.RecyclerView.ViewHolder; import com.android.messaging.R; import com.android.messaging.datamodel.data.ConversationMessageData; @@ -77,9 +76,7 @@ public class ConversationFastScroller extends RecyclerView.OnScrollListener impl private static final int HIDE_ANIMATION_DURATION_MS = 300; private static final int HIDE_DELAY_MS = 1500; - private final Context mContext; private final RecyclerView mRv; - private final ViewGroupOverlay mOverlay; private final ImageView mTrackImageView; private final ImageView mThumbImageView; private final TextView mPreviewTextView; @@ -117,7 +114,7 @@ public class ConversationFastScroller extends RecyclerView.OnScrollListener impl }; private ConversationFastScroller(RecyclerView rv, int position) { - mContext = rv.getContext(); + final Context context = rv.getContext(); mRv = rv; mRv.addOnLayoutChangeListener(this); mRv.addOnScrollListener(this); @@ -131,7 +128,7 @@ public class ConversationFastScroller extends RecyclerView.OnScrollListener impl mPosRight = (position == POSITION_RIGHT_SIDE); // Cache the dimensions we'll need during layout - final Resources res = mContext.getResources(); + final Resources res = context.getResources(); mTrackWidth = res.getDimensionPixelSize(R.dimen.fastscroll_track_width); mThumbHeight = res.getDimensionPixelSize(R.dimen.fastscroll_thumb_height); mPreviewHeight = res.getDimensionPixelSize(R.dimen.fastscroll_preview_height); @@ -141,7 +138,7 @@ public class ConversationFastScroller extends RecyclerView.OnScrollListener impl R.dimen.fastscroll_preview_margin_left_right); mTouchSlop = res.getDimensionPixelOffset(R.dimen.fastscroll_touch_slop); - final LayoutInflater inflator = LayoutInflater.from(mContext); + final LayoutInflater inflator = LayoutInflater.from(context); mTrackImageView = (ImageView) inflator.inflate(R.layout.fastscroll_track, null); mThumbImageView = (ImageView) inflator.inflate(R.layout.fastscroll_thumb, null); mPreviewTextView = (TextView) inflator.inflate(R.layout.fastscroll_preview, null); @@ -149,10 +146,10 @@ public class ConversationFastScroller extends RecyclerView.OnScrollListener impl refreshConversationThemeColor(); // Add the fast scroll views to the overlay, so they are rendered above the list - mOverlay = rv.getOverlay(); - mOverlay.add(mTrackImageView); - mOverlay.add(mThumbImageView); - mOverlay.add(mPreviewTextView); + final ViewGroupOverlay overlay = rv.getOverlay(); + overlay.add(mTrackImageView); + overlay.add(mThumbImageView); + overlay.add(mPreviewTextView); hide(false /* animate */); mPreviewTextView.setAlpha(0f); diff --git a/src/com/android/messaging/ui/conversation/ConversationInputManager.java b/src/com/android/messaging/ui/conversation/ConversationInputManager.java index bb495d5..03038ab 100644 --- a/src/com/android/messaging/ui/conversation/ConversationInputManager.java +++ b/src/com/android/messaging/ui/conversation/ConversationInputManager.java @@ -177,8 +177,8 @@ public class ConversationInputManager implements ConversationInput.ConversationI } public boolean onNavigationUpPressed() { - for (int i = 0; i < mInputs.length; i++) { - if (mInputs[i].onNavigationUpPressed()) { + for (ConversationInput input : mInputs) { + if (input.onNavigationUpPressed()) { return true; } } @@ -209,8 +209,8 @@ public class ConversationInputManager implements ConversationInput.ConversationI public void hideAllInputs(final boolean animate) { beginUpdate(); - for (int i = 0; i < mInputs.length; i++) { - showHideInternal(mInputs[i], false, animate); + for (ConversationInput input : mInputs) { + showHideInternal(input, false, animate); } endUpdate(); } @@ -225,9 +225,9 @@ public class ConversationInputManager implements ConversationInput.ConversationI } public boolean updateActionBar(final ActionBar actionBar) { - for (int i = 0; i < mInputs.length; i++) { - if (mInputs[i].mShowing) { - return mInputs[i].updateActionBar(actionBar); + for (ConversationInput input : mInputs) { + if (input.mShowing) { + return input.updateActionBar(actionBar); } } return false; @@ -271,8 +271,7 @@ public class ConversationInputManager implements ConversationInput.ConversationI // All inputs are mutually exclusive. Showing one will hide everything else. // The one exception, is that the keyboard and location media chooser can be open at the // time to enable searching within that chooser - for (int i = 0; i < mInputs.length; i++) { - final ConversationInput currInput = mInputs[i]; + for (final ConversationInput currInput : mInputs) { if (currInput != target) { // TODO : If there's more exceptions we will want to make this more // generic diff --git a/src/com/android/messaging/ui/conversation/ConversationMessageAdapter.java b/src/com/android/messaging/ui/conversation/ConversationMessageAdapter.java index fb04bb4..5f37496 100644 --- a/src/com/android/messaging/ui/conversation/ConversationMessageAdapter.java +++ b/src/com/android/messaging/ui/conversation/ConversationMessageAdapter.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2015 The Android Open Source Project + * Copyright (C) 2024 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,15 +24,11 @@ import android.view.View; import android.view.ViewGroup; import com.android.messaging.R; -import com.android.messaging.ui.AsyncImageView; import com.android.messaging.ui.CursorRecyclerAdapter; import com.android.messaging.ui.AsyncImageView.AsyncImageViewDelayLoader; import com.android.messaging.ui.conversation.ConversationMessageView.ConversationMessageViewHost; import com.android.messaging.util.Assert; -import java.util.HashSet; -import java.util.List; - /** * Provides an interface to expose Conversation Message Cursor data to a UI widget like a * RecyclerView. diff --git a/src/com/android/messaging/ui/conversation/ConversationMessageView.java b/src/com/android/messaging/ui/conversation/ConversationMessageView.java index 758cc67..ccf67fb 100644 --- a/src/com/android/messaging/ui/conversation/ConversationMessageView.java +++ b/src/com/android/messaging/ui/conversation/ConversationMessageView.java @@ -73,7 +73,6 @@ import com.android.messaging.util.UiUtils; import com.android.messaging.util.YouTubeUtil; import com.google.common.base.Predicate; -import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -238,8 +237,7 @@ public class ConversationMessageView extends FrameLayout implements View.OnClick * @param cursor The cursor from a MessageList that this view is in, pointing to its entry. * @param oneOnOne Whether this is a 1:1 conversation */ - public void bind(final Cursor cursor, - final boolean oneOnOne, final String selectedMessageId) { + public void bind(final Cursor cursor, final boolean oneOnOne, final String selectedMessageId) { mOneOnOne = oneOnOne; // Update our UI model @@ -494,7 +492,7 @@ public class ConversationMessageView extends FrameLayout implements View.OnClick // Bind image attachments. If there are multiple, they are shown in a collage view. final List imageParts = mData.getAttachments(sImageFilter); if (imageParts.size() > 1) { - Collections.sort(imageParts, sImageComparator); + imageParts.sort(sImageComparator); mMultiAttachmentView.bindAttachments(imageParts, null, imageParts.size()); mMultiAttachmentView.setVisibility(View.VISIBLE); } else { diff --git a/src/com/android/messaging/ui/conversation/ConversationSimSelector.java b/src/com/android/messaging/ui/conversation/ConversationSimSelector.java index 3c11ecc..08347c3 100644 --- a/src/com/android/messaging/ui/conversation/ConversationSimSelector.java +++ b/src/com/android/messaging/ui/conversation/ConversationSimSelector.java @@ -26,7 +26,6 @@ import com.android.messaging.datamodel.data.SubscriptionListData; import com.android.messaging.datamodel.data.SubscriptionListData.SubscriptionListEntry; import com.android.messaging.ui.conversation.SimSelectorView.SimSelectorViewListener; import com.android.messaging.util.AccessibilityUtil; -import com.android.messaging.util.Assert; import com.android.messaging.util.ThreadUtil; /** diff --git a/src/com/android/messaging/ui/conversation/SimIconView.java b/src/com/android/messaging/ui/conversation/SimIconView.java index 0cf9bd4..de75b9e 100644 --- a/src/com/android/messaging/ui/conversation/SimIconView.java +++ b/src/com/android/messaging/ui/conversation/SimIconView.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2015 The Android Open Source Project + * Copyright (C) 2024 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,15 +18,12 @@ package com.android.messaging.ui.conversation; import android.content.Context; import android.graphics.Outline; -import android.net.Uri; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.view.ViewOutlineProvider; import com.android.messaging.ui.ContactIconView; -import com.android.messaging.util.Assert; -import com.android.messaging.util.AvatarUriUtil; /** * Shows SIM avatar icon in the SIM switcher / Self-send button. diff --git a/src/com/android/messaging/ui/conversationlist/AbstractConversationListActivity.java b/src/com/android/messaging/ui/conversationlist/AbstractConversationListActivity.java index 304879d..f71301a 100644 --- a/src/com/android/messaging/ui/conversationlist/AbstractConversationListActivity.java +++ b/src/com/android/messaging/ui/conversationlist/AbstractConversationListActivity.java @@ -42,7 +42,6 @@ import com.android.messaging.ui.contact.AddContactsConfirmationDialog; import com.android.messaging.ui.conversationlist.ConversationListFragment.ConversationListFragmentHost; import com.android.messaging.ui.conversationlist.MultiSelectActionModeCallback.SelectedConversation; import com.android.messaging.util.PhoneUtils; -import com.android.messaging.util.Trace; import com.android.messaging.util.UiUtils; import java.util.ArrayList; diff --git a/src/com/android/messaging/ui/conversationlist/ConversationListAdapter.java b/src/com/android/messaging/ui/conversationlist/ConversationListAdapter.java index fc687eb..b001925 100644 --- a/src/com/android/messaging/ui/conversationlist/ConversationListAdapter.java +++ b/src/com/android/messaging/ui/conversationlist/ConversationListAdapter.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2015 The Android Open Source Project + * Copyright (C) 2024 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,7 +25,6 @@ import android.view.ViewGroup; import com.android.messaging.R; import com.android.messaging.ui.CursorRecyclerAdapter; -import com.android.messaging.ui.conversationlist.ConversationListItemView.HostInterface; /** * Provides an interface to expose Conversation List Cursor data to a UI widget like a ListView. diff --git a/src/com/android/messaging/ui/conversationlist/ConversationListFragment.java b/src/com/android/messaging/ui/conversationlist/ConversationListFragment.java index 5dca358..2e5aec9 100644 --- a/src/com/android/messaging/ui/conversationlist/ConversationListFragment.java +++ b/src/com/android/messaging/ui/conversationlist/ConversationListFragment.java @@ -33,7 +33,6 @@ import android.view.ViewGroup.MarginLayoutParams; import android.view.ViewPropertyAnimator; import android.view.accessibility.AccessibilityManager; import android.widget.AbsListView; -import android.widget.ImageView; import androidx.annotation.NonNull; import androidx.core.view.ViewGroupCompat; @@ -312,7 +311,7 @@ public class ConversationListFragment extends Fragment implements ConversationLi // It is recommended for the Floating Action button functionality to be duplicated as a // menu AccessibilityManager accessibilityManager = (AccessibilityManager) - getActivity().getSystemService(Context.ACCESSIBILITY_SERVICE); + requireActivity().getSystemService(Context.ACCESSIBILITY_SERVICE); startNewConversationMenuItem.setVisible(accessibilityManager .isTouchExplorationEnabled()); } @@ -397,7 +396,7 @@ public class ConversationListFragment extends Fragment implements ConversationLi R.integer.fab_animation_duration_ms)); } - public ViewPropertyAnimator dismissFab() { + public void dismissFab() { // To prevent clicking while animating. mStartNewConversationButton.setEnabled(false); final MarginLayoutParams lp = @@ -405,11 +404,11 @@ public class ConversationListFragment extends Fragment implements ConversationLi final float fabWidthWithLeftRightMargin = mStartNewConversationButton.getWidth() + lp.leftMargin + lp.rightMargin; final int direction = AccessibilityUtil.isLayoutRtl(mStartNewConversationButton) ? -1 : 1; - return getNormalizedFabAnimator().translationX(direction * fabWidthWithLeftRightMargin); + getNormalizedFabAnimator().translationX(direction * fabWidthWithLeftRightMargin); } - public ViewPropertyAnimator showFab() { - return getNormalizedFabAnimator().translationX(0).withEndAction(() -> { + public void showFab() { + getNormalizedFabAnimator().translationX(0).withEndAction(() -> { // Re-enable clicks after the animation. mStartNewConversationButton.setEnabled(true); }); diff --git a/src/com/android/messaging/ui/conversationlist/ConversationListItemView.java b/src/com/android/messaging/ui/conversationlist/ConversationListItemView.java index 7a6a40b..7e47422 100644 --- a/src/com/android/messaging/ui/conversationlist/ConversationListItemView.java +++ b/src/com/android/messaging/ui/conversationlist/ConversationListItemView.java @@ -24,8 +24,6 @@ import android.graphics.Rect; import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.net.Uri; -import androidx.core.text.BidiFormatter; -import androidx.core.text.TextDirectionHeuristicsCompat; import android.text.TextPaint; import android.text.TextUtils; import android.util.AttributeSet; @@ -39,6 +37,8 @@ import android.widget.ImageView; import android.widget.TextView; import androidx.core.content.res.ResourcesCompat; +import androidx.core.text.BidiFormatter; +import androidx.core.text.TextDirectionHeuristicsCompat; import com.android.messaging.Factory; import com.android.messaging.R; @@ -61,6 +61,7 @@ import com.android.messaging.util.PhoneUtils; import com.android.messaging.util.Typefaces; import com.android.messaging.util.UiUtils; import com.android.messaging.util.UriUtil; + import org.lineageos.messaging.util.PrefsUtils; import java.util.List; diff --git a/src/com/android/messaging/ui/conversationlist/ShareIntentAdapter.java b/src/com/android/messaging/ui/conversationlist/ShareIntentAdapter.java index 6d465ee..a3b7256 100644 --- a/src/com/android/messaging/ui/conversationlist/ShareIntentAdapter.java +++ b/src/com/android/messaging/ui/conversationlist/ShareIntentAdapter.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2015 The Android Open Source Project + * Copyright (C) 2024 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,7 +31,6 @@ import com.android.messaging.datamodel.data.ParticipantData; import com.android.messaging.datamodel.data.PersonItemData; import com.android.messaging.ui.CursorRecyclerAdapter; import com.android.messaging.ui.PersonItemView; -import com.android.messaging.ui.PersonItemView.PersonItemViewListener; import com.android.messaging.util.PhoneUtils; /** diff --git a/src/com/android/messaging/ui/conversationsettings/PeopleAndOptionsFragment.java b/src/com/android/messaging/ui/conversationsettings/PeopleAndOptionsFragment.java index d499451..ebcaf4a 100644 --- a/src/com/android/messaging/ui/conversationsettings/PeopleAndOptionsFragment.java +++ b/src/com/android/messaging/ui/conversationsettings/PeopleAndOptionsFragment.java @@ -24,7 +24,6 @@ import android.content.Intent; import android.content.res.Resources; import android.database.Cursor; import android.os.Bundle; -import android.os.Parcelable; import android.provider.Settings; import android.view.LayoutInflater; import android.view.View; @@ -50,10 +49,9 @@ import com.android.messaging.datamodel.data.PeopleOptionsItemData; import com.android.messaging.datamodel.data.PersonItemData; import com.android.messaging.ui.CompositeAdapter; import com.android.messaging.ui.PersonItemView; -import com.android.messaging.ui.UIIntents; import com.android.messaging.ui.conversation.ConversationActivity; -import com.android.messaging.util.NotificationsUtil; import com.android.messaging.util.Assert; +import com.android.messaging.util.NotificationsUtil; import java.util.ArrayList; import java.util.List; diff --git a/src/com/android/messaging/ui/conversationsettings/PeopleOptionsItemView.java b/src/com/android/messaging/ui/conversationsettings/PeopleOptionsItemView.java index 1d47b3b..63c9ce8 100644 --- a/src/com/android/messaging/ui/conversationsettings/PeopleOptionsItemView.java +++ b/src/com/android/messaging/ui/conversationsettings/PeopleOptionsItemView.java @@ -19,7 +19,7 @@ package com.android.messaging.ui.conversationsettings; import android.content.Context; import android.database.Cursor; import androidx.appcompat.widget.SwitchCompat; -import android.text.TextUtils; + import android.util.AttributeSet; import android.widget.LinearLayout; import android.widget.TextView; diff --git a/src/com/android/messaging/ui/mediapicker/AudioRecordView.java b/src/com/android/messaging/ui/mediapicker/AudioRecordView.java index d117145..6e32c37 100644 --- a/src/com/android/messaging/ui/mediapicker/AudioRecordView.java +++ b/src/com/android/messaging/ui/mediapicker/AudioRecordView.java @@ -238,7 +238,7 @@ public class AudioRecordView extends FrameLayout implements } @VisibleForTesting - boolean onRecordButtonTouchDown() { + void onRecordButtonTouchDown() { if (!mMediaRecorder.isRecording() && mCurrentMode == MODE_IDLE) { setMode(MODE_STARTING); playAudioStartSound(() -> { @@ -253,9 +253,7 @@ public class AudioRecordView extends FrameLayout implements } }); mAudioRecordStartTimeMillis = System.currentTimeMillis(); - return true; } - return false; } @VisibleForTesting diff --git a/src/com/android/messaging/ui/mediapicker/CameraManager.java b/src/com/android/messaging/ui/mediapicker/CameraManager.java index de87180..b1b9501 100644 --- a/src/com/android/messaging/ui/mediapicker/CameraManager.java +++ b/src/com/android/messaging/ui/mediapicker/CameraManager.java @@ -38,7 +38,6 @@ import android.view.Surface; import android.view.WindowManager; import com.android.messaging.datamodel.data.DraftMessageData.DraftMessageSubscriptionDataProvider; -import com.android.messaging.Factory; import com.android.messaging.datamodel.data.ParticipantData; import com.android.messaging.datamodel.media.ImageRequest; import com.android.messaging.sms.MmsConfig; diff --git a/src/com/android/messaging/ui/mediapicker/MediaChooser.java b/src/com/android/messaging/ui/mediapicker/MediaChooser.java index 047be38..2d93087 100644 --- a/src/com/android/messaging/ui/mediapicker/MediaChooser.java +++ b/src/com/android/messaging/ui/mediapicker/MediaChooser.java @@ -27,10 +27,11 @@ import android.widget.ImageButton; import androidx.appcompat.app.ActionBar; import androidx.fragment.app.FragmentManager; + import com.android.messaging.R; import com.android.messaging.datamodel.binding.ImmutableBindingRef; -import com.android.messaging.datamodel.data.MediaPickerData; import com.android.messaging.datamodel.data.DraftMessageData.DraftMessageSubscriptionDataProvider; +import com.android.messaging.datamodel.data.MediaPickerData; import com.android.messaging.ui.BasePagerViewHolder; import com.android.messaging.util.Assert; diff --git a/src/com/android/messaging/ui/mediapicker/MediaPicker.java b/src/com/android/messaging/ui/mediapicker/MediaPicker.java index a13eeb2..970dae3 100644 --- a/src/com/android/messaging/ui/mediapicker/MediaPicker.java +++ b/src/com/android/messaging/ui/mediapicker/MediaPicker.java @@ -17,7 +17,6 @@ package com.android.messaging.ui.mediapicker; -import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.os.Handler; @@ -188,8 +187,8 @@ public class MediaPicker extends Fragment implements DraftMessageSubscriptionDat private boolean mAnimateOnAttach; @Override - public void onAttach (final Activity activity) { - super.onAttach(activity); + public void onAttach(@NonNull final Context context) { + super.onAttach(context); mIsAttached = true; if (mStartingMediaTypeOnAttach != MEDA_TYPE_INVALID) { // open() was previously called. Do the pending open now. diff --git a/src/com/android/messaging/ui/mediapicker/MediaPickerPanel.java b/src/com/android/messaging/ui/mediapicker/MediaPickerPanel.java index 5f09db0..e62cb13 100644 --- a/src/com/android/messaging/ui/mediapicker/MediaPickerPanel.java +++ b/src/com/android/messaging/ui/mediapicker/MediaPickerPanel.java @@ -31,7 +31,6 @@ import android.widget.LinearLayout; import com.android.messaging.R; import com.android.messaging.ui.PagingAwareViewPager; -import com.android.messaging.util.Assert; import com.android.messaging.util.UiUtils; /** diff --git a/src/com/android/messaging/ui/mediapicker/camerafocus/FocusOverlayManager.java b/src/com/android/messaging/ui/mediapicker/camerafocus/FocusOverlayManager.java index e215376..7542164 100644 --- a/src/com/android/messaging/ui/mediapicker/camerafocus/FocusOverlayManager.java +++ b/src/com/android/messaging/ui/mediapicker/camerafocus/FocusOverlayManager.java @@ -545,7 +545,7 @@ public class FocusOverlayManager { } public static boolean isSupported(String value, List supported) { - return supported != null && supported.indexOf(value) >= 0; + return supported != null && supported.contains(value); } public static boolean isMeteringAreaSupported(Parameters params) { diff --git a/src/com/android/messaging/ui/photoviewer/BuglePhotoViewFragment.java b/src/com/android/messaging/ui/photoviewer/BuglePhotoViewFragment.java index de05855..6ef2a48 100644 --- a/src/com/android/messaging/ui/photoviewer/BuglePhotoViewFragment.java +++ b/src/com/android/messaging/ui/photoviewer/BuglePhotoViewFragment.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2015 The Android Open Source Project + * Copyright (C) 2024 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +19,7 @@ package com.android.messaging.ui.photoviewer; import android.content.Intent; import android.graphics.drawable.AnimatedImageDrawable; import android.graphics.drawable.Drawable; + import androidx.loader.content.Loader; import com.android.ex.photo.PhotoViewCallbacks; diff --git a/src/com/android/messaging/util/AccessibilityUtil.java b/src/com/android/messaging/util/AccessibilityUtil.java index 1920862..5a04aea 100644 --- a/src/com/android/messaging/util/AccessibilityUtil.java +++ b/src/com/android/messaging/util/AccessibilityUtil.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2015 The Android Open Source Project + * Copyright (C) 2024 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,8 +18,6 @@ package com.android.messaging.util; import android.content.Context; import android.content.res.Resources; -import androidx.core.view.accessibility.AccessibilityEventCompat; -import androidx.core.view.accessibility.AccessibilityRecordCompat; import android.text.TextUtils; import android.view.View; import android.view.accessibility.AccessibilityEvent; @@ -69,10 +68,7 @@ public class AccessibilityUtil { event.setEnabled(view.isEnabled()); event.setClassName(view.getClass().getName()); event.setPackageName(context.getPackageName()); - - // JellyBean MR1 requires a source view to set the window ID. - final AccessibilityRecordCompat record = AccessibilityEventCompat.asRecord(event); - record.setSource(view); + event.setSource(view); // Sends the event directly through the accessibility manager. If we only supported SDK 14+ // we could have done: diff --git a/src/com/android/messaging/util/BugleActivityUtil.java b/src/com/android/messaging/util/BugleActivityUtil.java index afafabe..f904e02 100644 --- a/src/com/android/messaging/util/BugleActivityUtil.java +++ b/src/com/android/messaging/util/BugleActivityUtil.java @@ -19,16 +19,12 @@ package com.android.messaging.util; import android.app.Activity; import android.app.AlertDialog; -import android.app.Dialog; import android.content.Context; import android.os.UserManager; -import android.text.TextUtils; import com.android.messaging.Factory; import com.android.messaging.R; import com.android.messaging.datamodel.DataModel; -import com.android.messaging.ui.conversation.ConversationActivity; -import com.android.messaging.ui.conversationlist.ConversationListActivity; /** * Utility class including logic to verify requirements to run Bugle and other activity startup diff --git a/src/com/android/messaging/util/ChangeDefaultSmsAppHelper.java b/src/com/android/messaging/util/ChangeDefaultSmsAppHelper.java index 0917ad6..8e9d99e 100644 --- a/src/com/android/messaging/util/ChangeDefaultSmsAppHelper.java +++ b/src/com/android/messaging/util/ChangeDefaultSmsAppHelper.java @@ -104,7 +104,7 @@ public class ChangeDefaultSmsAppHelper { } } - private class ChangeSmsAppSettingRunnable implements Runnable { + private static class ChangeSmsAppSettingRunnable implements Runnable { private final Activity mActivity; public ChangeSmsAppSettingRunnable(final Activity activity) { diff --git a/src/com/android/messaging/util/ConnectivityUtil.java b/src/com/android/messaging/util/ConnectivityUtil.java index 2ba28d5..3aa9937 100644 --- a/src/com/android/messaging/util/ConnectivityUtil.java +++ b/src/com/android/messaging/util/ConnectivityUtil.java @@ -22,8 +22,6 @@ import android.telephony.PhoneStateListener; import android.telephony.ServiceState; import android.telephony.TelephonyManager; -import com.android.messaging.datamodel.data.ParticipantData; - /** * ConnectivityUtil listens to the network service state changes. */ diff --git a/src/com/android/messaging/util/ContactUtil.java b/src/com/android/messaging/util/ContactUtil.java index 1ee2ec9..5cda1c6 100644 --- a/src/com/android/messaging/util/ContactUtil.java +++ b/src/com/android/messaging/util/ContactUtil.java @@ -19,7 +19,6 @@ package com.android.messaging.util; import android.Manifest; import android.content.Context; -import android.content.pm.PackageManager; import android.database.Cursor; import android.net.Uri; import android.provider.ContactsContract; @@ -35,7 +34,6 @@ import android.text.TextUtils; import android.view.View; import com.android.ex.chips.RecipientEntry; -import com.android.messaging.Factory; import com.android.messaging.datamodel.CursorQueryData; import com.android.messaging.datamodel.FrequentContactsCursorQueryData; import com.android.messaging.datamodel.data.ParticipantData; diff --git a/src/com/android/messaging/util/ConversationIdSet.java b/src/com/android/messaging/util/ConversationIdSet.java index 75bf634..fead153 100644 --- a/src/com/android/messaging/util/ConversationIdSet.java +++ b/src/com/android/messaging/util/ConversationIdSet.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2015 The Android Open Source Project + * Copyright (C) 2024 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,7 +22,7 @@ import java.util.HashSet; /** * Utility class to make it easy to store multiple conversation id strings in a single string - * with delimeters. + * with delimiters. */ public class ConversationIdSet extends HashSet { private static final String JOIN_DELIMITER = "|"; diff --git a/src/com/android/messaging/util/Dates.java b/src/com/android/messaging/util/Dates.java index 49f0c7f..bf8318d 100644 --- a/src/com/android/messaging/util/Dates.java +++ b/src/com/android/messaging/util/Dates.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2015 The Android Open Source Project + * Copyright (C) 2024 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,8 +27,8 @@ import com.google.common.annotations.VisibleForTesting; import java.text.SimpleDateFormat; import java.time.Instant; import java.time.LocalDateTime; -import java.time.temporal.ChronoUnit; import java.time.ZoneId; +import java.time.temporal.ChronoUnit; import java.util.Date; import java.util.Locale; diff --git a/src/com/android/messaging/util/DebugUtils.java b/src/com/android/messaging/util/DebugUtils.java index d33629d..d054556 100644 --- a/src/com/android/messaging/util/DebugUtils.java +++ b/src/com/android/messaging/util/DebugUtils.java @@ -18,16 +18,12 @@ package com.android.messaging.util; import android.os.Environment; -import android.text.TextUtils; -import com.android.messaging.sms.MmsUtils; import com.google.common.io.ByteStreams; import java.io.BufferedInputStream; -import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; -import java.io.FileOutputStream; import java.io.IOException; public class DebugUtils { @@ -54,14 +50,12 @@ public class DebugUtils { byte[] data = null; try { final File inputFile = getDebugFile(dumpFileName, false); - if (inputFile != null) { - final FileInputStream fis = new FileInputStream(inputFile); - try (BufferedInputStream bis = new BufferedInputStream(fis)) { - // dump file - data = ByteStreams.toByteArray(bis); - if (data == null || data.length < 1) { - LogUtil.e(LogUtil.BUGLE_TAG, "receiveFromDumpFile: empty data"); - } + final FileInputStream fis = new FileInputStream(inputFile); + try (BufferedInputStream bis = new BufferedInputStream(fis)) { + // dump file + data = ByteStreams.toByteArray(bis); + if (data == null || data.length < 1) { + LogUtil.e(LogUtil.BUGLE_TAG, "receiveFromDumpFile: empty data"); } } } catch (final IOException e) { diff --git a/src/com/android/messaging/util/EmailAddress.java b/src/com/android/messaging/util/EmailAddress.java index 92ff9c5..c1bf584 100644 --- a/src/com/android/messaging/util/EmailAddress.java +++ b/src/com/android/messaging/util/EmailAddress.java @@ -145,7 +145,7 @@ public final class EmailAddress { } // check if the host contains two continuous dots. - if (host.indexOf("..") >= 0) { + if (host.contains("..")) { return false; } @@ -179,7 +179,7 @@ public final class EmailAddress { } // the user cannot contain two continuous dots - if (user.indexOf("..") >= 0) { + if (user.contains("..")) { return false; } diff --git a/src/com/android/messaging/util/ImageUtils.java b/src/com/android/messaging/util/ImageUtils.java index 0533edc..3ce1d1f 100644 --- a/src/com/android/messaging/util/ImageUtils.java +++ b/src/com/android/messaging/util/ImageUtils.java @@ -33,9 +33,10 @@ import android.graphics.Shader.TileMode; import android.graphics.drawable.Drawable; import android.net.Uri; import android.provider.MediaStore; -import androidx.annotation.Nullable; import android.text.TextUtils; +import androidx.annotation.Nullable; + import com.android.messaging.Factory; import com.android.messaging.datamodel.MediaScratchFileProvider; import com.android.messaging.datamodel.MessagingContentProvider; diff --git a/src/com/android/messaging/util/NotificationPlayer.java b/src/com/android/messaging/util/NotificationPlayer.java index ab451c9..45948e9 100644 --- a/src/com/android/messaging/util/NotificationPlayer.java +++ b/src/com/android/messaging/util/NotificationPlayer.java @@ -31,6 +31,7 @@ import androidx.annotation.NonNull; import com.android.messaging.Factory; import java.util.LinkedList; +import java.util.Objects; /** * This class is provides the same interface and functionality as android.media.AsyncPlayer @@ -257,11 +258,7 @@ public class NotificationPlayer implements OnCompletionListener { * @param tag a string to use for debugging */ public NotificationPlayer(final String tag) { - if (tag != null) { - mTag = tag; - } else { - mTag = "NotificationPlayer"; - } + mTag = Objects.requireNonNullElse(tag, "NotificationPlayer"); } /** diff --git a/src/com/android/messaging/util/PhoneUtils.java b/src/com/android/messaging/util/PhoneUtils.java index 2b7d61f..4eb5141 100644 --- a/src/com/android/messaging/util/PhoneUtils.java +++ b/src/com/android/messaging/util/PhoneUtils.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2015 The Android Open Source Project + * Copyright (C) 2024 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -50,6 +51,7 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Locale; +import java.util.Objects; /** * This class abstracts away platform dependency of calling telephony related @@ -356,10 +358,7 @@ public class PhoneUtils { public List getActiveSubscriptionInfoList() { final List subscriptionInfos = mSubscriptionManager.getActiveSubscriptionInfoList(); - if (subscriptionInfos != null) { - return subscriptionInfos; - } - return EMPTY_SUBSCRIPTION_LIST; + return Objects.requireNonNullElse(subscriptionInfos, EMPTY_SUBSCRIPTION_LIST); } /** diff --git a/src/com/android/messaging/util/exif/ExifInterface.java b/src/com/android/messaging/util/exif/ExifInterface.java index fc160f4..ccd1d69 100644 --- a/src/com/android/messaging/util/exif/ExifInterface.java +++ b/src/com/android/messaging/util/exif/ExifInterface.java @@ -1222,10 +1222,10 @@ public class ExifInterface { */ public Long getTagLongValue(int tagId, int ifdId) { long[] l = getTagLongValues(tagId, ifdId); - if (l == null || l.length <= 0) { + if (l == null || l.length == 0) { return null; } - return new Long(l[0]); + return l[0]; } /** @@ -1241,10 +1241,10 @@ public class ExifInterface { */ public Integer getTagIntValue(int tagId, int ifdId) { int[] l = getTagIntValues(tagId, ifdId); - if (l == null || l.length <= 0) { + if (l == null || l.length == 0) { return null; } - return new Integer(l[0]); + return l[0]; } /** @@ -1260,10 +1260,10 @@ public class ExifInterface { */ public Byte getTagByteValue(int tagId, int ifdId) { byte[] l = getTagByteValues(tagId, ifdId); - if (l == null || l.length <= 0) { + if (l == null || l.length == 0) { return null; } - return new Byte(l[0]); + return l[0]; } /** diff --git a/src/com/android/messaging/widget/BaseWidgetProvider.java b/src/com/android/messaging/widget/BaseWidgetProvider.java index 07730ed..267978f 100644 --- a/src/com/android/messaging/widget/BaseWidgetProvider.java +++ b/src/com/android/messaging/widget/BaseWidgetProvider.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2015 The Android Open Source Project + * Copyright (C) 2024 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -44,8 +45,8 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider { public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { super.onUpdate(context, appWidgetManager, appWidgetIds); - for (int i = 0; i < appWidgetIds.length; ++i) { - updateWidget(context, appWidgetIds[i]); + for (int appWidgetId : appWidgetIds) { + updateWidget(context, appWidgetId); } } diff --git a/src/com/android/messaging/widget/WidgetConversationService.java b/src/com/android/messaging/widget/WidgetConversationService.java index e480da5..f3226e2 100644 --- a/src/com/android/messaging/widget/WidgetConversationService.java +++ b/src/com/android/messaging/widget/WidgetConversationService.java @@ -44,7 +44,6 @@ import com.android.messaging.datamodel.media.MediaResourceManager; import com.android.messaging.datamodel.media.MessagePartImageRequestDescriptor; import com.android.messaging.datamodel.media.MessagePartVideoThumbnailRequestDescriptor; import com.android.messaging.datamodel.media.UriImageRequestDescriptor; -import com.android.messaging.datamodel.media.VideoThumbnailRequest; import com.android.messaging.sms.MmsUtils; import com.android.messaging.ui.UIIntents; import com.android.messaging.util.AvatarUriUtil;