Loading Android.bp +6 −6 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ aconfig_declarations { java_aconfig_library { name: "docsui-flags-aconfig-java-lib", aconfig_declarations: "docsui-flags-aconfig", min_sdk_version: "29", min_sdk_version: "30", sdk_version: "system_current", } Loading @@ -45,7 +45,7 @@ java_library { name: "docsui-change-ids", srcs: ["src/com/android/documentsui/ChangeIds.java"], libs: ["app-compat-annotations"], min_sdk_version: "29", min_sdk_version: "30", sdk_version: "system_current", } Loading Loading @@ -77,7 +77,7 @@ java_defaults { }, sdk_version: "system_current", min_sdk_version: "29", min_sdk_version: "30", } platform_compat_config { Loading Loading @@ -133,7 +133,7 @@ android_library { sdk_version: "system_current", target_sdk_version: "33", min_sdk_version: "29", min_sdk_version: "30", lint: { baseline_filename: "lint-baseline.xml", }, Loading @@ -151,7 +151,7 @@ android_library { sdk_version: "system_current", target_sdk_version: "33", min_sdk_version: "29", min_sdk_version: "30", } android_app { Loading @@ -173,6 +173,6 @@ android_app { required: ["privapp_whitelist_com.android.documentsui"], min_sdk_version: "29", min_sdk_version: "30", updatable: true, } compose/Android.bp +2 −2 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ android_library { sdk_version: "system_current", target_sdk_version: "33", min_sdk_version: "29", min_sdk_version: "30", } android_app { Loading @@ -58,5 +58,5 @@ android_app { certificate: "platform", sdk_version: "system_current", min_sdk_version: "29", min_sdk_version: "30", } src/com/android/documentsui/loaders/SearchLoader.kt +11 −1 Original line number Diff line number Diff line Loading @@ -49,7 +49,11 @@ import kotlin.time.measureTime * - Query options such as maximum number of results, last modified time delta, etc. * - a lookup from file extension to file type * - The model capable of sorting results * - An acceptable mime types * - An executor for running searches across multiple roots in parallel * * SearchLoader requires that either a query is not null and not empty or that QueryOptions * specify a last modified time restriction. This is to prevent searching for every file * across every specified root. */ class SearchLoader( context: Context, Loading @@ -63,6 +67,12 @@ class SearchLoader( private val mExecutorService: ExecutorService, ) : BaseFileLoader(context, userIdList, mimeTypeLookup) { init { require((mQuery !== null && !mQuery.isBlank()) || mOptions.maxLastModifiedDelta !== null) { "Either the query or the last modified time must not be null" } } /** * Helper class that runs query on a single user for the given parameter. This class implements * an abstract future so that if the task is completed, we can retrieve the cursor via the get Loading tests/Android.bp +7 −6 Original line number Diff line number Diff line Loading @@ -82,8 +82,8 @@ android_library { "res", ], min_sdk_version: "29", target_sdk_version: "29", min_sdk_version: "30", target_sdk_version: "30", } android_library { Loading @@ -97,6 +97,7 @@ android_library { "functional/**/*.java", "functional/**/*.kt", "unit/**/*.java", "unit/**/*.kt", ], libs: [ Loading @@ -116,8 +117,8 @@ android_library { "-0 .zip", ], min_sdk_version: "29", target_sdk_version: "29", min_sdk_version: "30", target_sdk_version: "30", lint: { baseline_filename: "lint-baseline.xml", }, Loading Loading @@ -147,6 +148,6 @@ android_test { certificate: "platform", instrumentation_for: "DocumentsUI", min_sdk_version: "29", target_sdk_version: "29", min_sdk_version: "30", target_sdk_version: "30", } tests/common/com/android/documentsui/bots/DirectoryListBot.java +7 −43 Original line number Diff line number Diff line Loading @@ -46,7 +46,6 @@ import androidx.test.uiautomator.Until; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.regex.Pattern; /** * A test helper class that provides support for controlling directory list Loading @@ -56,16 +55,13 @@ public class DirectoryListBot extends Bots.BaseBot { private static final int MAX_LAYOUT_LEVEL = 10; private static final BySelector SNACK_DELETE = By.text(Pattern.compile("^Deleting [0-9]+ item.+")); private final String mDirContainerId; private final String mDirListId; private final String mItemRootId; private final String mPreviewId; private final String mIconId; private UiAutomation mAutomation; private final UiAutomation mAutomation; public DirectoryListBot( UiDevice device, UiAutomation automation, Context context, int timeout) { Loading Loading @@ -178,10 +174,6 @@ public class DirectoryListBot extends Bots.BaseBot { findPlaceholderMessageTextView().waitForExists(mTimeout); } public void assertSnackbar(int id) { assertNotNull(getSnackbar(mContext.getString(id))); } public void openDocument(String label) throws UiObjectNotFoundException { int toolType = Configurator.getInstance().getToolType(); Configurator.getInstance().setToolType(MotionEvent.TOOL_TYPE_FINGER); Loading @@ -208,13 +200,6 @@ public class DirectoryListBot extends Bots.BaseBot { assertSelection(number); } public boolean isDocumentSelected(String label) throws UiObjectNotFoundException { waitForDocument(label); UiObject2 selectionHotspot = findSelectionHotspot(label); return selectionHotspot.getResourceName() .equals(mTargetPackage + ":id/icon_check"); } public UiObject2 findSelectionHotspot(String label) throws UiObjectNotFoundException { final BySelector list = By.res(mDirListId); Loading @@ -224,20 +209,15 @@ public class DirectoryListBot extends Bots.BaseBot { new UiScrollable(docList).scrollIntoView(new UiSelector().text(label)); UiObject2 parent = mDevice.findObject(list).findObject(selector); UiObject2 selectionHotspot = null; for (int i = 1; i <= MAX_LAYOUT_LEVEL; i++) { parent = parent.getParent(); if (mItemRootId.equals(parent.getResourceName())) { selectionHotspot = parent.findObject(By.res(mIconId)); if (selectionHotspot != null) { break; } } return parent.findObject(By.res(mIconId)); } public void copyFilesToClipboard(String...labels) throws UiObjectNotFoundException { for (String label: labels) { selectDocument(label); } mDevice.pressKeyCode(KeyEvent.KEYCODE_C, KeyEvent.META_CTRL_ON); return selectionHotspot; } public void pasteFilesFromClipboard() { Loading @@ -248,21 +228,6 @@ public class DirectoryListBot extends Bots.BaseBot { return mDevice.wait(Until.findObject(By.text(message)), mTimeout); } public void clickSnackbarAction() throws UiObjectNotFoundException { UiObject snackbarAction = findObject(mTargetPackage + ":id/snackbar_action"); snackbarAction.click(); } public void waitForDeleteSnackbar() { mDevice.wait(Until.findObject(SNACK_DELETE), mTimeout); } public void waitForDeleteSnackbarGone() { // wait a little longer for snackbar to go away, as it disappears after a timeout. mDevice.wait(Until.gone(SNACK_DELETE), mTimeout * 2); } public void waitForDocument(String label) throws UiObjectNotFoundException { findDocument(label).waitForExists(mTimeout); } Loading Loading @@ -295,9 +260,8 @@ public class DirectoryListBot extends Bots.BaseBot { public boolean hasDocumentPreview(String label) { final BySelector list = By.res(mDirListId); final UiObject2 text = mDevice.findObject(list).findObject(By.text(label)); UiObject2 parent = text; UiObject2 parent = mDevice.findObject(list).findObject(By.text(label)); for (int i = 1; i <= MAX_LAYOUT_LEVEL; i++) { parent = parent.getParent(); if (mItemRootId.equals(parent.getResourceName())) { Loading Loading @@ -338,7 +302,7 @@ public class DirectoryListBot extends Bots.BaseBot { String assertSelectionText = numSelected + " selected"; UiObject2 selectionText = mDevice.wait( Until.findObject(By.text(assertSelectionText)), mTimeout); assertTrue(selectionText != null); assertNotNull(selectionText); } public void assertOrder(String[] dirs, String[] files) throws UiObjectNotFoundException { Loading Loading
Android.bp +6 −6 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ aconfig_declarations { java_aconfig_library { name: "docsui-flags-aconfig-java-lib", aconfig_declarations: "docsui-flags-aconfig", min_sdk_version: "29", min_sdk_version: "30", sdk_version: "system_current", } Loading @@ -45,7 +45,7 @@ java_library { name: "docsui-change-ids", srcs: ["src/com/android/documentsui/ChangeIds.java"], libs: ["app-compat-annotations"], min_sdk_version: "29", min_sdk_version: "30", sdk_version: "system_current", } Loading Loading @@ -77,7 +77,7 @@ java_defaults { }, sdk_version: "system_current", min_sdk_version: "29", min_sdk_version: "30", } platform_compat_config { Loading Loading @@ -133,7 +133,7 @@ android_library { sdk_version: "system_current", target_sdk_version: "33", min_sdk_version: "29", min_sdk_version: "30", lint: { baseline_filename: "lint-baseline.xml", }, Loading @@ -151,7 +151,7 @@ android_library { sdk_version: "system_current", target_sdk_version: "33", min_sdk_version: "29", min_sdk_version: "30", } android_app { Loading @@ -173,6 +173,6 @@ android_app { required: ["privapp_whitelist_com.android.documentsui"], min_sdk_version: "29", min_sdk_version: "30", updatable: true, }
compose/Android.bp +2 −2 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ android_library { sdk_version: "system_current", target_sdk_version: "33", min_sdk_version: "29", min_sdk_version: "30", } android_app { Loading @@ -58,5 +58,5 @@ android_app { certificate: "platform", sdk_version: "system_current", min_sdk_version: "29", min_sdk_version: "30", }
src/com/android/documentsui/loaders/SearchLoader.kt +11 −1 Original line number Diff line number Diff line Loading @@ -49,7 +49,11 @@ import kotlin.time.measureTime * - Query options such as maximum number of results, last modified time delta, etc. * - a lookup from file extension to file type * - The model capable of sorting results * - An acceptable mime types * - An executor for running searches across multiple roots in parallel * * SearchLoader requires that either a query is not null and not empty or that QueryOptions * specify a last modified time restriction. This is to prevent searching for every file * across every specified root. */ class SearchLoader( context: Context, Loading @@ -63,6 +67,12 @@ class SearchLoader( private val mExecutorService: ExecutorService, ) : BaseFileLoader(context, userIdList, mimeTypeLookup) { init { require((mQuery !== null && !mQuery.isBlank()) || mOptions.maxLastModifiedDelta !== null) { "Either the query or the last modified time must not be null" } } /** * Helper class that runs query on a single user for the given parameter. This class implements * an abstract future so that if the task is completed, we can retrieve the cursor via the get Loading
tests/Android.bp +7 −6 Original line number Diff line number Diff line Loading @@ -82,8 +82,8 @@ android_library { "res", ], min_sdk_version: "29", target_sdk_version: "29", min_sdk_version: "30", target_sdk_version: "30", } android_library { Loading @@ -97,6 +97,7 @@ android_library { "functional/**/*.java", "functional/**/*.kt", "unit/**/*.java", "unit/**/*.kt", ], libs: [ Loading @@ -116,8 +117,8 @@ android_library { "-0 .zip", ], min_sdk_version: "29", target_sdk_version: "29", min_sdk_version: "30", target_sdk_version: "30", lint: { baseline_filename: "lint-baseline.xml", }, Loading Loading @@ -147,6 +148,6 @@ android_test { certificate: "platform", instrumentation_for: "DocumentsUI", min_sdk_version: "29", target_sdk_version: "29", min_sdk_version: "30", target_sdk_version: "30", }
tests/common/com/android/documentsui/bots/DirectoryListBot.java +7 −43 Original line number Diff line number Diff line Loading @@ -46,7 +46,6 @@ import androidx.test.uiautomator.Until; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.regex.Pattern; /** * A test helper class that provides support for controlling directory list Loading @@ -56,16 +55,13 @@ public class DirectoryListBot extends Bots.BaseBot { private static final int MAX_LAYOUT_LEVEL = 10; private static final BySelector SNACK_DELETE = By.text(Pattern.compile("^Deleting [0-9]+ item.+")); private final String mDirContainerId; private final String mDirListId; private final String mItemRootId; private final String mPreviewId; private final String mIconId; private UiAutomation mAutomation; private final UiAutomation mAutomation; public DirectoryListBot( UiDevice device, UiAutomation automation, Context context, int timeout) { Loading Loading @@ -178,10 +174,6 @@ public class DirectoryListBot extends Bots.BaseBot { findPlaceholderMessageTextView().waitForExists(mTimeout); } public void assertSnackbar(int id) { assertNotNull(getSnackbar(mContext.getString(id))); } public void openDocument(String label) throws UiObjectNotFoundException { int toolType = Configurator.getInstance().getToolType(); Configurator.getInstance().setToolType(MotionEvent.TOOL_TYPE_FINGER); Loading @@ -208,13 +200,6 @@ public class DirectoryListBot extends Bots.BaseBot { assertSelection(number); } public boolean isDocumentSelected(String label) throws UiObjectNotFoundException { waitForDocument(label); UiObject2 selectionHotspot = findSelectionHotspot(label); return selectionHotspot.getResourceName() .equals(mTargetPackage + ":id/icon_check"); } public UiObject2 findSelectionHotspot(String label) throws UiObjectNotFoundException { final BySelector list = By.res(mDirListId); Loading @@ -224,20 +209,15 @@ public class DirectoryListBot extends Bots.BaseBot { new UiScrollable(docList).scrollIntoView(new UiSelector().text(label)); UiObject2 parent = mDevice.findObject(list).findObject(selector); UiObject2 selectionHotspot = null; for (int i = 1; i <= MAX_LAYOUT_LEVEL; i++) { parent = parent.getParent(); if (mItemRootId.equals(parent.getResourceName())) { selectionHotspot = parent.findObject(By.res(mIconId)); if (selectionHotspot != null) { break; } } return parent.findObject(By.res(mIconId)); } public void copyFilesToClipboard(String...labels) throws UiObjectNotFoundException { for (String label: labels) { selectDocument(label); } mDevice.pressKeyCode(KeyEvent.KEYCODE_C, KeyEvent.META_CTRL_ON); return selectionHotspot; } public void pasteFilesFromClipboard() { Loading @@ -248,21 +228,6 @@ public class DirectoryListBot extends Bots.BaseBot { return mDevice.wait(Until.findObject(By.text(message)), mTimeout); } public void clickSnackbarAction() throws UiObjectNotFoundException { UiObject snackbarAction = findObject(mTargetPackage + ":id/snackbar_action"); snackbarAction.click(); } public void waitForDeleteSnackbar() { mDevice.wait(Until.findObject(SNACK_DELETE), mTimeout); } public void waitForDeleteSnackbarGone() { // wait a little longer for snackbar to go away, as it disappears after a timeout. mDevice.wait(Until.gone(SNACK_DELETE), mTimeout * 2); } public void waitForDocument(String label) throws UiObjectNotFoundException { findDocument(label).waitForExists(mTimeout); } Loading Loading @@ -295,9 +260,8 @@ public class DirectoryListBot extends Bots.BaseBot { public boolean hasDocumentPreview(String label) { final BySelector list = By.res(mDirListId); final UiObject2 text = mDevice.findObject(list).findObject(By.text(label)); UiObject2 parent = text; UiObject2 parent = mDevice.findObject(list).findObject(By.text(label)); for (int i = 1; i <= MAX_LAYOUT_LEVEL; i++) { parent = parent.getParent(); if (mItemRootId.equals(parent.getResourceName())) { Loading Loading @@ -338,7 +302,7 @@ public class DirectoryListBot extends Bots.BaseBot { String assertSelectionText = numSelected + " selected"; UiObject2 selectionText = mDevice.wait( Until.findObject(By.text(assertSelectionText)), mTimeout); assertTrue(selectionText != null); assertNotNull(selectionText); } public void assertOrder(String[] dirs, String[] files) throws UiObjectNotFoundException { Loading