summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/com/android/documentsui/AbstractActionHandler.java9
-rw-r--r--src/com/android/documentsui/base/DocumentInfo.java5
-rw-r--r--src/com/android/documentsui/dirlist/DirectoryFragment.java13
-rw-r--r--src/com/android/documentsui/dirlist/SelectionMetadata.java4
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);
}
}