Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 497e15f8 authored by Tyler Gunn's avatar Tyler Gunn
Browse files

Add logging to indicate how many call log rows are cleaned up on insert.

When call log entries are added we'll potentially clean up a call log
entry if we've hit the cap of 500 rows per phone account.  We log this
and also log errors with a higher log level.

Bug: 290557274
Test: Manual testing to verify the new logging information is present as
expected.

Change-Id: Ic816983941bccad62246bb58e1e6fa15b01f3791
parent 1508717f
Loading
Loading
Loading
Loading
+10 −8
Original line number Original line Diff line number Diff line
@@ -63,6 +63,7 @@ import java.io.InputStream;
import java.lang.annotation.Retention;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.RetentionPolicy;
import java.util.List;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import java.util.Objects;
import java.util.concurrent.Executor;
import java.util.concurrent.Executor;


@@ -1956,9 +1957,8 @@ public class CallLog {
                    userManager.isUserUnlocked(user) ? CONTENT_URI : SHADOW_CONTENT_URI,
                    userManager.isUserUnlocked(user) ? CONTENT_URI : SHADOW_CONTENT_URI,
                    user.getIdentifier());
                    user.getIdentifier());


            if (VERBOSE_LOG) {
            Log.i(LOG_TAG, String.format(Locale.getDefault(),
                Log.v(LOG_TAG, String.format("Inserting to %s", uri));
                    "addEntryAndRemoveExpiredEntries: provider uri=%s", uri));
            }


            try {
            try {
                // When cleaning up the call log, try to delete older call long entries on a per
                // When cleaning up the call log, try to delete older call long entries on a per
@@ -1985,13 +1985,14 @@ public class CallLog {
                    Log.w(LOG_TAG, "Failed to insert into call log; null result uri.");
                    Log.w(LOG_TAG, "Failed to insert into call log; null result uri.");
                }
                }


                int numDeleted;
                if (values.containsKey(PHONE_ACCOUNT_ID)
                if (values.containsKey(PHONE_ACCOUNT_ID)
                        && !TextUtils.isEmpty(values.getAsString(PHONE_ACCOUNT_ID))
                        && !TextUtils.isEmpty(values.getAsString(PHONE_ACCOUNT_ID))
                        && values.containsKey(PHONE_ACCOUNT_COMPONENT_NAME)
                        && values.containsKey(PHONE_ACCOUNT_COMPONENT_NAME)
                        && !TextUtils.isEmpty(values.getAsString(PHONE_ACCOUNT_COMPONENT_NAME))) {
                        && !TextUtils.isEmpty(values.getAsString(PHONE_ACCOUNT_COMPONENT_NAME))) {
                    // Only purge entries for the same phone account.
                    // Only purge entries for the same phone account.
                    resolver.delete(uri, "_id IN " +
                    numDeleted = resolver.delete(uri, "_id IN "
                            "(SELECT _id FROM calls"
                            + "(SELECT _id FROM calls"
                            + " WHERE " + PHONE_ACCOUNT_COMPONENT_NAME + " = ?"
                            + " WHERE " + PHONE_ACCOUNT_COMPONENT_NAME + " = ?"
                            + " AND " + PHONE_ACCOUNT_ID + " = ?"
                            + " AND " + PHONE_ACCOUNT_ID + " = ?"
                            + " ORDER BY " + DEFAULT_SORT_ORDER
                            + " ORDER BY " + DEFAULT_SORT_ORDER
@@ -2001,14 +2002,15 @@ public class CallLog {
                    });
                    });
                } else {
                } else {
                    // No valid phone account specified, so default to the old behavior.
                    // No valid phone account specified, so default to the old behavior.
                    resolver.delete(uri, "_id IN " +
                    numDeleted = resolver.delete(uri, "_id IN "
                            "(SELECT _id FROM calls ORDER BY " + DEFAULT_SORT_ORDER
                            + "(SELECT _id FROM calls ORDER BY " + DEFAULT_SORT_ORDER
                            + " LIMIT -1 OFFSET 500)", null);
                            + " LIMIT -1 OFFSET 500)", null);
                }
                }
                Log.i(LOG_TAG, "addEntry: cleaned up " + numDeleted + " old entries");


                return result;
                return result;
            } catch (IllegalArgumentException e) {
            } catch (IllegalArgumentException e) {
                Log.w(LOG_TAG, "Failed to insert calllog", e);
                Log.e(LOG_TAG, "Failed to insert calllog", e);
                // Even though we make sure the target user is running and decrypted before calling
                // Even though we make sure the target user is running and decrypted before calling
                // this method, there's a chance that the user just got shut down, in which case
                // this method, there's a chance that the user just got shut down, in which case
                // we'll still get "IllegalArgumentException: Unknown URL content://call_log/calls".
                // we'll still get "IllegalArgumentException: Unknown URL content://call_log/calls".