summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2018-01-19 15:47:14 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-01-19 15:47:14 +0000
commit6f7734a64d72fe53baa811fbba6e7513857d92f9 (patch)
tree0f3c1302cdc678eae5348b74d63d96d39f60ee66
parent4852106787f3ffad3c78114757deaae9ce8bd88f (diff)
parenta4517cdb7d99d076bfed2a81ec9511fcae68487a (diff)
Merge "Remove use of streams in TransportManager"
-rw-r--r--services/backup/java/com/android/server/backup/TransportManager.java23
-rw-r--r--services/robotests/src/com/android/server/backup/TransportManagerTest.java40
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);