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

Commit 8c4d8051 authored by Ruslan Tkhakokhov's avatar Ruslan Tkhakokhov
Browse files

Log events from BackupRestoreEventLogger in LocalTransport

This allows debugging integrations with the logger by verifying which
events have been recorded in the logcat.

Test: 1. Turn on logging of the events to logcat
         (adb shell settings put secure
	 backup_local_transport_parameters "log_agent_results=true")
      2. Run backup for wallpaper
         (adb shell bmgr backupnow com.android.wallpaperbackup)
      3. Verify events are logged in logcat
         (adb logcat -s LocalTransport)
Change-Id: If9c33b285c226c217960e78326c17f77a5b92a67
parent 4640ce9e
Loading
Loading
Loading
Loading
+42 −0
Original line number Diff line number Diff line
@@ -20,6 +20,9 @@ import android.annotation.Nullable;
import android.app.backup.BackupAgent;
import android.app.backup.BackupDataInput;
import android.app.backup.BackupDataOutput;
import android.app.backup.BackupManagerMonitor;
import android.app.backup.BackupRestoreEventLogger;
import android.app.backup.BackupRestoreEventLogger.DataTypeResult;
import android.app.backup.BackupTransport;
import android.app.backup.RestoreDescription;
import android.app.backup.RestoreSet;
@@ -27,6 +30,7 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.os.Bundle;
import android.os.ParcelFileDescriptor;
import android.system.ErrnoException;
import android.system.Os;
@@ -100,6 +104,7 @@ public class LocalTransport extends BackupTransport {
    private FileInputStream mCurFullRestoreStream;
    private byte[] mFullRestoreBuffer;
    private final LocalTransportParameters mParameters;
    private final BackupManagerMonitor mMonitor = new TestBackupManagerMonitor();

    private void makeDataDirs() {
        mDataDir = mContext.getFilesDir();
@@ -887,4 +892,41 @@ public class LocalTransport extends BackupTransport {
    public long getBackupQuota(String packageName, boolean isFullBackup) {
        return isFullBackup ? FULL_BACKUP_SIZE_QUOTA : KEY_VALUE_BACKUP_SIZE_QUOTA;
    }

    @Override
    public BackupManagerMonitor getBackupManagerMonitor() {
        return mMonitor;
    }

    private class TestBackupManagerMonitor extends BackupManagerMonitor {
        @Override
        public void onEvent(Bundle event) {
            if (event == null || !mParameters.logAgentResults()) {
                return;
            }

            if (event.getInt(BackupManagerMonitor.EXTRA_LOG_EVENT_ID)
                    == BackupManagerMonitor.LOG_EVENT_ID_AGENT_LOGGING_RESULTS) {
                Log.i(TAG, "agent_logging_results {");
                ArrayList<DataTypeResult> results = event.getParcelableArrayList(
                        BackupManagerMonitor.EXTRA_LOG_AGENT_LOGGING_RESULTS,
                        DataTypeResult.class);
                for (DataTypeResult result : results) {
                    Log.i(TAG, "\tdataType: " + result.getDataType());
                    Log.i(TAG, "\tsuccessCount: " + result.getSuccessCount());
                    Log.i(TAG, "\tfailCount: " + result.getFailCount());

                    if (!result.getErrors().isEmpty()) {
                        Log.i(TAG, "\terrors {");
                        for (String error : result.getErrors().keySet()) {
                            Log.i(TAG, "\t\t" + error + ": " + result.getErrors().get(error));
                        }
                        Log.i(TAG, "\t}");
                    }

                    Log.i(TAG, "}");
                }
            }
        }
    }
}
+7 −0
Original line number Diff line number Diff line
@@ -29,11 +29,13 @@ public class LocalTransportParameters extends KeyValueSettingObserver {
    private static final String KEY_NON_INCREMENTAL_ONLY = "non_incremental_only";
    private static final String KEY_IS_DEVICE_TRANSFER = "is_device_transfer";
    private static final String KEY_IS_ENCRYPTED = "is_encrypted";
    private static final String KEY_LOG_AGENT_RESULTS = "log_agent_results";

    private boolean mFakeEncryptionFlag;
    private boolean mIsNonIncrementalOnly;
    private boolean mIsDeviceTransfer;
    private boolean mIsEncrypted;
    private boolean mLogAgentResults;

    public LocalTransportParameters(Handler handler, ContentResolver resolver) {
        super(handler, resolver, Settings.Secure.getUriFor(SETTING));
@@ -55,6 +57,10 @@ public class LocalTransportParameters extends KeyValueSettingObserver {
        return mIsEncrypted;
    }

    boolean logAgentResults() {
        return mLogAgentResults;
    }

    public String getSettingValue(ContentResolver resolver) {
        return Settings.Secure.getString(resolver, SETTING);
    }
@@ -64,5 +70,6 @@ public class LocalTransportParameters extends KeyValueSettingObserver {
        mIsNonIncrementalOnly = parser.getBoolean(KEY_NON_INCREMENTAL_ONLY, false);
        mIsDeviceTransfer = parser.getBoolean(KEY_IS_DEVICE_TRANSFER, false);
        mIsEncrypted = parser.getBoolean(KEY_IS_ENCRYPTED, false);
        mLogAgentResults = parser.getBoolean(KEY_LOG_AGENT_RESULTS, /* def */ false);
    }
}