Add to/from disk stable format am: 823599b4a8

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2084734

Change-Id: Ia99f0b3c98bec204526f10d00b0b4db1431e6a26
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Benedict Wong
2022-05-05 02:19:25 +00:00
committed by Automerger Merge Worker
2 changed files with 35 additions and 0 deletions

View File

@@ -23,6 +23,8 @@ import android.os.PersistableBundle;
import com.android.internal.util.HexDump;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@@ -295,6 +297,30 @@ public class PersistableBundleUtils {
return result;
}
/**
* Converts a PersistableBundle into a disk-stable byte array format
*
* @param bundle the PersistableBundle to be converted to a disk-stable format
* @return the byte array representation of the PersistableBundle
*/
@Nullable
public static byte[] toDiskStableBytes(@NonNull PersistableBundle bundle) throws IOException {
final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
bundle.writeToStream(outputStream);
return outputStream.toByteArray();
}
/**
* Converts from a disk-stable byte array format to a PersistableBundle
*
* @param bytes the disk-stable byte array
* @return the PersistableBundle parsed from this byte array.
*/
public static PersistableBundle fromDiskStableBytes(@NonNull byte[] bytes) throws IOException {
final ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes);
return PersistableBundle.readFromStream(inputStream);
}
/**
* Ensures safe reading and writing of {@link PersistableBundle}s to and from disk.
*

View File

@@ -267,6 +267,15 @@ public class PersistableBundleUtilsTest {
assertTrue(PersistableBundleUtils.isEqual(testBundle, minimized));
}
@Test
public void testToFromDiskStableBytes() throws Exception {
final PersistableBundle testBundle = getTestBundle();
final PersistableBundle result =
PersistableBundleUtils.fromDiskStableBytes(
PersistableBundleUtils.toDiskStableBytes(testBundle));
assertTrue(PersistableBundleUtils.isEqual(testBundle, result));
}
@Test
public void testEquality_identical() throws Exception {
final PersistableBundle left = getTestBundle();