diff --git a/src/com/android/documentsui/MenuManager.java b/src/com/android/documentsui/MenuManager.java
index 0489123..0d9b188 100644
--- a/src/com/android/documentsui/MenuManager.java
+++ b/src/com/android/documentsui/MenuManager.java
@@ -303,12 +303,6 @@
             mActivity = activity;
         }
 
-        // TODO: Inject necessary deps directly into MenuManager, rather than
-        // getting this info indirectly via DirectoryDetails.
-        public boolean isProductivityModeEnabled() {
-            return Shared.isProductivityMode(mActivity);
-        }
-
         public boolean hasRootSettings() {
             return mActivity.getCurrentRoot().hasSettings();
         }
diff --git a/src/com/android/documentsui/base/Shared.java b/src/com/android/documentsui/base/Shared.java
index d8374a0..8e93587 100644
--- a/src/com/android/documentsui/base/Shared.java
+++ b/src/com/android/documentsui/base/Shared.java
@@ -231,17 +231,10 @@
     }
 
     /*
-     * Returns true if app is running in "productivity mode".
-     */
-    public static boolean isProductivityMode(Context context) {
-        return context.getResources().getBoolean(R.bool.productivity_device);
-    }
-
-    /*
      * Returns true if "Documents" root should be shown.
      */
     public static boolean shouldShowDocumentsRoot(Context context) {
-        return isProductivityMode(context);
+        return context.getResources().getBoolean(R.bool.productivity_device);
     }
 
     /*
diff --git a/src/com/android/documentsui/files/MenuManager.java b/src/com/android/documentsui/files/MenuManager.java
index e2ca4d7..522f448 100644
--- a/src/com/android/documentsui/files/MenuManager.java
+++ b/src/com/android/documentsui/files/MenuManager.java
@@ -135,7 +135,7 @@
 
     @Override
     protected void updateNewWindow(MenuItem newWindow) {
-        newWindow.setVisible(mDirDetails.isProductivityModeEnabled());
+        newWindow.setVisible(true);
     }
 
     @Override
diff --git a/tests/common/com/android/documentsui/testing/TestDirectoryDetails.java b/tests/common/com/android/documentsui/testing/TestDirectoryDetails.java
index a8a7645..a1b29cd 100644
--- a/tests/common/com/android/documentsui/testing/TestDirectoryDetails.java
+++ b/tests/common/com/android/documentsui/testing/TestDirectoryDetails.java
@@ -23,7 +23,6 @@
  */
 public class TestDirectoryDetails extends DirectoryDetails {
 
-    public boolean shouldShowFancyFeatures;
     public boolean isInRecents;
     public boolean hasRootSettings;
     public boolean hasItemsToPaste;
@@ -35,11 +34,6 @@
     }
 
     @Override
-    public boolean isProductivityModeEnabled() {
-        return shouldShowFancyFeatures;
-    }
-
-    @Override
     public boolean hasRootSettings() {
         return hasRootSettings;
     }
diff --git a/tests/unit/com/android/documentsui/files/MenuManagerTest.java b/tests/unit/com/android/documentsui/files/MenuManagerTest.java
index bad3e66..473f3a8 100644
--- a/tests/unit/com/android/documentsui/files/MenuManagerTest.java
+++ b/tests/unit/com/android/documentsui/files/MenuManagerTest.java
@@ -197,14 +197,6 @@
     }
 
     @Test
-    public void testOptionMenu_shouldShowFancyFeatures() {
-        dirDetails.shouldShowFancyFeatures = true;
-        mgr.updateOptionMenu(testMenu);
-
-        newWindow.assertVisible();
-    }
-
-    @Test
     public void testInflateContextMenu_Files() {
         TestMenuInflater inflater = new TestMenuInflater();
 
