summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Android.bp18
-rw-r--r--lint-baseline.xml2
-rw-r--r--perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java4
-rw-r--r--perf-tests/src/com/android/documentsui/FilesJankPerfTest.java2
-rw-r--r--perfetto_config.pbtx222
-rw-r--r--src/com/android/documentsui/picker/LastAccessedProvider.java4
-rw-r--r--src/com/android/documentsui/picker/PickCountRecordProvider.java13
-rw-r--r--src/com/android/documentsui/queries/SearchHistoryManager.java7
-rw-r--r--tests/Android.bp15
-rw-r--r--tests/functional/com/android/documentsui/archives/WriteableArchiveTest.java2
-rw-r--r--tests/functional/com/android/documentsui/inspector/DocumentLoaderTest.java2
-rw-r--r--tests/functional/com/android/documentsui/services/AbstractCopyJobTest.java3
-rw-r--r--tests/lint-baseline.xml147
-rw-r--r--tests/unit/com/android/documentsui/FocusManagerTest.java2
-rw-r--r--tests/unit/com/android/documentsui/base/DocumentInfoTest.java2
-rw-r--r--tests/unit/com/android/documentsui/dirlist/AccessibilityTest.java2
-rw-r--r--tests/unit/com/android/documentsui/inspector/GpsCoordinatesTextClassifierTest.java2
-rw-r--r--tests/unit/com/android/documentsui/inspector/HeaderTextSelectorTest.java2
-rw-r--r--tests/unit/com/android/documentsui/inspector/InspectorControllerTest.java2
-rw-r--r--tests/unit/com/android/documentsui/inspector/MediaViewTest.java2
-rw-r--r--tests/unit/com/android/documentsui/roots/ProvidersAccessTest.java2
-rwxr-xr-xtrace.sh3
22 files changed, 431 insertions, 29 deletions
diff --git a/Android.bp b/Android.bp
index a4381cceb..c4b9ad3f1 100644
--- a/Android.bp
+++ b/Android.bp
@@ -59,8 +59,6 @@ java_defaults {
sdk_version: "system_current",
min_sdk_version: "29",
-
- lint: { strict_updatability_linting: true }
}
platform_compat_config {
@@ -73,14 +71,19 @@ java_library {
srcs: [
":statslog-docsui-java-gen",
],
- lint: { strict_updatability_linting: true }
+ libs: [
+ "androidx.annotation_annotation",
+ ],
+ lint: {
+ strict_updatability_linting: true,
+ },
}
genrule {
name: "statslog-docsui-java-gen",
tools: ["stats-log-api-gen"],
cmd: "$(location stats-log-api-gen) --java $(out) --module docsui" +
- " --javaPackage com.android.documentsui --javaClass DocumentsStatsLog --minApiLevel 29",
+ " --javaPackage com.android.documentsui --javaClass DocumentsStatsLog --minApiLevel 29",
out: ["com/android/documentsui/DocumentsStatsLog.java"],
}
@@ -106,7 +109,9 @@ android_library {
sdk_version: "system_current",
target_sdk_version: "33",
min_sdk_version: "29",
- lint: { strict_updatability_linting: true }
+ lint: {
+ baseline_filename: "lint-baseline.xml",
+ },
}
android_library {
@@ -121,7 +126,6 @@ android_library {
sdk_version: "system_current",
target_sdk_version: "33",
min_sdk_version: "29",
- lint: { strict_updatability_linting: true }
}
android_app {
@@ -143,6 +147,4 @@ android_app {
min_sdk_version: "29",
updatable: true,
- lint: { strict_updatability_linting: true }
}
-
diff --git a/lint-baseline.xml b/lint-baseline.xml
index c7db33135..a89103e53 100644
--- a/lint-baseline.xml
+++ b/lint-baseline.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<issues format="6" by="lint 8.0.0-dev" type="baseline" dependencies="true" variant="all" version="8.0.0-dev">
+<issues format="6" by="lint 8.4.0-alpha01" type="baseline" client="" dependencies="true" name="" variant="all" version="8.4.0-alpha01">
<issue
id="NewApi"
diff --git a/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java b/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java
index 33ef73e5e..f7c295dc9 100644
--- a/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java
+++ b/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java
@@ -24,12 +24,12 @@ import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.os.RemoteException;
-import android.test.suitebuilder.annotation.LargeTest;
+
+import androidx.test.filters.LargeTest;
import com.android.documentsui.BaseActivity.EventListener;
import com.android.documentsui.base.RootInfo;
import com.android.documentsui.files.FilesActivity;
-import com.android.documentsui.ActivityTest;
import java.util.ArrayList;
import java.util.Arrays;
diff --git a/perf-tests/src/com/android/documentsui/FilesJankPerfTest.java b/perf-tests/src/com/android/documentsui/FilesJankPerfTest.java
index 6dd804443..8054c3814 100644
--- a/perf-tests/src/com/android/documentsui/FilesJankPerfTest.java
+++ b/perf-tests/src/com/android/documentsui/FilesJankPerfTest.java
@@ -26,8 +26,8 @@ import android.os.RemoteException;
import android.support.test.jank.GfxMonitor;
import android.support.test.jank.JankTest;
import android.support.test.jank.JankTestBase;
-import android.test.suitebuilder.annotation.LargeTest;
+import androidx.test.filters.LargeTest;
import androidx.test.uiautomator.UiDevice;
import androidx.test.uiautomator.UiScrollable;
diff --git a/perfetto_config.pbtx b/perfetto_config.pbtx
new file mode 100644
index 000000000..7c5bfa128
--- /dev/null
+++ b/perfetto_config.pbtx
@@ -0,0 +1,222 @@
+buffers: {
+ size_kb: 63488
+ fill_policy: DISCARD
+}
+buffers: {
+ size_kb: 2048
+ fill_policy: DISCARD
+}
+# Max duration: 1 min
+duration_ms: 60000
+
+data_sources: {
+ config {
+ name: "linux.ftrace"
+
+ # See: https://perfetto.dev/docs/data-sources/atrace#traceconfig
+ ftrace_config {
+ ftrace_events: "ftrace/print"
+
+ # Trace all ContentProvider commands and SQLite queries.
+ # See: https://source.corp.google.com/android-internal/frameworks/base/core/java/android/os/Trace.java?q=TRACE_TAG_DATABASE
+ # See: https://cs.android.com/android/platform/superproject/+/master:frameworks/base/core/java/android/database/sqlite/SQLiteConnection.java
+ # Uncomment to enable.
+ # Note: on a userdebug build it will add a trace for every SQLite command for every
+ # application, which makes traces very-very "noisy".
+ # atrace_categories: "database"
+
+ # Trace Binder IPC transactions.
+ # Uncomment to enable.
+ # Note: on a userdebug build it will add a trace for every Binder transaction for every
+ # application, which makes traces very-very "noisy".
+ # atrace_categories: "binder_driver"
+
+ # ActivityManager, WindowManager, Graphics, View System.
+ # Uncomment to enable.
+ # Note: on a userdebug build it will traces from corresponding category for every
+ # application, which makes traces very-very "noisy".
+ # atrace_categories: "wm"
+ # atrace_categories: "am"
+ atrace_categories: "gfx"
+ atrace_categories: "view"
+
+ # Trace DocumentUI "custom" events.
+ atrace_apps: "com.android.documentsui"
+ atrace_apps: "com.google.android.documentsui"
+
+ # Trace other Providers.
+
+ # authorities="com.android.documentsui.archives" - DocsUI
+ atrace_apps: "com.android.documentsui"
+ atrace_apps: "com.google.android.documentsui"
+
+ # authorities="com.android.externalstorage.documents" - ExternalStorageProvider
+ atrace_apps: "com.android.externalstorage"
+
+ # authorities="com.android.mtp.documents" - Mtp
+ atrace_apps: "com.android.mtp"
+
+ # authorities="com.android.pixellogger.documents" - PixelLogger
+ atrace_apps: "com.android.pixellogger"
+
+ # authorities="com.android.providers.downloads" - DownloadSProvider
+ atrace_apps: "com.android.providers.downloads.documents"
+
+ # authorities="com.android.providers.media.documents" - MediaProvider
+ atrace_apps: "com.android.providers.media.module"
+ atrace_apps: "com.google.android.providers.media.module"
+
+ # authorities="com.android.shell.documents" - Shell (BugreportStorageProvider)
+ # atrace_apps: "android.uid.shell"
+
+ # authorities="com.google.android.apps.docs.storage" - Google Docs
+ atrace_apps: "com.google.android.apps.docs"
+
+ # Google Photos.
+ # atrace_apps: "com.google.android.apps.photos"
+
+ # Trace all apps' events.
+ # Uncomment to enable.
+ # atrace_apps: "*"
+ }
+ }
+}
+
+# This is for getting Thread-to-Process associations and full process names.
+data_sources: {
+ config {
+ name: "linux.process_stats"
+ }
+}
+
+# "Expected Timeline" and "Actual Timeline" jor each process
+# See https://perfetto.dev/docs/data-sources/frametimeline#traceconfig
+data_sources {
+ config {
+ name: "android.surfaceflinger.frametimeline"
+ }
+}
+
+# Memory Profiling
+# See https://perfetto.dev/docs/data-sources/memory-counters
+
+# Android Logcat
+data_sources: {
+ config {
+ name: "android.log"
+ android_log_config {
+ min_prio: PRIO_VERBOSE # Default: PRIO_DEBUG
+
+ log_ids: LID_EVENTS
+ log_ids: LID_CRASH
+ log_ids: LID_KERNEL
+ log_ids: LID_DEFAULT
+ log_ids: LID_RADIO
+ log_ids: LID_SECURITY
+ log_ids: LID_STATS
+ log_ids: LID_SYSTEM
+
+ # If filter_tags non-empty ignores all log messages whose tag doesn't match one of the
+ # specified values.
+ # filter_tags: "AbstractActionHandler"
+ # filter_tags: "ActionModeController"
+ # filter_tags: "Archive"
+ # filter_tags: "ArchiveFileTestRule"
+ # filter_tags: "ArchiveHandle"
+ # filter_tags: "ArchivesProvider"
+ # filter_tags: "CancelFromNotificationUiTest"
+ # filter_tags: "ClipStorage"
+ # filter_tags: "CommandInterceptor"
+ # filter_tags: "CompressJob"
+ # filter_tags: "ConfirmFragment"
+ # filter_tags: "ContentLock"
+ # filter_tags: "CopyJob"
+ # filter_tags: "DebugHelper"
+ # filter_tags: "DeleteJob"
+ # filter_tags: "DirectoryFragment"
+ # filter_tags: "DirectoryLoader"
+ # filter_tags: "DirectoryResult"
+ # filter_tags: "DocumentAccess"
+ # filter_tags: "DocumentClipper"
+ # filter_tags: "DocumentInfo"
+ # filter_tags: "DocumentStack"
+ # filter_tags: "Documents"
+ # filter_tags: "DocumentsApplication"
+ # filter_tags: "DocumentsSwipeRefreshLayout"
+ # filter_tags: "DragStartListener"
+ # filter_tags: "DrawerController"
+ # filter_tags: "EjectRootTask"
+ # filter_tags: "FileCopyUiTest"
+ # filter_tags: "FileDeleteUiTest"
+ # filter_tags: "FileOperationService"
+ # filter_tags: "FileOperations"
+ # filter_tags: "FilesActivity"
+ # filter_tags: "FilesAppPerfTest"
+ # filter_tags: "FocusManager"
+ # filter_tags: "GetRootDocumentTask"
+ # filter_tags: "HeaderItem"
+ # filter_tags: "HeaderMessage"
+ # filter_tags: "IconHelper"
+ # filter_tags: "ItemDragListener"
+ # filter_tags: "Job"
+ # filter_tags: "JumboUrisSupplier"
+ # filter_tags: "LastAccessedProvider"
+ # filter_tags: "LastAccessedStorage"
+ # filter_tags: "LauncherActivity"
+ # filter_tags: "ListDocumentHolder"
+ # filter_tags: "LoadDocStackTask"
+ # filter_tags: "LoadRootTask"
+ # filter_tags: "Loader"
+ # filter_tags: "ManagerActionHandler"
+ # filter_tags: "MenuManager"
+ # filter_tags: "MetadataLoader"
+ # filter_tags: "Metrics"
+ # filter_tags: "Model"
+ # filter_tags: "ModelBackedDocuments"
+ # filter_tags: "MoveJob"
+ # filter_tags: "MultiRootDocsLoader"
+ # filter_tags: "NavigationViewManager"
+ # filter_tags: "OperationDialogFragment"
+ # filter_tags: "PermissionsTest"
+ # filter_tags: "PickActivity"
+ # filter_tags: "PickCountRecordProvider"
+ # filter_tags: "PickCountRecordStorage"
+ # filter_tags: "PickFragment"
+ # filter_tags: "PickerActionHandler"
+ # filter_tags: "PreBootReceiver"
+ # filter_tags: "ProfileTabsController"
+ # filter_tags: "ProvidersCache"
+ # filter_tags: "QuickViewIntentBuilder"
+ # filter_tags: "ReadableArchive"
+ # filter_tags: "RefreshTask"
+ # filter_tags: "ResolvedResourcesJob"
+ # filter_tags: "RootCursorWrapper"
+ # filter_tags: "RootInfo"
+ # filter_tags: "RootItem"
+ # filter_tags: "RootUiTest"
+ # filter_tags: "RootsDragHost"
+ # filter_tags: "RootsFragment"
+ # filter_tags: "RootsListBot"
+ # filter_tags: "SaveFragment"
+ # filter_tags: "ScaleHelper"
+ # filter_tags: "ScopedAccessMetrics"
+ # filter_tags: "SearchFragment"
+ # filter_tags: "SearchHistoryManager"
+ # filter_tags: "SearchManager"
+ # filter_tags: "SectioningDocumentsAdapterWrapper"
+ # filter_tags: "SelectionMetadata"
+ # filter_tags: "SharedInputHandler"
+ # filter_tags: "SortModel"
+ # filter_tags: "SpacerItem"
+ # filter_tags: "State"
+ # filter_tags: "StubProvider"
+ # filter_tags: "TestContextResolver"
+ # filter_tags: "TestNotificationService"
+ # filter_tags: "ThemeOverlayManager"
+ # filter_tags: "ThumbnailLoader"
+ # filter_tags: "UserIdManager"
+ # filter_tags: "WriteableArchive"
+ # filter_tags: "dirlist.DragHost"
+ }
+ }
+}
diff --git a/src/com/android/documentsui/picker/LastAccessedProvider.java b/src/com/android/documentsui/picker/LastAccessedProvider.java
index 36c00f317..3a0de08dd 100644
--- a/src/com/android/documentsui/picker/LastAccessedProvider.java
+++ b/src/com/android/documentsui/picker/LastAccessedProvider.java
@@ -57,6 +57,7 @@ public class LastAccessedProvider extends ContentProvider {
private static final int URI_LAST_ACCESSED = 1;
+ public static final String METHOD_CLOSE_DATABASE = "closeDatabase";
public static final String METHOD_PURGE = "purge";
public static final String METHOD_PURGE_PACKAGE = "purgePackage";
@@ -236,6 +237,9 @@ public class LastAccessedProvider extends ContentProvider {
return null;
+ } else if (METHOD_CLOSE_DATABASE.equals(method)) {
+ mHelper.close();
+ return null;
} else {
return super.call(method, arg, extras);
}
diff --git a/src/com/android/documentsui/picker/PickCountRecordProvider.java b/src/com/android/documentsui/picker/PickCountRecordProvider.java
index 0a8e21505..aa98ca042 100644
--- a/src/com/android/documentsui/picker/PickCountRecordProvider.java
+++ b/src/com/android/documentsui/picker/PickCountRecordProvider.java
@@ -25,6 +25,7 @@ import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.net.Uri;
+import android.os.Bundle;
import android.util.Log;
public class PickCountRecordProvider extends ContentProvider {
@@ -40,6 +41,8 @@ public class PickCountRecordProvider extends ContentProvider {
static final String AUTHORITY = "com.android.documentsui.pickCountRecord";
+ public static final String METHOD_CLOSE_DATABASE = "closeDatabase";
+
static {
MATCHER.addURI(AUTHORITY, "pickCountRecord/*", URI_PICK_RECORD);
}
@@ -148,4 +151,14 @@ public class PickCountRecordProvider extends ContentProvider {
public String getType(Uri uri) {
return null;
}
+
+ @Override
+ public Bundle call(String method, String arg, Bundle extras) {
+ if (METHOD_CLOSE_DATABASE.equals(method)) {
+ mHelper.close();
+ return null;
+ } else {
+ return super.call(method, arg, extras);
+ }
+ }
} \ No newline at end of file
diff --git a/src/com/android/documentsui/queries/SearchHistoryManager.java b/src/com/android/documentsui/queries/SearchHistoryManager.java
index 26def876d..6ccad6a29 100644
--- a/src/com/android/documentsui/queries/SearchHistoryManager.java
+++ b/src/com/android/documentsui/queries/SearchHistoryManager.java
@@ -175,6 +175,13 @@ public class SearchHistoryManager {
}
}
+ /**
+ * Closes the database.
+ */
+ public void closeDatabase() {
+ mHelper.close();
+ }
+
private class DatabaseTask extends AsyncTask<Object, Void, Object> {
private final String mKeyword;
private final DATABASE_OPERATION mOperation;
diff --git a/tests/Android.bp b/tests/Android.bp
index d22ec4353..091f2edb3 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -77,8 +77,8 @@ android_library {
"res",
],
- min_sdk_version : "29",
- target_sdk_version : "29",
+ min_sdk_version: "29",
+ target_sdk_version: "29",
}
android_library {
@@ -110,8 +110,11 @@ android_library {
"-0 .zip",
],
- min_sdk_version : "29",
- target_sdk_version : "29",
+ min_sdk_version: "29",
+ target_sdk_version: "29",
+ lint: {
+ baseline_filename: "lint-baseline.xml",
+ },
}
android_test {
@@ -138,6 +141,6 @@ android_test {
certificate: "platform",
instrumentation_for: "DocumentsUI",
- min_sdk_version : "29",
- target_sdk_version : "29",
+ min_sdk_version: "29",
+ target_sdk_version: "29",
}
diff --git a/tests/functional/com/android/documentsui/archives/WriteableArchiveTest.java b/tests/functional/com/android/documentsui/archives/WriteableArchiveTest.java
index 7092d1294..da470daa3 100644
--- a/tests/functional/com/android/documentsui/archives/WriteableArchiveTest.java
+++ b/tests/functional/com/android/documentsui/archives/WriteableArchiveTest.java
@@ -21,9 +21,9 @@ import android.net.Uri;
import android.os.ParcelFileDescriptor;
import android.provider.DocumentsContract.Document;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.MediumTest;
import java.io.File;
import java.io.IOException;
diff --git a/tests/functional/com/android/documentsui/inspector/DocumentLoaderTest.java b/tests/functional/com/android/documentsui/inspector/DocumentLoaderTest.java
index 8a2b21f10..ac417c90a 100644
--- a/tests/functional/com/android/documentsui/inspector/DocumentLoaderTest.java
+++ b/tests/functional/com/android/documentsui/inspector/DocumentLoaderTest.java
@@ -25,8 +25,8 @@ import android.net.Uri;
import android.os.Bundle;
import android.os.Looper;
import android.provider.DocumentsContract;
-import android.test.suitebuilder.annotation.MediumTest;
+import androidx.test.filters.MediumTest;
import androidx.test.rule.provider.ProviderTestRule;
import com.android.documentsui.InspectorProvider;
diff --git a/tests/functional/com/android/documentsui/services/AbstractCopyJobTest.java b/tests/functional/com/android/documentsui/services/AbstractCopyJobTest.java
index 7b2cb828c..525397bc0 100644
--- a/tests/functional/com/android/documentsui/services/AbstractCopyJobTest.java
+++ b/tests/functional/com/android/documentsui/services/AbstractCopyJobTest.java
@@ -23,9 +23,10 @@ import static org.junit.Assert.assertNotEquals;
import android.app.Notification;
import android.net.Uri;
import android.provider.DocumentsContract;
-import android.test.suitebuilder.annotation.MediumTest;
import android.text.format.DateUtils;
+import androidx.test.filters.MediumTest;
+
import com.android.documentsui.R;
import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.services.FileOperationService.OpType;
diff --git a/tests/lint-baseline.xml b/tests/lint-baseline.xml
new file mode 100644
index 000000000..ed87eb9c8
--- /dev/null
+++ b/tests/lint-baseline.xml
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<issues format="6" by="lint 8.4.0-alpha01" type="baseline" client="" dependencies="true" name="" variant="all" version="8.4.0-alpha01">
+
+ <issue
+ id="NewApi"
+ message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#getOverlayInfosForTarget`"
+ errorLine1=" when(mOverlayManager.getOverlayInfosForTarget(getEnabledTargetPackageId(),"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
+ <location
+ file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+ line="85"
+ column="30"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#getOverlayInfosForTarget`"
+ errorLine1=" when(mOverlayManager.getOverlayInfosForTarget(getDisabledTargetPackageId(),"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
+ <location
+ file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+ line="89"
+ column="30"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#setEnabled`"
+ errorLine1=" verify(mOverlayManager, times(1)).setEnabled(getOverlayPackageId(), enabled,"
+ errorLine2=" ~~~~~~~~~~">
+ <location
+ file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+ line="104"
+ column="43"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#getOverlayInfosForTarget`"
+ errorLine1=" verify(mOverlayManager, times(1)).getOverlayInfosForTarget(getEnabledTargetPackageId(),"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
+ <location
+ file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+ line="116"
+ column="43"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#setEnabled`"
+ errorLine1=" verify(mOverlayManager, never()).setEnabled(getOverlayPackageId(), enabled,"
+ errorLine2=" ~~~~~~~~~~">
+ <location
+ file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+ line="129"
+ column="42"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#getOverlayInfosForTarget`"
+ errorLine1=" assertThat(mOverlayManager.getOverlayInfosForTarget(getDisabledTargetPackageId(),"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
+ <location
+ file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+ line="137"
+ column="36"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level 34 (current min is 29): `android.content.om.OverlayInfo#isEnabled`"
+ errorLine1=" mUserHandle).get(0).isEnabled()).isEqualTo(!enabled);"
+ errorLine2=" ~~~~~~~~~">
+ <location
+ file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+ line="138"
+ column="37"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#setEnabled`"
+ errorLine1=" verify(mOverlayManager, times(1)).setEnabled(getOverlayPackageId(), enabled,"
+ errorLine2=" ~~~~~~~~~~">
+ <location
+ file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+ line="146"
+ column="43"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#getOverlayInfosForTarget`"
+ errorLine1=" assertThat(mOverlayManager.getOverlayInfosForTarget(getEnabledTargetPackageId(),"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
+ <location
+ file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+ line="154"
+ column="36"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level 34 (current min is 29): `android.content.om.OverlayInfo#isEnabled`"
+ errorLine1=" mUserHandle).get(0).isEnabled()).isEqualTo(!enabled);"
+ errorLine2=" ~~~~~~~~~">
+ <location
+ file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+ line="155"
+ column="37"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#setEnabled`"
+ errorLine1=" verify(mOverlayManager, times(1)).setEnabled(getOverlayPackageId(), enabled,"
+ errorLine2=" ~~~~~~~~~~">
+ <location
+ file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+ line="163"
+ column="43"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level 34 (current min is 29): `android.content.om.OverlayManager#getOverlayInfosForTarget`"
+ errorLine1=" mOverlayManager.getOverlayInfosForTarget(getEnabledTargetPackageId(),"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
+ <location
+ file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+ line="192"
+ column="33"/>
+ </issue>
+
+ <issue
+ id="NewApi"
+ message="Call requires API level 34 (current min is 29): `new android.content.om.OverlayInfo`"
+ errorLine1=' return new OverlayInfo(packageName, targetPackageName, null, null, "",'
+ errorLine2=" ~~~~~~~~~~~~~~~">
+ <location
+ file="packages/apps/DocumentsUI/tests/functional/com/android/documentsui/ThemeOverlayManagerTest.java"
+ line="211"
+ column="16"/>
+ </issue>
+
+</issues> \ No newline at end of file
diff --git a/tests/unit/com/android/documentsui/FocusManagerTest.java b/tests/unit/com/android/documentsui/FocusManagerTest.java
index 67e70005e..36637f3cb 100644
--- a/tests/unit/com/android/documentsui/FocusManagerTest.java
+++ b/tests/unit/com/android/documentsui/FocusManagerTest.java
@@ -17,10 +17,10 @@
package com.android.documentsui;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
import androidx.recyclerview.selection.SelectionTracker;
import androidx.recyclerview.widget.RecyclerView;
+import androidx.test.filters.SmallTest;
import com.android.documentsui.base.UserId;
import com.android.documentsui.dirlist.TestData;
diff --git a/tests/unit/com/android/documentsui/base/DocumentInfoTest.java b/tests/unit/com/android/documentsui/base/DocumentInfoTest.java
index eba30d2e5..4e73333d8 100644
--- a/tests/unit/com/android/documentsui/base/DocumentInfoTest.java
+++ b/tests/unit/com/android/documentsui/base/DocumentInfoTest.java
@@ -28,8 +28,8 @@ import android.content.Context;
import android.net.Uri;
import android.provider.DocumentsContract;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
+import androidx.test.filters.SmallTest;
import androidx.test.rule.provider.ProviderTestRule;
import com.android.documentsui.InspectorProvider;
diff --git a/tests/unit/com/android/documentsui/dirlist/AccessibilityTest.java b/tests/unit/com/android/documentsui/dirlist/AccessibilityTest.java
index 4334608c2..09b193344 100644
--- a/tests/unit/com/android/documentsui/dirlist/AccessibilityTest.java
+++ b/tests/unit/com/android/documentsui/dirlist/AccessibilityTest.java
@@ -18,12 +18,12 @@ package com.android.documentsui.dirlist;
import android.database.Cursor;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
import android.view.View;
import android.widget.Space;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import androidx.recyclerview.widget.RecyclerView;
+import androidx.test.filters.SmallTest;
import com.android.documentsui.TestConfigStore;
import com.android.documentsui.testing.TestRecyclerView;
diff --git a/tests/unit/com/android/documentsui/inspector/GpsCoordinatesTextClassifierTest.java b/tests/unit/com/android/documentsui/inspector/GpsCoordinatesTextClassifierTest.java
index e25d227e7..f4e04221d 100644
--- a/tests/unit/com/android/documentsui/inspector/GpsCoordinatesTextClassifierTest.java
+++ b/tests/unit/com/android/documentsui/inspector/GpsCoordinatesTextClassifierTest.java
@@ -20,12 +20,12 @@ import static junit.framework.Assert.assertEquals;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.LocaleList;
-import android.test.suitebuilder.annotation.SmallTest;
import android.view.textclassifier.TextClassification;
import android.view.textclassifier.TextClassificationManager;
import android.view.textclassifier.TextClassifier;
import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
import com.android.documentsui.testing.TestPackageManager;
diff --git a/tests/unit/com/android/documentsui/inspector/HeaderTextSelectorTest.java b/tests/unit/com/android/documentsui/inspector/HeaderTextSelectorTest.java
index 30178cedc..28bc667ab 100644
--- a/tests/unit/com/android/documentsui/inspector/HeaderTextSelectorTest.java
+++ b/tests/unit/com/android/documentsui/inspector/HeaderTextSelectorTest.java
@@ -19,12 +19,12 @@ import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertTrue;
import android.content.Context;
-import android.test.suitebuilder.annotation.SmallTest;
import android.text.Spannable;
import android.text.SpannableString;
import android.widget.TextView;
import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
import com.android.documentsui.inspector.HeaderTextSelector.Selector;
diff --git a/tests/unit/com/android/documentsui/inspector/InspectorControllerTest.java b/tests/unit/com/android/documentsui/inspector/InspectorControllerTest.java
index 9a7bad574..f3d5b591c 100644
--- a/tests/unit/com/android/documentsui/inspector/InspectorControllerTest.java
+++ b/tests/unit/com/android/documentsui/inspector/InspectorControllerTest.java
@@ -29,10 +29,10 @@ import android.os.Looper;
import android.os.UserHandle;
import android.provider.DocumentsContract;
import android.provider.DocumentsContract.Document;
-import android.test.suitebuilder.annotation.SmallTest;
import android.view.View.OnClickListener;
import androidx.annotation.Nullable;
+import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
import com.android.documentsui.InspectorProvider;
diff --git a/tests/unit/com/android/documentsui/inspector/MediaViewTest.java b/tests/unit/com/android/documentsui/inspector/MediaViewTest.java
index 80c3c4729..db87e42bd 100644
--- a/tests/unit/com/android/documentsui/inspector/MediaViewTest.java
+++ b/tests/unit/com/android/documentsui/inspector/MediaViewTest.java
@@ -19,8 +19,8 @@ import android.media.ExifInterface;
import android.media.MediaMetadata;
import android.os.Bundle;
import android.provider.DocumentsContract;
-import android.test.suitebuilder.annotation.SmallTest;
+import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
import com.android.documentsui.R;
diff --git a/tests/unit/com/android/documentsui/roots/ProvidersAccessTest.java b/tests/unit/com/android/documentsui/roots/ProvidersAccessTest.java
index cab664150..255c1cb10 100644
--- a/tests/unit/com/android/documentsui/roots/ProvidersAccessTest.java
+++ b/tests/unit/com/android/documentsui/roots/ProvidersAccessTest.java
@@ -21,9 +21,9 @@ import static com.google.common.truth.Truth.assertThat;
import android.provider.DocumentsContract;
import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
import androidx.annotation.Nullable;
+import androidx.test.filters.SmallTest;
import com.android.documentsui.base.Providers;
import com.android.documentsui.base.RootInfo;
diff --git a/trace.sh b/trace.sh
new file mode 100755
index 000000000..573d92362
--- /dev/null
+++ b/trace.sh
@@ -0,0 +1,3 @@
+$ANDROID_BUILD_TOP/external/perfetto/tools/record_android_trace \
+ -c $ANDROID_BUILD_TOP/packages/apps/DocumentsUI/perfetto_config.pbtx \
+ -o /tmp/perfetto-traces/docsui-$(date +"%d-%m-%Y_%H-%M-%S").perfetto-trace