summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Mitchell <rtmitchell@google.com>2020-01-15 11:00:27 -0800
committerandroid-build-team Robot <android-build-team-robot@google.com>2020-02-11 19:06:40 +0000
commit22cbc0fee280788c367aa897cd2518ce82656ace (patch)
treeb1d2927a4354d2c6dd10a2d7796898dee4a528a2
parentaabb952afa6c7543d7aee1f1a7f67df9728db9ed (diff)
downloadcts-22cbc0fee280788c367aa897cd2518ce82656ace.tar.gz
Add CTS test for AssetManager double destroy
If an AssetManager is closed and then finalized before assets that were opened with that AssetManager were finalized, nativeDestroy will be ran twice. Test that the fix the double destroy issue works as expected. Bug: 144028297 Test atest android.security.cts.AssetManagerTest Change-Id: Iecbb0cc60d1e2f93d7ec1fa263be2910de1a78a8 (cherry picked from commit 210730e5627e52b6f56a1765e242913908af72bd)
-rw-r--r--tests/tests/security/src/android/security/cts/AssetManagerTest.java48
1 files changed, 48 insertions, 0 deletions
diff --git a/tests/tests/security/src/android/security/cts/AssetManagerTest.java b/tests/tests/security/src/android/security/cts/AssetManagerTest.java
new file mode 100644
index 00000000000..27b60210553
--- /dev/null
+++ b/tests/tests/security/src/android/security/cts/AssetManagerTest.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.cts;
+
+import android.content.res.AssetManager;
+import android.content.res.XmlResourceParser;
+import android.platform.test.annotations.SecurityTest;
+
+import com.android.compatibility.common.util.CtsAndroidTestCase;
+
+@SecurityTest
+public class AssetManagerTest extends CtsAndroidTestCase {
+
+ // b/144028297
+ @SecurityTest(minPatchLevel = "2020-04")
+ public void testCloseThenFinalize() throws Exception {
+ final XmlResourceParser[] parser = {null};
+ final AssetManager[] assetManager = {AssetManager.class.newInstance()};
+ parser[0] = assetManager[0].openXmlResourceParser(
+ "res/xml/audio_assets.xml");
+ assetManager[0].close();
+ assetManager[0] = null;
+
+ Runtime.getRuntime().gc();
+ Runtime.getRuntime().gc();
+ Runtime.getRuntime().runFinalization();
+
+ parser[0] = null;
+
+ Runtime.getRuntime().gc();
+ Runtime.getRuntime().gc();
+ Runtime.getRuntime().runFinalization();
+ }
+}