From f5f599289323bc2527bf3e84ec0cace7a966f124 Mon Sep 17 00:00:00 2001 From: Zhi Dou Date: Tue, 6 Aug 2024 17:32:45 +0000 Subject: [PATCH] change thread policy to allow read disk Bug: 356614910 Test: presubmit Change-Id: I65cc2cbd5e17b1ee93e64d8b20e53c42547c985a --- .../aconfig_storage_read_api/Android.bp | 2 ++ .../storage/StorageInternalReader.java | 3 ++ tools/aconfig/fake_device_config/Android.bp | 22 ++++++++++---- .../src/android/os/StrictMode.java | 29 +++++++++++++++++++ .../src/android/{provider => util}/Log.java | 0 5 files changed, 51 insertions(+), 5 deletions(-) create mode 100644 tools/aconfig/fake_device_config/src/android/os/StrictMode.java rename tools/aconfig/fake_device_config/src/android/{provider => util}/Log.java (100%) diff --git a/tools/aconfig/aconfig_storage_read_api/Android.bp b/tools/aconfig/aconfig_storage_read_api/Android.bp index 619b488814..9e950a61e7 100644 --- a/tools/aconfig/aconfig_storage_read_api/Android.bp +++ b/tools/aconfig/aconfig_storage_read_api/Android.bp @@ -176,6 +176,7 @@ java_library { ], libs: [ "unsupportedappusage", + "strict_mode_stub", ], static_libs: [ "aconfig_storage_file_java", @@ -196,6 +197,7 @@ java_library { ], libs: [ "unsupportedappusage-sdk-none", + "fake_device_config", ], static_libs: [ "aconfig_storage_file_java_none", diff --git a/tools/aconfig/aconfig_storage_read_api/srcs/android/aconfig/storage/StorageInternalReader.java b/tools/aconfig/aconfig_storage_read_api/srcs/android/aconfig/storage/StorageInternalReader.java index f73f35e80f..71c1c0dc09 100644 --- a/tools/aconfig/aconfig_storage_read_api/srcs/android/aconfig/storage/StorageInternalReader.java +++ b/tools/aconfig/aconfig_storage_read_api/srcs/android/aconfig/storage/StorageInternalReader.java @@ -17,6 +17,7 @@ package android.aconfig.storage; import android.compat.annotation.UnsupportedAppUsage; +import android.os.StrictMode; import java.io.Closeable; import java.nio.MappedByteBuffer; @@ -42,8 +43,10 @@ public class StorageInternalReader { @UnsupportedAppUsage public StorageInternalReader(String packageName, String packageMapFile, String flagValueFile) { + StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads(); mPackageTable = PackageTable.fromBytes(mapStorageFile(packageMapFile)); mFlagValueList = FlagValueList.fromBytes(mapStorageFile(flagValueFile)); + StrictMode.setThreadPolicy(oldPolicy); mPackageBooleanStartOffset = getPackageBooleanStartOffset(packageName); } diff --git a/tools/aconfig/fake_device_config/Android.bp b/tools/aconfig/fake_device_config/Android.bp index 4566bf985a..d6a1f22649 100644 --- a/tools/aconfig/fake_device_config/Android.bp +++ b/tools/aconfig/fake_device_config/Android.bp @@ -13,10 +13,22 @@ // limitations under the License. java_library { - name: "fake_device_config", - srcs: ["src/**/*.java"], - sdk_version: "none", - system_modules: "core-all-system-modules", - host_supported: true, + name: "fake_device_config", + srcs: [ + "src/android/util/Log.java", + "src/android/provider/DeviceConfig.java", + "src/android/os/StrictMode.java", + ], + sdk_version: "none", + system_modules: "core-all-system-modules", + host_supported: true, } +java_library { + name: "strict_mode_stub", + srcs: [ + "src/android/os/StrictMode.java", + ], + sdk_version: "core_current", + host_supported: true, +} diff --git a/tools/aconfig/fake_device_config/src/android/os/StrictMode.java b/tools/aconfig/fake_device_config/src/android/os/StrictMode.java new file mode 100644 index 0000000000..641625206c --- /dev/null +++ b/tools/aconfig/fake_device_config/src/android/os/StrictMode.java @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2024 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.os; + +public class StrictMode { + public static ThreadPolicy allowThreadDiskReads() { + throw new UnsupportedOperationException("Stub!"); + } + + public static void setThreadPolicy(final ThreadPolicy policy) { + throw new UnsupportedOperationException("Stub!"); + } + + public static final class ThreadPolicy {} +} diff --git a/tools/aconfig/fake_device_config/src/android/provider/Log.java b/tools/aconfig/fake_device_config/src/android/util/Log.java similarity index 100% rename from tools/aconfig/fake_device_config/src/android/provider/Log.java rename to tools/aconfig/fake_device_config/src/android/util/Log.java