From 68faa93ce964da360bb87499d9ef574e736c95cd Mon Sep 17 00:00:00 2001 From: Anton Philippov Date: Wed, 29 Mar 2017 16:00:32 +0100 Subject: Fix BackupManagerMonitor wrapping in RestoreSession Do not wrap a null monitor, pass a null wrapper instead. BackupManagerService expects null monitor wrapper, so this will prevent extra work for BMS and potential NPEs. Bug: 36470662 Test: manual Change-Id: Ia45375049101f757542960bc7f1fd640fc9c3fb7 --- core/java/android/app/backup/RestoreSession.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/core/java/android/app/backup/RestoreSession.java b/core/java/android/app/backup/RestoreSession.java index 94fac17c99a3..69d964da4949 100644 --- a/core/java/android/app/backup/RestoreSession.java +++ b/core/java/android/app/backup/RestoreSession.java @@ -54,7 +54,9 @@ public class RestoreSession { public int getAvailableRestoreSets(RestoreObserver observer, BackupManagerMonitor monitor) { int err = -1; RestoreObserverWrapper obsWrapper = new RestoreObserverWrapper(mContext, observer); - BackupManagerMonitorWrapper monitorWrapper = new BackupManagerMonitorWrapper(monitor); + BackupManagerMonitorWrapper monitorWrapper = monitor == null + ? null + : new BackupManagerMonitorWrapper(monitor); try { err = mBinder.getAvailableRestoreSets(obsWrapper, monitorWrapper); } catch (RemoteException e) { @@ -99,7 +101,9 @@ public class RestoreSession { return -1; } mObserver = new RestoreObserverWrapper(mContext, observer); - BackupManagerMonitorWrapper monitorWrapper = new BackupManagerMonitorWrapper(monitor); + BackupManagerMonitorWrapper monitorWrapper = monitor == null + ? null + : new BackupManagerMonitorWrapper(monitor); try { err = mBinder.restoreAll(token, mObserver, monitorWrapper); } catch (RemoteException e) { @@ -154,7 +158,9 @@ public class RestoreSession { return -1; } mObserver = new RestoreObserverWrapper(mContext, observer); - BackupManagerMonitorWrapper monitorWrapper = new BackupManagerMonitorWrapper(monitor); + BackupManagerMonitorWrapper monitorWrapper = monitor == null + ? null + : new BackupManagerMonitorWrapper(monitor); try { err = mBinder.restoreSome(token, mObserver, monitorWrapper, packages); } catch (RemoteException e) { @@ -212,8 +218,9 @@ public class RestoreSession { return -1; } mObserver = new RestoreObserverWrapper(mContext, observer); - BackupManagerMonitorWrapper monitorWrapper = new BackupManagerMonitorWrapper(monitor); - + BackupManagerMonitorWrapper monitorWrapper = monitor == null + ? null + : new BackupManagerMonitorWrapper(monitor); try { err = mBinder.restorePackage(packageName, mObserver, monitorWrapper); } catch (RemoteException e) { -- cgit v1.2.3-59-g8ed1b