diff options
| author | 2018-01-19 15:47:14 +0000 | |
|---|---|---|
| committer | 2018-01-19 15:47:14 +0000 | |
| commit | 6f7734a64d72fe53baa811fbba6e7513857d92f9 (patch) | |
| tree | 0f3c1302cdc678eae5348b74d63d96d39f60ee66 | |
| parent | 4852106787f3ffad3c78114757deaae9ce8bd88f (diff) | |
| parent | a4517cdb7d99d076bfed2a81ec9511fcae68487a (diff) | |
Merge "Remove use of streams in TransportManager"
| -rw-r--r-- | services/backup/java/com/android/server/backup/TransportManager.java | 23 | ||||
| -rw-r--r-- | services/robotests/src/com/android/server/backup/TransportManagerTest.java | 40 |
2 files changed, 52 insertions, 11 deletions
diff --git a/services/backup/java/com/android/server/backup/TransportManager.java b/services/backup/java/com/android/server/backup/TransportManager.java index 5b901ee2b3da..6d9231dcddfa 100644 --- a/services/backup/java/com/android/server/backup/TransportManager.java +++ b/services/backup/java/com/android/server/backup/TransportManager.java @@ -29,6 +29,7 @@ import android.content.pm.ResolveInfo; import android.os.RemoteException; import android.os.UserHandle; import android.util.ArrayMap; +import android.util.ArraySet; import android.util.Slog; import com.android.internal.annotations.GuardedBy; @@ -47,8 +48,6 @@ import java.util.Map; import java.util.Set; import java.util.function.Consumer; import java.util.function.Predicate; -import java.util.stream.Collectors; -import java.util.stream.Stream; /** Handles in-memory bookkeeping of all BackupTransport objects. */ public class TransportManager { @@ -119,10 +118,10 @@ public class TransportManager { void onPackageChanged(String packageName, String... components) { // Unfortunately this can't be atomic because we risk a deadlock if // registerTransportsFromPackage() is put inside the synchronized block - Set<ComponentName> transportComponents = - Stream.of(components) - .map(component -> new ComponentName(packageName, component)) - .collect(Collectors.toSet()); + Set<ComponentName> transportComponents = new ArraySet<>(components.length); + for (String componentName : components) { + transportComponents.add(new ComponentName(packageName, componentName)); + } synchronized (mTransportLock) { mRegisteredTransportsDescriptionMap.keySet().removeIf(transportComponents::contains); } @@ -151,11 +150,13 @@ public class TransportManager { */ String[] getRegisteredTransportNames() { synchronized (mTransportLock) { - return mRegisteredTransportsDescriptionMap - .values() - .stream() - .map(transportDescription -> transportDescription.name) - .toArray(String[]::new); + String[] transportNames = new String[mRegisteredTransportsDescriptionMap.size()]; + int i = 0; + for (TransportDescription description : mRegisteredTransportsDescriptionMap.values()) { + transportNames[i] = description.name; + i++; + } + return transportNames; } } diff --git a/services/robotests/src/com/android/server/backup/TransportManagerTest.java b/services/robotests/src/com/android/server/backup/TransportManagerTest.java index 6753d73590d3..068fe8137467 100644 --- a/services/robotests/src/com/android/server/backup/TransportManagerTest.java +++ b/services/robotests/src/com/android/server/backup/TransportManagerTest.java @@ -532,6 +532,46 @@ public class TransportManagerTest { () -> transportManager.getTransportDirName(mTransportA2.transportName)); } + @Test + public void testGetRegisteredTransportNames() throws Exception { + setUpPackage(PACKAGE_A, ApplicationInfo.PRIVATE_FLAG_PRIVILEGED); + setUpPackage(PACKAGE_B, ApplicationInfo.PRIVATE_FLAG_PRIVILEGED); + TransportData[] transportsData = {mTransportA1, mTransportA2, mTransportB1}; + setUpTransports(transportsData); + TransportManager transportManager = + createTransportManager(mTransportA1, mTransportA2, mTransportB1); + transportManager.registerTransports(); + + String[] transportNames = transportManager.getRegisteredTransportNames(); + + assertThat(transportNames) + .asList() + .containsExactlyElementsIn( + Stream.of(transportsData) + .map(transportData -> transportData.transportName) + .collect(toList())); + } + + @Test + public void testGetRegisteredTransportComponents() throws Exception { + setUpPackage(PACKAGE_A, ApplicationInfo.PRIVATE_FLAG_PRIVILEGED); + setUpPackage(PACKAGE_B, ApplicationInfo.PRIVATE_FLAG_PRIVILEGED); + TransportData[] transportsData = {mTransportA1, mTransportA2, mTransportB1}; + setUpTransports(transportsData); + TransportManager transportManager = + createTransportManager(mTransportA1, mTransportA2, mTransportB1); + transportManager.registerTransports(); + + ComponentName[] transportNames = transportManager.getRegisteredTransportComponents(); + + assertThat(transportNames) + .asList() + .containsExactlyElementsIn( + Stream.of(transportsData) + .map(TransportData::getTransportComponent) + .collect(toList())); + } + private List<TransportMock> setUpTransports(TransportData... transports) throws Exception { setUpTransportsForTransportManager(mShadowPackageManager, transports); List<TransportMock> transportMocks = new ArrayList<>(transports.length); |