Merge "Don't show new-window item in Downloads per Gabe." into nyc-dev
diff --git a/core/java/android/os/storage/VolumeInfo.java b/core/java/android/os/storage/VolumeInfo.java
index 4b70649..5a98482 100644
--- a/core/java/android/os/storage/VolumeInfo.java
+++ b/core/java/android/os/storage/VolumeInfo.java
@@ -442,6 +442,7 @@
// note that docsui treats this as *force* show advanced. So sending
// false permits advanced to be shown based on user preferences.
intent.putExtra(DocumentsContract.EXTRA_SHOW_ADVANCED, isPrimary());
+ intent.putExtra(DocumentsContract.EXTRA_FANCY_FEATURES, true);
intent.putExtra(DocumentsContract.EXTRA_SHOW_FILESIZE, true);
return intent;
}
diff --git a/core/java/android/provider/DocumentsContract.java b/core/java/android/provider/DocumentsContract.java
index aba3972..1158776 100644
--- a/core/java/android/provider/DocumentsContract.java
+++ b/core/java/android/provider/DocumentsContract.java
@@ -99,6 +99,9 @@
public static final String EXTRA_SHOW_FILESIZE = "android.content.extra.SHOW_FILESIZE";
/** {@hide} */
+ public static final String EXTRA_FANCY_FEATURES = "android.content.extra.FANCY";
+
+ /** {@hide} */
public static final String EXTRA_TARGET_URI = "android.content.extra.TARGET_URI";
/**
diff --git a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
index 7444797..9d4b50c 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
@@ -218,23 +218,18 @@
state.showAdvanced = Shared.shouldShowDeviceRoot(this, intent);
// Menu option is shown for whitelisted intents if advanced roots are not shown by default.
state.showAdvancedOption = !state.showAdvanced && (
- !directLaunch(intent) ||
- state.action == ACTION_OPEN ||
- state.action == ACTION_CREATE ||
- state.action == ACTION_OPEN_TREE ||
- state.action == ACTION_PICK_COPY_DESTINATION ||
- state.action == ACTION_GET_CONTENT);
+ Shared.shouldShowFancyFeatures(this)
+ || state.action == ACTION_OPEN
+ || state.action == ACTION_CREATE
+ || state.action == ACTION_OPEN_TREE
+ || state.action == ACTION_PICK_COPY_DESTINATION
+ || state.action == ACTION_GET_CONTENT);
if (DEBUG) Log.d(mTag, "Created new state object: " + state);
return state;
}
- private static boolean directLaunch(Intent intent) {
- return LauncherActivity.isLaunchUri(intent.getData())
- && intent.hasExtra(Shared.EXTRA_STACK);
- }
-
public void setRootsDrawerOpen(boolean open) {
mNavigator.revealRootsDrawer(open);
}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java b/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java
index 84fc6fe..57c14e9 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java
@@ -201,7 +201,7 @@
createDir.setEnabled(canCreateDirectory());
pasteFromCb.setEnabled(mClipper.hasItemsToPaste());
settings.setVisible(root.hasSettings());
- newWindow.setVisible(true);
+ newWindow.setVisible(Shared.shouldShowFancyFeatures(this));
Menus.disableHiddenItems(menu, pasteFromCb);
// It hides icon if searching in progress
diff --git a/packages/DocumentsUI/src/com/android/documentsui/LauncherActivity.java b/packages/DocumentsUI/src/com/android/documentsui/LauncherActivity.java
index 5cb6ca3..5e27e78 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/LauncherActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/LauncherActivity.java
@@ -25,6 +25,7 @@
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
+import android.provider.DocumentsContract;
import android.support.annotation.Nullable;
import android.util.Log;
@@ -44,6 +45,15 @@
private static final String LAUNCH_CONTROL_AUTHORITY = "com.android.documentsui.launchControl";
private static final String TAG = "LauncherActivity";
+ // Array of boolean extras that should be copied when creating new launch intents.
+ // Missing intents will be ignored.
+ private static final String[] PERSISTENT_BOOLEAN_EXTRAS = {
+ DocumentsContract.EXTRA_SHOW_FILESIZE,
+ DocumentsContract.EXTRA_SHOW_ADVANCED,
+ DocumentsContract.EXTRA_FANCY_FEATURES,
+ Shared.EXTRA_PRODUCTIVITY_MODE
+ };
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -94,11 +104,7 @@
// Relay any config overrides bits present in the original intent.
Intent original = activity.getIntent();
if (original != null) {
- if (original.hasExtra(Shared.EXTRA_PRODUCTIVITY_MODE)) {
- intent.putExtra(
- Shared.EXTRA_PRODUCTIVITY_MODE,
- original.getBooleanExtra(Shared.EXTRA_PRODUCTIVITY_MODE, false));
- }
+ copyExtras(original, intent);
if (original.hasExtra(Intent.EXTRA_TITLE)) {
intent.putExtra(
Intent.EXTRA_TITLE,
@@ -108,6 +114,14 @@
return intent;
}
+ private static void copyExtras(Intent src, Intent dest) {
+ for (String extra : PERSISTENT_BOOLEAN_EXTRAS) {
+ if (src.hasExtra(extra)) {
+ dest.putExtra(extra, src.getBooleanExtra(extra, false));
+ }
+ }
+ }
+
private static Uri buildLaunchUri() {
return new Uri.Builder()
.authority(LAUNCH_CONTROL_AUTHORITY)
diff --git a/packages/DocumentsUI/src/com/android/documentsui/Shared.java b/packages/DocumentsUI/src/com/android/documentsui/Shared.java
index 784d30f..145637c 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/Shared.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/Shared.java
@@ -16,6 +16,7 @@
package com.android.documentsui;
+import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
@@ -183,13 +184,6 @@
/*
* Returns true if app is running in "productivity mode".
*/
- public static boolean productivityMode(Context context) {
- return context.getResources().getBoolean(R.bool.productivity_device);
- }
-
- /*
- * Returns true if app is running in "productivity mode".
- */
private static boolean isProductivityMode(Context context, Intent intent) {
return intent.getBooleanExtra(
Shared.EXTRA_PRODUCTIVITY_MODE,
@@ -210,4 +204,13 @@
return isProductivityMode(context, intent)
|| intent.getBooleanExtra(DocumentsContract.EXTRA_SHOW_ADVANCED, false);
}
+
+ /**
+ * Returns true if device root should be shown.
+ */
+ public static boolean shouldShowFancyFeatures(Activity activity) {
+ Intent intent = activity.getIntent();
+ return isProductivityMode(activity, intent)
+ || intent.getBooleanExtra(DocumentsContract.EXTRA_FANCY_FEATURES, false);
+ }
}
diff --git a/packages/MtpDocumentsProvider/src/com/android/mtp/ReceiverActivity.java b/packages/MtpDocumentsProvider/src/com/android/mtp/ReceiverActivity.java
index 84745b2..366add0b 100644
--- a/packages/MtpDocumentsProvider/src/com/android/mtp/ReceiverActivity.java
+++ b/packages/MtpDocumentsProvider/src/com/android/mtp/ReceiverActivity.java
@@ -49,6 +49,7 @@
final Intent intent = new Intent(DocumentsContract.ACTION_BROWSE);
intent.setData(uri);
intent.addCategory(Intent.CATEGORY_DEFAULT);
+ intent.putExtra(DocumentsContract.EXTRA_FANCY_FEATURES, true);
this.startActivity(intent);
} catch (IOException exception) {
Log.e(MtpDocumentsProvider.TAG, "Failed to open device", exception);