Loading services/backup/java/com/android/server/backup/BackupManagerService.java +10 −7 Original line number Diff line number Diff line Loading @@ -1983,7 +1983,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { if (uri == null) { return; } String pkgName = uri.getSchemeSpecificPart(); final String pkgName = uri.getSchemeSpecificPart(); if (pkgName != null) { pkgList = new String[] { pkgName }; } Loading @@ -1991,7 +1991,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { // At package-changed we only care about looking at new transport states if (changed) { String[] components = final String[] components = intent.getStringArrayExtra(Intent.EXTRA_CHANGED_COMPONENT_NAME_LIST); if (MORE_DEBUG) { Loading @@ -2001,7 +2001,8 @@ public class BackupManagerService implements BackupManagerServiceInterface { } } mTransportManager.onPackageChanged(pkgName, components); mBackupHandler.post( () -> mTransportManager.onPackageChanged(pkgName, components)); return; // nothing more to do in the PACKAGE_CHANGED case } Loading Loading @@ -2033,7 +2034,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { } // If they're full-backup candidates, add them there instead final long now = System.currentTimeMillis(); for (String packageName : pkgList) { for (final String packageName : pkgList) { try { PackageInfo app = mPackageManager.getPackageInfo(packageName, 0); if (appGetsFullBackup(app) Loading @@ -2050,7 +2051,8 @@ public class BackupManagerService implements BackupManagerServiceInterface { writeFullBackupScheduleAsync(); } mTransportManager.onPackageAdded(packageName); mBackupHandler.post( () -> mTransportManager.onPackageAdded(packageName)); } catch (NameNotFoundException e) { // doesn't really exist; ignore it Loading @@ -2074,8 +2076,9 @@ public class BackupManagerService implements BackupManagerServiceInterface { removePackageParticipantsLocked(pkgList, uid); } } for (String pkgName : pkgList) { mTransportManager.onPackageRemoved(pkgName); for (final String pkgName : pkgList) { mBackupHandler.post( () -> mTransportManager.onPackageRemoved(pkgName)); } } } Loading services/backup/java/com/android/server/backup/RefactoredBackupManagerService.java +10 −7 Original line number Diff line number Diff line Loading @@ -1197,7 +1197,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter if (uri == null) { return; } String pkgName = uri.getSchemeSpecificPart(); final String pkgName = uri.getSchemeSpecificPart(); if (pkgName != null) { pkgList = new String[]{pkgName}; } Loading @@ -1205,7 +1205,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter // At package-changed we only care about looking at new transport states if (changed) { String[] components = final String[] components = intent.getStringArrayExtra(Intent.EXTRA_CHANGED_COMPONENT_NAME_LIST); if (MORE_DEBUG) { Loading @@ -1215,7 +1215,8 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter } } mTransportManager.onPackageChanged(pkgName, components); mBackupHandler.post( () -> mTransportManager.onPackageChanged(pkgName, components)); return; // nothing more to do in the PACKAGE_CHANGED case } Loading Loading @@ -1247,7 +1248,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter } // If they're full-backup candidates, add them there instead final long now = System.currentTimeMillis(); for (String packageName : pkgList) { for (final String packageName : pkgList) { try { PackageInfo app = mPackageManager.getPackageInfo(packageName, 0); if (AppBackupUtils.appGetsFullBackup(app) Loading @@ -1265,7 +1266,8 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter writeFullBackupScheduleAsync(); } mTransportManager.onPackageAdded(packageName); mBackupHandler.post( () -> mTransportManager.onPackageAdded(packageName)); } catch (NameNotFoundException e) { // doesn't really exist; ignore it Loading @@ -1289,8 +1291,9 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter removePackageParticipantsLocked(pkgList, uid); } } for (String pkgName : pkgList) { mTransportManager.onPackageRemoved(pkgName); for (final String pkgName : pkgList) { mBackupHandler.post( () -> mTransportManager.onPackageRemoved(pkgName)); } } } Loading services/backup/java/com/android/server/backup/TransportManager.java +13 −14 Original line number Diff line number Diff line Loading @@ -316,9 +316,9 @@ public class TransportManager { private class TransportConnection implements ServiceConnection { // Hold mTransportsLock to access these fields so as to provide a consistent view of them. private IBackupTransport mBinder; private volatile IBackupTransport mBinder; private final List<SelectBackupTransportCallback> mListeners = new ArrayList<>(); private String mTransportName; private volatile String mTransportName; private final ComponentName mTransportComponent; Loading Loading @@ -401,27 +401,26 @@ public class TransportManager { + rebindTimeout + "ms"); } // Intentionally not synchronized -- the variable is volatile and changes to its value // are inside synchronized blocks, providing a memory sync barrier; and this method // does not touch any other state protected by that lock. private IBackupTransport getBinder() { synchronized (mTransportLock) { return mBinder; } } // Intentionally not synchronized; same as getBinder() private String getName() { synchronized (mTransportLock) { return mTransportName; } } // Intentionally not synchronized; same as getBinder() private void bindIfUnbound() { synchronized (mTransportLock) { if (mBinder == null) { Slog.d(TAG, "Rebinding to transport " + mTransportComponent.flattenToShortString()); bindToTransport(mTransportComponent, this); } } } private void addListener(SelectBackupTransportCallback listener) { synchronized (mTransportLock) { Loading Loading
services/backup/java/com/android/server/backup/BackupManagerService.java +10 −7 Original line number Diff line number Diff line Loading @@ -1983,7 +1983,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { if (uri == null) { return; } String pkgName = uri.getSchemeSpecificPart(); final String pkgName = uri.getSchemeSpecificPart(); if (pkgName != null) { pkgList = new String[] { pkgName }; } Loading @@ -1991,7 +1991,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { // At package-changed we only care about looking at new transport states if (changed) { String[] components = final String[] components = intent.getStringArrayExtra(Intent.EXTRA_CHANGED_COMPONENT_NAME_LIST); if (MORE_DEBUG) { Loading @@ -2001,7 +2001,8 @@ public class BackupManagerService implements BackupManagerServiceInterface { } } mTransportManager.onPackageChanged(pkgName, components); mBackupHandler.post( () -> mTransportManager.onPackageChanged(pkgName, components)); return; // nothing more to do in the PACKAGE_CHANGED case } Loading Loading @@ -2033,7 +2034,7 @@ public class BackupManagerService implements BackupManagerServiceInterface { } // If they're full-backup candidates, add them there instead final long now = System.currentTimeMillis(); for (String packageName : pkgList) { for (final String packageName : pkgList) { try { PackageInfo app = mPackageManager.getPackageInfo(packageName, 0); if (appGetsFullBackup(app) Loading @@ -2050,7 +2051,8 @@ public class BackupManagerService implements BackupManagerServiceInterface { writeFullBackupScheduleAsync(); } mTransportManager.onPackageAdded(packageName); mBackupHandler.post( () -> mTransportManager.onPackageAdded(packageName)); } catch (NameNotFoundException e) { // doesn't really exist; ignore it Loading @@ -2074,8 +2076,9 @@ public class BackupManagerService implements BackupManagerServiceInterface { removePackageParticipantsLocked(pkgList, uid); } } for (String pkgName : pkgList) { mTransportManager.onPackageRemoved(pkgName); for (final String pkgName : pkgList) { mBackupHandler.post( () -> mTransportManager.onPackageRemoved(pkgName)); } } } Loading
services/backup/java/com/android/server/backup/RefactoredBackupManagerService.java +10 −7 Original line number Diff line number Diff line Loading @@ -1197,7 +1197,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter if (uri == null) { return; } String pkgName = uri.getSchemeSpecificPart(); final String pkgName = uri.getSchemeSpecificPart(); if (pkgName != null) { pkgList = new String[]{pkgName}; } Loading @@ -1205,7 +1205,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter // At package-changed we only care about looking at new transport states if (changed) { String[] components = final String[] components = intent.getStringArrayExtra(Intent.EXTRA_CHANGED_COMPONENT_NAME_LIST); if (MORE_DEBUG) { Loading @@ -1215,7 +1215,8 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter } } mTransportManager.onPackageChanged(pkgName, components); mBackupHandler.post( () -> mTransportManager.onPackageChanged(pkgName, components)); return; // nothing more to do in the PACKAGE_CHANGED case } Loading Loading @@ -1247,7 +1248,7 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter } // If they're full-backup candidates, add them there instead final long now = System.currentTimeMillis(); for (String packageName : pkgList) { for (final String packageName : pkgList) { try { PackageInfo app = mPackageManager.getPackageInfo(packageName, 0); if (AppBackupUtils.appGetsFullBackup(app) Loading @@ -1265,7 +1266,8 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter writeFullBackupScheduleAsync(); } mTransportManager.onPackageAdded(packageName); mBackupHandler.post( () -> mTransportManager.onPackageAdded(packageName)); } catch (NameNotFoundException e) { // doesn't really exist; ignore it Loading @@ -1289,8 +1291,9 @@ public class RefactoredBackupManagerService implements BackupManagerServiceInter removePackageParticipantsLocked(pkgList, uid); } } for (String pkgName : pkgList) { mTransportManager.onPackageRemoved(pkgName); for (final String pkgName : pkgList) { mBackupHandler.post( () -> mTransportManager.onPackageRemoved(pkgName)); } } } Loading
services/backup/java/com/android/server/backup/TransportManager.java +13 −14 Original line number Diff line number Diff line Loading @@ -316,9 +316,9 @@ public class TransportManager { private class TransportConnection implements ServiceConnection { // Hold mTransportsLock to access these fields so as to provide a consistent view of them. private IBackupTransport mBinder; private volatile IBackupTransport mBinder; private final List<SelectBackupTransportCallback> mListeners = new ArrayList<>(); private String mTransportName; private volatile String mTransportName; private final ComponentName mTransportComponent; Loading Loading @@ -401,27 +401,26 @@ public class TransportManager { + rebindTimeout + "ms"); } // Intentionally not synchronized -- the variable is volatile and changes to its value // are inside synchronized blocks, providing a memory sync barrier; and this method // does not touch any other state protected by that lock. private IBackupTransport getBinder() { synchronized (mTransportLock) { return mBinder; } } // Intentionally not synchronized; same as getBinder() private String getName() { synchronized (mTransportLock) { return mTransportName; } } // Intentionally not synchronized; same as getBinder() private void bindIfUnbound() { synchronized (mTransportLock) { if (mBinder == null) { Slog.d(TAG, "Rebinding to transport " + mTransportComponent.flattenToShortString()); bindToTransport(mTransportComponent, this); } } } private void addListener(SelectBackupTransportCallback listener) { synchronized (mTransportLock) { Loading