diff options
author | 2023-08-04 15:11:30 +0000 | |
---|---|---|
committer | 2023-08-22 15:22:41 +0000 | |
commit | 2722d365c9b93adc88c14e55aaf6ffb54d47cda5 (patch) | |
tree | eaa5b965357df395d37762840054ceeb78ddefb8 /services | |
parent | ef4b10d1c72e8a22e70fb38c8b9211e3c55aba0f (diff) |
Rename BackupManagerMonitorUtil to BackupManagerMonitorEventSender and convert it into an instance class in preparation of
adding more complex behaviour for recording BMM events to dumpsys.
Bug: 290746120
Test: atest BackupManagerMonitorEventSenderTest, BackupManagerServiceTest,
TarBackupReaderTest, KeyValuBackupTaskTest, KeyValueBackupReporterTest
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:073d1f1e6abb73ea47a24e670f79e7a488e823ed)
Merged-In: Idba7eb5342038a86b34e73f63892a7a7d93bf894
Change-Id: Idba7eb5342038a86b34e73f63892a7a7d93bf894
Diffstat (limited to 'services')
13 files changed, 225 insertions, 214 deletions
diff --git a/services/backup/java/com/android/server/backup/UserBackupManagerService.java b/services/backup/java/com/android/server/backup/UserBackupManagerService.java index d5aee9284116..5fda18d20df7 100644 --- a/services/backup/java/com/android/server/backup/UserBackupManagerService.java +++ b/services/backup/java/com/android/server/backup/UserBackupManagerService.java @@ -132,7 +132,7 @@ import com.android.server.backup.transport.TransportConnection; import com.android.server.backup.transport.TransportNotAvailableException; import com.android.server.backup.transport.TransportNotRegisteredException; import com.android.server.backup.utils.BackupEligibilityRules; -import com.android.server.backup.utils.BackupManagerMonitorUtils; +import com.android.server.backup.utils.BackupManagerMonitorEventSender; import com.android.server.backup.utils.BackupObserverUtils; import com.android.server.backup.utils.SparseArrayUtils; @@ -1830,12 +1830,14 @@ public class UserBackupManagerService { */ public int requestBackup(String[] packages, IBackupObserver observer, IBackupManagerMonitor monitor, int flags) { + BackupManagerMonitorEventSender mBackupManagerMonitorEventSender = + getBMMEventSender(monitor); mContext.enforceCallingPermission(android.Manifest.permission.BACKUP, "requestBackup"); if (packages == null || packages.length < 1) { Slog.e(TAG, addUserIdToLogMessage(mUserId, "No packages named for backup request")); BackupObserverUtils.sendBackupFinished(observer, BackupManager.ERROR_TRANSPORT_ABORTED); - monitor = BackupManagerMonitorUtils.monitorEvent(monitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_NO_PACKAGES, null, BackupManagerMonitor.LOG_EVENT_CATEGORY_TRANSPORT, null); throw new IllegalArgumentException("No packages are provided for backup"); @@ -1853,7 +1855,7 @@ public class UserBackupManagerService { final int logTag = mSetupComplete ? BackupManagerMonitor.LOG_EVENT_ID_BACKUP_DISABLED : BackupManagerMonitor.LOG_EVENT_ID_DEVICE_NOT_PROVISIONED; - monitor = BackupManagerMonitorUtils.monitorEvent(monitor, logTag, null, + mBackupManagerMonitorEventSender.monitorEvent(logTag, null, BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, null); return BackupManager.ERROR_BACKUP_NOT_ALLOWED; } @@ -1871,7 +1873,7 @@ public class UserBackupManagerService { } catch (TransportNotRegisteredException | TransportNotAvailableException | RemoteException e) { BackupObserverUtils.sendBackupFinished(observer, BackupManager.ERROR_TRANSPORT_ABORTED); - monitor = BackupManagerMonitorUtils.monitorEvent(monitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_TRANSPORT_IS_NULL, null, BackupManagerMonitor.LOG_EVENT_CATEGORY_TRANSPORT, null); return BackupManager.ERROR_TRANSPORT_ABORTED; @@ -3066,7 +3068,9 @@ public class UserBackupManagerService { /* caller */ "BMS.reportDelayedRestoreResult"); IBackupManagerMonitor monitor = transportClient.getBackupManagerMonitor(); - BackupManagerMonitorUtils.sendAgentLoggingResults(monitor, packageInfo, results, + BackupManagerMonitorEventSender mBackupManagerMonitorEventSender = + getBMMEventSender(monitor); + mBackupManagerMonitorEventSender.sendAgentLoggingResults(packageInfo, results, BackupAnnotations.OperationType.RESTORE); } catch (NameNotFoundException | TransportNotAvailableException | TransportNotRegisteredException | RemoteException e) { @@ -3190,6 +3194,11 @@ public class UserBackupManagerService { } } + @VisibleForTesting + BackupManagerMonitorEventSender getBMMEventSender(IBackupManagerMonitor monitor) { + return new BackupManagerMonitorEventSender(monitor); + } + /** User-configurable enabling/disabling of backups. */ public void setBackupEnabled(boolean enable) { setBackupEnabled(enable, /* persistToDisk */ true); diff --git a/services/backup/java/com/android/server/backup/fullbackup/FullBackupEngine.java b/services/backup/java/com/android/server/backup/fullbackup/FullBackupEngine.java index ad29422501c6..12712063e344 100644 --- a/services/backup/java/com/android/server/backup/fullbackup/FullBackupEngine.java +++ b/services/backup/java/com/android/server/backup/fullbackup/FullBackupEngine.java @@ -23,13 +23,11 @@ import static com.android.server.backup.UserBackupManagerService.BACKUP_MANIFEST import static com.android.server.backup.UserBackupManagerService.BACKUP_METADATA_FILENAME; import static com.android.server.backup.UserBackupManagerService.SHARED_BACKUP_AGENT_PACKAGE; -import android.annotation.Nullable; import android.annotation.UserIdInt; import android.app.ApplicationThreadConstants; import android.app.IBackupAgent; import android.app.backup.BackupTransport; import android.app.backup.FullBackupDataOutput; -import android.app.backup.IBackupManagerMonitor; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; @@ -44,7 +42,7 @@ import com.android.server.backup.OperationStorage.OpType; import com.android.server.backup.UserBackupManagerService; import com.android.server.backup.remote.RemoteCall; import com.android.server.backup.utils.BackupEligibilityRules; -import com.android.server.backup.utils.BackupManagerMonitorUtils; +import com.android.server.backup.utils.BackupManagerMonitorEventSender; import com.android.server.backup.utils.FullBackupUtils; import java.io.File; @@ -69,7 +67,7 @@ public class FullBackupEngine { private final int mTransportFlags; private final BackupAgentTimeoutParameters mAgentTimeoutParameters; private final BackupEligibilityRules mBackupEligibilityRules; - @Nullable private final IBackupManagerMonitor mMonitor; + private final BackupManagerMonitorEventSender mBackupManagerMonitorEventSender; class FullBackupRunner implements Runnable { private final @UserIdInt int mUserId; @@ -198,7 +196,7 @@ public class FullBackupEngine { int opToken, int transportFlags, BackupEligibilityRules backupEligibilityRules, - IBackupManagerMonitor monitor) { + BackupManagerMonitorEventSender backupManagerMonitorEventSender) { this.backupManagerService = backupManagerService; mOutput = output; mPreflightHook = preflightHook; @@ -213,7 +211,7 @@ public class FullBackupEngine { backupManagerService.getAgentTimeoutParameters(), "Timeout parameters cannot be null"); mBackupEligibilityRules = backupEligibilityRules; - mMonitor = monitor; + mBackupManagerMonitorEventSender = backupManagerMonitorEventSender; } public int preflightCheck() throws RemoteException { @@ -270,7 +268,7 @@ public class FullBackupEngine { result = BackupTransport.TRANSPORT_OK; } - BackupManagerMonitorUtils.monitorAgentLoggingResults(mMonitor, mPkg, mAgent); + mBackupManagerMonitorEventSender.monitorAgentLoggingResults(mPkg, mAgent); } catch (IOException e) { Slog.e(TAG, "Error backing up " + mPkg.packageName + ": " + e.getMessage()); result = BackupTransport.AGENT_ERROR; diff --git a/services/backup/java/com/android/server/backup/fullbackup/PerformAdbBackupTask.java b/services/backup/java/com/android/server/backup/fullbackup/PerformAdbBackupTask.java index cba1e299ff58..dc6709141b25 100644 --- a/services/backup/java/com/android/server/backup/fullbackup/PerformAdbBackupTask.java +++ b/services/backup/java/com/android/server/backup/fullbackup/PerformAdbBackupTask.java @@ -40,6 +40,7 @@ import com.android.server.backup.KeyValueAdbBackupEngine; import com.android.server.backup.OperationStorage; import com.android.server.backup.UserBackupManagerService; import com.android.server.backup.utils.BackupEligibilityRules; +import com.android.server.backup.utils.BackupManagerMonitorEventSender; import com.android.server.backup.utils.PasswordUtils; import java.io.ByteArrayOutputStream; @@ -421,7 +422,7 @@ public class PerformAdbBackupTask extends FullBackupTask implements BackupRestor mCurrentOpToken, /*transportFlags=*/ 0, mBackupEligibilityRules, - /* monitor= */ null); + new BackupManagerMonitorEventSender(null)); sendOnBackupPackage(isSharedStorage ? "Shared storage" : pkg.packageName); // Don't need to check preflight result as there is no preflight hook. diff --git a/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java b/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java index 162046a66560..6aed9aa15860 100644 --- a/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java +++ b/services/backup/java/com/android/server/backup/fullbackup/PerformFullTransportBackupTask.java @@ -54,7 +54,7 @@ import com.android.server.backup.transport.BackupTransportClient; import com.android.server.backup.transport.TransportConnection; import com.android.server.backup.transport.TransportNotAvailableException; import com.android.server.backup.utils.BackupEligibilityRules; -import com.android.server.backup.utils.BackupManagerMonitorUtils; +import com.android.server.backup.utils.BackupManagerMonitorEventSender; import com.android.server.backup.utils.BackupObserverUtils; import com.google.android.collect.Sets; @@ -153,7 +153,6 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba CountDownLatch mLatch; FullBackupJob mJob; // if a scheduled job needs to be finished afterwards IBackupObserver mBackupObserver; - @Nullable private IBackupManagerMonitor mMonitor; boolean mUserInitiated; SinglePackageBackupRunner mBackupRunner; private final int mBackupRunnerOpToken; @@ -167,6 +166,7 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba private final int mCurrentOpToken; private final BackupAgentTimeoutParameters mAgentTimeoutParameters; private final BackupEligibilityRules mBackupEligibilityRules; + private BackupManagerMonitorEventSender mBackupManagerMonitorEventSender; public PerformFullTransportBackupTask(UserBackupManagerService backupManagerService, OperationStorage operationStorage, @@ -185,11 +185,12 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba mJob = runningJob; mPackages = new ArrayList<>(whichPackages.length); mBackupObserver = backupObserver; - mMonitor = monitor; mListener = (listener != null) ? listener : OnTaskFinishedListener.NOP; mUserInitiated = userInitiated; mCurrentOpToken = backupManagerService.generateRandomIntegerToken(); mBackupRunnerOpToken = backupManagerService.generateRandomIntegerToken(); + mBackupManagerMonitorEventSender = + new BackupManagerMonitorEventSender(monitor); mAgentTimeoutParameters = Objects.requireNonNull( backupManagerService.getAgentTimeoutParameters(), "Timeout parameters cannot be null"); @@ -218,7 +219,7 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba if (MORE_DEBUG) { Slog.d(TAG, "Ignoring ineligible package " + pkg); } - mMonitor = BackupManagerMonitorUtils.monitorEvent(mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_PACKAGE_INELIGIBLE, mCurrentPackage, BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, @@ -233,7 +234,7 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba Slog.d(TAG, "Ignoring full-data backup of key/value participant " + pkg); } - mMonitor = BackupManagerMonitorUtils.monitorEvent(mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_PACKAGE_KEY_VALUE_PARTICIPANT, mCurrentPackage, BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, @@ -248,7 +249,7 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba if (MORE_DEBUG) { Slog.d(TAG, "Ignoring stopped package " + pkg); } - mMonitor = BackupManagerMonitorUtils.monitorEvent(mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_PACKAGE_STOPPED, mCurrentPackage, BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, @@ -260,7 +261,7 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba mPackages.add(info); } catch (NameNotFoundException e) { Slog.i(TAG, "Requested package " + pkg + " not found; ignoring"); - mMonitor = BackupManagerMonitorUtils.monitorEvent(mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_PACKAGE_NOT_FOUND, mCurrentPackage, BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, @@ -356,8 +357,8 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba } else { monitoringEvent = BackupManagerMonitor.LOG_EVENT_ID_DEVICE_NOT_PROVISIONED; } - mMonitor = BackupManagerMonitorUtils - .monitorEvent(mMonitor, monitoringEvent, null, + mBackupManagerMonitorEventSender + .monitorEvent(monitoringEvent, null, BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, null); mUpdateSchedule = false; @@ -369,7 +370,7 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba if (transport == null) { Slog.w(TAG, "Transport not present; full data backup not performed"); backupRunStatus = BackupManager.ERROR_TRANSPORT_ABORTED; - mMonitor = BackupManagerMonitorUtils.monitorEvent(mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_PACKAGE_TRANSPORT_NOT_PRESENT, mCurrentPackage, BackupManagerMonitor.LOG_EVENT_CATEGORY_TRANSPORT, null); @@ -378,9 +379,10 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba // In some cases there may not be a monitor passed in when creating this task. So, if we // don't have one already we ask the transport for a monitor. - if (mMonitor == null) { + if (mBackupManagerMonitorEventSender.getMonitor() == null) { try { - mMonitor = transport.getBackupManagerMonitor(); + mBackupManagerMonitorEventSender + .setMonitor(transport.getBackupManagerMonitor()); } catch (RemoteException e) { Slog.i(TAG, "Failed to retrieve monitor from transport"); } @@ -457,11 +459,11 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba + packageName + ": " + preflightResult + ", not running backup."); } - mMonitor = BackupManagerMonitorUtils.monitorEvent(mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_ERROR_PREFLIGHT, mCurrentPackage, BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, - BackupManagerMonitorUtils.putMonitoringExtra(null, + mBackupManagerMonitorEventSender.putMonitoringExtra(null, BackupManagerMonitor.EXTRA_LOG_PREFLIGHT_ERROR, preflightResult)); backupPackageStatus = (int) preflightResult; @@ -492,7 +494,7 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba if (backupPackageStatus == BackupTransport.TRANSPORT_QUOTA_EXCEEDED) { Slog.w(TAG, "Package hit quota limit in-flight " + packageName + ": " + totalRead + " of " + quota); - mMonitor = BackupManagerMonitorUtils.monitorEvent(mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_QUOTA_HIT_PREFLIGHT, mCurrentPackage, BackupManagerMonitor.LOG_EVENT_CATEGORY_TRANSPORT, @@ -647,11 +649,11 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba } catch (Exception e) { backupRunStatus = BackupManager.ERROR_TRANSPORT_ABORTED; Slog.w(TAG, "Exception trying full transport backup", e); - mMonitor = BackupManagerMonitorUtils.monitorEvent(mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_EXCEPTION_FULL_BACKUP, mCurrentPackage, BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, - BackupManagerMonitorUtils.putMonitoringExtra(null, + mBackupManagerMonitorEventSender.putMonitoringExtra(null, BackupManagerMonitor.EXTRA_LOG_EXCEPTION_FULL_BACKUP, Log.getStackTraceString(e))); @@ -885,7 +887,7 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba mCurrentOpToken, mTransportFlags, mBackupEligibilityRules, - mMonitor); + mBackupManagerMonitorEventSender); try { try { if (!mIsCancelled) { @@ -967,7 +969,7 @@ public class PerformFullTransportBackupTask extends FullBackupTask implements Ba Slog.w(TAG, "Full backup cancel of " + mTarget.packageName); } - mMonitor = BackupManagerMonitorUtils.monitorEvent(mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_FULL_BACKUP_CANCEL, mCurrentPackage, BackupManagerMonitor.LOG_EVENT_CATEGORY_AGENT, null); mIsCancelled = true; diff --git a/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupReporter.java b/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupReporter.java index 4632cb0e51e2..20c8cf6c6923 100644 --- a/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupReporter.java +++ b/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupReporter.java @@ -32,7 +32,7 @@ import com.android.server.backup.BackupManagerService; import com.android.server.backup.DataChangedJournal; import com.android.server.backup.UserBackupManagerService; import com.android.server.backup.remote.RemoteResult; -import com.android.server.backup.utils.BackupManagerMonitorUtils; +import com.android.server.backup.utils.BackupManagerMonitorEventSender; import com.android.server.backup.utils.BackupObserverUtils; import java.io.File; @@ -65,21 +65,21 @@ public class KeyValueBackupReporter { private final UserBackupManagerService mBackupManagerService; private final IBackupObserver mObserver; - @Nullable private IBackupManagerMonitor mMonitor; + private final BackupManagerMonitorEventSender mBackupManagerMonitorEventSender; KeyValueBackupReporter( UserBackupManagerService backupManagerService, IBackupObserver observer, - @Nullable IBackupManagerMonitor monitor) { + BackupManagerMonitorEventSender backupManagerMonitorEventSender) { mBackupManagerService = backupManagerService; mObserver = observer; - mMonitor = monitor; + mBackupManagerMonitorEventSender = backupManagerMonitorEventSender; } /** Returns the monitor or {@code null} if we lost connection to it. */ @Nullable IBackupManagerMonitor getMonitor() { - return mMonitor; + return mBackupManagerMonitorEventSender.getMonitor(); } IBackupObserver getObserver() { @@ -208,13 +208,11 @@ public class KeyValueBackupReporter { void onAgentIllegalKey(PackageInfo packageInfo, String key) { String packageName = packageInfo.packageName; EventLog.writeEvent(EventLogTags.BACKUP_AGENT_FAILURE, packageName, "bad key"); - mMonitor = - BackupManagerMonitorUtils.monitorEvent( - mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_ILLEGAL_KEY, packageInfo, BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, - BackupManagerMonitorUtils.putMonitoringExtra( + mBackupManagerMonitorEventSender.putMonitoringExtra( null, BackupManagerMonitor.EXTRA_LOG_ILLEGAL_KEY, key)); BackupObserverUtils.sendBackupOnPackageResult( mObserver, packageName, BackupManager.ERROR_AGENT_FAILURE); @@ -254,13 +252,11 @@ public class KeyValueBackupReporter { if (MORE_DEBUG) { Slog.i(TAG, "No backup data written, not calling transport"); } - mMonitor = - BackupManagerMonitorUtils.monitorEvent( - mMonitor, - BackupManagerMonitor.LOG_EVENT_ID_NO_DATA_TO_SEND, - packageInfo, - BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, - null); + mBackupManagerMonitorEventSender.monitorEvent( + BackupManagerMonitor.LOG_EVENT_ID_NO_DATA_TO_SEND, + packageInfo, + BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, + null); } void onPackageBackupComplete(String packageName, long size) { @@ -291,8 +287,7 @@ public class KeyValueBackupReporter { void onPackageBackupNonIncrementalRequired(PackageInfo packageInfo) { Slog.i(TAG, "Transport lost data, retrying package"); - BackupManagerMonitorUtils.monitorEvent( - mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_TRANSPORT_NON_INCREMENTAL_BACKUP_REQUIRED, packageInfo, BackupManagerMonitor.LOG_EVENT_CATEGORY_TRANSPORT, @@ -335,28 +330,24 @@ public class KeyValueBackupReporter { EventLog.writeEvent(EventLogTags.BACKUP_AGENT_FAILURE, packageName); // Time-out used to be implemented as cancel w/ cancelAll = false. // TODO: Change monitoring event to reflect time-out as an event itself. - mMonitor = - BackupManagerMonitorUtils.monitorEvent( - mMonitor, - BackupManagerMonitor.LOG_EVENT_ID_KEY_VALUE_BACKUP_CANCEL, - packageInfo, - BackupManagerMonitor.LOG_EVENT_CATEGORY_AGENT, - BackupManagerMonitorUtils.putMonitoringExtra( - null, BackupManagerMonitor.EXTRA_LOG_CANCEL_ALL, false)); + mBackupManagerMonitorEventSender.monitorEvent( + BackupManagerMonitor.LOG_EVENT_ID_KEY_VALUE_BACKUP_CANCEL, + packageInfo, + BackupManagerMonitor.LOG_EVENT_CATEGORY_AGENT, + mBackupManagerMonitorEventSender.putMonitoringExtra( + null, BackupManagerMonitor.EXTRA_LOG_CANCEL_ALL, false)); } void onAgentCancelled(@Nullable PackageInfo packageInfo) { String packageName = getPackageName(packageInfo); Slog.i(TAG, "Cancel backing up " + packageName); EventLog.writeEvent(EventLogTags.BACKUP_AGENT_FAILURE, packageName); - mMonitor = - BackupManagerMonitorUtils.monitorEvent( - mMonitor, - BackupManagerMonitor.LOG_EVENT_ID_KEY_VALUE_BACKUP_CANCEL, - packageInfo, - BackupManagerMonitor.LOG_EVENT_CATEGORY_AGENT, - BackupManagerMonitorUtils.putMonitoringExtra( - null, BackupManagerMonitor.EXTRA_LOG_CANCEL_ALL, true)); + mBackupManagerMonitorEventSender.monitorEvent( + BackupManagerMonitor.LOG_EVENT_ID_KEY_VALUE_BACKUP_CANCEL, + packageInfo, + BackupManagerMonitor.LOG_EVENT_CATEGORY_AGENT, + mBackupManagerMonitorEventSender.putMonitoringExtra( + null, BackupManagerMonitor.EXTRA_LOG_CANCEL_ALL, true)); } void onAgentResultError(@Nullable PackageInfo packageInfo) { diff --git a/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java b/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java index 41e8092436b5..3a6e1cafa505 100644 --- a/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java +++ b/services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java @@ -68,7 +68,7 @@ import com.android.server.backup.transport.BackupTransportClient; import com.android.server.backup.transport.TransportConnection; import com.android.server.backup.transport.TransportNotAvailableException; import com.android.server.backup.utils.BackupEligibilityRules; -import com.android.server.backup.utils.BackupManagerMonitorUtils; +import com.android.server.backup.utils.BackupManagerMonitorEventSender; import libcore.io.IoUtils; @@ -225,7 +225,8 @@ public class KeyValueBackupTask implements BackupRestoreTask, Runnable { boolean nonIncremental, BackupEligibilityRules backupEligibilityRules) { KeyValueBackupReporter reporter = - new KeyValueBackupReporter(backupManagerService, observer, monitor); + new KeyValueBackupReporter(backupManagerService, observer, + new BackupManagerMonitorEventSender(monitor)); KeyValueBackupTask task = new KeyValueBackupTask( backupManagerService, @@ -698,8 +699,9 @@ public class KeyValueBackupTask implements BackupRestoreTask, Runnable { try { extractAgentData(mCurrentPackage); - BackupManagerMonitorUtils.monitorAgentLoggingResults( - mReporter.getMonitor(), mCurrentPackage, mAgent); + BackupManagerMonitorEventSender mBackupManagerMonitorEventSender = + new BackupManagerMonitorEventSender(mReporter.getMonitor()); + mBackupManagerMonitorEventSender.monitorAgentLoggingResults(mCurrentPackage, mAgent); int status = sendDataToTransport(mCurrentPackage); cleanUpAgentForTransportStatus(status); } catch (AgentException | TaskException e) { diff --git a/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java b/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java index 8cbb5dc03b9e..2ee4bc78129d 100644 --- a/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java +++ b/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java @@ -70,7 +70,7 @@ import com.android.server.backup.internal.OnTaskFinishedListener; import com.android.server.backup.transport.BackupTransportClient; import com.android.server.backup.transport.TransportConnection; import com.android.server.backup.utils.BackupEligibilityRules; -import com.android.server.backup.utils.BackupManagerMonitorUtils; +import com.android.server.backup.utils.BackupManagerMonitorEventSender; import libcore.io.IoUtils; @@ -98,8 +98,7 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { // Restore observer; may be null private IRestoreObserver mObserver; - // BackuoManagerMonitor; may be null - private IBackupManagerMonitor mMonitor; + private BackupManagerMonitorEventSender mBackupManagerMonitorEventSender; // Token identifying the dataset to the transport private long mToken; @@ -181,6 +180,8 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { mUserId = 0; mBackupEligibilityRules = null; this.backupManagerService = backupManagerService; + mBackupManagerMonitorEventSender = + new BackupManagerMonitorEventSender(/*monitor*/null); } // This task can assume that the wakelock is properly held for it and doesn't have to worry @@ -208,7 +209,8 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { mTransportConnection = transportConnection; mObserver = observer; - mMonitor = monitor; + mBackupManagerMonitorEventSender = + new BackupManagerMonitorEventSender(monitor); mToken = restoreSetToken; mPmToken = pmToken; mTargetPackage = targetPackage; @@ -410,8 +412,8 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { // If the requester of the restore has not passed in a monitor, we ask the transport // for one. - if (mMonitor == null) { - mMonitor = transport.getBackupManagerMonitor(); + if (mBackupManagerMonitorEventSender.getMonitor() == null) { + mBackupManagerMonitorEventSender.setMonitor(transport.getBackupManagerMonitor()); } mStatus = transport.startRestore(mToken, packages); @@ -425,7 +427,7 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { RestoreDescription desc = transport.nextRestorePackage(); if (desc == null) { Slog.e(TAG, "No restore metadata available; halting"); - mMonitor = BackupManagerMonitorUtils.monitorEvent(mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_NO_RESTORE_METADATA_AVAILABLE, mCurrentPackage, BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, null); @@ -437,7 +439,7 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { desc.getPackageName())) { Slog.e(TAG, "Required package metadata but got " + desc.getPackageName()); - mMonitor = BackupManagerMonitorUtils.monitorEvent(mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_NO_PM_METADATA_RECEIVED, mCurrentPackage, BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, null); @@ -472,7 +474,7 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { // the restore operation. if (!mPmAgent.hasMetadata()) { Slog.e(TAG, "PM agent has no metadata, so not restoring"); - mMonitor = BackupManagerMonitorUtils.monitorEvent(mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_PM_AGENT_HAS_NO_METADATA, mCurrentPackage, BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, null); @@ -492,7 +494,7 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { } catch (Exception e) { // If we lost the transport at any time, halt Slog.e(TAG, "Unable to contact transport for restore: " + e.getMessage()); - mMonitor = BackupManagerMonitorUtils.monitorEvent(mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_LOST_TRANSPORT, null, BackupManagerMonitor.LOG_EVENT_CATEGORY_TRANSPORT, null); @@ -552,7 +554,7 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { // Whoops, we thought we could restore this package but it // turns out not to be present. Skip it. Slog.e(TAG, "Package not present: " + pkgName); - mMonitor = BackupManagerMonitorUtils.monitorEvent(mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_PACKAGE_NOT_PRESENT, mCurrentPackage, BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, @@ -572,13 +574,14 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { String message = "Source version " + metaInfo.versionCode + " > installed version " + mCurrentPackage.getLongVersionCode(); Slog.w(TAG, "Package " + pkgName + ": " + message); - Bundle monitoringExtras = BackupManagerMonitorUtils.putMonitoringExtra(null, + Bundle monitoringExtras = mBackupManagerMonitorEventSender.putMonitoringExtra( + null, BackupManagerMonitor.EXTRA_LOG_RESTORE_VERSION, metaInfo.versionCode); - monitoringExtras = BackupManagerMonitorUtils.putMonitoringExtra( + monitoringExtras = mBackupManagerMonitorEventSender.putMonitoringExtra( monitoringExtras, BackupManagerMonitor.EXTRA_LOG_RESTORE_ANYWAY, false); - mMonitor = BackupManagerMonitorUtils.monitorEvent(mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_RESTORE_VERSION_HIGHER, mCurrentPackage, BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, @@ -593,13 +596,14 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { + " > installed version " + mCurrentPackage.getLongVersionCode() + " but restoreAnyVersion"); } - Bundle monitoringExtras = BackupManagerMonitorUtils.putMonitoringExtra(null, + Bundle monitoringExtras = mBackupManagerMonitorEventSender.putMonitoringExtra( + null, BackupManagerMonitor.EXTRA_LOG_RESTORE_VERSION, metaInfo.versionCode); - monitoringExtras = BackupManagerMonitorUtils.putMonitoringExtra( + monitoringExtras = mBackupManagerMonitorEventSender.putMonitoringExtra( monitoringExtras, BackupManagerMonitor.EXTRA_LOG_RESTORE_ANYWAY, true); - mMonitor = BackupManagerMonitorUtils.monitorEvent(mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_RESTORE_VERSION_HIGHER, mCurrentPackage, BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, @@ -652,7 +656,7 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { Slog.i(TAG, "Data exists for package " + packageName + " but app has no agent; skipping"); } - mMonitor = BackupManagerMonitorUtils.monitorEvent(mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_APP_HAS_NO_AGENT, mCurrentPackage, BackupManagerMonitor.LOG_EVENT_CATEGORY_AGENT, null); EventLog.writeEvent(EventLogTags.RESTORE_AGENT_FAILURE, packageName, @@ -665,7 +669,7 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { PackageManagerInternal pmi = LocalServices.getService(PackageManagerInternal.class); if (!BackupUtils.signaturesMatch(metaInfo.sigHashes, mCurrentPackage, pmi)) { Slog.w(TAG, "Signature mismatch restoring " + packageName); - mMonitor = BackupManagerMonitorUtils.monitorEvent(mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_SIGNATURE_MISMATCH, mCurrentPackage, BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, null); EventLog.writeEvent(EventLogTags.RESTORE_AGENT_FAILURE, packageName, @@ -681,7 +685,7 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { mBackupEligibilityRules.getBackupDestination()); if (mAgent == null) { Slog.w(TAG, "Can't find backup agent for " + packageName); - mMonitor = BackupManagerMonitorUtils.monitorEvent(mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_CANT_FIND_AGENT, mCurrentPackage, BackupManagerMonitor.LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, null); EventLog.writeEvent(EventLogTags.RESTORE_AGENT_FAILURE, packageName, @@ -941,8 +945,9 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { EventLog.writeEvent(EventLogTags.FULL_RESTORE_PACKAGE, mCurrentPackage.packageName); - mEngine = new FullRestoreEngine(backupManagerService, mOperationStorage, this, null, - mMonitor, mCurrentPackage, false, mEphemeralOpToken, false, + mEngine = new FullRestoreEngine(backupManagerService, mOperationStorage, + this, null, mBackupManagerMonitorEventSender.getMonitor(), + mCurrentPackage, false, mEphemeralOpToken, false, mBackupEligibilityRules); mEngineThread = new FullRestoreEngineThread(mEngine, mEnginePipes[0]); @@ -1096,7 +1101,7 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { Slog.w(TAG, "Full-data restore target timed out; shutting down"); } - mMonitor = BackupManagerMonitorUtils.monitorEvent(mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_FULL_RESTORE_TIMEOUT, mCurrentPackage, BackupManagerMonitor.LOG_EVENT_CATEGORY_AGENT, null); mEngineThread.handleTimeout(); @@ -1322,7 +1327,7 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { // Ask the agent for logs after doRestoreFinished() has completed executing to allow // it to finalize its logs. - BackupManagerMonitorUtils.monitorAgentLoggingResults(mMonitor, mCurrentPackage, + mBackupManagerMonitorEventSender.monitorAgentLoggingResults(mCurrentPackage, mAgent); // Just go back to running the restore queue @@ -1358,7 +1363,7 @@ public class PerformUnifiedRestoreTask implements BackupRestoreTask { public void handleCancel(boolean cancelAll) { mOperationStorage.removeOperation(mEphemeralOpToken); Slog.e(TAG, "Timeout restoring application " + mCurrentPackage.packageName); - mMonitor = BackupManagerMonitorUtils.monitorEvent(mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_KEY_VALUE_RESTORE_TIMEOUT, mCurrentPackage, BackupManagerMonitor.LOG_EVENT_CATEGORY_AGENT, null); EventLog.writeEvent(EventLogTags.RESTORE_AGENT_FAILURE, diff --git a/services/backup/java/com/android/server/backup/utils/BackupManagerMonitorUtils.java b/services/backup/java/com/android/server/backup/utils/BackupManagerMonitorEventSender.java index 439b83687b8f..f9286803f167 100644 --- a/services/backup/java/com/android/server/backup/utils/BackupManagerMonitorUtils.java +++ b/services/backup/java/com/android/server/backup/utils/BackupManagerMonitorEventSender.java @@ -25,7 +25,6 @@ import static android.app.backup.BackupManagerMonitor.LOG_EVENT_ID_AGENT_LOGGING import static com.android.server.backup.BackupManagerService.DEBUG; import static com.android.server.backup.BackupManagerService.TAG; -import android.annotation.NonNull; import android.annotation.Nullable; import android.app.IBackupAgent; import android.app.backup.BackupAnnotations.OperationType; @@ -44,9 +43,9 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; /** - * Utility methods to communicate with BackupManagerMonitor. + * Utility methods to log BackupManagerMonitor events. */ -public class BackupManagerMonitorUtils { +public class BackupManagerMonitorEventSender { /** * Timeout for how long we wait before we give up on getting logs from a {@link IBackupAgent}. * We expect this to be very fast since the agent immediately returns whatever logs have been @@ -54,27 +53,36 @@ public class BackupManagerMonitorUtils { * for non-essential logs. */ private static final int AGENT_LOGGER_RESULTS_TIMEOUT_MILLIS = 500; + @Nullable private IBackupManagerMonitor mMonitor; + + public BackupManagerMonitorEventSender(@Nullable IBackupManagerMonitor monitor) { + mMonitor = monitor; + } + + public void setMonitor(IBackupManagerMonitor monitor) { + mMonitor = monitor; + } + + public IBackupManagerMonitor getMonitor() { + return mMonitor; + } /** * Notifies monitor about the event. * * Calls {@link IBackupManagerMonitor#onEvent(Bundle)} with a bundle representing current event. * - * @param monitor - implementation of {@link IBackupManagerMonitor} to notify. * @param id - event id. * @param pkg - package event is related to. * @param category - event category. * @param extras - additional event data. - * @return <code>monitor</code> if call succeeded and <code>null</code> otherwise. */ - @Nullable - public static IBackupManagerMonitor monitorEvent( - @Nullable IBackupManagerMonitor monitor, + public void monitorEvent( int id, PackageInfo pkg, int category, Bundle extras) { - if (monitor != null) { + if (mMonitor != null) { try { Bundle bundle = new Bundle(); bundle.putInt(BackupManagerMonitor.EXTRA_LOG_EVENT_ID, id); @@ -90,15 +98,14 @@ public class BackupManagerMonitorUtils { if (extras != null) { bundle.putAll(extras); } - monitor.onEvent(bundle); - return monitor; + mMonitor.onEvent(bundle); } catch (RemoteException e) { + mMonitor = null; if (DEBUG) { Slog.w(TAG, "backup manager monitor went away"); } } } - return null; } /** @@ -108,17 +115,12 @@ public class BackupManagerMonitorUtils { * <p>Note that this method does two separate binder calls (one to the agent and one to the * monitor). * - * @param monitor - implementation of {@link IBackupManagerMonitor} to notify. * @param pkg - package the {@code agent} belongs to. * @param agent - the {@link IBackupAgent} to retrieve logs from. - * @return {@code null} if the monitor is null. {@code monitor} if we fail to retrieve the logs - * from the {@code agent}. Otherwise, the result of {@link - * #monitorEvent(IBackupManagerMonitor, int, PackageInfo, int, Bundle)}. */ - public static IBackupManagerMonitor monitorAgentLoggingResults( - @Nullable IBackupManagerMonitor monitor, PackageInfo pkg, IBackupAgent agent) { - if (monitor == null) { - return null; + public void monitorAgentLoggingResults(PackageInfo pkg, IBackupAgent agent) { + if (mMonitor == null) { + return; } try { @@ -127,7 +129,7 @@ public class BackupManagerMonitorUtils { AndroidFuture<Integer> operationTypeFuture = new AndroidFuture<>(); agent.getLoggerResults(resultsFuture); agent.getOperationType(operationTypeFuture); - return sendAgentLoggingResults(monitor, pkg, + sendAgentLoggingResults(pkg, resultsFuture.get(AGENT_LOGGER_RESULTS_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS), operationTypeFuture.get(AGENT_LOGGER_RESULTS_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS)); @@ -136,18 +138,15 @@ public class BackupManagerMonitorUtils { } catch (Exception e) { Slog.w(TAG, "Failed to retrieve logging results from agent", e); } - return monitor; } - public static IBackupManagerMonitor sendAgentLoggingResults( - @NonNull IBackupManagerMonitor monitor, PackageInfo pkg, List<DataTypeResult> results, + public void sendAgentLoggingResults(PackageInfo pkg, List<DataTypeResult> results, @OperationType int operationType) { Bundle loggerResultsBundle = new Bundle(); loggerResultsBundle.putParcelableList( EXTRA_LOG_AGENT_LOGGING_RESULTS, results); loggerResultsBundle.putInt(EXTRA_LOG_OPERATION_TYPE, operationType); - return monitorEvent( - monitor, + monitorEvent( LOG_EVENT_ID_AGENT_LOGGING_RESULTS, pkg, LOG_EVENT_CATEGORY_AGENT, diff --git a/services/backup/java/com/android/server/backup/utils/TarBackupReader.java b/services/backup/java/com/android/server/backup/utils/TarBackupReader.java index 71ca8ca24604..78a9952d066d 100644 --- a/services/backup/java/com/android/server/backup/utils/TarBackupReader.java +++ b/services/backup/java/com/android/server/backup/utils/TarBackupReader.java @@ -85,7 +85,8 @@ public class TarBackupReader { private final InputStream mInputStream; private final BytesReadListener mBytesReadListener; - private IBackupManagerMonitor mMonitor; + + private BackupManagerMonitorEventSender mBackupManagerMonitorEventSender; // Widget blob to be restored out-of-band. private byte[] mWidgetData = null; @@ -94,7 +95,7 @@ public class TarBackupReader { IBackupManagerMonitor monitor) { mInputStream = inputStream; mBytesReadListener = bytesReadListener; - mMonitor = monitor; + mBackupManagerMonitorEventSender = new BackupManagerMonitorEventSender(monitor); } /** @@ -323,24 +324,22 @@ public class TarBackupReader { return sigs; } else { Slog.i(TAG, "Missing signature on backed-up package " + info.packageName); - mMonitor = BackupManagerMonitorUtils.monitorEvent( - mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( LOG_EVENT_ID_MISSING_SIGNATURE, null, LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, - BackupManagerMonitorUtils.putMonitoringExtra(null, + mBackupManagerMonitorEventSender.putMonitoringExtra(null, EXTRA_LOG_EVENT_PACKAGE_NAME, info.packageName)); } } else { Slog.i(TAG, "Expected package " + info.packageName + " but restore manifest claims " + manifestPackage); - Bundle monitoringExtras = BackupManagerMonitorUtils.putMonitoringExtra(null, - EXTRA_LOG_EVENT_PACKAGE_NAME, info.packageName); - monitoringExtras = BackupManagerMonitorUtils.putMonitoringExtra( + Bundle monitoringExtras = mBackupManagerMonitorEventSender.putMonitoringExtra( + null, EXTRA_LOG_EVENT_PACKAGE_NAME, info.packageName); + monitoringExtras = mBackupManagerMonitorEventSender.putMonitoringExtra( monitoringExtras, EXTRA_LOG_MANIFEST_PACKAGE_NAME, manifestPackage); - mMonitor = BackupManagerMonitorUtils.monitorEvent( - mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( LOG_EVENT_ID_EXPECTED_DIFFERENT_PACKAGE, null, LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, @@ -349,12 +348,11 @@ public class TarBackupReader { } else { Slog.i(TAG, "Unknown restore manifest version " + version + " for package " + info.packageName); - Bundle monitoringExtras = BackupManagerMonitorUtils.putMonitoringExtra(null, - EXTRA_LOG_EVENT_PACKAGE_NAME, info.packageName); - monitoringExtras = BackupManagerMonitorUtils.putMonitoringExtra(monitoringExtras, - EXTRA_LOG_EVENT_PACKAGE_VERSION, version); - mMonitor = BackupManagerMonitorUtils.monitorEvent( - mMonitor, + Bundle monitoringExtras = mBackupManagerMonitorEventSender.putMonitoringExtra( + null, EXTRA_LOG_EVENT_PACKAGE_NAME, info.packageName); + monitoringExtras = mBackupManagerMonitorEventSender.putMonitoringExtra( + monitoringExtras, EXTRA_LOG_EVENT_PACKAGE_VERSION, version); + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_UNKNOWN_VERSION, null, LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, @@ -363,12 +361,12 @@ public class TarBackupReader { } } catch (NumberFormatException e) { Slog.w(TAG, "Corrupt restore manifest for package " + info.packageName); - mMonitor = BackupManagerMonitorUtils.monitorEvent( - mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_CORRUPT_MANIFEST, null, LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, - BackupManagerMonitorUtils.putMonitoringExtra(null, EXTRA_LOG_EVENT_PACKAGE_NAME, + mBackupManagerMonitorEventSender.putMonitoringExtra(null, + EXTRA_LOG_EVENT_PACKAGE_NAME, info.packageName)); } catch (IllegalArgumentException e) { Slog.w(TAG, e.getMessage()); @@ -436,8 +434,7 @@ public class TarBackupReader { if ((pkgInfo.applicationInfo.flags & ApplicationInfo.FLAG_RESTORE_ANY_VERSION) != 0) { Slog.i(TAG, "Package has restoreAnyVersion; taking data"); - mMonitor = BackupManagerMonitorUtils.monitorEvent( - mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( LOG_EVENT_ID_RESTORE_ANY_VERSION, pkgInfo, LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, @@ -446,8 +443,7 @@ public class TarBackupReader { } else if (pkgInfo.getLongVersionCode() >= info.version) { Slog.i(TAG, "Sig + version match; taking data"); policy = RestorePolicy.ACCEPT; - mMonitor = BackupManagerMonitorUtils.monitorEvent( - mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( LOG_EVENT_ID_VERSIONS_MATCH, pkgInfo, LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, @@ -466,12 +462,11 @@ public class TarBackupReader { } else { Slog.i(TAG, "Data requires newer version " + info.version + "; ignoring"); - mMonitor = BackupManagerMonitorUtils - .monitorEvent(mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( LOG_EVENT_ID_VERSION_OF_BACKUP_OLDER, pkgInfo, LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, - BackupManagerMonitorUtils + mBackupManagerMonitorEventSender .putMonitoringExtra( null, EXTRA_LOG_OLD_VERSION, @@ -484,8 +479,7 @@ public class TarBackupReader { Slog.w(TAG, "Restore manifest signatures do not match " + "installed application for " + info.packageName); - mMonitor = BackupManagerMonitorUtils.monitorEvent( - mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( LOG_EVENT_ID_FULL_RESTORE_SIGNATURE_MISMATCH, pkgInfo, LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, @@ -494,8 +488,7 @@ public class TarBackupReader { } else { Slog.w(TAG, "Package " + info.packageName + " is system level with no agent"); - mMonitor = BackupManagerMonitorUtils.monitorEvent( - mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( LOG_EVENT_ID_SYSTEM_APP_NO_AGENT, pkgInfo, LOG_EVENT_CATEGORY_AGENT, @@ -506,8 +499,7 @@ public class TarBackupReader { Slog.i(TAG, "Restore manifest from " + info.packageName + " but allowBackup=false"); } - mMonitor = BackupManagerMonitorUtils.monitorEvent( - mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( LOG_EVENT_ID_FULL_RESTORE_ALLOW_BACKUP_FALSE, pkgInfo, LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, @@ -526,14 +518,13 @@ public class TarBackupReader { } else { policy = RestorePolicy.IGNORE; } - Bundle monitoringExtras = BackupManagerMonitorUtils.putMonitoringExtra( + Bundle monitoringExtras = mBackupManagerMonitorEventSender.putMonitoringExtra( null, EXTRA_LOG_EVENT_PACKAGE_NAME, info.packageName); - monitoringExtras = BackupManagerMonitorUtils.putMonitoringExtra( + monitoringExtras = mBackupManagerMonitorEventSender.putMonitoringExtra( monitoringExtras, EXTRA_LOG_POLICY_ALLOW_APKS, allowApks); - mMonitor = BackupManagerMonitorUtils.monitorEvent( - mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( LOG_EVENT_ID_APK_NOT_INSTALLED, null, LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, @@ -543,12 +534,11 @@ public class TarBackupReader { if (policy == RestorePolicy.ACCEPT_IF_APK && !info.hasApk) { Slog.i(TAG, "Cannot restore package " + info.packageName + " without the matching .apk"); - mMonitor = BackupManagerMonitorUtils.monitorEvent( - mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( LOG_EVENT_ID_CANNOT_RESTORE_WITHOUT_APK, null, LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, - BackupManagerMonitorUtils.putMonitoringExtra(null, + mBackupManagerMonitorEventSender.putMonitoringExtra(null, EXTRA_LOG_EVENT_PACKAGE_NAME, info.packageName)); } @@ -632,12 +622,11 @@ public class TarBackupReader { "Metadata mismatch: package " + info.packageName + " but widget data for " + pkg); - Bundle monitoringExtras = BackupManagerMonitorUtils.putMonitoringExtra(null, + Bundle monitoringExtras = mBackupManagerMonitorEventSender.putMonitoringExtra(null, EXTRA_LOG_EVENT_PACKAGE_NAME, info.packageName); - monitoringExtras = BackupManagerMonitorUtils.putMonitoringExtra(monitoringExtras, - BackupManagerMonitor.EXTRA_LOG_WIDGET_PACKAGE_NAME, pkg); - mMonitor = BackupManagerMonitorUtils.monitorEvent( - mMonitor, + monitoringExtras = mBackupManagerMonitorEventSender.putMonitoringExtra( + monitoringExtras, BackupManagerMonitor.EXTRA_LOG_WIDGET_PACKAGE_NAME, pkg); + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_WIDGET_METADATA_MISMATCH, null, LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, @@ -646,13 +635,12 @@ public class TarBackupReader { } else { Slog.w(TAG, "Unsupported metadata version " + version); - Bundle monitoringExtras = BackupManagerMonitorUtils + Bundle monitoringExtras = mBackupManagerMonitorEventSender .putMonitoringExtra(null, EXTRA_LOG_EVENT_PACKAGE_NAME, info.packageName); - monitoringExtras = BackupManagerMonitorUtils.putMonitoringExtra(monitoringExtras, + monitoringExtras = mBackupManagerMonitorEventSender.putMonitoringExtra(monitoringExtras, EXTRA_LOG_EVENT_PACKAGE_VERSION, version); - mMonitor = BackupManagerMonitorUtils.monitorEvent( - mMonitor, + mBackupManagerMonitorEventSender.monitorEvent( BackupManagerMonitor.LOG_EVENT_ID_WIDGET_UNKNOWN_VERSION, null, LOG_EVENT_CATEGORY_BACKUP_MANAGER_POLICY, @@ -810,7 +798,7 @@ public class TarBackupReader { } public IBackupManagerMonitor getMonitor() { - return mMonitor; + return mBackupManagerMonitorEventSender.getMonitor(); } public byte[] getWidgetData() { diff --git a/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupReporterTest.java b/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupReporterTest.java index 14b4dc3dc7d0..2db2438b9a21 100644 --- a/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupReporterTest.java +++ b/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupReporterTest.java @@ -27,6 +27,7 @@ import android.platform.test.annotations.Presubmit; import android.util.Log; import com.android.server.backup.UserBackupManagerService; +import com.android.server.backup.utils.BackupManagerMonitorEventSender; import com.android.server.testing.shadows.ShadowEventLog; import com.android.server.testing.shadows.ShadowSlog; @@ -46,10 +47,13 @@ public class KeyValueBackupReporterTest { @Mock private IBackupManagerMonitor mMonitor; private KeyValueBackupReporter mReporter; + private BackupManagerMonitorEventSender mBackupManagerMonitorEventSender; @Before public void setUp() { - mReporter = new KeyValueBackupReporter(mBackupManagerService, mObserver, mMonitor); + mBackupManagerMonitorEventSender = new BackupManagerMonitorEventSender(mMonitor); + mReporter = new KeyValueBackupReporter( + mBackupManagerService, mObserver, mBackupManagerMonitorEventSender); } @Test diff --git a/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java b/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java index bfbc0f50f67a..7349c14ef62b 100644 --- a/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java +++ b/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java @@ -122,6 +122,7 @@ import com.android.server.backup.testing.TransportData; import com.android.server.backup.testing.TransportTestUtils; import com.android.server.backup.testing.TransportTestUtils.TransportMock; import com.android.server.backup.utils.BackupEligibilityRules; +import com.android.server.backup.utils.BackupManagerMonitorEventSender; import com.android.server.testing.shadows.FrameworkShadowLooper; import com.android.server.testing.shadows.ShadowApplicationPackageManager; import com.android.server.testing.shadows.ShadowBackupDataInput; @@ -260,7 +261,8 @@ public class KeyValueBackupTaskTest { mBackupHandler = mBackupManagerService.getBackupHandler(); mShadowBackupLooper = shadowOf(mBackupHandler.getLooper()); ShadowEventLog.setUp(); - mReporter = spy(new KeyValueBackupReporter(mBackupManagerService, mObserver, mMonitor)); + mReporter = spy(new KeyValueBackupReporter(mBackupManagerService, mObserver, + new BackupManagerMonitorEventSender(mMonitor))); when(mPackageManagerInternal.getApplicationEnabledState(any(), anyInt())) .thenReturn(PackageManager.COMPONENT_ENABLED_STATE_ENABLED); diff --git a/services/tests/mockingservicestests/src/com/android/server/backup/UserBackupManagerServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/backup/UserBackupManagerServiceTest.java index dc1c6d57dfdb..c942cf4b8ee4 100644 --- a/services/tests/mockingservicestests/src/com/android/server/backup/UserBackupManagerServiceTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/backup/UserBackupManagerServiceTest.java @@ -52,7 +52,7 @@ import com.android.server.backup.params.BackupParams; import com.android.server.backup.transport.BackupTransportClient; import com.android.server.backup.transport.TransportConnection; import com.android.server.backup.utils.BackupEligibilityRules; -import com.android.server.backup.utils.BackupManagerMonitorUtils; +import com.android.server.backup.utils.BackupManagerMonitorEventSender; import com.google.common.collect.ImmutableSet; @@ -86,6 +86,7 @@ public class UserBackupManagerServiceTest { @Mock BackupTransportClient mBackupTransport; @Mock BackupEligibilityRules mBackupEligibilityRules; @Mock LifecycleOperationStorage mOperationStorage; + @Mock BackupManagerMonitorEventSender mBackupManagerMonitorEventSender; private MockitoSession mSession; private TestBackupService mService; @@ -94,7 +95,7 @@ public class UserBackupManagerServiceTest { public void setUp() throws Exception { mSession = mockitoSession() .initMocks(this) - .mockStatic(BackupManagerMonitorUtils.class) + .mockStatic(BackupManagerMonitorEventSender.class) .mockStatic(FeatureFlagUtils.class) // TODO(b/263239775): Remove unnecessary stubbing. .strictness(Strictness.LENIENT) @@ -246,9 +247,9 @@ public class UserBackupManagerServiceTest { new DataTypeResult(/* dataType */ "type_2")); mService.reportDelayedRestoreResult(TEST_PACKAGE, results); - verify(() -> BackupManagerMonitorUtils.sendAgentLoggingResults( - eq(mBackupManagerMonitor), eq(packageInfo), eq(results), eq( - BackupAnnotations.OperationType.RESTORE))); + + verify(mBackupManagerMonitorEventSender).sendAgentLoggingResults( + eq(packageInfo), eq(results), eq(BackupAnnotations.OperationType.RESTORE)); } private static PackageInfo getPackageInfo(String packageName) { @@ -258,7 +259,7 @@ public class UserBackupManagerServiceTest { return packageInfo; } - private static class TestBackupService extends UserBackupManagerService { + private class TestBackupService extends UserBackupManagerService { boolean isEnabledStatePersisted = false; boolean shouldUseNewBackupEligibilityRules = false; @@ -293,6 +294,11 @@ public class UserBackupManagerServiceTest { return mWorkerThread; } + @Override + BackupManagerMonitorEventSender getBMMEventSender(IBackupManagerMonitor monitor) { + return mBackupManagerMonitorEventSender; + } + private void waitForAsyncOperation() { if (mWorkerThread == null) { return; diff --git a/services/tests/mockingservicestests/src/com/android/server/backup/utils/BackupManagerMonitorUtilsTest.java b/services/tests/mockingservicestests/src/com/android/server/backup/utils/BackupManagerMonitorEventSenderTest.java index 093ad3cc7bb3..9d9b03fa6862 100644 --- a/services/tests/mockingservicestests/src/com/android/server/backup/utils/BackupManagerMonitorUtilsTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/backup/utils/BackupManagerMonitorEventSenderTest.java @@ -34,7 +34,6 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import android.app.IBackupAgent; -import android.app.backup.BackupAnnotations; import android.app.backup.BackupAnnotations.OperationType; import android.app.backup.BackupManagerMonitor; import android.app.backup.BackupRestoreEventLogger; @@ -62,39 +61,43 @@ import java.util.List; @SmallTest @Presubmit @RunWith(AndroidJUnit4.class) -public class BackupManagerMonitorUtilsTest { +public class BackupManagerMonitorEventSenderTest { @Mock private IBackupManagerMonitor mMonitorMock; + private BackupManagerMonitorEventSender mBackupManagerMonitorEventSender; + @Before public void setUp() { MockitoAnnotations.initMocks(this); + mBackupManagerMonitorEventSender = new BackupManagerMonitorEventSender(mMonitorMock); } @Test public void monitorEvent_monitorIsNull_returnsNull() throws Exception { - IBackupManagerMonitor result = BackupManagerMonitorUtils.monitorEvent(null, 0, null, 0, - null); + mBackupManagerMonitorEventSender = new BackupManagerMonitorEventSender(/* monitor */ null); + mBackupManagerMonitorEventSender.monitorEvent(0, null, 0, null); + IBackupManagerMonitor monitor = mBackupManagerMonitorEventSender.getMonitor(); - assertThat(result).isNull(); + assertThat(monitor).isNull(); } @Test public void monitorEvent_monitorOnEventThrows_returnsNull() throws Exception { doThrow(new RemoteException()).when(mMonitorMock).onEvent(any(Bundle.class)); - IBackupManagerMonitor result = BackupManagerMonitorUtils.monitorEvent(mMonitorMock, 0, null, - 0, null); + mBackupManagerMonitorEventSender.monitorEvent(0, null, 0, null); + IBackupManagerMonitor monitor = mBackupManagerMonitorEventSender.getMonitor(); verify(mMonitorMock).onEvent(any(Bundle.class)); - assertThat(result).isNull(); + assertThat(monitor).isNull(); } @Test public void monitorEvent_packageAndExtrasAreNull_fillsBundleCorrectly() throws Exception { - IBackupManagerMonitor result = BackupManagerMonitorUtils.monitorEvent(mMonitorMock, 1, null, - 2, null); + mBackupManagerMonitorEventSender.monitorEvent(1, null, 2, null); + IBackupManagerMonitor monitor = mBackupManagerMonitorEventSender.getMonitor(); - assertThat(result).isEqualTo(mMonitorMock); + assertThat(monitor).isEqualTo(mMonitorMock); ArgumentCaptor<Bundle> bundleCaptor = ArgumentCaptor.forClass(Bundle.class); verify(mMonitorMock).onEvent(bundleCaptor.capture()); Bundle eventBundle = bundleCaptor.getValue(); @@ -112,10 +115,10 @@ public class BackupManagerMonitorUtilsTest { extras.putInt("key1", 4); extras.putString("key2", "value2"); - IBackupManagerMonitor result = BackupManagerMonitorUtils.monitorEvent(mMonitorMock, 1, - packageInfo, 2, extras); + mBackupManagerMonitorEventSender.monitorEvent(1, packageInfo, 2, extras); + IBackupManagerMonitor monitor = mBackupManagerMonitorEventSender.getMonitor(); - assertThat(result).isEqualTo(mMonitorMock); + assertThat(monitor).isEqualTo(mMonitorMock); ArgumentCaptor<Bundle> bundleCaptor = ArgumentCaptor.forClass(Bundle.class); verify(mMonitorMock).onEvent(bundleCaptor.capture()); Bundle eventBundle = bundleCaptor.getValue(); @@ -130,7 +133,8 @@ public class BackupManagerMonitorUtilsTest { } @Test - public void monitorEvent_packageAndExtrasAreNotNull_fillsBundleCorrectlyLong() throws Exception { + public void monitorEvent_packageAndExtrasAreNotNull_fillsBundleCorrectlyLong() + throws Exception { PackageInfo packageInfo = new PackageInfo(); packageInfo.packageName = "test.package"; packageInfo.versionCode = 3; @@ -139,10 +143,10 @@ public class BackupManagerMonitorUtilsTest { extras.putInt("key1", 4); extras.putString("key2", "value2"); - IBackupManagerMonitor result = BackupManagerMonitorUtils.monitorEvent(mMonitorMock, 1, - packageInfo, 2, extras); + mBackupManagerMonitorEventSender.monitorEvent(1, packageInfo, 2, extras); + IBackupManagerMonitor monitor = mBackupManagerMonitorEventSender.getMonitor(); - assertThat(result).isEqualTo(mMonitorMock); + assertThat(monitor).isEqualTo(mMonitorMock); ArgumentCaptor<Bundle> bundleCaptor = ArgumentCaptor.forClass(Bundle.class); verify(mMonitorMock).onEvent(bundleCaptor.capture()); Bundle eventBundle = bundleCaptor.getValue(); @@ -164,9 +168,9 @@ public class BackupManagerMonitorUtilsTest { // Mock an agent that returns a logging result. IBackupAgent agent = setUpLoggingAgentForOperation(OperationType.BACKUP); - IBackupManagerMonitor monitor = - BackupManagerMonitorUtils.monitorAgentLoggingResults( - mMonitorMock, packageInfo, agent); + + mBackupManagerMonitorEventSender.monitorAgentLoggingResults(packageInfo, agent); + IBackupManagerMonitor monitor = mBackupManagerMonitorEventSender.getMonitor(); assertCorrectBundleSentToMonitor(monitor, OperationType.BACKUP); } @@ -178,9 +182,8 @@ public class BackupManagerMonitorUtilsTest { // Mock an agent that returns a logging result. IBackupAgent agent = setUpLoggingAgentForOperation(OperationType.RESTORE); - IBackupManagerMonitor monitor = - BackupManagerMonitorUtils.monitorAgentLoggingResults( - mMonitorMock, packageInfo, agent); + mBackupManagerMonitorEventSender.monitorAgentLoggingResults(packageInfo, agent); + IBackupManagerMonitor monitor = mBackupManagerMonitorEventSender.getMonitor(); assertCorrectBundleSentToMonitor(monitor, OperationType.RESTORE); } @@ -217,9 +220,9 @@ public class BackupManagerMonitorUtilsTest { List<BackupRestoreEventLogger.DataTypeResult> loggingResults = new ArrayList<>(); loggingResults.add(new BackupRestoreEventLogger.DataTypeResult("testLoggingResult")); - IBackupManagerMonitor monitor = BackupManagerMonitorUtils.sendAgentLoggingResults( - mMonitorMock, packageInfo, loggingResults, OperationType.BACKUP); - + mBackupManagerMonitorEventSender.sendAgentLoggingResults( + packageInfo, loggingResults, OperationType.BACKUP); + IBackupManagerMonitor monitor = mBackupManagerMonitorEventSender.getMonitor(); assertCorrectBundleSentToMonitor(monitor, OperationType.BACKUP); } @@ -230,8 +233,9 @@ public class BackupManagerMonitorUtilsTest { List<BackupRestoreEventLogger.DataTypeResult> loggingResults = new ArrayList<>(); loggingResults.add(new BackupRestoreEventLogger.DataTypeResult("testLoggingResult")); - IBackupManagerMonitor monitor = BackupManagerMonitorUtils.sendAgentLoggingResults( - mMonitorMock, packageInfo, loggingResults, OperationType.RESTORE); + mBackupManagerMonitorEventSender.sendAgentLoggingResults( + packageInfo, loggingResults, OperationType.RESTORE); + IBackupManagerMonitor monitor = mBackupManagerMonitorEventSender.getMonitor(); assertCorrectBundleSentToMonitor(monitor, OperationType.RESTORE); } @@ -262,7 +266,7 @@ public class BackupManagerMonitorUtilsTest { public void putMonitoringExtraString_bundleExists_fillsBundleCorrectly() throws Exception { Bundle bundle = new Bundle(); - Bundle result = BackupManagerMonitorUtils.putMonitoringExtra(bundle, "key", "value"); + Bundle result = mBackupManagerMonitorEventSender.putMonitoringExtra(bundle, "key", "value"); assertThat(result).isEqualTo(bundle); assertThat(result.size()).isEqualTo(1); @@ -272,7 +276,7 @@ public class BackupManagerMonitorUtilsTest { @Test public void putMonitoringExtraString_bundleDoesNotExist_fillsBundleCorrectly() throws Exception { - Bundle result = BackupManagerMonitorUtils.putMonitoringExtra(null, "key", "value"); + Bundle result = mBackupManagerMonitorEventSender.putMonitoringExtra(null, "key", "value"); assertThat(result).isNotNull(); assertThat(result.size()).isEqualTo(1); @@ -284,7 +288,7 @@ public class BackupManagerMonitorUtilsTest { public void putMonitoringExtraLong_bundleExists_fillsBundleCorrectly() throws Exception { Bundle bundle = new Bundle(); - Bundle result = BackupManagerMonitorUtils.putMonitoringExtra(bundle, "key", 123); + Bundle result = mBackupManagerMonitorEventSender.putMonitoringExtra(bundle, "key", 123); assertThat(result).isEqualTo(bundle); assertThat(result.size()).isEqualTo(1); @@ -293,7 +297,7 @@ public class BackupManagerMonitorUtilsTest { @Test public void putMonitoringExtraLong_bundleDoesNotExist_fillsBundleCorrectly() throws Exception { - Bundle result = BackupManagerMonitorUtils.putMonitoringExtra(null, "key", 123); + Bundle result = mBackupManagerMonitorEventSender.putMonitoringExtra(null, "key", 123); assertThat(result).isNotNull(); assertThat(result.size()).isEqualTo(1); @@ -304,7 +308,7 @@ public class BackupManagerMonitorUtilsTest { public void putMonitoringExtraBoolean_bundleExists_fillsBundleCorrectly() throws Exception { Bundle bundle = new Bundle(); - Bundle result = BackupManagerMonitorUtils.putMonitoringExtra(bundle, "key", true); + Bundle result = mBackupManagerMonitorEventSender.putMonitoringExtra(bundle, "key", true); assertThat(result).isEqualTo(bundle); assertThat(result.size()).isEqualTo(1); @@ -314,10 +318,10 @@ public class BackupManagerMonitorUtilsTest { @Test public void putMonitoringExtraBoolean_bundleDoesNotExist_fillsBundleCorrectly() throws Exception { - Bundle result = BackupManagerMonitorUtils.putMonitoringExtra(null, "key", true); + Bundle result = mBackupManagerMonitorEventSender.putMonitoringExtra(null, "key", true); assertThat(result).isNotNull(); assertThat(result.size()).isEqualTo(1); assertThat(result.getBoolean("key")).isTrue(); } -}
\ No newline at end of file +} |