Messaging: Language cleanup

No unnecessary boxing, enhanced for loops, redundant checks and throws,
imports (removal, reordering), possible void returns

Change-Id: I7a8e1b2007e3b0906e01b41785c518d02c2f3fab
This commit is contained in:
Michael W
2024-12-26 15:54:37 +01:00
parent e335f6bec8
commit e128bff457
77 changed files with 202 additions and 334 deletions
@@ -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;
@@ -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<ImageResource> imageRequest;
@@ -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.
*/
@@ -57,7 +57,7 @@ public class DatabaseWrapper {
// track transaction on a per thread basis
private static final ThreadLocal<Stack<TransactionData>> sTransactionDepth =
ThreadLocal.withInitial(() -> new Stack<>());
ThreadLocal.withInitial(Stack::new);
private static final String[] sFormatStrings = new String[] {
"took %d ms to %s",
@@ -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);
}
}
});
@@ -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<Void, Cursor> {
@Override
public Cursor execute(Void params) throws Exception {
public Cursor execute(Void params) {
final Uri uri = getUri();
if (uri != null) {
setUri(uri);
@@ -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;
@@ -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;
@@ -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;
@@ -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");
}
}
@@ -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
@@ -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) {
@@ -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
@@ -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 {
@@ -18,6 +18,7 @@
package com.android.messaging.datamodel.data;
import android.database.Cursor;
import androidx.collection.ArrayMap;
import java.util.ArrayList;
@@ -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<D extends ImageRequestDescriptor>
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());
@@ -188,10 +188,7 @@ public class MediaResourceManager {
}
final MediaCache<T> 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;
}