diff options
4 files changed, 19 insertions, 12 deletions
diff --git a/src/com/android/documentsui/AbstractActionHandler.java b/src/com/android/documentsui/AbstractActionHandler.java index ba50cfb32..89e9bc2d6 100644 --- a/src/com/android/documentsui/AbstractActionHandler.java +++ b/src/com/android/documentsui/AbstractActionHandler.java @@ -21,6 +21,7 @@ import static com.android.documentsui.base.DocumentInfo.getCursorString; import static com.android.documentsui.base.SharedMinimal.DEBUG; import static com.android.documentsui.util.FlagUtils.isDesktopFileHandlingFlagEnabled; import static com.android.documentsui.util.FlagUtils.isUseSearchV2FlagEnabled; +import static com.android.documentsui.util.FlagUtils.isZipNgFlagEnabled; import android.app.PendingIntent; import android.content.ActivityNotFoundException; @@ -458,17 +459,17 @@ public abstract class AbstractActionHandler<T extends FragmentActivity & CommonA private boolean viewDocument(DocumentInfo doc) { if (doc.isPartial()) { - Log.w(TAG, "Can't view partial file."); + Log.w(TAG, "Cannot view partial file"); return false; } - if (doc.isInArchive()) { - Log.w(TAG, "Can't view files in archives."); + if (!isZipNgFlagEnabled() && doc.isInArchive()) { + Log.w(TAG, "Cannot view file in archive"); return false; } if (doc.isDirectory()) { - Log.w(TAG, "Can't view directories."); + Log.w(TAG, "Cannot view directory"); return true; } diff --git a/src/com/android/documentsui/base/DocumentInfo.java b/src/com/android/documentsui/base/DocumentInfo.java index ad09c45cf..6306f14f1 100644 --- a/src/com/android/documentsui/base/DocumentInfo.java +++ b/src/com/android/documentsui/base/DocumentInfo.java @@ -17,6 +17,7 @@ package com.android.documentsui.base; import static com.android.documentsui.base.SharedMinimal.DEBUG; +import static com.android.documentsui.util.FlagUtils.isZipNgFlagEnabled; import android.content.ContentProviderClient; import android.content.ContentResolver; @@ -319,7 +320,8 @@ public class DocumentInfo implements Durable, Parcelable { // Containers are documents which can be opened in DocumentsUI as folders. public boolean isContainer() { - return isDirectory() || (isArchive() && !isInArchive() && !isPartial()); + return isDirectory() || (isArchive() && !isPartial() && (isZipNgFlagEnabled() + || !isInArchive())); } public boolean isVirtual() { @@ -342,7 +344,6 @@ public class DocumentInfo implements Durable, Parcelable { return userId.buildDocumentUriAsUser(authority, documentId); } - /** * Returns a tree document uri representing this {@link DocumentInfo}. The URI may contain user * information. Use this when uri is needed externally. diff --git a/src/com/android/documentsui/dirlist/DirectoryFragment.java b/src/com/android/documentsui/dirlist/DirectoryFragment.java index 6de42db59..2ea906a60 100644 --- a/src/com/android/documentsui/dirlist/DirectoryFragment.java +++ b/src/com/android/documentsui/dirlist/DirectoryFragment.java @@ -23,6 +23,7 @@ import static com.android.documentsui.base.State.MODE_GRID; import static com.android.documentsui.base.State.MODE_LIST; import static com.android.documentsui.util.FlagUtils.isDesktopFileHandlingFlagEnabled; import static com.android.documentsui.util.FlagUtils.isUseMaterial3FlagEnabled; +import static com.android.documentsui.util.FlagUtils.isZipNgFlagEnabled; import android.app.ActivityManager; import android.content.BroadcastReceiver; @@ -946,11 +947,13 @@ public class DirectoryFragment extends Fragment implements SwipeRefreshLayout.On mSelectionMgr.copySelection(selection); final int id = item.getItemId(); - if (isDesktopFileHandlingFlagEnabled() && id == R.id.dir_menu_open) { - // On desktop, "open" is displayed in file management mode (i.e. `files.MenuManager`). - // This menu item behaves the same as double click on the menu item which is handled by - // onItemActivated but since onItemActivated requires a RecylcerView ItemDetails, we're - // using viewDocument that takes a Selection. + if ((isDesktopFileHandlingFlagEnabled() && id == R.id.dir_menu_open) + || (isZipNgFlagEnabled() && id == R.id.dir_menu_browse)) { + // The "Open" menu item is displayed in desktop mode. + // The "Browse" menu item is displayed for supported archives in advanced ZIP mode. + // These menu items behave the same as a double click on the matching document which + // is handled by onItemActivated but since onItemActivated requires a RecyclerView + // ItemDetails, we're using viewDocument that takes a Selection. viewDocument(selection); return true; } else if (id == R.id.action_menu_select || id == R.id.dir_menu_open) { diff --git a/src/com/android/documentsui/dirlist/SelectionMetadata.java b/src/com/android/documentsui/dirlist/SelectionMetadata.java index 0559a3b80..0d0644502 100644 --- a/src/com/android/documentsui/dirlist/SelectionMetadata.java +++ b/src/com/android/documentsui/dirlist/SelectionMetadata.java @@ -18,6 +18,7 @@ package com.android.documentsui.dirlist; import static com.android.documentsui.base.DocumentInfo.getCursorInt; import static com.android.documentsui.base.DocumentInfo.getCursorString; +import static com.android.documentsui.util.FlagUtils.isZipNgFlagEnabled; import android.database.Cursor; import android.provider.DocumentsContract.Document; @@ -184,6 +185,7 @@ public class SelectionMetadata extends SelectionObserver<String> @Override public boolean canOpen() { - return size() == 1 && mDirectoryCount == 0 && mInArchiveCount == 0 && mPartialCount == 0; + return mFileCount == 1 && mDirectoryCount == 0 && mPartialCount == 0 && ( + isZipNgFlagEnabled() || mInArchiveCount == 0); } } |