diff options
| author | 2023-12-13 16:50:25 +0800 | |
|---|---|---|
| committer | 2024-03-05 15:55:06 +0800 | |
| commit | 6215859bdbf55d9ee6f84d62c93a2d541852fecb (patch) | |
| tree | dd7cd5b7a9808ec7979e2224018902f67708cab5 | |
| parent | e066965ced590abefc98acc4f8a88ff718e30c82 (diff) | |
Implement ConnectivityBlobStore remove.
Implement remove(), including tests.
Bug: 307903113
Test: atest ConnectivityBlobStoreTest
Change-Id: Ibf88d68ca3c68fa4ef929cc1d507a3a93bfa6ac0
| -rw-r--r-- | core/java/com/android/internal/net/ConnectivityBlobStore.java | 20 | ||||
| -rw-r--r-- | core/tests/coretests/src/com/android/internal/net/ConnectivityBlobStoreTest.java | 47 |
2 files changed, 67 insertions, 0 deletions
diff --git a/core/java/com/android/internal/net/ConnectivityBlobStore.java b/core/java/com/android/internal/net/ConnectivityBlobStore.java index 7e469f5758e4..1b535c47c8e7 100644 --- a/core/java/com/android/internal/net/ConnectivityBlobStore.java +++ b/core/java/com/android/internal/net/ConnectivityBlobStore.java @@ -115,4 +115,24 @@ public class ConnectivityBlobStore { return null; } + + /** + * Removes a blob by the name from the database. + * + * @param name Name of the blob to be removed. + * @return True if a blob was removed. False if no such name was found. + * @hide + */ + public boolean remove(@NonNull String name) { + final int ownerUid = Binder.getCallingUid(); + try { + final int res = mDb.delete(TABLENAME, + "owner=? AND name=?" /* whereClause */, + new String[] {Integer.toString(ownerUid), name} /* whereArgs */); + return res > 0; + } catch (SQLException e) { + Log.e(TAG, "Error in removing " + name + ": " + e); + return false; + } + } } diff --git a/core/tests/coretests/src/com/android/internal/net/ConnectivityBlobStoreTest.java b/core/tests/coretests/src/com/android/internal/net/ConnectivityBlobStoreTest.java index eac97ff765d6..a9342101c350 100644 --- a/core/tests/coretests/src/com/android/internal/net/ConnectivityBlobStoreTest.java +++ b/core/tests/coretests/src/com/android/internal/net/ConnectivityBlobStoreTest.java @@ -82,4 +82,51 @@ public class ConnectivityBlobStoreTest { assertTrue(connectivityBlobStore.put(TEST_NAME, newBlob)); assertArrayEquals(newBlob, connectivityBlobStore.get(TEST_NAME)); } + + @Test + public void testRemove() throws Exception { + final ConnectivityBlobStore connectivityBlobStore = createConnectivityBlobStore(); + assertNull(connectivityBlobStore.get(TEST_NAME)); + assertFalse(connectivityBlobStore.remove(TEST_NAME)); + + assertTrue(connectivityBlobStore.put(TEST_NAME, TEST_BLOB)); + assertArrayEquals(TEST_BLOB, connectivityBlobStore.get(TEST_NAME)); + + assertTrue(connectivityBlobStore.remove(TEST_NAME)); + assertNull(connectivityBlobStore.get(TEST_NAME)); + + // Removing again returns false + assertFalse(connectivityBlobStore.remove(TEST_NAME)); + } + + @Test + public void testMultipleNames() throws Exception { + final String name1 = TEST_NAME + "1"; + final String name2 = TEST_NAME + "2"; + final ConnectivityBlobStore connectivityBlobStore = createConnectivityBlobStore(); + + assertNull(connectivityBlobStore.get(name1)); + assertNull(connectivityBlobStore.get(name2)); + assertFalse(connectivityBlobStore.remove(name1)); + assertFalse(connectivityBlobStore.remove(name2)); + + assertTrue(connectivityBlobStore.put(name1, TEST_BLOB)); + assertTrue(connectivityBlobStore.put(name2, TEST_BLOB)); + assertArrayEquals(TEST_BLOB, connectivityBlobStore.get(name1)); + assertArrayEquals(TEST_BLOB, connectivityBlobStore.get(name2)); + + // Replace the blob for name1 only. + final byte[] newBlob = new byte[] {(byte) 16, (byte) 21}; + assertTrue(connectivityBlobStore.put(name1, newBlob)); + assertArrayEquals(newBlob, connectivityBlobStore.get(name1)); + + assertTrue(connectivityBlobStore.remove(name1)); + assertNull(connectivityBlobStore.get(name1)); + assertArrayEquals(TEST_BLOB, connectivityBlobStore.get(name2)); + + assertFalse(connectivityBlobStore.remove(name1)); + assertTrue(connectivityBlobStore.remove(name2)); + assertNull(connectivityBlobStore.get(name2)); + assertFalse(connectivityBlobStore.remove(name2)); + } } |