Loading src/com/android/documentsui/AbstractActionHandler.java +10 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.documentsui; import static com.android.documentsui.base.DocumentInfo.getCursorInt; import static com.android.documentsui.base.DocumentInfo.getCursorString; import static com.android.documentsui.base.SharedMinimal.DEBUG; import static com.android.documentsui.flags.Flags.desktopFileHandling; import android.app.PendingIntent; import android.content.ActivityNotFoundException; Loading Loading @@ -560,6 +561,15 @@ public abstract class AbstractActionHandler<T extends FragmentActivity & CommonA if (doc.isWriteSupported()) { flags |= Intent.FLAG_GRANT_WRITE_URI_PERMISSION; } // On desktop users expect files to open in a new window. if (desktopFileHandling()) { // The combination of NEW_DOCUMENT and MULTIPLE_TASK allows multiple instances of the // same activity to open in separate windows. flags |= Intent.FLAG_ACTIVITY_NEW_DOCUMENT | Intent.FLAG_ACTIVITY_MULTIPLE_TASK; // If the activity has documentLaunchMode="never", NEW_TASK forces the activity to still // open in a new window. flags |= Intent.FLAG_ACTIVITY_NEW_TASK; } intent.setFlags(flags); return intent; Loading tests/Android.bp +6 −4 Original line number Diff line number Diff line Loading @@ -25,12 +25,14 @@ java_defaults { ], static_libs: [ "androidx.test.rules", "androidx.test.espresso.core", "androidx.test.ext.truth", "androidx.test.rules", "androidx.test.uiautomator_uiautomator", "docsui-flags-aconfig-java-lib", "flag-junit", "guava", "mockito-target", "androidx.test.uiautomator_uiautomator", ], } Loading @@ -50,11 +52,11 @@ android_library { static_libs: [ "androidx.legacy_legacy-support-v4", "androidx.test.rules", "androidx.test.espresso.core", "androidx.test.rules", "androidx.test.uiautomator_uiautomator", "mockito-target", "ub-janktesthelper", "androidx.test.uiautomator_uiautomator", ], } Loading tests/unit/com/android/documentsui/files/ActionHandlerTest.java +35 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,9 @@ import android.content.ClipData; import android.content.Intent; import android.net.Uri; import android.os.Parcelable; import android.platform.test.annotations.DisableFlags; import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.SetFlagsRule; import android.provider.DocumentsContract; import android.provider.DocumentsContract.Path; import android.util.Pair; Loading @@ -59,6 +62,7 @@ import com.android.documentsui.base.DocumentInfo; import com.android.documentsui.base.DocumentStack; import com.android.documentsui.base.RootInfo; import com.android.documentsui.base.Shared; import com.android.documentsui.flags.Flags; import com.android.documentsui.inspector.InspectorActivity; import com.android.documentsui.testing.ClipDatas; import com.android.documentsui.testing.DocumentStackAsserts; Loading @@ -78,6 +82,7 @@ import com.google.common.collect.Lists; import org.junit.Before; import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; Loading @@ -103,6 +108,9 @@ public class ActionHandlerTest { private TestConfigStore mTestConfigStore; private boolean refreshAnswer = false; @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); @Parameter(0) public boolean isPrivateSpaceEnabled; Loading Loading @@ -156,6 +164,33 @@ public class ActionHandlerTest { assertEquals(expected.toString(), actual.toString()); } @Test @DisableFlags({Flags.FLAG_DESKTOP_FILE_HANDLING}) public void testOpenFileFlags() { mHandler.onDocumentOpened(TestEnv.FILE_GIF, com.android.documentsui.files.ActionHandler.VIEW_TYPE_PREVIEW, com.android.documentsui.files.ActionHandler.VIEW_TYPE_REGULAR, false); int expectedFlags = Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_GRANT_WRITE_URI_PERMISSION; Intent actual = mActivity.startActivity.getLastValue(); assertEquals(expectedFlags, actual.getFlags()); } @Test @EnableFlags({Flags.FLAG_DESKTOP_FILE_HANDLING}) public void testOpenFileFlagsDesktop() { mHandler.onDocumentOpened(TestEnv.FILE_GIF, com.android.documentsui.files.ActionHandler.VIEW_TYPE_PREVIEW, com.android.documentsui.files.ActionHandler.VIEW_TYPE_REGULAR, false); int expectedFlags = Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_ACTIVITY_NEW_DOCUMENT | Intent.FLAG_ACTIVITY_MULTIPLE_TASK | Intent.FLAG_ACTIVITY_NEW_TASK; Intent actual = mActivity.startActivity.getLastValue(); assertEquals(expectedFlags, actual.getFlags()); } @Test public void testSpringOpenDirectory() { mHandler.springOpenDirectory(TestEnv.FOLDER_0); Loading Loading
src/com/android/documentsui/AbstractActionHandler.java +10 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.documentsui; import static com.android.documentsui.base.DocumentInfo.getCursorInt; import static com.android.documentsui.base.DocumentInfo.getCursorString; import static com.android.documentsui.base.SharedMinimal.DEBUG; import static com.android.documentsui.flags.Flags.desktopFileHandling; import android.app.PendingIntent; import android.content.ActivityNotFoundException; Loading Loading @@ -560,6 +561,15 @@ public abstract class AbstractActionHandler<T extends FragmentActivity & CommonA if (doc.isWriteSupported()) { flags |= Intent.FLAG_GRANT_WRITE_URI_PERMISSION; } // On desktop users expect files to open in a new window. if (desktopFileHandling()) { // The combination of NEW_DOCUMENT and MULTIPLE_TASK allows multiple instances of the // same activity to open in separate windows. flags |= Intent.FLAG_ACTIVITY_NEW_DOCUMENT | Intent.FLAG_ACTIVITY_MULTIPLE_TASK; // If the activity has documentLaunchMode="never", NEW_TASK forces the activity to still // open in a new window. flags |= Intent.FLAG_ACTIVITY_NEW_TASK; } intent.setFlags(flags); return intent; Loading
tests/Android.bp +6 −4 Original line number Diff line number Diff line Loading @@ -25,12 +25,14 @@ java_defaults { ], static_libs: [ "androidx.test.rules", "androidx.test.espresso.core", "androidx.test.ext.truth", "androidx.test.rules", "androidx.test.uiautomator_uiautomator", "docsui-flags-aconfig-java-lib", "flag-junit", "guava", "mockito-target", "androidx.test.uiautomator_uiautomator", ], } Loading @@ -50,11 +52,11 @@ android_library { static_libs: [ "androidx.legacy_legacy-support-v4", "androidx.test.rules", "androidx.test.espresso.core", "androidx.test.rules", "androidx.test.uiautomator_uiautomator", "mockito-target", "ub-janktesthelper", "androidx.test.uiautomator_uiautomator", ], } Loading
tests/unit/com/android/documentsui/files/ActionHandlerTest.java +35 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,9 @@ import android.content.ClipData; import android.content.Intent; import android.net.Uri; import android.os.Parcelable; import android.platform.test.annotations.DisableFlags; import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.SetFlagsRule; import android.provider.DocumentsContract; import android.provider.DocumentsContract.Path; import android.util.Pair; Loading @@ -59,6 +62,7 @@ import com.android.documentsui.base.DocumentInfo; import com.android.documentsui.base.DocumentStack; import com.android.documentsui.base.RootInfo; import com.android.documentsui.base.Shared; import com.android.documentsui.flags.Flags; import com.android.documentsui.inspector.InspectorActivity; import com.android.documentsui.testing.ClipDatas; import com.android.documentsui.testing.DocumentStackAsserts; Loading @@ -78,6 +82,7 @@ import com.google.common.collect.Lists; import org.junit.Before; import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; Loading @@ -103,6 +108,9 @@ public class ActionHandlerTest { private TestConfigStore mTestConfigStore; private boolean refreshAnswer = false; @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); @Parameter(0) public boolean isPrivateSpaceEnabled; Loading Loading @@ -156,6 +164,33 @@ public class ActionHandlerTest { assertEquals(expected.toString(), actual.toString()); } @Test @DisableFlags({Flags.FLAG_DESKTOP_FILE_HANDLING}) public void testOpenFileFlags() { mHandler.onDocumentOpened(TestEnv.FILE_GIF, com.android.documentsui.files.ActionHandler.VIEW_TYPE_PREVIEW, com.android.documentsui.files.ActionHandler.VIEW_TYPE_REGULAR, false); int expectedFlags = Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_GRANT_WRITE_URI_PERMISSION; Intent actual = mActivity.startActivity.getLastValue(); assertEquals(expectedFlags, actual.getFlags()); } @Test @EnableFlags({Flags.FLAG_DESKTOP_FILE_HANDLING}) public void testOpenFileFlagsDesktop() { mHandler.onDocumentOpened(TestEnv.FILE_GIF, com.android.documentsui.files.ActionHandler.VIEW_TYPE_PREVIEW, com.android.documentsui.files.ActionHandler.VIEW_TYPE_REGULAR, false); int expectedFlags = Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_ACTIVITY_NEW_DOCUMENT | Intent.FLAG_ACTIVITY_MULTIPLE_TASK | Intent.FLAG_ACTIVITY_NEW_TASK; Intent actual = mActivity.startActivity.getLastValue(); assertEquals(expectedFlags, actual.getFlags()); } @Test public void testSpringOpenDirectory() { mHandler.springOpenDirectory(TestEnv.FOLDER_0); Loading