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

Commit 40b19902 authored by Daniel Perez's avatar Daniel Perez
Browse files

Fix NullPointerException in SettingsHelperRestoreTest.

Some cases in SettingsHelperRestoreTest were crashing due to a NPE with the logger. This didn't happen in the actual code or in SettingsHelperTest because the logger was set when the flag was on, but I missed to do this in SettingsHelperRestoreTest. This CL sets the logger in the test, and checks for null in the code to be extra safe.

Change-Id: I8d5c0fdd9901e889702570b8433853e4f1dbd692
Bug: 379861078
Bug: 394349769
Flag: com.android.server.backup.enable_metrics_settings_backup_agents
Tested: atest SettingsHelperTest
Tested: atest SettingsRestoreHelperTest
parent 9b30a9bc
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -209,7 +209,7 @@ public class SettingsHelper {

        // Get datatype for B&R metrics logging.
        String datatype = "";
        if (Flags.enableMetricsSettingsBackupAgents()) {
        if (areAgentMetricsEnabled()) {
            datatype = SettingsBackupRestoreKeys.getKeyFromUri(destination);
        }

@@ -299,7 +299,7 @@ public class SettingsHelper {
            contentValues.put(Settings.NameValueTable.NAME, name);
            contentValues.put(Settings.NameValueTable.VALUE, value);
            cr.insert(destination, contentValues);
            if (Flags.enableMetricsSettingsBackupAgents()) {
            if (areAgentMetricsEnabled()) {
                mBackupRestoreEventLogger.logItemsRestored(datatype, /* count= */ 1);
            }
        } catch (Exception e) {
@@ -308,7 +308,7 @@ public class SettingsHelper {
            sendBroadcastSystemUI = false;
            sendBroadcastAccessibility = false;
            Log.e(TAG, "Failed to restore setting name: " + name + " + value: " + value, e);
            if (Flags.enableMetricsSettingsBackupAgents()) {
            if (areAgentMetricsEnabled()) {
                mBackupRestoreEventLogger.logItemsRestoreFailed(
                    datatype, /* count= */ 1, ERROR_FAILED_TO_RESTORE_SETTING);
            }
@@ -785,12 +785,12 @@ public class SettingsHelper {

            am.updatePersistentConfigurationWithAttribution(config, mContext.getOpPackageName(),
                    mContext.getAttributionTag());
            if (Flags.enableMetricsSettingsBackupAgents() && mBackupRestoreEventLogger != null) {
            if (areAgentMetricsEnabled()) {
                mBackupRestoreEventLogger
                    .logItemsRestored(SettingsBackupRestoreKeys.KEY_LOCALE, localeList.size());
            }
        } catch (RemoteException e) {
            if (Flags.enableMetricsSettingsBackupAgents() && mBackupRestoreEventLogger != null) {
            if (areAgentMetricsEnabled()) {
                mBackupRestoreEventLogger
                    .logItemsRestoreFailed(
                        SettingsBackupRestoreKeys.KEY_LOCALE,
@@ -817,4 +817,8 @@ public class SettingsHelper {
    void setBackupRestoreEventLogger(BackupRestoreEventLogger backupRestoreEventLogger) {
        mBackupRestoreEventLogger = backupRestoreEventLogger;
    }

    private boolean areAgentMetricsEnabled() {
        return Flags.enableMetricsSettingsBackupAgents() && mBackupRestoreEventLogger != null;
    }
}
+5 −0
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ import static com.google.common.truth.Truth.assertThat;

import static junit.framework.Assert.assertEquals;

import android.app.backup.BackupAnnotations.OperationType;
import android.app.backup.BackupRestoreEventLogger;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
@@ -60,11 +62,14 @@ public class SettingsHelperRestoreTest {
    private static final float FLOAT_TOLERANCE = 0.01f;
    private ContentResolver mContentResolver;
    private SettingsHelper mSettingsHelper;
    private BackupRestoreEventLogger mBackupRestoreEventLogger;

    @Before
    public void setUp() {
        mContentResolver = mInterceptingContext.getContentResolver();
        mSettingsHelper = new SettingsHelper(mInterceptingContext);
        mBackupRestoreEventLogger = new BackupRestoreEventLogger(OperationType.RESTORE);
        mSettingsHelper.setBackupRestoreEventLogger(mBackupRestoreEventLogger);
    }

    @After