diff --git a/networksecurity/service/src/com/android/server/net/ct/CertificateTransparencyDownloader.java b/networksecurity/service/src/com/android/server/net/ct/CertificateTransparencyDownloader.java index e608417fcc..e8e2a98937 100644 --- a/networksecurity/service/src/com/android/server/net/ct/CertificateTransparencyDownloader.java +++ b/networksecurity/service/src/com/android/server/net/ct/CertificateTransparencyDownloader.java @@ -33,6 +33,8 @@ import com.android.server.net.ct.DownloadHelper.DownloadStatus; import java.io.IOException; import java.io.InputStream; import java.util.Collection; +import java.util.HashMap; +import java.util.Map; import java.util.Optional; /** Helper class to download certificate transparency log files. */ @@ -42,22 +44,21 @@ class CertificateTransparencyDownloader extends BroadcastReceiver { private static final String TAG = "CertificateTransparencyDownloader"; private final Context mContext; - private final DataStore mDataStore; private final DownloadHelper mDownloadHelper; private final SignatureVerifier mSignatureVerifier; private final CertificateTransparencyLogger mLogger; private final Collection mCompatVersions; + private final Map mDownloadIds = new HashMap<>(); + CertificateTransparencyDownloader( Context context, - DataStore dataStore, DownloadHelper downloadHelper, SignatureVerifier signatureVerifier, CertificateTransparencyLogger logger, Collection compatVersions) { mContext = context; mSignatureVerifier = signatureVerifier; - mDataStore = dataStore; mDownloadHelper = downloadHelper; mLogger = logger; mCompatVersions = compatVersions; @@ -66,8 +67,7 @@ class CertificateTransparencyDownloader extends BroadcastReceiver { long startPublicKeyDownload() { long downloadId = download(Config.URL_PUBLIC_KEY); if (downloadId != -1) { - mDataStore.setPropertyLong(Config.PUBLIC_KEY_DOWNLOAD_ID, downloadId); - mDataStore.store(); + mDownloadIds.put(Config.PUBLIC_KEY_DOWNLOAD_ID, downloadId); } return downloadId; } @@ -75,8 +75,7 @@ class CertificateTransparencyDownloader extends BroadcastReceiver { private long startMetadataDownload(CompatibilityVersion compatVersion) { long downloadId = download(compatVersion.getMetadataUrl()); if (downloadId != -1) { - mDataStore.setPropertyLong(compatVersion.getMetadataPropertyName(), downloadId); - mDataStore.store(); + mDownloadIds.put(compatVersion.getMetadataPropertyName(), downloadId); } return downloadId; } @@ -96,8 +95,7 @@ class CertificateTransparencyDownloader extends BroadcastReceiver { long startContentDownload(CompatibilityVersion compatVersion) { long downloadId = download(compatVersion.getContentUrl()); if (downloadId != -1) { - mDataStore.setPropertyLong(compatVersion.getContentPropertyName(), downloadId); - mDataStore.store(); + mDownloadIds.put(compatVersion.getContentPropertyName(), downloadId); } return downloadId; } @@ -235,19 +233,17 @@ class CertificateTransparencyDownloader extends BroadcastReceiver { @VisibleForTesting long getPublicKeyDownloadId() { - return mDataStore.getPropertyLong(Config.PUBLIC_KEY_DOWNLOAD_ID, /* defaultValue= */ -1); + return mDownloadIds.getOrDefault(Config.PUBLIC_KEY_DOWNLOAD_ID, -1L); } @VisibleForTesting long getMetadataDownloadId(CompatibilityVersion compatVersion) { - return mDataStore.getPropertyLong( - compatVersion.getMetadataPropertyName(), /* defaultValue */ -1); + return mDownloadIds.getOrDefault(compatVersion.getMetadataPropertyName(), -1L); } @VisibleForTesting long getContentDownloadId(CompatibilityVersion compatVersion) { - return mDataStore.getPropertyLong( - compatVersion.getContentPropertyName(), /* defaultValue= */ -1); + return mDownloadIds.getOrDefault(compatVersion.getContentPropertyName(), -1L); } @VisibleForTesting diff --git a/networksecurity/service/src/com/android/server/net/ct/CertificateTransparencyService.java b/networksecurity/service/src/com/android/server/net/ct/CertificateTransparencyService.java index 5e530c74a6..e77996387d 100644 --- a/networksecurity/service/src/com/android/server/net/ct/CertificateTransparencyService.java +++ b/networksecurity/service/src/com/android/server/net/ct/CertificateTransparencyService.java @@ -71,7 +71,6 @@ public class CertificateTransparencyService extends ICertificateTransparencyMana dataStore, new CertificateTransparencyDownloader( context, - dataStore, new DownloadHelper(context), signatureVerifier, new CertificateTransparencyLoggerImpl(dataStore), diff --git a/networksecurity/tests/unit/src/com/android/server/net/ct/CertificateTransparencyDownloaderTest.java b/networksecurity/tests/unit/src/com/android/server/net/ct/CertificateTransparencyDownloaderTest.java index 0983f8b801..17ea85adf3 100644 --- a/networksecurity/tests/unit/src/com/android/server/net/ct/CertificateTransparencyDownloaderTest.java +++ b/networksecurity/tests/unit/src/com/android/server/net/ct/CertificateTransparencyDownloaderTest.java @@ -76,7 +76,6 @@ public class CertificateTransparencyDownloaderTest { private PrivateKey mPrivateKey; private PublicKey mPublicKey; private Context mContext; - private DataStore mDataStore; private SignatureVerifier mSignatureVerifier; private CompatibilityVersion mCompatVersion; private CertificateTransparencyDownloader mCertificateTransparencyDownloader; @@ -93,7 +92,6 @@ public class CertificateTransparencyDownloaderTest { mPublicKey = keyPair.getPublic(); mContext = InstrumentationRegistry.getInstrumentation().getContext(); - mDataStore = new DataStore(File.createTempFile("datastore-test", ".properties")); mSignatureVerifier = new SignatureVerifier(mContext); CompatibilityVersion.setRootDirectoryForTesting(mContext.getFilesDir()); @@ -105,7 +103,6 @@ public class CertificateTransparencyDownloaderTest { mCertificateTransparencyDownloader = new CertificateTransparencyDownloader( mContext, - mDataStore, new DownloadHelper(mDownloadManager), mSignatureVerifier, mLogger, @@ -113,14 +110,12 @@ public class CertificateTransparencyDownloaderTest { prepareDownloadManager(); mSignatureVerifier.addAllowedKey(mPublicKey); - mDataStore.load(); } @After public void tearDown() { mSignatureVerifier.resetPublicKey(); mCompatVersion.delete(); - mDataStore.delete(); } @Test