Delete orig DocumentsUI.

Bug: 29224737
Change-Id: I6d6327918adba699d2ed3652bc2dbea27f872284
diff --git a/packages/DocumentsUI/Android.mk b/packages/DocumentsUI/Android.mk
deleted file mode 100644
index 9d44a6d..0000000
--- a/packages/DocumentsUI/Android.mk
+++ /dev/null
@@ -1,46 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-LOCAL_PRIVILEGED_MODULE := true
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4
-# The design lib requires that the client package use appcompat themes.
-LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-appcompat
-LOCAL_STATIC_JAVA_LIBRARIES += android-support-v13
-# Supplies material design components, e.g. Snackbar.
-LOCAL_STATIC_JAVA_LIBRARIES += android-support-design
-LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-recyclerview
-LOCAL_STATIC_JAVA_LIBRARIES += guava
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-# Not quite sure why it is necessary to explicitly pull in resources from the
-# appcompat lib, but the demo code indicates it's necessary (see
-# development/samples/Support7Demos/Android.mk)
-LOCAL_RESOURCE_DIR += \
-  frameworks/support/v7/appcompat/res \
-  frameworks/support/design/res \
-  frameworks/support/v7/recyclerview/res
-
-# Again, required to pull in appcompat resources.  See abovementioned demo code.
-LOCAL_AAPT_FLAGS := \
-  --auto-add-overlay \
-  --extra-packages android.support.v7.appcompat \
-  --extra-packages android.support.design \
-  --extra-packages android.support.v7.recyclerview
-
-LOCAL_JACK_FLAGS := \
-  -D jack.optimization.inner-class.accessors=true
-
-# Only enable asserts on userdebug/eng builds
-ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
-LOCAL_JACK_FLAGS += -D jack.assert.policy=always
-endif
-
-LOCAL_PACKAGE_NAME := DocumentsUI
-LOCAL_CERTIFICATE := platform
-
-include $(BUILD_PACKAGE)
-include $(call all-makefiles-under, $(LOCAL_PATH))
diff --git a/packages/DocumentsUI/AndroidManifest.xml b/packages/DocumentsUI/AndroidManifest.xml
deleted file mode 100644
index b224510..0000000
--- a/packages/DocumentsUI/AndroidManifest.xml
+++ /dev/null
@@ -1,126 +0,0 @@
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        package="com.android.documentsui">
-
-    <uses-permission android:name="android.permission.GET_APP_GRANTED_URI_PERMISSIONS" />
-    <uses-permission android:name="android.permission.MANAGE_DOCUMENTS" />
-    <uses-permission android:name="android.permission.REMOVE_TASKS" />
-    <uses-permission android:name="android.permission.WAKE_LOCK" />
-    <uses-permission android:name="android.permission.CACHE_CONTENT" />
-    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
-
-    <application
-        android:name=".DocumentsApplication"
-        android:label="@string/app_label"
-        android:icon="@mipmap/ic_app_icon"
-        android:supportsRtl="true">
-
-        <activity
-            android:name=".DocumentsActivity"
-            android:theme="@style/DocumentsTheme"
-            android:icon="@drawable/ic_doc_text">
-            <intent-filter>
-                <action android:name="android.intent.action.OPEN_DOCUMENT" />
-                <category android:name="android.intent.category.DEFAULT" />
-                <category android:name="android.intent.category.OPENABLE" />
-                <data android:mimeType="*/*" />
-            </intent-filter>
-            <intent-filter>
-                <action android:name="android.intent.action.CREATE_DOCUMENT" />
-                <category android:name="android.intent.category.DEFAULT" />
-                <category android:name="android.intent.category.OPENABLE" />
-                <data android:mimeType="*/*" />
-            </intent-filter>
-            <intent-filter android:priority="100">
-                <action android:name="android.intent.action.GET_CONTENT" />
-                <category android:name="android.intent.category.DEFAULT" />
-                <category android:name="android.intent.category.OPENABLE" />
-                <data android:mimeType="*/*" />
-            </intent-filter>
-            <intent-filter>
-                <action android:name="android.intent.action.OPEN_DOCUMENT_TREE" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-        </activity>
-
-        <activity
-            android:name=".LauncherActivity"
-            android:label="@string/downloads_label"
-            android:icon="@mipmap/ic_launcher_downloads"
-            android:theme="@android:style/Theme.NoDisplay">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
-        </activity>
-
-        <activity
-            android:name=".FilesActivity"
-            android:label="@string/downloads_label"
-            android:icon="@mipmap/ic_launcher_downloads"
-            android:documentLaunchMode="intoExisting"
-            android:theme="@style/DocumentsTheme">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-            </intent-filter>
-            <intent-filter>
-                <action android:name="android.provider.action.BROWSE" />
-                <category android:name="android.intent.category.DEFAULT" />
-                <data android:mimeType="vnd.android.document/root" />
-            </intent-filter>
-            <intent-filter>
-                <action android:name="android.intent.action.VIEW_DOWNLOADS" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-            <intent-filter>
-                <action android:name="android.intent.action.VIEW" />
-                <category android:name="android.intent.category.DEFAULT" />
-                <data android:mimeType="application/zip"
-                    android:host="com.android.providers.downloads.documents"
-                    android:scheme="content" />
-                <data android:mimeType="application/x-zip"
-                    android:host="com.android.providers.downloads.documents"
-                    android:scheme="content" />
-                <data android:mimeType="application/x-zip-compressed"
-                    android:host="com.android.providers.downloads.documents"
-                    android:scheme="content" />
-            </intent-filter>
-        </activity>
-
-        <activity
-            android:name=".OpenExternalDirectoryActivity"
-            android:theme="@android:style/Theme.Translucent.NoTitleBar">
-            <intent-filter>
-                <action android:name="android.os.storage.action.OPEN_EXTERNAL_DIRECTORY" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-        </activity>
-
-        <provider
-            android:name=".RecentsProvider"
-            android:authorities="com.android.documentsui.recents"
-            android:exported="false"/>
-
-        <receiver android:name=".PackageReceiver">
-            <intent-filter>
-                <action android:name="android.intent.action.PACKAGE_FULLY_REMOVED" />
-                <action android:name="android.intent.action.PACKAGE_DATA_CLEARED" />
-                <data android:scheme="package" />
-            </intent-filter>
-        </receiver>
-
-        <receiver android:name=".BootReceiver" android:enabled="false">
-            <intent-filter>
-                <action android:name="android.intent.action.BOOT_COMPLETED" />
-            </intent-filter>
-        </receiver>
-
-        <!-- Run FileOperationService in a separate process so that we can use FileLock class to
-            wait until jumbo clip is done writing to disk before reading it. See ClipStorage for
-            details. -->
-        <service
-            android:name=".services.FileOperationService"
-            android:exported="false"
-            android:process=":com.android.documentsui.services">
-        </service>
-    </application>
-</manifest>
diff --git a/packages/DocumentsUI/MOVED b/packages/DocumentsUI/MOVED
new file mode 100644
index 0000000..d1dc514
--- /dev/null
+++ b/packages/DocumentsUI/MOVED
@@ -0,0 +1 @@
+../../../../packages/apps/DocumentsUI
diff --git a/packages/DocumentsUI/app-perf-tests/Android.mk b/packages/DocumentsUI/app-perf-tests/Android.mk
deleted file mode 100644
index 3f12906..0000000
--- a/packages/DocumentsUI/app-perf-tests/Android.mk
+++ /dev/null
@@ -1,18 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-#LOCAL_SDK_VERSION := current
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-
-LOCAL_JAVA_LIBRARIES := android-support-v4 android.test.runner
-LOCAL_STATIC_JAVA_LIBRARIES := mockito-target ub-uiautomator
-
-LOCAL_PACKAGE_NAME := DocumentsUIAppPerfTests
-LOCAL_INSTRUMENTATION_FOR := DocumentsUI
-
-LOCAL_CERTIFICATE := platform
-
-include $(BUILD_PACKAGE)
-
diff --git a/packages/DocumentsUI/app-perf-tests/AndroidManifest.xml b/packages/DocumentsUI/app-perf-tests/AndroidManifest.xml
deleted file mode 100644
index 0013b6b..0000000
--- a/packages/DocumentsUI/app-perf-tests/AndroidManifest.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.documentsui.appperftests">
-
-    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
-
-    <application>
-        <uses-library android:name="android.test.runner" />
-
-        <activity
-            android:name="com.android.documentsui.LauncherActivity" />
-    </application>
-
-    <!-- This package instrumentates itself, so the DocumentsUI process can be killed without
-         killing the testing package. -->
-    <instrumentation android:name="android.test.InstrumentationTestRunner"
-        android:targetPackage="com.android.documentsui.appperftests"
-        android:label="App performance tests for DocumentsUI" />
-
-</manifest>
diff --git a/packages/DocumentsUI/app-perf-tests/src/com/android/documentsui/FilesAppPerfTest.java b/packages/DocumentsUI/app-perf-tests/src/com/android/documentsui/FilesAppPerfTest.java
deleted file mode 100644
index ce2fc13..0000000
--- a/packages/DocumentsUI/app-perf-tests/src/com/android/documentsui/FilesAppPerfTest.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.app.Activity;
-import android.app.ActivityManager;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.os.Bundle;
-import android.provider.DocumentsContract;
-import android.support.test.uiautomator.UiDevice;
-import android.test.InstrumentationTestCase;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.util.Log;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-
-@LargeTest
-public class FilesAppPerfTest extends InstrumentationTestCase {
-
-    // Keys used to report metrics to APCT.
-    private static final String KEY_FILES_COLD_START_PERFORMANCE_MEDIAN =
-            "files-cold-start-performance-median";
-    private static final String KEY_FILES_WARM_START_PERFORMANCE_MEDIAN =
-            "files-warm-start-performance-median";
-
-    private static final String TARGET_PACKAGE = "com.android.documentsui";
-
-    private static final int NUM_MEASUREMENTS = 10;
-
-    private LauncherActivity mActivity;
-    private UiDevice mDevice;
-
-    @Override
-    public void setUp() {
-        mDevice = UiDevice.getInstance(getInstrumentation());
-    }
-
-    public void testFilesColdStartPerformance() throws Exception {
-        runFilesStartPerformanceTest(true);
-    }
-
-    public void testFilesWarmStartPerformance() throws Exception {
-        runFilesStartPerformanceTest(false);
-    }
-
-    public void runFilesStartPerformanceTest(boolean cold) throws Exception {
-        long[] measurements = new long[NUM_MEASUREMENTS];
-        for (int i = 0; i < NUM_MEASUREMENTS; i++) {
-            if (cold) {
-                // Kill all providers, as well as DocumentsUI to measure a cold start.
-                killProviders();
-                mDevice.executeShellCommand("am force-stop " + TARGET_PACKAGE);
-            }
-            mDevice.waitForIdle();
-
-            LauncherActivity.testCaseLatch = new CountDownLatch(1);
-            mActivity = launchActivity(getInstrumentation().getTargetContext().getPackageName(),
-                    LauncherActivity.class, null);
-            LauncherActivity.testCaseLatch.await();
-            measurements[i] = LauncherActivity.measurement;
-        }
-
-        reportMetrics(cold ? KEY_FILES_COLD_START_PERFORMANCE_MEDIAN
-                : KEY_FILES_WARM_START_PERFORMANCE_MEDIAN, measurements);
-    }
-
-    private void reportMetrics(String key, long[] measurements) {
-        final Bundle status = new Bundle();
-        Arrays.sort(measurements);
-        final long median = measurements[NUM_MEASUREMENTS / 2 - 1];
-        status.putDouble(key, median);
-
-        getInstrumentation().sendStatus(Activity.RESULT_OK, status);
-    }
-
-    private void killProviders() throws Exception {
-        final Context context = getInstrumentation().getContext();
-        final PackageManager pm = context.getPackageManager();
-        final ActivityManager am = (ActivityManager) context.getSystemService(
-                Context.ACTIVITY_SERVICE);
-        final Intent intent = new Intent(DocumentsContract.PROVIDER_INTERFACE);
-        final List<ResolveInfo> providers = pm.queryIntentContentProviders(intent, 0);
-        for (ResolveInfo info : providers) {
-            final String packageName = info.providerInfo.packageName;
-            am.killBackgroundProcesses(packageName);
-        }
-    }
-}
diff --git a/packages/DocumentsUI/app-perf-tests/src/com/android/documentsui/LauncherActivity.java b/packages/DocumentsUI/app-perf-tests/src/com/android/documentsui/LauncherActivity.java
deleted file mode 100644
index 21fc52e..0000000
--- a/packages/DocumentsUI/app-perf-tests/src/com/android/documentsui/LauncherActivity.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.Shared.EXTRA_BENCHMARK;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.os.Bundle;
-import android.os.Handler;
-import android.util.Log;
-
-import java.util.concurrent.CountDownLatch;
-
-public class LauncherActivity extends Activity {
-    private static final String TARGET_PACKAGE = "com.android.documentsui";
-    private static final int BENCHMARK_REQUEST_CODE = 1986;
-
-    public static CountDownLatch testCaseLatch = null;
-    public static long measurement = -1;
-
-    private long mStartTime = -1;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        new Handler().post(new Runnable() {
-            @Override public void run() {
-                final Intent intent = new Intent("android.intent.action.OPEN_DOCUMENT");
-                intent.addCategory(Intent.CATEGORY_OPENABLE);
-                intent.putExtra(EXTRA_BENCHMARK, true);
-                intent.setType("*/*");
-
-                mStartTime = System.currentTimeMillis();
-                startActivityForResult(intent, BENCHMARK_REQUEST_CODE);
-            }
-        });
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        if (requestCode == BENCHMARK_REQUEST_CODE) {
-            measurement = System.currentTimeMillis() - mStartTime;
-            testCaseLatch.countDown();
-            finish();
-        }
-    }
-}
diff --git a/packages/DocumentsUI/lint.xml b/packages/DocumentsUI/lint.xml
deleted file mode 100644
index 09661ba..0000000
--- a/packages/DocumentsUI/lint.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<lint>
-    <!--
-        Lint configuration for the framework-lint tool (go/fwlint).  See
-        http://tools.android.com/tips/lint for full docs on the lint tool.
-    -->
-
-    <!-- min-sdk doesn't apply to platform apps. -->
-    <issue id="UsesMinSdkAttributes" severity="ignore" />
-
-    <!-- Protected permissions don't apply to system apps. -->
-    <issue id="ProtectedPermissions" severity="ignore" />
-
-    <!-- Other recommended suppressions copied from go/fwlint. -->
-    <issue id="Assert" severity="ignore" />
-    <issue id="ClickableViewAccessibility" severity="ignore" />
-    <issue id="GoogleAppIndexingWarning" severity="ignore" />
-    <issue id="MissingPermission" severity="ignore" />
-    <issue id="ParcelClassLoader" severity="ignore" />
-    <issue id="ParcelCreator" severity="ignore" />
-    <issue id="Registered" severity="ignore" />
-    <issue id="RtlHardcoded" severity="ignore" />
-    <issue id="ShiftFlags" severity="ignore" />
-    <issue id="SuspiciousImport" severity="ignore" />
-
-    <!-- Don't lint automatically translated strings. -->
-    <issue id="all">
-      <ignore path="res/values-*/strings.xml" />
-    </issue>
-
-    <!-- Don't warn about missing translations. -->
-    <issue id="MissingTranslation">
-      <ignore path="res/values/strings.xml" />
-    </issue>
-    
-</lint>
diff --git a/packages/DocumentsUI/perf-tests/Android.mk b/packages/DocumentsUI/perf-tests/Android.mk
deleted file mode 100644
index 39a08f7..0000000
--- a/packages/DocumentsUI/perf-tests/Android.mk
+++ /dev/null
@@ -1,22 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
-    $(call all-java-files-under, ../tests/src/com/android/documentsui/bots) \
-    ../tests/src/com/android/documentsui/ActivityTest.java \
-    ../tests/src/com/android/documentsui/DocumentsProviderHelper.java \
-    ../tests/src/com/android/documentsui/StubProvider.java
-
-LOCAL_JAVA_LIBRARIES := android-support-v4 android.test.runner
-LOCAL_STATIC_JAVA_LIBRARIES := mockito-target ub-uiautomator ub-janktesthelper espresso-core
-
-LOCAL_PACKAGE_NAME := DocumentsUIPerfTests
-LOCAL_INSTRUMENTATION_FOR := DocumentsUI
-
-LOCAL_CERTIFICATE := platform
-
-include $(BUILD_PACKAGE)
-
diff --git a/packages/DocumentsUI/perf-tests/AndroidManifest.xml b/packages/DocumentsUI/perf-tests/AndroidManifest.xml
deleted file mode 100644
index 97353e7..0000000
--- a/packages/DocumentsUI/perf-tests/AndroidManifest.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.documentsui.perftests">
-
-    <application>
-        <uses-library android:name="android.test.runner" />
-        <provider
-            android:name="com.android.documentsui.StressProvider"
-            android:authorities="com.android.documentsui.stressprovider"
-            android:exported="true"
-            android:grantUriPermissions="true"
-            android:permission="android.permission.MANAGE_DOCUMENTS"
-            android:enabled="true">
-            <intent-filter>
-                <action android:name="android.content.action.DOCUMENTS_PROVIDER" />
-            </intent-filter>
-        </provider>
-    </application>
-
-    <instrumentation android:name="android.test.InstrumentationTestRunner"
-        android:targetPackage="com.android.documentsui"
-        android:label="Performance tests for DocumentsUI" />
-
-</manifest>
diff --git a/packages/DocumentsUI/perf-tests/res/raw/earth_small.jpg b/packages/DocumentsUI/perf-tests/res/raw/earth_small.jpg
deleted file mode 100644
index dd2da3e..0000000
--- a/packages/DocumentsUI/perf-tests/res/raw/earth_small.jpg
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java b/packages/DocumentsUI/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java
deleted file mode 100644
index bf056f1..0000000
--- a/packages/DocumentsUI/perf-tests/src/com/android/documentsui/FilesActivityPerfTest.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.StressProvider.DEFAULT_AUTHORITY;
-import static com.android.documentsui.StressProvider.STRESS_ROOT_0_ID;
-import static com.android.documentsui.StressProvider.STRESS_ROOT_1_ID;
-
-import android.app.Activity;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.RemoteException;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.util.Log;
-import android.view.KeyEvent;
-
-import com.android.documentsui.model.RootInfo;
-import com.android.documentsui.EventListener;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Random;
-import java.util.concurrent.CountDownLatch;
-
-@LargeTest
-public class FilesActivityPerfTest extends ActivityTest<FilesActivity> {
-
-    // Constants starting with KEY_ are used to report metrics to APCT.
-    private static final String KEY_FILES_LISTED_PERFORMANCE_FIRST =
-            "files-listed-performance-first";
-
-    private static final String KEY_FILES_LISTED_PERFORMANCE_MEDIAN =
-            "files-listed-performance-median";
-
-    private static final String TESTED_URI =
-            "content://com.android.documentsui.stressprovider/document/STRESS_ROOT_1_DOC";
-
-    private static final int NUM_MEASUREMENTS = 10;
-
-    public FilesActivityPerfTest() {
-        super(FilesActivity.class);
-    }
-
-    @Override
-    protected RootInfo getInitialRoot() {
-        return rootDir0;
-    }
-
-    @Override
-    protected String getTestingProviderAuthority() {
-        return DEFAULT_AUTHORITY;
-    }
-
-    @Override
-    protected void setupTestingRoots() throws RemoteException {
-        rootDir0 = mDocsHelper.getRoot(STRESS_ROOT_0_ID);
-        rootDir1 = mDocsHelper.getRoot(STRESS_ROOT_1_ID);
-    }
-
-    @Override
-    public void initTestFiles() throws RemoteException {
-        // Nothing to create, already done by StressProvider.
-    }
-
-    public void testFilesListedPerformance() throws Exception {
-        final BaseActivity activity = getActivity();
-
-        final List<Long> measurements = new ArrayList<Long>();
-        EventListener listener;
-        for (int i = 0; i < 10; i++) {
-            final CountDownLatch signal = new CountDownLatch(1);
-            listener = new EventListener() {
-                @Override
-                public void onDirectoryNavigated(Uri uri) {
-                    if (uri != null && TESTED_URI.equals(uri.toString())) {
-                        mStartTime = System.currentTimeMillis();
-                    } else {
-                        mStartTime = -1;
-                    }
-                }
-
-                @Override
-                public void onDirectoryLoaded(Uri uri) {
-                    if (uri == null || !TESTED_URI.equals(uri.toString())) {
-                        return;
-                    }
-                    assertTrue(mStartTime != -1);
-                    getInstrumentation().waitForIdle(new Runnable() {
-                        @Override
-                        public void run() {
-                            assertTrue(mStartTime != -1);
-                            measurements.add(System.currentTimeMillis() - mStartTime);
-                            signal.countDown();
-                        }
-                    });
-                }
-
-                private long mStartTime = -1;
-            };
-
-            try {
-                activity.addEventListener(listener);
-                bots.roots.openRoot(STRESS_ROOT_1_ID);
-                signal.await();
-            } finally {
-                activity.removeEventListener(listener);
-            }
-
-            assertEquals(i + 1, measurements.size());
-
-            // Go back to the empty root.
-            bots.roots.openRoot(STRESS_ROOT_0_ID);
-        }
-
-        assertEquals(NUM_MEASUREMENTS, measurements.size());
-
-        final Bundle status = new Bundle();
-        status.putDouble(KEY_FILES_LISTED_PERFORMANCE_FIRST, measurements.get(0));
-
-        final Long[] rawMeasurements = measurements.toArray(new Long[NUM_MEASUREMENTS]);
-        Arrays.sort(rawMeasurements);
-
-        final long median = rawMeasurements[NUM_MEASUREMENTS / 2 - 1];
-        status.putDouble(KEY_FILES_LISTED_PERFORMANCE_MEDIAN, median);
-
-        getInstrumentation().sendStatus(Activity.RESULT_OK, status);
-    }
-}
diff --git a/packages/DocumentsUI/perf-tests/src/com/android/documentsui/FilesJankPerfTest.java b/packages/DocumentsUI/perf-tests/src/com/android/documentsui/FilesJankPerfTest.java
deleted file mode 100644
index 9925d5b..0000000
--- a/packages/DocumentsUI/perf-tests/src/com/android/documentsui/FilesJankPerfTest.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.StressProvider.DEFAULT_AUTHORITY;
-import static com.android.documentsui.StressProvider.STRESS_ROOT_0_ID;
-import static com.android.documentsui.StressProvider.STRESS_ROOT_2_ID;
-
-import android.app.Activity;
-import android.os.RemoteException;
-import android.test.suitebuilder.annotation.LargeTest;
-
-import android.content.Intent;
-import android.content.Context;
-import android.support.test.jank.JankTest;
-import android.support.test.jank.JankTestBase;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.jank.GfxMonitor;
-import android.support.test.uiautomator.UiScrollable;
-import android.util.Log;
-
-import com.android.documentsui.FilesActivity;
-import com.android.documentsui.bots.RootsListBot;
-import com.android.documentsui.bots.DirectoryListBot;
-
-@LargeTest
-public class FilesJankPerfTest extends JankTestBase {
-    private static final String DOCUMENTSUI_PACKAGE = "com.android.documentsui";
-    private static final int MAX_FLINGS = 10;
-    private static final int BOT_TIMEOUT = 5000;
-
-    private RootsListBot mRootsListBot;
-    private DirectoryListBot mDirListBot;
-    private Activity mActivity = null;
-
-    public void setUpInLoop() {
-        final UiDevice device = UiDevice.getInstance(getInstrumentation());
-        final Context context = getInstrumentation().getTargetContext();
-        mRootsListBot = new RootsListBot(device, context, BOT_TIMEOUT);
-        mDirListBot = new DirectoryListBot(device, context, BOT_TIMEOUT);
-
-        final Intent intent = new Intent(context, FilesActivity.class);
-        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        mActivity = getInstrumentation().startActivitySync(intent);
-        try {
-            device.setOrientationNatural();
-        } catch (RemoteException e) {
-        }
-    }
-
-    public void tearDownInLoop() {
-        if (mActivity != null) {
-            mActivity.finish();
-            mActivity = null;
-        }
-        try {
-            final UiDevice device = UiDevice.getInstance(getInstrumentation());
-            device.unfreezeRotation();
-        } catch (RemoteException e) {
-        }
-    }
-
-    public void setupAndOpenInLoop() throws Exception {
-        setUpInLoop();
-        openRoot();
-    }
-
-    public void openRoot() throws Exception {
-        mRootsListBot.openRoot(STRESS_ROOT_2_ID);
-    }
-
-    @JankTest(expectedFrames=0, beforeLoop="setUpInLoop", afterLoop="tearDownInLoop")
-    @GfxMonitor(processName=DOCUMENTSUI_PACKAGE)
-    public void testOpenRootJankPerformance() throws Exception {
-        openRoot();
-        getInstrumentation().waitForIdleSync();
-    }
-
-    @JankTest(expectedFrames=0, beforeLoop="setupAndOpenInLoop", afterLoop="tearDownInLoop")
-    @GfxMonitor(processName=DOCUMENTSUI_PACKAGE)
-    public void testFlingJankPerformance() throws Exception {
-        new UiScrollable(mDirListBot.findDocumentsList().getSelector()).flingToEnd(MAX_FLINGS);
-        getInstrumentation().waitForIdleSync();
-    }
-}
diff --git a/packages/DocumentsUI/perf-tests/src/com/android/documentsui/StressProvider.java b/packages/DocumentsUI/perf-tests/src/com/android/documentsui/StressProvider.java
deleted file mode 100644
index f9b06f8..0000000
--- a/packages/DocumentsUI/perf-tests/src/com/android/documentsui/StressProvider.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.content.Context;
-import android.content.pm.ProviderInfo;
-import android.content.res.AssetFileDescriptor;
-import android.database.Cursor;
-import android.database.MatrixCursor.RowBuilder;
-import android.database.MatrixCursor;
-import android.graphics.Point;
-import android.os.CancellationSignal;
-import android.os.FileUtils;
-import android.os.ParcelFileDescriptor;
-import android.provider.DocumentsContract.Document;
-import android.provider.DocumentsContract.Root;
-import android.provider.DocumentsContract;
-import android.provider.DocumentsProvider;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-
-/**
- * Provider with thousands of files for testing loading time of directories in DocumentsUI.
- * It doesn't support any file operations.
- */
-public class StressProvider extends DocumentsProvider {
-
-    public static final String DEFAULT_AUTHORITY = "com.android.documentsui.stressprovider";
-
-    // Empty root.
-    public static final String STRESS_ROOT_0_ID = "STRESS_ROOT_0";
-
-    // Root with thousands of directories.
-    public static final String STRESS_ROOT_1_ID = "STRESS_ROOT_1";
-
-    // Root with hundreds of files.
-    public static final String STRESS_ROOT_2_ID = "STRESS_ROOT_2";
-
-    private static final String STRESS_ROOT_0_DOC_ID = "STRESS_ROOT_0_DOC";
-    private static final String STRESS_ROOT_1_DOC_ID = "STRESS_ROOT_1_DOC";
-    private static final String STRESS_ROOT_2_DOC_ID = "STRESS_ROOT_2_DOC";
-
-    private static final int STRESS_ROOT_1_ITEMS = 10000;
-    private static final int STRESS_ROOT_2_ITEMS = 300;
-
-    private static final String MIME_TYPE_IMAGE = "image/jpeg";
-    private static final long REFERENCE_TIMESTAMP = 1459159369359L;
-
-    private static final String[] DEFAULT_ROOT_PROJECTION = new String[] {
-            Root.COLUMN_ROOT_ID, Root.COLUMN_FLAGS, Root.COLUMN_TITLE, Root.COLUMN_DOCUMENT_ID,
-            Root.COLUMN_AVAILABLE_BYTES
-    };
-    private static final String[] DEFAULT_DOCUMENT_PROJECTION = new String[] {
-            Document.COLUMN_DOCUMENT_ID, Document.COLUMN_MIME_TYPE, Document.COLUMN_DISPLAY_NAME,
-            Document.COLUMN_LAST_MODIFIED, Document.COLUMN_FLAGS, Document.COLUMN_SIZE,
-    };
-
-    private String mAuthority = DEFAULT_AUTHORITY;
-
-    // Map from a root document id to children document ids.
-    private Map<String, ArrayList<StubDocument>> mChildDocuments = new HashMap<>();
-
-    private Map<String, StubDocument> mDocuments = new HashMap<>();
-    private Map<String, StubRoot> mRoots = new HashMap<>();
-
-    @Override
-    public void attachInfo(Context context, ProviderInfo info) {
-        mAuthority = info.authority;
-        super.attachInfo(context, info);
-    }
-
-    @Override
-    public boolean onCreate() {
-        StubDocument document;
-
-        ArrayList<StubDocument> children = new ArrayList<StubDocument>();
-        mChildDocuments.put(STRESS_ROOT_1_DOC_ID, children);
-        for (int i = 0; i < STRESS_ROOT_1_ITEMS; i++) {
-            document = StubDocument.createDirectory(i);
-            mDocuments.put(document.id, document);
-            children.add(document);
-        }
-
-        children = new ArrayList<StubDocument>();
-        mChildDocuments.put(STRESS_ROOT_2_DOC_ID, children);
-        for (int i = 0; i < STRESS_ROOT_2_ITEMS; i++) {
-            try {
-                document = StubDocument.createFile(
-                        getContext(), MIME_TYPE_IMAGE,
-                        com.android.documentsui.perftests.R.raw.earth_small,
-                        STRESS_ROOT_1_ITEMS + i);
-            } catch (IOException e) {
-                return false;
-            }
-            mDocuments.put(document.id, document);
-            children.add(document);
-        }
-
-        mRoots.put(STRESS_ROOT_0_ID, new StubRoot(STRESS_ROOT_0_ID, STRESS_ROOT_0_DOC_ID));
-        mRoots.put(STRESS_ROOT_1_ID, new StubRoot(STRESS_ROOT_1_ID, STRESS_ROOT_1_DOC_ID));
-        mRoots.put(STRESS_ROOT_2_ID, new StubRoot(STRESS_ROOT_2_ID, STRESS_ROOT_2_DOC_ID));
-
-        mDocuments.put(STRESS_ROOT_0_DOC_ID, StubDocument.createDirectory(STRESS_ROOT_0_DOC_ID));
-        mDocuments.put(STRESS_ROOT_1_DOC_ID, StubDocument.createDirectory(STRESS_ROOT_1_DOC_ID));
-        mDocuments.put(STRESS_ROOT_2_DOC_ID, StubDocument.createDirectory(STRESS_ROOT_2_DOC_ID));
-
-        return true;
-    }
-
-    @Override
-    public Cursor queryRoots(String[] projection) throws FileNotFoundException {
-        final MatrixCursor result = new MatrixCursor(DEFAULT_ROOT_PROJECTION);
-        for (StubRoot root : mRoots.values()) {
-            includeRoot(result, root);
-        }
-        return result;
-    }
-
-    @Override
-    public Cursor queryDocument(String documentId, String[] projection)
-            throws FileNotFoundException {
-        final MatrixCursor result = new MatrixCursor(DEFAULT_DOCUMENT_PROJECTION);
-        final StubDocument document = mDocuments.get(documentId);
-        includeDocument(result, document);
-        return result;
-    }
-
-    @Override
-    public Cursor queryChildDocuments(String parentDocumentId, String[] projection,
-            String sortOrder)
-            throws FileNotFoundException {
-        final MatrixCursor result = new MatrixCursor(DEFAULT_DOCUMENT_PROJECTION);
-        final ArrayList<StubDocument> childDocuments = mChildDocuments.get(parentDocumentId);
-        if (childDocuments != null) {
-            for (StubDocument document : childDocuments) {
-                includeDocument(result, document);
-            }
-        }
-        return result;
-    }
-
-    @Override
-    public AssetFileDescriptor openDocumentThumbnail(String docId, Point sizeHint,
-            CancellationSignal signal)
-            throws FileNotFoundException {
-        final StubDocument document = mDocuments.get(docId);
-        return getContext().getResources().openRawResourceFd(document.thumbnail);
-    }
-
-    @Override
-    public ParcelFileDescriptor openDocument(String docId, String mode,
-            CancellationSignal signal)
-            throws FileNotFoundException {
-        throw new UnsupportedOperationException();
-    }
-
-    private void includeRoot(MatrixCursor result, StubRoot root) {
-        final RowBuilder row = result.newRow();
-        row.add(Root.COLUMN_ROOT_ID, root.id);
-        row.add(Root.COLUMN_FLAGS, 0);
-        row.add(Root.COLUMN_TITLE, root.id);
-        row.add(Root.COLUMN_DOCUMENT_ID, root.documentId);
-    }
-
-    private void includeDocument(MatrixCursor result, StubDocument document) {
-        final RowBuilder row = result.newRow();
-        row.add(Document.COLUMN_DOCUMENT_ID, document.id);
-        row.add(Document.COLUMN_DISPLAY_NAME, document.id);
-        row.add(Document.COLUMN_SIZE, document.size);
-        row.add(Document.COLUMN_MIME_TYPE, document.mimeType);
-        row.add(Document.COLUMN_FLAGS,
-                document.thumbnail != -1 ? Document.FLAG_SUPPORTS_THUMBNAIL : 0);
-        row.add(Document.COLUMN_LAST_MODIFIED, document.lastModified);
-    }
-
-    private static String getStubDocumentIdForFile(File file) {
-        return file.getAbsolutePath();
-    }
-
-    private static class StubDocument {
-        final String mimeType;
-        final String id;
-        final int size;
-        final long lastModified;
-        final int thumbnail;
-
-        private StubDocument(String mimeType, String id, int size, long lastModified,
-                int thumbnail) {
-            this.mimeType = mimeType;
-            this.id = id;
-            this.size = size;
-            this.lastModified = lastModified;
-            this.thumbnail = thumbnail;
-        }
-
-        public static StubDocument createDirectory(int index) {
-            return new StubDocument(
-                    DocumentsContract.Document.MIME_TYPE_DIR, createRandomId(index), 0,
-                    createRandomTime(index), -1);
-        }
-
-        public static StubDocument createDirectory(String id) {
-            return new StubDocument(DocumentsContract.Document.MIME_TYPE_DIR, id, 0, 0, -1);
-        }
-
-        public static StubDocument createFile(Context context, String mimeType, int thumbnail,
-                int index) throws IOException {
-            return new StubDocument(
-                    mimeType, createRandomId(index), createRandomSize(index),
-                    createRandomTime(index), thumbnail);
-        }
-
-        private static String createRandomId(int index) {
-            final Random random = new Random(index);
-            final StringBuilder builder = new StringBuilder();
-            for (int i = 0; i < 20; i++) {
-                builder.append((char) (random.nextInt(96) + 32));
-            }
-            builder.append(index);  // Append a number to guarantee uniqueness.
-            return builder.toString();
-        }
-
-        private static int createRandomSize(int index) {
-            final Random random = new Random(index);
-            return random.nextInt(1024 * 1024 * 100);  // Up to 100 MB.
-        }
-
-        private static long createRandomTime(int index) {
-            final Random random = new Random(index);
-            // Up to 30 days backwards from REFERENCE_TIMESTAMP.
-            return REFERENCE_TIMESTAMP - random.nextLong() % 1000L * 60 * 60 * 24 * 30;
-        }
-    }
-
-    private static class StubRoot {
-        final String id;
-        final String documentId;
-
-        public StubRoot(String id, String documentId) {
-            this.id = id;
-            this.documentId = documentId;
-        }
-    }
-}
diff --git a/packages/DocumentsUI/res/animator/dir_enter.xml b/packages/DocumentsUI/res/animator/dir_enter.xml
deleted file mode 100644
index 570104e..0000000
--- a/packages/DocumentsUI/res/animator/dir_enter.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<set xmlns:android="http://schemas.android.com/apk/res/android"
-    android:ordering="together">
-
-    <objectAnimator
-        android:valueFrom="0f"
-        android:valueTo="1f"
-        android:propertyName="alpha"
-        android:valueType="floatType"
-        android:duration="200"
-        android:interpolator="@android:interpolator/decelerate_quad" />
-
-    <!-- position property maps to AnimationView.setPosition -->
-    <objectAnimator
-        android:propertyName="position"
-        android:valueFrom="1"
-        android:valueTo="0"
-        android:valueType="floatType"
-        android:duration="350"
-        android:interpolator="@android:interpolator/decelerate_quad" />
-
-</set>
diff --git a/packages/DocumentsUI/res/animator/dir_leave.xml b/packages/DocumentsUI/res/animator/dir_leave.xml
deleted file mode 100644
index 5929625..0000000
--- a/packages/DocumentsUI/res/animator/dir_leave.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<set xmlns:android="http://schemas.android.com/apk/res/android"
-    android:ordering="together">
-
-    <objectAnimator
-        android:valueFrom="1f"
-        android:valueTo="0f"
-        android:propertyName="alpha"
-        android:valueType="floatType"
-        android:duration="150"
-        android:startOffset="100"
-        android:interpolator="@android:interpolator/decelerate_quad" />
-
-    <!-- position property maps to AnimationView.setPosition -->
-    <objectAnimator
-        android:valueFrom="0"
-        android:valueTo="1"
-        android:propertyName="position"
-        android:valueType="floatType"
-        android:duration="250"
-        android:interpolator="@android:interpolator/accelerate_quad" />
-
-</set>
\ No newline at end of file
diff --git a/packages/DocumentsUI/res/animator/fade_in.xml b/packages/DocumentsUI/res/animator/fade_in.xml
deleted file mode 100644
index 3ce012b..0000000
--- a/packages/DocumentsUI/res/animator/fade_in.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
-    android:valueFrom="0f"
-    android:valueTo="1f"
-    android:propertyName="alpha"
-    android:valueType="floatType"
-    android:duration="@android:integer/config_mediumAnimTime"
-    android:interpolator="@android:interpolator/decelerate_quad" />
diff --git a/packages/DocumentsUI/res/animator/fade_out.xml b/packages/DocumentsUI/res/animator/fade_out.xml
deleted file mode 100644
index 8d02c77..0000000
--- a/packages/DocumentsUI/res/animator/fade_out.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
-    android:valueFrom="1f"
-    android:valueTo="0f"
-    android:propertyName="alpha"
-    android:valueType="floatType"
-    android:duration="@android:integer/config_mediumAnimTime"
-    android:interpolator="@android:interpolator/decelerate_quad" />
diff --git a/packages/DocumentsUI/res/color/item_details.xml b/packages/DocumentsUI/res/color/item_details.xml
deleted file mode 100644
index ac21fe3..0000000
--- a/packages/DocumentsUI/res/color/item_details.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_enabled="true"
-        android:color="?android:attr/textColorPrimary"
-        android:alpha="0.54" />
-</selector>
diff --git a/packages/DocumentsUI/res/color/item_doc_grid_border.xml b/packages/DocumentsUI/res/color/item_doc_grid_border.xml
deleted file mode 100644
index e144af8..0000000
--- a/packages/DocumentsUI/res/color/item_doc_grid_border.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_focused="true"
-        android:color="?android:attr/colorAccent"/>
-    <item
-        android:color="@android:color/transparent" />
-</selector>
diff --git a/packages/DocumentsUI/res/color/item_doc_list_background_activated.xml b/packages/DocumentsUI/res/color/item_doc_list_background_activated.xml
deleted file mode 100644
index 7d7a110..0000000
--- a/packages/DocumentsUI/res/color/item_doc_list_background_activated.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_activated="true"
-        android:color="?android:attr/colorAccent"
-        android:alpha="0.1" />
-    <item
-        android:color="@android:color/transparent" />
-</selector>
diff --git a/packages/DocumentsUI/res/color/item_eject_icon.xml b/packages/DocumentsUI/res/color/item_eject_icon.xml
deleted file mode 100644
index 15e7e8e..0000000
--- a/packages/DocumentsUI/res/color/item_eject_icon.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_enabled="false" android:alpha="@*android:dimen/disabled_alpha_material_light" android:color="@*android:color/primary_text_default_material_light" />
-    <item android:color="@*android:color/primary_text_default_material_light" />
-</selector>
diff --git a/packages/DocumentsUI/res/color/item_root_icon.xml b/packages/DocumentsUI/res/color/item_root_icon.xml
deleted file mode 100644
index e1d7e61..0000000
--- a/packages/DocumentsUI/res/color/item_root_icon.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_activated="false"
-        android:color="@*android:color/secondary_text_material_light" />
-    <item
-        android:state_activated="true"
-        android:color="@color/root_activated_color" />
-</selector>
diff --git a/packages/DocumentsUI/res/color/item_root_primary_text.xml b/packages/DocumentsUI/res/color/item_root_primary_text.xml
deleted file mode 100644
index a5a65b2..0000000
--- a/packages/DocumentsUI/res/color/item_root_primary_text.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-  <item android:state_focused="true" android:state_activated="true" android:color="@color/root_activated_color" />
-  <item android:state_focused="false" android:state_activated="true" android:color="@color/root_activated_color" />
-    <item android:state_enabled="false" android:alpha="@*android:dimen/disabled_alpha_material_light" android:color="@*android:color/primary_text_default_material_light" />
-    <item android:color="@*android:color/primary_text_default_material_light" />
-</selector>
diff --git a/packages/DocumentsUI/res/color/item_title.xml b/packages/DocumentsUI/res/color/item_title.xml
deleted file mode 100644
index 9fff2f1..0000000
--- a/packages/DocumentsUI/res/color/item_title.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:state_enabled="true"
-        android:color="?android:attr/textColorPrimary"
-        android:alpha="0.87" />
-    <item
-        android:state_enabled="false"
-        android:color="?android:attr/textColorPrimary"
-        android:alpha="0.54" />
-</selector>
diff --git a/packages/DocumentsUI/res/color/root_activated.xml b/packages/DocumentsUI/res/color/root_activated.xml
deleted file mode 100644
index 36a016d..0000000
--- a/packages/DocumentsUI/res/color/root_activated.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_activated="true" android:color="?android:attr/colorAccent" />
-    <item android:color="@*android:color/secondary_text_material_light" />
-</selector>
diff --git a/packages/DocumentsUI/res/drawable-hdpi/ic_breadcrumb_arrow_am_alpha.png b/packages/DocumentsUI/res/drawable-hdpi/ic_breadcrumb_arrow_am_alpha.png
deleted file mode 100644
index 67f890c..0000000
--- a/packages/DocumentsUI/res/drawable-hdpi/ic_breadcrumb_arrow_am_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-hdpi/ic_cab_cancel_alpha.png b/packages/DocumentsUI/res/drawable-hdpi/ic_cab_cancel_alpha.png
deleted file mode 100644
index 1a9cd75..0000000
--- a/packages/DocumentsUI/res/drawable-hdpi/ic_cab_cancel_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-hdpi/ic_dialog_alert_alpha.png b/packages/DocumentsUI/res/drawable-hdpi/ic_dialog_alert_alpha.png
deleted file mode 100644
index 4c3d9a4..0000000
--- a/packages/DocumentsUI/res/drawable-hdpi/ic_dialog_alert_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-hdpi/ic_dialog_info_alpha.png b/packages/DocumentsUI/res/drawable-hdpi/ic_dialog_info_alpha.png
deleted file mode 100644
index da56077..0000000
--- a/packages/DocumentsUI/res/drawable-hdpi/ic_dialog_info_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-hdpi/ic_grid_folder_alpha.png b/packages/DocumentsUI/res/drawable-hdpi/ic_grid_folder_alpha.png
deleted file mode 100644
index 874fde7..0000000
--- a/packages/DocumentsUI/res/drawable-hdpi/ic_grid_folder_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-hdpi/ic_hamburger_alpha.png b/packages/DocumentsUI/res/drawable-hdpi/ic_hamburger_alpha.png
deleted file mode 100644
index 3f8ebd6..0000000
--- a/packages/DocumentsUI/res/drawable-hdpi/ic_hamburger_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-hdpi/ic_menu_copy_alpha.png b/packages/DocumentsUI/res/drawable-hdpi/ic_menu_copy_alpha.png
deleted file mode 100644
index 9a9e570..0000000
--- a/packages/DocumentsUI/res/drawable-hdpi/ic_menu_copy_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-hdpi/ic_menu_delete_alpha.png b/packages/DocumentsUI/res/drawable-hdpi/ic_menu_delete_alpha.png
deleted file mode 100644
index dbbb602..0000000
--- a/packages/DocumentsUI/res/drawable-hdpi/ic_menu_delete_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-hdpi/ic_menu_new_folder_am_alpha.png b/packages/DocumentsUI/res/drawable-hdpi/ic_menu_new_folder_am_alpha.png
deleted file mode 100644
index 1d25a2d..0000000
--- a/packages/DocumentsUI/res/drawable-hdpi/ic_menu_new_folder_am_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-hdpi/ic_menu_search_alpha.png b/packages/DocumentsUI/res/drawable-hdpi/ic_menu_search_alpha.png
deleted file mode 100644
index c593e7a..0000000
--- a/packages/DocumentsUI/res/drawable-hdpi/ic_menu_search_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-hdpi/ic_menu_share_alpha.png b/packages/DocumentsUI/res/drawable-hdpi/ic_menu_share_alpha.png
deleted file mode 100644
index 20ba480..0000000
--- a/packages/DocumentsUI/res/drawable-hdpi/ic_menu_share_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-hdpi/ic_menu_sortby_am_alpha.png b/packages/DocumentsUI/res/drawable-hdpi/ic_menu_sortby_am_alpha.png
deleted file mode 100644
index 5e66488..0000000
--- a/packages/DocumentsUI/res/drawable-hdpi/ic_menu_sortby_am_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-hdpi/ic_menu_view_grid_alpha.png b/packages/DocumentsUI/res/drawable-hdpi/ic_menu_view_grid_alpha.png
deleted file mode 100644
index 7e15a8c..0000000
--- a/packages/DocumentsUI/res/drawable-hdpi/ic_menu_view_grid_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-hdpi/ic_menu_view_list_alpha.png b/packages/DocumentsUI/res/drawable-hdpi/ic_menu_view_list_alpha.png
deleted file mode 100644
index c15537a..0000000
--- a/packages/DocumentsUI/res/drawable-hdpi/ic_menu_view_list_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-hdpi/ic_root_download_alpha.png b/packages/DocumentsUI/res/drawable-hdpi/ic_root_download_alpha.png
deleted file mode 100644
index d9aacea..0000000
--- a/packages/DocumentsUI/res/drawable-hdpi/ic_root_download_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-hdpi/ic_root_recent_alpha.png b/packages/DocumentsUI/res/drawable-hdpi/ic_root_recent_alpha.png
deleted file mode 100644
index 9e003f0..0000000
--- a/packages/DocumentsUI/res/drawable-hdpi/ic_root_recent_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-mdpi/ic_breadcrumb_arrow_am_alpha.png b/packages/DocumentsUI/res/drawable-mdpi/ic_breadcrumb_arrow_am_alpha.png
deleted file mode 100644
index 9a048f1..0000000
--- a/packages/DocumentsUI/res/drawable-mdpi/ic_breadcrumb_arrow_am_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-mdpi/ic_cab_cancel_alpha.png b/packages/DocumentsUI/res/drawable-mdpi/ic_cab_cancel_alpha.png
deleted file mode 100644
index 40a1a84..0000000
--- a/packages/DocumentsUI/res/drawable-mdpi/ic_cab_cancel_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-mdpi/ic_dialog_alert_alpha.png b/packages/DocumentsUI/res/drawable-mdpi/ic_dialog_alert_alpha.png
deleted file mode 100644
index e768d11..0000000
--- a/packages/DocumentsUI/res/drawable-mdpi/ic_dialog_alert_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-mdpi/ic_dialog_info_alpha.png b/packages/DocumentsUI/res/drawable-mdpi/ic_dialog_info_alpha.png
deleted file mode 100644
index 5ef3dc0..0000000
--- a/packages/DocumentsUI/res/drawable-mdpi/ic_dialog_info_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-mdpi/ic_grid_folder_alpha.png b/packages/DocumentsUI/res/drawable-mdpi/ic_grid_folder_alpha.png
deleted file mode 100644
index 44e0e37..0000000
--- a/packages/DocumentsUI/res/drawable-mdpi/ic_grid_folder_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-mdpi/ic_hamburger_alpha.png b/packages/DocumentsUI/res/drawable-mdpi/ic_hamburger_alpha.png
deleted file mode 100644
index ef2a48c..0000000
--- a/packages/DocumentsUI/res/drawable-mdpi/ic_hamburger_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-mdpi/ic_menu_copy_alpha.png b/packages/DocumentsUI/res/drawable-mdpi/ic_menu_copy_alpha.png
deleted file mode 100644
index c94cc28..0000000
--- a/packages/DocumentsUI/res/drawable-mdpi/ic_menu_copy_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-mdpi/ic_menu_delete_alpha.png b/packages/DocumentsUI/res/drawable-mdpi/ic_menu_delete_alpha.png
deleted file mode 100644
index 999aa4c..0000000
--- a/packages/DocumentsUI/res/drawable-mdpi/ic_menu_delete_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-mdpi/ic_menu_new_folder_am_alpha.png b/packages/DocumentsUI/res/drawable-mdpi/ic_menu_new_folder_am_alpha.png
deleted file mode 100644
index 6e6b870..0000000
--- a/packages/DocumentsUI/res/drawable-mdpi/ic_menu_new_folder_am_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-mdpi/ic_menu_search_alpha.png b/packages/DocumentsUI/res/drawable-mdpi/ic_menu_search_alpha.png
deleted file mode 100644
index 6b16343..0000000
--- a/packages/DocumentsUI/res/drawable-mdpi/ic_menu_search_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-mdpi/ic_menu_share_alpha.png b/packages/DocumentsUI/res/drawable-mdpi/ic_menu_share_alpha.png
deleted file mode 100644
index f02d360..0000000
--- a/packages/DocumentsUI/res/drawable-mdpi/ic_menu_share_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-mdpi/ic_menu_sortby_am_alpha.png b/packages/DocumentsUI/res/drawable-mdpi/ic_menu_sortby_am_alpha.png
deleted file mode 100644
index 04a12a4..0000000
--- a/packages/DocumentsUI/res/drawable-mdpi/ic_menu_sortby_am_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-mdpi/ic_menu_view_grid_alpha.png b/packages/DocumentsUI/res/drawable-mdpi/ic_menu_view_grid_alpha.png
deleted file mode 100644
index 5f968d5..0000000
--- a/packages/DocumentsUI/res/drawable-mdpi/ic_menu_view_grid_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-mdpi/ic_menu_view_list_alpha.png b/packages/DocumentsUI/res/drawable-mdpi/ic_menu_view_list_alpha.png
deleted file mode 100644
index 7a8eae9..0000000
--- a/packages/DocumentsUI/res/drawable-mdpi/ic_menu_view_list_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-mdpi/ic_root_download_alpha.png b/packages/DocumentsUI/res/drawable-mdpi/ic_root_download_alpha.png
deleted file mode 100644
index c2c845e..0000000
--- a/packages/DocumentsUI/res/drawable-mdpi/ic_root_download_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-mdpi/ic_root_recent_alpha.png b/packages/DocumentsUI/res/drawable-mdpi/ic_root_recent_alpha.png
deleted file mode 100644
index f500d58..0000000
--- a/packages/DocumentsUI/res/drawable-mdpi/ic_root_recent_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xhdpi/ic_breadcrumb_arrow_am_alpha.png b/packages/DocumentsUI/res/drawable-xhdpi/ic_breadcrumb_arrow_am_alpha.png
deleted file mode 100644
index 073583e..0000000
--- a/packages/DocumentsUI/res/drawable-xhdpi/ic_breadcrumb_arrow_am_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xhdpi/ic_cab_cancel_alpha.png b/packages/DocumentsUI/res/drawable-xhdpi/ic_cab_cancel_alpha.png
deleted file mode 100644
index 6bc4372..0000000
--- a/packages/DocumentsUI/res/drawable-xhdpi/ic_cab_cancel_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xhdpi/ic_dialog_alert_alpha.png b/packages/DocumentsUI/res/drawable-xhdpi/ic_dialog_alert_alpha.png
deleted file mode 100644
index 2ea6164..0000000
--- a/packages/DocumentsUI/res/drawable-xhdpi/ic_dialog_alert_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xhdpi/ic_dialog_info_alpha.png b/packages/DocumentsUI/res/drawable-xhdpi/ic_dialog_info_alpha.png
deleted file mode 100644
index 46ed12a..0000000
--- a/packages/DocumentsUI/res/drawable-xhdpi/ic_dialog_info_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xhdpi/ic_grid_folder_alpha.png b/packages/DocumentsUI/res/drawable-xhdpi/ic_grid_folder_alpha.png
deleted file mode 100644
index 1a4e7c4..0000000
--- a/packages/DocumentsUI/res/drawable-xhdpi/ic_grid_folder_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xhdpi/ic_hamburger_alpha.png b/packages/DocumentsUI/res/drawable-xhdpi/ic_hamburger_alpha.png
deleted file mode 100644
index 4e0286b..0000000
--- a/packages/DocumentsUI/res/drawable-xhdpi/ic_hamburger_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xhdpi/ic_menu_copy_alpha.png b/packages/DocumentsUI/res/drawable-xhdpi/ic_menu_copy_alpha.png
deleted file mode 100644
index 1cf76a9..0000000
--- a/packages/DocumentsUI/res/drawable-xhdpi/ic_menu_copy_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xhdpi/ic_menu_delete_alpha.png b/packages/DocumentsUI/res/drawable-xhdpi/ic_menu_delete_alpha.png
deleted file mode 100644
index 796ccd2..0000000
--- a/packages/DocumentsUI/res/drawable-xhdpi/ic_menu_delete_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xhdpi/ic_menu_new_folder_am_alpha.png b/packages/DocumentsUI/res/drawable-xhdpi/ic_menu_new_folder_am_alpha.png
deleted file mode 100644
index 49272b0..0000000
--- a/packages/DocumentsUI/res/drawable-xhdpi/ic_menu_new_folder_am_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xhdpi/ic_menu_search_alpha.png b/packages/DocumentsUI/res/drawable-xhdpi/ic_menu_search_alpha.png
deleted file mode 100644
index 6381902..0000000
--- a/packages/DocumentsUI/res/drawable-xhdpi/ic_menu_search_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xhdpi/ic_menu_share_alpha.png b/packages/DocumentsUI/res/drawable-xhdpi/ic_menu_share_alpha.png
deleted file mode 100644
index 81c80b7..0000000
--- a/packages/DocumentsUI/res/drawable-xhdpi/ic_menu_share_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xhdpi/ic_menu_sortby_am_alpha.png b/packages/DocumentsUI/res/drawable-xhdpi/ic_menu_sortby_am_alpha.png
deleted file mode 100644
index 9e4fd61..0000000
--- a/packages/DocumentsUI/res/drawable-xhdpi/ic_menu_sortby_am_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xhdpi/ic_menu_view_grid_alpha.png b/packages/DocumentsUI/res/drawable-xhdpi/ic_menu_view_grid_alpha.png
deleted file mode 100644
index 630188c..0000000
--- a/packages/DocumentsUI/res/drawable-xhdpi/ic_menu_view_grid_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xhdpi/ic_menu_view_list_alpha.png b/packages/DocumentsUI/res/drawable-xhdpi/ic_menu_view_list_alpha.png
deleted file mode 100644
index 73372f4..0000000
--- a/packages/DocumentsUI/res/drawable-xhdpi/ic_menu_view_list_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xhdpi/ic_root_download_alpha.png b/packages/DocumentsUI/res/drawable-xhdpi/ic_root_download_alpha.png
deleted file mode 100644
index f5afb24..0000000
--- a/packages/DocumentsUI/res/drawable-xhdpi/ic_root_download_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xhdpi/ic_root_recent_alpha.png b/packages/DocumentsUI/res/drawable-xhdpi/ic_root_recent_alpha.png
deleted file mode 100644
index fe71c25..0000000
--- a/packages/DocumentsUI/res/drawable-xhdpi/ic_root_recent_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxhdpi/ic_breadcrumb_arrow_am_alpha.png b/packages/DocumentsUI/res/drawable-xxhdpi/ic_breadcrumb_arrow_am_alpha.png
deleted file mode 100644
index b96cfd1..0000000
--- a/packages/DocumentsUI/res/drawable-xxhdpi/ic_breadcrumb_arrow_am_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxhdpi/ic_cab_cancel_alpha.png b/packages/DocumentsUI/res/drawable-xxhdpi/ic_cab_cancel_alpha.png
deleted file mode 100644
index 51b4401..0000000
--- a/packages/DocumentsUI/res/drawable-xxhdpi/ic_cab_cancel_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxhdpi/ic_dialog_alert_alpha.png b/packages/DocumentsUI/res/drawable-xxhdpi/ic_dialog_alert_alpha.png
deleted file mode 100644
index ed36f70..0000000
--- a/packages/DocumentsUI/res/drawable-xxhdpi/ic_dialog_alert_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxhdpi/ic_dialog_info_alpha.png b/packages/DocumentsUI/res/drawable-xxhdpi/ic_dialog_info_alpha.png
deleted file mode 100644
index a81eeb9..0000000
--- a/packages/DocumentsUI/res/drawable-xxhdpi/ic_dialog_info_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxhdpi/ic_grid_folder_alpha.png b/packages/DocumentsUI/res/drawable-xxhdpi/ic_grid_folder_alpha.png
deleted file mode 100644
index d7b2bfb..0000000
--- a/packages/DocumentsUI/res/drawable-xxhdpi/ic_grid_folder_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxhdpi/ic_hamburger_alpha.png b/packages/DocumentsUI/res/drawable-xxhdpi/ic_hamburger_alpha.png
deleted file mode 100644
index 7dae60b..0000000
--- a/packages/DocumentsUI/res/drawable-xxhdpi/ic_hamburger_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxhdpi/ic_menu_copy_alpha.png b/packages/DocumentsUI/res/drawable-xxhdpi/ic_menu_copy_alpha.png
deleted file mode 100644
index 074ea88..0000000
--- a/packages/DocumentsUI/res/drawable-xxhdpi/ic_menu_copy_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxhdpi/ic_menu_delete_alpha.png b/packages/DocumentsUI/res/drawable-xxhdpi/ic_menu_delete_alpha.png
deleted file mode 100644
index 6d7cb81..0000000
--- a/packages/DocumentsUI/res/drawable-xxhdpi/ic_menu_delete_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxhdpi/ic_menu_new_folder_am_alpha.png b/packages/DocumentsUI/res/drawable-xxhdpi/ic_menu_new_folder_am_alpha.png
deleted file mode 100644
index 5c4360a..0000000
--- a/packages/DocumentsUI/res/drawable-xxhdpi/ic_menu_new_folder_am_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxhdpi/ic_menu_search_alpha.png b/packages/DocumentsUI/res/drawable-xxhdpi/ic_menu_search_alpha.png
deleted file mode 100644
index 3ae490e..0000000
--- a/packages/DocumentsUI/res/drawable-xxhdpi/ic_menu_search_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxhdpi/ic_menu_share_alpha.png b/packages/DocumentsUI/res/drawable-xxhdpi/ic_menu_share_alpha.png
deleted file mode 100644
index 784933a..0000000
--- a/packages/DocumentsUI/res/drawable-xxhdpi/ic_menu_share_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxhdpi/ic_menu_sortby_am_alpha.png b/packages/DocumentsUI/res/drawable-xxhdpi/ic_menu_sortby_am_alpha.png
deleted file mode 100644
index cb9d196..0000000
--- a/packages/DocumentsUI/res/drawable-xxhdpi/ic_menu_sortby_am_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxhdpi/ic_menu_view_grid_alpha.png b/packages/DocumentsUI/res/drawable-xxhdpi/ic_menu_view_grid_alpha.png
deleted file mode 100644
index 7560f62..0000000
--- a/packages/DocumentsUI/res/drawable-xxhdpi/ic_menu_view_grid_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxhdpi/ic_menu_view_list_alpha.png b/packages/DocumentsUI/res/drawable-xxhdpi/ic_menu_view_list_alpha.png
deleted file mode 100644
index b9483c3..0000000
--- a/packages/DocumentsUI/res/drawable-xxhdpi/ic_menu_view_list_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxhdpi/ic_root_download_alpha.png b/packages/DocumentsUI/res/drawable-xxhdpi/ic_root_download_alpha.png
deleted file mode 100644
index ce97c85..0000000
--- a/packages/DocumentsUI/res/drawable-xxhdpi/ic_root_download_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxhdpi/ic_root_recent_alpha.png b/packages/DocumentsUI/res/drawable-xxhdpi/ic_root_recent_alpha.png
deleted file mode 100644
index 1dad2a8..0000000
--- a/packages/DocumentsUI/res/drawable-xxhdpi/ic_root_recent_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_breadcrumb_arrow_am_alpha.png b/packages/DocumentsUI/res/drawable-xxxhdpi/ic_breadcrumb_arrow_am_alpha.png
deleted file mode 100644
index 6f2dc5b..0000000
--- a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_breadcrumb_arrow_am_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_cab_cancel_alpha.png b/packages/DocumentsUI/res/drawable-xxxhdpi/ic_cab_cancel_alpha.png
deleted file mode 100644
index df42fee..0000000
--- a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_cab_cancel_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_dialog_alert_alpha.png b/packages/DocumentsUI/res/drawable-xxxhdpi/ic_dialog_alert_alpha.png
deleted file mode 100644
index 3f4d539..0000000
--- a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_dialog_alert_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_dialog_info_alpha.png b/packages/DocumentsUI/res/drawable-xxxhdpi/ic_dialog_info_alpha.png
deleted file mode 100644
index c8f86b9..0000000
--- a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_dialog_info_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_grid_folder_alpha.png b/packages/DocumentsUI/res/drawable-xxxhdpi/ic_grid_folder_alpha.png
deleted file mode 100644
index ca6be0e..0000000
--- a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_grid_folder_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_hamburger_alpha.png b/packages/DocumentsUI/res/drawable-xxxhdpi/ic_hamburger_alpha.png
deleted file mode 100644
index 5c747ed..0000000
--- a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_hamburger_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_menu_copy_alpha.png b/packages/DocumentsUI/res/drawable-xxxhdpi/ic_menu_copy_alpha.png
deleted file mode 100644
index 1f6af72..0000000
--- a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_menu_copy_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_menu_delete_alpha.png b/packages/DocumentsUI/res/drawable-xxxhdpi/ic_menu_delete_alpha.png
deleted file mode 100644
index f2b75c3..0000000
--- a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_menu_delete_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_menu_new_folder_am_alpha.png b/packages/DocumentsUI/res/drawable-xxxhdpi/ic_menu_new_folder_am_alpha.png
deleted file mode 100644
index 073d8533..0000000
--- a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_menu_new_folder_am_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_menu_search_alpha.png b/packages/DocumentsUI/res/drawable-xxxhdpi/ic_menu_search_alpha.png
deleted file mode 100644
index 21be572..0000000
--- a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_menu_search_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_menu_share_alpha.png b/packages/DocumentsUI/res/drawable-xxxhdpi/ic_menu_share_alpha.png
deleted file mode 100644
index 5a8544ce..0000000
--- a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_menu_share_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_menu_sortby_am_alpha.png b/packages/DocumentsUI/res/drawable-xxxhdpi/ic_menu_sortby_am_alpha.png
deleted file mode 100644
index 631663a..0000000
--- a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_menu_sortby_am_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_menu_view_grid_alpha.png b/packages/DocumentsUI/res/drawable-xxxhdpi/ic_menu_view_grid_alpha.png
deleted file mode 100644
index 5d1e8d9..0000000
--- a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_menu_view_grid_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_menu_view_list_alpha.png b/packages/DocumentsUI/res/drawable-xxxhdpi/ic_menu_view_list_alpha.png
deleted file mode 100644
index 7c1506b..0000000
--- a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_menu_view_list_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_root_download_alpha.png b/packages/DocumentsUI/res/drawable-xxxhdpi/ic_root_download_alpha.png
deleted file mode 100644
index 8c83bff..0000000
--- a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_root_download_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_root_recent_alpha.png b/packages/DocumentsUI/res/drawable-xxxhdpi/ic_root_recent_alpha.png
deleted file mode 100644
index 68df974..0000000
--- a/packages/DocumentsUI/res/drawable-xxxhdpi/ic_root_recent_alpha.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/drawable/band_select_overlay.xml b/packages/DocumentsUI/res/drawable/band_select_overlay.xml
deleted file mode 100644
index ba4d526..0000000
--- a/packages/DocumentsUI/res/drawable/band_select_overlay.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2015 The Android Open Source Project
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License
-  -->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-        android:shape="rectangle">
-    <solid android:color="@color/band_select_background" />
-    <stroke android:width="1dp" android:color="@color/band_select_border" />
-</shape>
diff --git a/packages/DocumentsUI/res/drawable/breadcrumb_item_background.xml b/packages/DocumentsUI/res/drawable/breadcrumb_item_background.xml
deleted file mode 100644
index c4bc77b..0000000
--- a/packages/DocumentsUI/res/drawable/breadcrumb_item_background.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<ripple
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res/com.android.documentsui"
-    android:color="?attr/colorControlHighlight">
-    <item
-        android:id="@android:id/mask"
-        android:drawable="@android:color/white"/>
-
-    <item>
-        <selector>
-            <item
-                app:state_highlighted="true"
-                android:drawable="@color/item_breadcrumb_background_hovered"/>
-            <item
-                app:state_highlighted="false"
-                android:drawable="@android:color/transparent">
-                <corners
-                    android:topLeftRadius="2dp"
-                    android:topRightRadius="2dp"
-                    android:bottomLeftRadius="2dp"
-                    android:bottomRightRadius="2dp"
-                />
-            </item>
-        </selector>
-    </item>
-</ripple>
\ No newline at end of file
diff --git a/packages/DocumentsUI/res/drawable/cabinet.xml b/packages/DocumentsUI/res/drawable/cabinet.xml
deleted file mode 100644
index 843ffc7..0000000
--- a/packages/DocumentsUI/res/drawable/cabinet.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<!--
-Copyright (C) 2016 The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="672dp"
-        android:height="921dp"
-        android:viewportWidth="672.0"
-        android:viewportHeight="921.0">
-    <path
-        android:pathData="M286,0c5,0,10,0,15,0c0.1,1.8,1.5,1.8,2.8,2.1c11.1,2,22.1,4,33.2,6.1c31.8,6.1,63.7,12.3,95.5,18.5  c16.1,3.1,32.1,6.2,48.2,9.3c26,4.9,52.1,9.3,78,14.6c10.8,2.2,21.6,4.6,32.3,6.5c11.3,2,22.6,4.7,34,6c7.9,0.9,7.9,1.1,7.9,9.2  c0,237.3,0,474.5,0,711.8c-1.5,0.9,-3,2,-4.6,2.8c-18.3,8.3,-36.6,16.6,-54.8,25c-29.3,13.4,-58.5,26.8,-87.8,40.3  c-23.5,10.9,-47,21.8,-70.4,32.8c-2.1,1,-4.2,1.5,-6.3,1.1c-6.8,-1.3,-13.6,-2.5,-20.1,-4.9c5.9,-0.3,11.4,1.9,17.1,2.9c5.9,1.1,5.9,1,5.9,-4.9  c0,-17.1,0.1,-34.3,0,-51.4c-0.3,-68.9,-0.7,-137.8,-1,-206.7c0,-35.8,0,-71.6,0.1,-107.4c0,-3.8,-0.6,-5.2,-4.7,-3.7c-7.9,2.9,-16,5.4,-24.1,7.8  c-14.1,4.3,-27.8,10,-42.2,13.2c0,-64,0,-127.9,-0.1,-191.9c0,-4.1,1.3,-5.9,5.1,-7c21,-6.6,42,-13.4,63,-20.2c2.3,-0.8,4.4,-1.8,4,-4.9  c0,-59.3,0,-118.7,0,-178c0,-1.3,-0.7,-2,-2,-2c-2.6,-0.4,-5.2,-0.7,-7.8,-1.2c-30.2,-5.3,-60.5,-10.6,-90.7,-16c-31.9,-5.6,-63.7,-11.3,-95.6,-16.9  c-24.9,-4.4,-49.8,-8.7,-74.6,-13.1C117.1,75.6,93.1,71.3,69,67c-0.3,-0.3,-0.7,-0.7,-1,-1c17.4,-5.3,34.8,-10.7,52.3,-15.9  c29.4,-8.7,58.8,-17.2,88.2,-25.8c24.3,-7.1,48.6,-14.2,72.9,-21.4C283.1,2.4,285.6,2.7,286,0z"
-        android:fillColor="#EFEFEE"/>
-    <path
-        android:pathData="M412,307c0.4,3,-1.7,4.1,-4,4.9c-21,6.8,-42,13.6,-63,20.2c-3.8,1.2,-5.1,3,-5.1,7C340,403.1,340,467,340,531  c-11.8,-1.2,-23.3,-4.5,-34.9,-6.5c-10,-1.7,-19.9,-4.6,-30.1,-5.5c-0.7,-0.3,-1.4,-0.9,-2.2,-1c-19.8,-4,-39.5,-8,-59.3,-12c-12.2,-2.4,-24.3,-4.7,-36.5,-7  c-0.9,-0.3,-1.8,-0.8,-2.8,-1c-24.5,-4.9,-48.9,-9.9,-73.5,-14.6C89.3,481.3,78,477.1,66,478c-0.7,-1.6,-2.1,-1.8,-3.6,-2.1  c-11.1,-2.2,-22.2,-4.7,-33.3,-6.7c-9.7,-1.7,-19.1,-4.9,-29.1,-5.3c0,-64.3,0,-128.7,0,-193c0.8,-0.2,1.6,-0.4,2.4,-0.7c19,-7.8,37.9,-15.9,57.1,-23.4  c5.4,-2.1,6.7,-4.8,6.6,-10.2c-0.2,-55.1,-0.1,-110.2,-0.1,-165.4c0,-1.9,-1.4,-4.6,1.9,-5.4c0.3,0.3,0.7,0.7,1,1c-1.3,4.9,-1,9.9,-1,14.9  c0,51.1,0,102.3,0,153.4c0,1.2,0,2.3,0,3.5c0.1,3.5,1.2,5.9,5.3,6.5c7,1.1,14,2.6,21,3.9c22.1,4.3,44.1,8.6,66.2,12.8  c27.3,5.2,54.6,10.1,81.9,15.3c21.8,4.1,43.5,8.5,65.2,12.6c28.1,5.4,56.2,10.8,84.3,15.8C398.4,306.8,405.1,310.5,412,307z   M105,329c0,3.3,0,6.7,-0.1,10c-0.1,2.5,0.4,3.6,3.4,4.2c30,5.3,59.9,10.9,89.8,16.5c3.4,0.6,5.1,0.2,4.9,-3.7  c-0.2,-3.3,-0.1,-6.7,-0.1,-10c0.5,-3.6,-0.1,-6.3,-4.7,-6.1c-1.1,0.1,-2.2,-0.6,-3.4,-0.8c-28.3,-5,-56.6,-9.9,-84.9,-14.9  C105.6,323.4,104.5,325.2,105,329z M65.9,280.8c13.7,2.5,27.4,4.9,41.1,7.4c32.6,5.9,65.2,11.8,97.8,17.8  c41.4,7.6,82.8,15.2,124.2,22.8c6.8,1.2,13.3,1.4,20,-1.3c9.3,-3.6,18.9,-6.3,28.4,-9.4c6.4,-2.1,12.8,-4.2,19.2,-6.4  c-4.2,-2,-8.3,-3,-12.4,-3.8c-22.6,-4.2,-45.3,-8,-67.9,-12.6c-14.6,-3,-29.2,-5.6,-43.8,-8.5c-24,-4.6,-48,-9.2,-72,-13.7c-15.9,-3,-31.8,-6.2,-47.8,-9.2  c-19,-3.6,-38,-7.3,-57,-10.6c-9.9,-1.7,-19.6,-4.5,-29.7,-5.2C48,255.6,30.1,263,12.2,270.4c0,0.4,0,0.7,0,1.1  C30.1,274.6,48,277.7,65.9,280.8z"
-        android:fillColor="#EAEAEA"/>
-    <path
-        android:pathData="M672,782c-6,0.9,-11.1,4.3,-16.4,6.9c-30.8,15,-61.5,30.3,-92.3,45.4c-34.8,17.1,-69.5,34.3,-104.5,51.1  c-13,6.3,-26,12.8,-39,19.1c-1.5,0.7,-3.7,1,-3.9,3.4c-3.7,0,-7.3,0,-11,0c-0.4,-3,-3.1,-2.3,-4.7,-2.7c-19.3,-4.8,-38.6,-9.5,-57.9,-14.1  c-27.5,-6.5,-55.2,-12.7,-82.6,-19.4c-30.9,-7.5,-61.8,-15,-92.7,-22.1c-24.8,-5.8,-49.5,-12,-74.3,-18C70.8,826.5,48.9,821.3,27,816  c-1.1,-0.3,-2.3,-0.5,-3.3,-1c-3.2,-1.3,-3.5,-3.3,-0.7,-5.4c0.9,-0.7,2,-1.2,3.1,-1.7c12,-5.3,24,-10.7,36,-16c0.4,-0.2,0.9,-0.2,1.9,-0.3  c0,3.6,0,7,0,10.5c0,1.6,-0.5,3.5,2,3.9c0.7,2.8,3.2,2.5,5.2,3c39.3,9,78.7,18.1,118.1,27c43.9,10,87.7,20,131.6,29.9  c9.7,2.2,19.2,4.9,29.1,6c1.1,1.5,2.6,0.9,4,1l0,0c4.1,2,8.5,2.6,13,3l0,0c7.2,2.4,14.4,4.3,22,5l0,0c6.5,2.5,13.3,3.6,20.1,4.9  c2.1,0.4,4.2,-0.1,6.3,-1.1c23.5,-11,46.9,-21.9,70.4,-32.8c29.2,-13.5,58.5,-26.9,87.8,-40.3c18.3,-8.4,36.6,-16.6,54.8,-25  c1.6,-0.7,3.1,-1.9,4.6,-2.8c2,-2.9,1.1,-6.2,0.9,-9.2c-0.3,-4.7,1.9,-5.5,5.7,-4.7c10.8,2.2,21.6,4.6,32.5,6.9C672,778.7,672,780.3,672,782z  "
-        android:fillColor="#E6E4E4"/>
-    <path
-        android:pathData="M350,872c-9.9,-1.1,-19.4,-3.9,-29.1,-6C277,856,233.1,846,189.2,836c-39.4,-9,-78.7,-18,-118.1,-27  c-2,-0.4,-4.5,-0.2,-5.2,-3c0,-85.7,0,-171.4,0.1,-257.1c6.5,0.1,12.7,2.3,19,3.6c26.4,5.4,52.8,10.9,79.2,16.5c25.9,5.4,51.8,11,77.7,16.4  c26.2,5.5,52.5,11,78.7,16.5c30.1,6.3,60.2,12.6,90.3,19c0.3,68.9,0.7,137.8,1,206.7c0.1,17.1,0,34.3,0,51.4c0,5.9,0,6,-5.9,4.9  c-5.7,-1.1,-11.2,-3.2,-17.1,-2.9c0,0,0,0,0,0c-7,-3.1,-14.2,-5.4,-22,-5c0,0,0,0,0,0c-3.9,-2.9,-8.4,-2.9,-13,-3c0,0,0,0,0,0  C352.9,871.5,351.4,872.1,350,872z M177,687c0,3.2,0.1,6.3,0,9.5c-0.1,2.7,0.7,4,3.8,4.6c29.7,5.8,59.3,11.7,89,17.7  c2.4,0.5,4.7,0.1,4.9,-2.6c0.4,-3.7,1.2,-7.6,-0.6,-11.2c1,-3,1.2,-5.3,-3,-6c-29.6,-5.4,-59.2,-10.8,-88.7,-16.5C177.7,681.6,176.5,682.8,177,687  z"
-        android:fillColor="#E5E5E5"/>
-    <path
-        android:pathData="M411,621c-30.1,-6.3,-60.2,-12.6,-90.3,-19c-26.2,-5.5,-52.5,-11,-78.7,-16.5c-25.9,-5.5,-51.8,-11,-77.7,-16.4  c-26.4,-5.5,-52.8,-11.1,-79.2,-16.5c-6.3,-1.3,-12.5,-3.5,-19,-3.6c0,-23.6,0,-47.3,0,-70.9c12,-0.9,23.2,3.3,34.7,5.5c24.5,4.6,49,9.7,73.5,14.6  c1,0.2,1.9,0.6,2.8,1c0,3.3,0.7,6.7,0.7,9.9c0,5.6,2.4,7.5,7.5,8.4c15.3,2.7,30.5,5.8,45.8,8.7c12,2.3,24,4.4,36.1,6.6  c1.9,0.3,4.8,1.5,4.7,-1.4c-0.2,-4.6,1.7,-8.2,3.3,-12.1c10.2,0.9,20,3.8,30.1,5.5c11.7,2,23.1,5.3,34.9,6.5  c14.5,-3.2,28.1,-8.9,42.2,-13.2c8.1,-2.5,16.2,-5,24.1,-7.8c4.1,-1.5,4.8,-0.1,4.7,3.7C411,549.4,411,585.2,411,621z"
-        android:fillColor="#D9D9D9"/>
-    <path
-        android:pathData="M412,307c-6.9,3.5,-13.6,-0.2,-20.1,-1.3c-28.2,-5,-56.2,-10.4,-84.3,-15.8c-21.8,-4.1,-43.5,-8.5,-65.2,-12.6  c-27.3,-5.2,-54.6,-10.1,-81.9,-15.3c-22.1,-4.2,-44.1,-8.5,-66.2,-12.8c-7,-1.3,-13.9,-2.9,-21,-3.9c-4.1,-0.6,-5.2,-3,-5.3,-6.5c0,-1.2,0,-2.3,0,-3.5  c0,-51.1,0,-102.3,0,-153.4c0,-5,-0.3,-10,1,-14.9c24.1,4.3,48.1,8.6,72.2,12.8c24.9,4.4,49.8,8.7,74.6,13.1c31.9,5.6,63.7,11.3,95.6,16.9  c30.2,5.3,60.5,10.6,90.7,16c2.6,0.5,5.2,0.8,7.8,1.2c0,1.3,0.7,2,2,2C412,188.3,412,247.7,412,307z M409,217.4c0,-25.5,0,-51,0,-76.5  c0,-10.9,0.1,-11.2,-10.7,-13.2c-23.4,-4.4,-46.8,-8.5,-70.3,-12.6c-24.1,-4.3,-48.2,-8.4,-72.3,-12.6c-17.7,-3.1,-35.5,-6.3,-53.2,-9.4  c-22.1,-3.9,-44.3,-7.6,-66.4,-11.5c-20,-3.5,-40,-7.1,-60.1,-10.5c-6,-1,-6.1,-0.8,-6.1,5.6c0,53,0,105.9,0,158.9c0,1,0,2,0,3  c0.2,2.6,1,4.1,4,4.6c10.1,1.7,20.1,3.9,30.2,5.8c27.3,5.1,54.6,10.1,81.9,15.2c22.1,4.2,44.1,8.6,66.2,12.8  c27.3,5.2,54.6,10.2,81.9,15.3c22.7,4.3,45.5,8.6,68.2,12.8c6.5,1.2,6.5,1.1,6.5,-5.7C409,272,409,244.7,409,217.4z"
-        android:fillColor="#E8E8E8"/>
-    <path
-        android:pathData="M412,129c-1.3,0,-2,-0.7,-2,-2C411.3,127,412,127.7,412,129z"
-        android:fillColor="#EAEAEA"/>
-    <path
-        android:pathData="M65.8,248.3c10.1,0.7,19.8,3.5,29.7,5.2c19,3.3,38,7,57,10.6c15.9,3,31.8,6.2,47.8,9.2  c24,4.6,48,9.1,72,13.7c14.6,2.8,29.3,5.5,43.8,8.5c22.5,4.6,45.3,8.4,67.9,12.6c4.1,0.8,8.2,1.8,12.4,3.8  c-6.4,2.1,-12.8,4.3,-19.2,6.4c-9.5,3.1,-19.1,5.8,-28.4,9.4c-6.7,2.6,-13.3,2.5,-20,1.3c-41.4,-7.6,-82.8,-15.2,-124.2,-22.8  c-32.6,-6,-65.2,-11.9,-97.8,-17.8c-13.7,-2.5,-27.4,-4.9,-41.1,-7.4C65.9,270,65.9,259.1,65.8,248.3z"
-        android:fillColor="#E6A3A3"/>
-    <path
-        android:pathData="M275,519c-1.5,3.9,-3.5,7.5,-3.3,12.1c0.1,2.9,-2.8,1.7,-4.7,1.4c-12,-2.2,-24.1,-4.3,-36.1,-6.6  c-15.3,-2.9,-30.5,-6,-45.8,-8.7c-5.1,-0.9,-7.5,-2.8,-7.5,-8.4c0,-3.2,-0.8,-6.5,-0.7,-9.9c12.2,2.3,24.4,4.6,36.5,7c19.8,3.9,39.5,8,59.3,12  C273.6,518.2,274.3,518.7,275,519z"
-        android:fillColor="#CBCBCA"/>
-    <path
-        android:pathData="M202.9,345.9c0,3.3,-0.1,6.7,0.1,10c0.2,3.9,-1.4,4.3,-4.9,3.7c-29.9,-5.6,-59.8,-11.2,-89.8,-16.5  c-3,-0.5,-3.5,-1.7,-3.4,-4.2c0.1,-3.3,0.1,-6.7,0.1,-10c21.7,3.9,43.4,7.9,65.2,11.6C181.1,342.4,191.8,345.3,202.9,345.9z"
-        android:fillColor="#CFCFCE"/>
-    <path
-        android:pathData="M65.8,248.3c0,10.9,0,21.7,0,32.6c-17.9,-3.1,-35.8,-6.2,-53.7,-9.3c0,-0.4,0,-0.7,0,-1.1  C30.1,263,48,255.6,65.8,248.3z"
-        android:fillColor="#E57474"/>
-    <path
-        android:pathData="M202.9,345.9c-11.1,-0.6,-21.8,-3.5,-32.6,-5.4c-21.8,-3.7,-43.5,-7.7,-65.2,-11.6c-0.6,-3.8,0.6,-5.6,4.8,-4.8  c28.3,5,56.6,9.9,84.9,14.9c1.1,0.2,2.3,0.8,3.4,0.8C202.8,339.6,203.4,342.3,202.9,345.9z"
-        android:fillColor="#BDBDBD"/>
-    <path
-        android:pathData="M367,876c7.8,-0.4,15,1.9,22,5C381.4,880.3,374.2,878.4,367,876z"
-        android:fillColor="#EFEFEE"/>
-    <path
-        android:pathData="M354,873c4.5,0.1,9.1,0.1,13,3C362.5,875.6,358.1,875,354,873z"
-        android:fillColor="#EFEFEE"/>
-    <path
-        android:pathData="M350,872c1.4,0.1,3,-0.5,4,1C352.6,872.9,351,873.5,350,872z"
-        android:fillColor="#EFEFEE"/>
-    <path
-        android:pathData="M274.1,705c1.9,3.6,1,7.5,0.6,11.2c-0.3,2.8,-2.5,3.1,-4.9,2.6c-29.7,-5.9,-59.3,-11.9,-89,-17.7  c-3.1,-0.6,-3.9,-1.9,-3.8,-4.6c0.1,-3.2,0,-6.3,0,-9.5c1.2,0,2.4,-0.1,3.5,0.1c19.2,3.8,38.4,7.7,57.6,11.4  C250.1,700.8,261.9,703.8,274.1,705z"
-        android:fillColor="#D6D6D5"/>
-    <path
-        android:pathData="M274.1,705c-12.1,-1.2,-24,-4.2,-35.9,-6.5c-19.2,-3.7,-38.4,-7.6,-57.6,-11.4c-1.1,-0.2,-2.3,-0.1,-3.5,-0.1  c-0.5,-4.2,0.7,-5.4,5.3,-4.5c29.5,5.7,59.1,11.1,88.7,16.5C275.3,699.7,275.1,702,274.1,705z"
-        android:fillColor="#C9C9C8"/>
-    <path
-        android:pathData="M409,217.4c0,27.3,0,54.6,0,82c0,6.8,0,6.9,-6.5,5.7c-22.7,-4.2,-45.5,-8.6,-68.2,-12.8  c-27.3,-5.1,-54.6,-10.1,-81.9,-15.3c-22.1,-4.2,-44.1,-8.6,-66.2,-12.8c-27.3,-5.2,-54.6,-10.1,-81.9,-15.2c-10.1,-1.9,-20.1,-4.1,-30.2,-5.8  c-3,-0.5,-3.9,-2.1,-4,-4.6c-0.1,-1,0,-2,0,-3c0,-53,0,-105.9,0,-158.9c0,-6.4,0,-6.6,6.1,-5.6c20,3.4,40,7,60.1,10.5c22.1,3.9,44.3,7.6,66.4,11.5  c17.7,3.1,35.5,6.3,53.2,9.4c24.1,4.2,48.2,8.4,72.3,12.6c23.4,4.1,46.9,8.2,70.3,12.6c10.8,2,10.7,2.3,10.7,13.2  C409,166.4,409,191.9,409,217.4z M283.9,146.9c0.4,-3.2,-0.2,-5.3,-4,-6c-29.7,-5,-59.4,-9.9,-89,-15.3c-4.8,-0.9,-5.2,0.7,-4.8,4.4  c0,3.5,-0.1,7,0,10.5c0,1.3,-0.4,3.2,1.4,3.3c2.9,0.1,5.3,1.8,8.1,2.3c13.8,2.4,27.6,4.9,41.4,7.4c13.3,2.4,26.5,5.1,39.8,7.4  c6.6,1.2,7.3,0.4,7.3,-6.5C284,151.9,283.9,149.4,283.9,146.9z"
-        android:fillColor="#E8E7E7"/>
-    <path
-        android:pathData="M283.9,146.9c0,2.5,0.1,5,0.1,7.5c0,6.9,-0.7,7.7,-7.3,6.5c-13.3,-2.4,-26.5,-5,-39.8,-7.4  c-13.8,-2.5,-27.6,-5.1,-41.4,-7.4c-2.8,-0.5,-5.2,-2.2,-8.1,-2.3c-1.8,-0.1,-1.4,-2,-1.4,-3.3c0,-3.5,0,-7,0,-10.5c1.9,0.3,3.9,0.7,5.8,1  c21.6,4,43.1,8.1,64.7,11.8C265.6,144.4,274.5,147.1,283.9,146.9z"
-        android:fillColor="#CFCFCE"/>
-    <path
-        android:pathData="M283.9,146.9c-9.3,0.2,-18.3,-2.5,-27.3,-4.1c-21.6,-3.7,-43.1,-7.8,-64.7,-11.8c-1.9,-0.4,-3.9,-0.7,-5.8,-1  c-0.4,-3.6,-0.1,-5.2,4.8,-4.4c29.6,5.4,59.3,10.4,89,15.3C283.7,141.6,284.3,143.7,283.9,146.9z"
-        android:fillColor="#BDBDBD"/>
-</vector>
diff --git a/packages/DocumentsUI/res/drawable/drag_shadow_background.xml b/packages/DocumentsUI/res/drawable/drag_shadow_background.xml
deleted file mode 100644
index 49465cb..0000000
--- a/packages/DocumentsUI/res/drawable/drag_shadow_background.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-       android:shape="rectangle">
-  <solid android:color="@color/item_doc_background" />
-  <stroke
-      android:width="1dp"
-      android:color="#ff9f9f9f" />
-  <corners
-      android:bottomRightRadius="3dp"
-      android:bottomLeftRadius="3dp"
-      android:topLeftRadius="3dp"
-      android:topRightRadius="3dp"/>
-</shape>
diff --git a/packages/DocumentsUI/res/drawable/hourglass.xml b/packages/DocumentsUI/res/drawable/hourglass.xml
deleted file mode 100644
index 9b8d0e2..0000000
--- a/packages/DocumentsUI/res/drawable/hourglass.xml
+++ /dev/null
@@ -1,168 +0,0 @@
-<!--
-Copyright (C) 2016 The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="421dp"
-        android:height="909dp"
-        android:viewportWidth="421.0"
-        android:viewportHeight="909.0">
-    <path
-        android:pathData="M36,122.9c-2.8,-2.6,-5.7,-5.1,-8.3,-7.8c-5.6,-6,-9.2,-12.9,-8.8,-21.5c0.3,-7.5,0.6,-15,-0.1,-22.5   c-1.2,-14.1,5.5,-23.9,16,-31.9c16.7,-12.8,36.1,-19.6,56.1,-25.1c23.8,-6.5,48,-10.2,72.5,-12.3C168.6,1.3,174,2.2,179,0   c19.3,0,38.7,0,58,0c6,2.1,12.4,1.3,18.6,1.8c30.2,2.7,59.9,7.6,88.5,17.5c16.5,5.7,32.6,12.6,45.2,25.4c6.5,6.6,10.3,14,9.8,23.6   c-0.4,7.8,-0.5,15.7,0,23.4c0.6,10.3,-3.4,18.4,-10.6,25.2c-2.2,2,-4.4,4,-6.6,6c-3,2,-6.1,4,-9.1,5.9c-9.2,4.5,-18.5,9,-28.2,12.3   c-42.4,14.5,-86.3,18.8,-130.8,19.6c-10.9,0.2,-21.9,-0.4,-32.9,-0.7c-4.6,-0.4,-9.2,-0.8,-13.9,-1.1c-18.9,-1.1,-37.5,-3.9,-56,-7.6   c-15.3,-3.1,-30.2,-7.6,-44.9,-12.6c-7.6,-3.7,-15.3,-7.4,-22.9,-11.1C41.1,125.8,38.6,124.3,36,122.9z M41,72c2.9,6.9,7.1,12.6,13.1,17.2   c13,10,27.9,15.8,43.4,20.6c28.2,8.8,57.2,12.8,86.5,14c31.8,1.2,63.7,0.8,95.3,-4.6c25.3,-4.4,50.1,-10,72.9,-22.2   c10.8,-5.8,20,-13.1,24.7,-24.9c2.3,-11,-2.3,-19.5,-10.2,-26.4c-10.5,-9.2,-23.1,-14.9,-36.2,-19.6C295.2,13.4,258.4,9.7,221.2,8.1   c-11.1,-0.5,-22.2,0,-33.4,0.6c-21.4,1,-42.6,3.1,-63.6,7.3c-22.2,4.5,-44.1,10.3,-63.4,22.6C48.9,46.3,38.4,55.4,41,72z"
-        android:fillColor="#9F9F9F"/>
-    <path
-        android:pathData="M0,829c3.7,-2.8,4.7,-7.6,7.8,-10.9c2.6,-2.8,4.9,-5.7,9.2,-7.6c0,3.4,-0.1,6.5,0,9.5c0,1.5,-0.7,3.5,1.7,4   c0.4,3.3,1.4,6.4,2.9,9.4c3.8,7.7,10,13,16.8,17.9c9.2,6.7,19.7,10.8,29.8,15.5c-0.7,2.4,1.3,0.7,1.8,1.1l0,0c1.5,2.1,3.7,2.2,6,2   l0,0c0.8,0.6,1.5,1.4,2.4,1.7c9.5,2.7,18.9,5.8,28.7,7.4c3.6,0.6,7,3.5,10.9,1.1c2.4,0.4,4.8,0.8,7.1,1.2c0.2,1.5,1.3,1.6,2.5,1.8   c6.6,0.9,13.3,2.4,19.9,2.8c5.1,0.3,10.3,2.9,15.4,0.3c0.4,0,0.8,0.1,1.1,0.1c0.3,2.2,2.1,1.8,3.5,1.8c3.8,0,7.6,0,11.5,0   c1.1,1.4,2.7,1,4.1,1c17.2,0,34.5,0,51.7,0c1.4,0,3,0.4,4.1,-1c3.8,0,7.6,0,11.5,0c1.4,0,3.2,0.4,3.5,-1.8c9.4,-1,18.7,-2.1,28.1,-3.1   c6,1.3,11.6,0.4,16.9,-2.8c21.2,-4.2,42.1,-9.3,61.8,-18.4c15.8,-7.3,30.8,-15.8,38,-33.1c2.4,-2,1.9,-4.8,2.2,-7.4c0.3,-3,0,-6,0.1,-9   c0,-1,-0.3,-2.1,0.7,-2.7c1.1,-0.7,1.7,0.5,2.5,1c7.2,5,12.1,11.7,14.8,20c0.4,1.2,0.6,2.2,2.1,2.3c0,3.3,0,6.7,0,10   c-1.5,0,-1.8,1.1,-2.2,2.2c-3.8,10.2,-11.2,17.5,-20.1,23.3c-20.8,13.6,-44.1,21.2,-68.1,26.7c-29.2,6.7,-58.7,11,-88.7,11.7   c-1.6,0,-3.5,-0.5,-3.9,2c-18.7,0,-37.3,0,-56,0c-0.3,-2.5,-2.3,-1.9,-3.9,-2c-5.6,-0.1,-11.2,-0.5,-16.9,-0.8c-18.5,-1.2,-36.8,-3.8,-55,-7.3   C79.9,893.9,54,887,30.2,874C19,867.9,8.5,860.9,2.5,849C2,848,1.4,847,0,847C0,841,0,835,0,829z"
-        android:fillColor="#E6E4E4"/>
-    <path
-        android:pathData="M372.9,128.9c3,-2,6.1,-4,9.1,-5.9c-0.2,2.7,0.2,5.4,1,8c-1.5,1.6,-0.3,1.8,1,2c0.3,1,0.7,2,1,3   c-1.5,1.6,-0.3,1.8,1,2c0.7,2,1.3,4,2,6c-1.5,1.6,-0.3,1.8,1,2c0.3,1.7,0.7,3.3,1,5c-1,2.3,-0.6,4.1,2,5c4.9,23.8,9,47.6,8,72   c-3.5,1.5,-2.1,3.8,-1,6c-1,6,-2,12,-3,18c-1.3,1,-1.3,2,0,3c0,0.7,0,1.3,0,2c-2.1,0.4,-2.6,1.3,-1,3c0,0.3,0,0.7,0,1   c-1.3,0.2,-2.5,0.4,-1,2c0.4,2.1,-0.7,4,-1,6c-1.3,0.2,-2.5,0.4,-1,2c-3.7,9.3,-7.3,18.7,-11,28c-2.7,1.2,-4.2,2.9,-3,6   c-3.4,6.9,-7.8,13.3,-12.2,19.5c-6.1,8.6,-12.4,17.3,-19.4,25.2c-7.3,8.3,-15.5,15.8,-23.9,23c-11.9,10.3,-24.9,19.3,-38.1,27.7   c-12.2,7.8,-25.4,14.1,-38.4,20.5c-12.1,6,-18.5,15.8,-21,28.6c-1.5,7.8,-0.5,15.4,2,22.8c1.2,3.5,3.7,6.1,5.6,9.2   c5.4,8.6,14.8,10.5,22.6,15c15.3,9,30.8,17.7,45.3,28.1c14.4,10.4,28.2,21.5,40.5,34.1c10.1,10.4,18.5,22.2,26.8,34.3   c6.5,9.5,11.3,19.6,16.1,29.8c-1.5,1.6,-0.3,1.8,1,2c0.7,2,1.3,4,2,6c-1,2.3,-0.6,4.1,2,5c0.7,1.2,1.2,2.5,1,4c-1,2.3,-0.6,4.1,2,5   c1.2,12.3,4.6,24.1,5.7,36.5c0.8,8.4,1.4,16.8,1,25.1c-0.3,5.9,-1.1,12,-1.9,18c-1.2,8.7,-2.3,17.4,-4.2,25.9   c-1.5,6.6,-3.7,13.1,-5.6,19.6c-1.8,3.1,-2.9,6.5,-3.9,9.9c-3.4,6.4,-5.6,13.6,-11.9,18.2c-0.1,-3.8,1.6,-7.1,3,-10.4   c8.7,-20.9,13,-42.8,14.7,-65.1c1,-12.9,0.2,-25.8,-1.7,-38.7c-2.7,-18.5,-7.8,-36.2,-15.8,-53.1c-7.3,-15.4,-16.8,-29.3,-27.7,-42.4   c-2.7,-3.2,-6.3,-5.7,-9.6,-8.6c0.4,0.8,0.7,1.4,1,1.9c0.7,1.1,1.5,2.2,2.3,3.3c16.5,21.5,28.5,45.2,34.2,71.7c0.7,3.3,3.1,6.9,0.3,10.4   c-1,-1.9,-2.1,-3.7,-3.1,-5.6c-3.3,-6.3,-6.1,-12.9,-11.7,-17.6c-0.4,-0.9,-0.8,-1.8,-1.3,-2.6c-4,-6.3,-10.4,-10.4,-14.8,-16.2c0,-5.4,-2.7,-9.9,-4.8,-14.5   c-8.4,-18.6,-20.4,-34.9,-32.9,-50.8c-8.4,-10.8,-15.5,-22.8,-28.7,-28.8c-5.3,-2.4,-10,-6,-15.1,-8.6c-5.1,-2.6,-9.9,-6.4,-16.3,-5.2   c-5.2,1,-10.4,2.1,-15.3,4.1c-29.3,11.9,-48.4,34.1,-61.8,61.9c-0.3,0.3,-0.7,0.6,-1,1c-7.1,0.8,-13.9,2.9,-20.7,5.1   c-32.6,10.6,-61,27.4,-82.3,54.9c-9.2,11.6,-15.4,24.7,-18.9,39c-1.5,-1.1,-1.1,-2.7,-1.1,-4.1c-0.1,-9.6,0.3,-19.2,1.8,-28.7   c3.7,-22.6,11.8,-43.5,24,-62.8c12.6,-20,28.6,-36.9,47,-51.7c21.3,-17.3,44.6,-31.3,69.3,-42.9c14.5,-6.8,20,-18.8,21.8,-33.1   c1.8,-13.3,-4.9,-24.1,-12.2,-34.4c-3.6,-5,-7.4,-9.8,-13.2,-12.5c-5.8,-2.8,-11.6,-5.7,-17.4,-8.7c-22,-11.6,-42.6,-25.1,-61.1,-41.7   c-20.7,-18.6,-37.9,-40,-48.8,-65.9c-6.7,-15.7,-10.9,-32.1,-12,-49c-1.8,-27.1,2.1,-53.6,11.7,-79.1c3.8,-10.1,7.1,-20.4,13.3,-29.4   c14.7,5,29.6,9.5,44.9,12.6c18.5,3.7,37.2,6.5,56,7.6c4.6,0.3,9.3,0.7,13.9,1.1c0.2,3.6,-1.5,6.8,-2.6,10   c-11.9,33.6,-17.8,68.2,-17.2,103.8c0.2,9.7,1.3,19.4,2.7,29.1c3.8,24.6,11.4,47.7,26,68.1c12.2,17.1,28.4,28.6,49,33.4   c4.7,1.1,9.5,2.2,14.5,-0.5c18.7,-10.2,36.8,-21.2,53.7,-34.2c15.4,-11.9,29.4,-25.3,41.5,-40.5c12.9,-16.2,23.4,-33.8,30.4,-53.4   c6.4,-17.6,10.3,-35.6,10.9,-54.3c0.5,-15.9,0.2,-31.9,-3,-47.6C383.8,158.7,380.1,143.3,372.9,128.9z"
-        android:fillColor="#EDECEC"/>
-    <path
-        android:pathData="M383,780c1.1,-3.4,2.1,-6.8,3.9,-9.9c7.8,7.1,12.8,15.2,12.2,26.4c-0.6,10.7,-0.3,21.5,-0.5,32.3   c-7.2,17.3,-22.2,25.8,-38,33.1c-19.7,9.1,-40.6,14.1,-61.8,18.4c-5.6,0.9,-11.3,1.9,-16.9,2.8c-9.4,1,-18.7,2.1,-28.1,3.1   c-5,0.3,-9.9,0.7,-14.9,1c-20,1.2,-40,0.9,-60,0c-5,-0.3,-9.9,-0.7,-14.9,-1c-0.4,0,-0.8,-0.1,-1.1,-0.1c-12.6,-1.6,-25.2,-3.2,-37.9,-4.8   c-2.4,-0.4,-4.8,-0.8,-7.1,-1.2c-2.6,-0.6,-5.1,-1.3,-7.7,-1.8c-11.6,-2,-22.6,-6.3,-34.2,-8.4c0,0,0,0,0,0c-1.7,-1.6,-3.7,-2.2,-6,-2c0,0,0,0,0,0   c-0.2,-1,-1.1,-0.9,-1.8,-1.1c-10.2,-4.7,-20.6,-8.8,-29.8,-15.5c-6.8,-4.9,-13,-10.2,-16.8,-17.9c-1.5,-3,-2.4,-6.1,-2.9,-9.4   c0.1,-10.3,0,-20.6,0.2,-30.9c0.1,-8.3,3.5,-15,10,-20.2c2,3.5,3.4,7.1,4.1,11c-1.1,0.8,-1,2,-1.1,3.1c-0.6,8.2,2.9,14.9,8.3,20.6   c8.9,9.6,20.4,15.4,32.3,20.2c17.9,7.2,36.5,11.9,55.4,15.4c20.1,3.7,40.3,5.7,60.6,6.5c21.4,0.8,42.8,0.4,64.2,-1.6   c19.8,-1.9,39.4,-4.6,58.7,-9.3c19.9,-4.8,39.3,-11.2,56.4,-22.9c7.8,-5.3,15.2,-11.3,17.4,-21C386.4,790.1,388.3,784.3,383,780z"
-        android:fillColor="#9F9F9F"/>
-    <path
-        android:pathData="M378,305c-1.2,-3.1,0.3,-4.8,3,-6C380.6,301.3,379.7,303.3,378,305z"
-        android:fillColor="#F1F0F0"/>
-    <path
-        android:pathData="M399,234c-1.1,-2.2,-2.5,-4.5,1,-6C399.7,230,400.8,232.2,399,234z"
-        android:fillColor="#F1F0F0"/>
-    <path
-        android:pathData="M392,156c-2.6,-0.9,-3,-2.7,-2,-5C391.4,152.4,391.6,154.2,392,156z"
-        android:fillColor="#F1F0F0"/>
-    <path
-        android:pathData="M389,636c-2.6,-0.9,-3,-2.7,-2,-5C388.4,632.4,388.6,634.2,389,636z"
-        android:fillColor="#F1F0F0"/>
-    <path
-        android:pathData="M392,645c-2.6,-0.9,-3,-2.7,-2,-5C391.4,641.4,391.6,643.2,392,645z"
-        android:fillColor="#F1F0F0"/>
-    <path
-        android:pathData="M396,255c-1.3,-1,-1.3,-2,0,-3C397.3,253,397.3,254,396,255z"
-        android:fillColor="#F1F0F0"/>
-    <path
-        android:pathData="M395,260c-1.6,-1.7,-1.1,-2.6,1,-3C395.7,258,395.3,259,395,260z"
-        android:fillColor="#F1F0F0"/>
-    <path
-        android:pathData="M384,133c-1.3,-0.2,-2.5,-0.4,-1,-2C383.8,131.4,384,132.2,384,133z"
-        android:fillColor="#F1F0F0"/>
-    <path
-        android:pathData="M385,625c-1.3,-0.2,-2.5,-0.4,-1,-2C384.8,623.4,385,624.2,385,625z"
-        android:fillColor="#F1F0F0"/>
-    <path
-        android:pathData="M392,271c-1.5,-1.6,-0.3,-1.8,1,-2C393,269.8,392.8,270.6,392,271z"
-        android:fillColor="#F1F0F0"/>
-    <path
-        android:pathData="M394,263c-1.5,-1.6,-0.3,-1.8,1,-2C395,261.8,394.8,262.6,394,263z"
-        android:fillColor="#F1F0F0"/>
-    <path
-        android:pathData="M386,138c-1.3,-0.2,-2.5,-0.4,-1,-2C385.8,136.4,386,137.2,386,138z"
-        android:fillColor="#F1F0F0"/>
-    <path
-        android:pathData="M389,146c-1.3,-0.2,-2.5,-0.4,-1,-2C388.8,144.4,389,145.2,389,146z"
-        android:fillColor="#F1F0F0"/>
-    <path
-        android:pathData="M33.1,783.9c-0.8,-3.9,-2.2,-7.6,-4.1,-11c-3.7,-11.7,-7.2,-23.5,-9.2,-35.5c-1.3,-7.6,-1.9,-15.4,-2.7,-23.2   c-0.6,-6.2,-0.9,-12.4,-1,-18.5c-0.2,-7.9,1.9,-15.7,2.3,-23.4c0.5,-10.1,2.9,-19.5,5.5,-29c6.3,-23.1,17.3,-43.9,31.5,-62.8   c23.4,-31.1,53.3,-54.7,86.9,-74.1c10.1,-5.8,20.3,-11.6,30.9,-16.2c11.7,-5.2,16.3,-14.9,18.8,-26.3c3.2,-14.9,-2.8,-26.6,-12.7,-37.1   c-1.8,-1.9,-3.9,-3.1,-6.2,-4.2c-23.7,-11.4,-46.4,-24.4,-67.2,-40.7c-16.2,-12.6,-31.3,-26.5,-44.2,-42.6c-16.2,-20.3,-28.8,-42.5,-36.2,-67.5   c-3.1,-10.6,-5.4,-21.3,-6.2,-32.4c-0.7,-9.6,-3.2,-19.3,-2,-28.8c0.8,-6.6,1.5,-13.4,1.9,-20c1,-15.2,4.9,-29.6,9.2,-44c1.7,-5.7,4,-11.3,6.4,-16.8   c0.9,-2.2,1.3,-4.4,1.3,-6.8c2.6,1.4,5.1,2.9,7.2,4.9c-0.6,0.8,-1.4,1.4,-1.8,2.3c-11.2,26.2,-16.2,53.8,-17.4,82.2   c-0.4,8.8,1,17.5,1.9,26.2c2,19.7,7.4,38.4,15.6,56.3c17.9,39.2,46.6,69.1,81.3,93.6c18.5,13.1,38.1,24.3,58.5,34.1   c3.3,1.6,6,3.7,8.1,6.5c8,10.6,12.6,22.1,9.6,35.7c-2.1,9.4,-6.5,17.9,-14.8,22.7c-8.2,4.7,-16.9,8.5,-25.3,12.9   c-22.5,12,-43.8,25.8,-62.6,43c-21.9,19.9,-40.8,42.1,-53.7,69.2C26.3,646.5,20.6,682,24.1,719c1.8,18.7,7,36.7,12.7,54.6   c5.9,18.7,18.2,30.9,35.3,38.9c15.4,7.2,31.5,12.2,48.1,15.8c1.6,0.4,4.3,-0.3,4.8,2.6c-18,-2.8,-35.4,-7.5,-52.3,-14.5   c-12.2,-5.1,-23.4,-11.4,-32.4,-21.4C37.2,791.7,36.5,787,33.1,783.9z"
-        android:fillColor="#EDECEC"/>
-    <path
-        android:pathData="M372.9,128.9c7.2,14.3,10.9,29.8,14.1,45.4c3.2,15.7,3.5,31.6,3,47.6c-0.6,18.7,-4.6,36.7,-10.9,54.3   c-7.1,19.6,-17.6,37.2,-30.4,53.4c-12.1,15.2,-26.1,28.6,-41.5,40.5c-16.9,13,-35,24,-53.7,34.2c-5,2.7,-9.8,1.6,-14.5,0.5   c-20.6,-4.8,-36.8,-16.3,-49,-33.4c-14.6,-20.4,-22.3,-43.5,-26,-68.1c-1.5,-9.7,-2.6,-19.4,-2.7,-29.1c-0.6,-35.6,5.4,-70.2,17.2,-103.8   c1.2,-3.3,2.8,-6.4,2.6,-10c11,0.2,21.9,0.9,32.9,0.7c44.4,-0.8,88.4,-5.2,130.8,-19.6C354.4,137.9,363.7,133.5,372.9,128.9z"
-        android:fillColor="#F1F0F0"/>
-    <path
-        android:pathData="M377,72c-4.6,11.9,-13.9,19.1,-24.7,24.9c-22.9,12.2,-47.6,17.9,-72.9,22.2c-31.6,5.4,-63.5,5.9,-95.3,4.6   c-29.3,-1.1,-58.3,-5.1,-86.5,-14C82.1,105,67.2,99.1,54.2,89.2C48.2,84.6,43.9,78.8,41,72c3.9,-1.8,4.6,-6.2,7.3,-9   c10.3,-10.5,22.9,-16.9,36.5,-21.8c19.7,-7.1,40,-11.5,60.7,-14.5c19.4,-2.8,38.9,-3.9,58.4,-4.5c17.9,-0.6,35.8,0.8,53.6,2.8   c15,1.6,29.9,3.5,44.5,7.1c20,4.9,39.7,10.7,57.2,22.1C366.5,58.8,371.5,65.5,377,72z"
-        android:fillColor="#8D8E8E"/>
-    <path
-        android:pathData="M125,831c-0.4,-2.9,-3.2,-2.3,-4.8,-2.6c-16.6,-3.7,-32.7,-8.7,-48.1,-15.8c-17.1,-8,-29.4,-20.2,-35.3,-38.9   c-5.7,-17.9,-10.9,-35.9,-12.7,-54.6c-3.6,-37.1,2.1,-72.5,18.4,-106.4c13,-27.1,31.9,-49.3,53.7,-69.2c18.8,-17.1,40.2,-30.9,62.6,-43   c8.4,-4.5,17.1,-8.2,25.3,-12.9c8.4,-4.8,12.7,-13.3,14.8,-22.7c3.1,-13.6,-1.6,-25.1,-9.6,-35.7c-2.1,-2.8,-4.8,-4.9,-8.1,-6.5   c-20.4,-9.9,-40,-21.1,-58.5,-34.1c-34.7,-24.6,-63.4,-54.5,-81.3,-93.6c-8.2,-17.9,-13.6,-36.6,-15.6,-56.3c-0.9,-8.7,-2.3,-17.5,-1.9,-26.2   c1.2,-28.3,6.2,-55.9,17.4,-82.2c0.4,-0.9,1.2,-1.5,1.8,-2.3c7.6,3.7,15.3,7.4,22.9,11.1c-6.2,9,-9.5,19.3,-13.3,29.4   c-9.6,25.5,-13.5,52,-11.7,79.1c1.1,16.9,5.4,33.3,12,49c11,25.9,28.1,47.4,48.8,65.9c18.5,16.6,39.1,30.2,61.1,41.7   c5.7,3,11.5,5.9,17.4,8.7c5.8,2.8,9.7,7.6,13.2,12.5c7.3,10.3,14,21.1,12.2,34.4c-1.9,14.3,-7.4,26.3,-21.8,33.1   c-24.7,11.6,-48,25.7,-69.3,42.9c-18.3,14.9,-34.3,31.7,-47,51.7c-12.2,19.3,-20.3,40.2,-24,62.8c-1.6,9.6,-2,19.1,-1.8,28.7   c0,1.4,-0.4,3.1,1.1,4.1c-0.6,14.9,0.1,29.8,3,44.5c4.2,21.4,9.1,42.6,26,58.4c-0.2,2.3,0.9,4.1,2.2,5.9c8.8,12.3,22,18.6,35.3,24.1   c26.4,10.9,54.2,16.1,82.4,19.1c1.7,0.2,3,0.4,3,2.4c-4.5,0.7,-9,0.9,-13.4,0.5c-13.2,-1,-26.5,-1.9,-39.6,-4.1c-0.6,-2.4,-1.7,-2.3,-3.1,-0.6   c-1.3,-0.1,-2.6,-0.3,-3.9,-0.4c-0.6,-2.3,-1.6,-2.4,-3.1,-0.7c-0.6,-0.1,-1.3,-0.2,-1.9,-0.3c-0.6,-2.4,-1.7,-2.4,-3.1,-0.6   C126.2,831.2,125.6,831.1,125,831z"
-        android:fillColor="#E8E8E7"/>
-    <path
-        android:pathData="M377,72c-5.4,-6.4,-10.5,-13.2,-17.7,-17.9C341.7,42.7,322.1,36.9,302,32c-14.6,-3.6,-29.5,-5.5,-44.5,-7.1   c-17.8,-1.9,-35.7,-3.3,-53.6,-2.8c-19.5,0.6,-39,1.7,-58.4,4.5c-20.7,3,-41,7.4,-60.7,14.5C71.3,46.1,58.7,52.4,48.4,63   c-2.7,2.8,-3.5,7.2,-7.3,9c-2.6,-16.6,7.9,-25.6,19.8,-33.3c19.3,-12.3,41.2,-18.2,63.4,-22.6c21,-4.2,42.2,-6.3,63.6,-7.3   c11.1,-0.5,22.3,-1,33.4,-0.6c37.2,1.5,74,5.3,109.4,17.9c13.1,4.6,25.6,10.4,36.2,19.6C374.7,52.5,379.3,61,377,72z"
-        android:fillColor="#808080"/>
-    <path
-        android:pathData="M179,887.2c20,0.9,40,1.2,60,0c0,0.3,0,0.5,0,0.8c-1.1,1.4,-2.7,1,-4.1,1c-17.2,0,-34.5,0,-51.7,0   c-1.4,0,-3,0.4,-4.1,-1C179,887.7,179,887.5,179,887.2z"
-        android:fillColor="#F4F3F2"/>
-    <path
-        android:pathData="M76,869.9c11.6,2.2,22.6,6.5,34.2,8.4c2.6,0.4,5.2,1.2,7.7,1.8c-3.9,2.3,-7.3,-0.6,-10.9,-1.1   c-9.8,-1.6,-19.2,-4.7,-28.7,-7.4C77.5,871.3,76.8,870.5,76,869.9z"
-        android:fillColor="#F4F3F2"/>
-    <path
-        android:pathData="M125.1,881.3c12.6,1.6,25.2,3.2,37.9,4.8c-5.2,2.6,-10.3,0,-15.4,-0.3c-6.7,-0.4,-13.3,-1.9,-19.9,-2.8   C126.3,882.9,125.2,882.8,125.1,881.3z"
-        android:fillColor="#F4F3F2"/>
-    <path
-        android:pathData="M282,883.1c5.6,-0.9,11.3,-1.9,16.9,-2.8C293.7,883.4,288.1,884.4,282,883.1z"
-        android:fillColor="#F4F3F2"/>
-    <path
-        android:pathData="M179,887.2c0,0.3,0,0.5,0,0.8c-3.8,0,-7.6,0,-11.5,0c-1.4,0,-3.2,0.4,-3.5,-1.8C169,886.5,174,886.9,179,887.2z"
-        android:fillColor="#FFFFFF"/>
-    <path
-        android:pathData="M239,888c0,-0.3,0,-0.5,0,-0.8c5,-0.3,9.9,-0.7,14.9,-1c-0.3,2.2,-2.1,1.8,-3.5,1.8C246.6,888,242.8,888,239,888z"
-        android:fillColor="#FFFFFF"/>
-    <path
-        android:pathData="M70,867.9c2.3,-0.2,4.3,0.4,6,2C73.8,870.1,71.6,870,70,867.9z"
-        android:fillColor="#F4F3F2"/>
-    <path
-        android:pathData="M68.2,866.8c0.7,0.2,1.6,0.2,1.8,1.1C69.5,867.4,67.6,869.2,68.2,866.8z"
-        android:fillColor="#F4F3F2"/>
-    <path
-        android:pathData="M165,584c0.3,-0.3,0.7,-0.6,1,-1c10.5,-1.3,21,-3.3,31.5,-3.8c20.8,-1.1,41.4,0.7,61.7,5.4   c30.5,7,57.8,20.3,81.8,40.5c4.4,5.9,10.8,10,14.8,16.2c0.5,0.8,0.9,1.7,1.3,2.6c-2.4,4.1,-4.7,8.1,-7.1,12.2c-4,3.7,-6.3,8.9,-11,12   c-1.6,-0.1,-2.8,0.5,-4.1,1.5c-12.6,9.3,-26.7,15.6,-41.5,20.1c-31,9.4,-62.6,13.3,-95.1,11.6c-12.3,-0.6,-24.5,-1.5,-36.5,-3.4   c-4.5,-0.7,-5.3,0.5,-4.8,4.2c-0.5,0,-1,0.1,-1.5,0c-17.8,-3.9,-34.7,-10.3,-50.9,-18.7c-1,-0.5,-1.6,-1.1,-1.6,-2.3c2.3,-0.3,4.1,1.1,6.1,2   c14.2,6.2,28.9,10.6,44.1,13.3c2.5,0.4,3,0.2,2.4,-2.3c-2.5,-9.3,-3.7,-18.7,-4.8,-28.3c-1.5,-13.7,-0.3,-27.1,1.7,-40.5   C154.6,610.8,159.7,597.4,165,584z"
-        android:fillColor="#E57474"/>
-    <path
-        android:pathData="M103,681c0.1,1.1,0.7,1.8,1.6,2.3c16.2,8.4,33.1,14.8,50.9,18.7c0.5,0.1,1,0,1.5,0c0.6,0.4,1.3,0.7,1.9,1.1   c-0.1,2.7,1,5.2,1.9,7.6c6.5,17.8,16.5,33.6,27.5,48.8c12.5,17.1,27.1,32.1,45.1,43.6c6.6,4.2,13.7,7.3,20.5,11   c-15.6,2.8,-31.4,2.5,-47.1,2.4c-9.9,0,-19.9,-0.2,-29.8,-1.1c-18.2,-1.6,-36.2,-3.9,-54,-8.3c-18.1,-4.4,-35.9,-9.5,-51,-21.1   c-16.9,-15.8,-21.8,-37,-26,-58.4c-2.9,-14.7,-3.6,-29.6,-3,-44.5c3.5,-14.4,9.7,-27.4,18.9,-39c3.4,4.8,6.2,10.1,10.3,14.2   c6,6.1,11.6,13,19.7,16.8c0.5,0.8,1.2,1,2.1,1c0,0,0,0,0,0c0.3,0.3,0.7,0.7,1,1c0,0,0,0,0,0c0.3,0.3,0.7,0.7,1,1l0,0   c1,1.3,2.4,1.8,4,2l0,0C100.7,681.2,101.9,681,103,681L103,681z"
-        android:fillColor="#E6A3A3"/>
-    <path
-        android:pathData="M341,625c-24,-20.1,-51.3,-33.5,-81.8,-40.5c-20.3,-4.7,-41,-6.5,-61.7,-5.4c-10.5,0.6,-21,2.5,-31.5,3.8   c13.4,-27.8,32.5,-49.9,61.8,-61.9c4.9,-2,10.1,-3.1,15.3,-4.1c6.3,-1.2,11.2,2.6,16.3,5.2c5.2,2.6,9.9,6.2,15.1,8.6   c13.3,6,20.3,18,28.7,28.8c12.5,16,24.6,32.2,32.9,50.8C338.3,615.2,341,619.7,341,625z"
-        android:fillColor="#F1F0F0"/>
-    <path
-        android:pathData="M91.9,675c-8,-3.8,-13.6,-10.7,-19.7,-16.8c-4.1,-4.1,-6.9,-9.4,-10.3,-14.2c21.3,-27.5,49.8,-44.3,82.3,-54.9   c6.8,-2.2,13.6,-4.3,20.7,-5.1c-5.3,13.4,-10.4,26.9,-12.5,41.2c-2,13.4,-3.2,26.8,-1.7,40.5c1.1,9.6,2.3,19,4.8,28.3   c0.7,2.5,0.1,2.7,-2.4,2.3c-15.2,-2.6,-29.9,-7.1,-44.1,-13.3c-2,-0.9,-3.7,-2.3,-6.1,-2c0,0,0,0,0,0c-0.7,-1.2,-1.9,-1,-3,-1c0,0,0,0,0,0   c-0.3,-2.7,-2.4,-1.8,-4,-2c0,0,0,0,0,0c-0.3,-0.3,-0.7,-0.7,-1,-1c0,0,0,0,0,0c-0.3,-0.3,-0.7,-0.7,-1,-1c0,0,0,0,0,0   C93.6,675.2,92.8,675,91.9,675z"
-        android:fillColor="#D86868"/>
-    <path
-        android:pathData="M135,832.8c1.3,0.1,2.6,0.3,3.9,0.4c0.9,0.8,2,0.7,3.1,0.6c13.1,2.2,26.4,3,39.6,4.1   c4.5,0.3,9,0.2,13.4,-0.5c3.1,0.3,6.3,0.7,9.4,0.8c22.6,0.4,45.2,-0.9,67.6,-4.1c23.9,-3.3,47.4,-8.2,69.8,-17.6   c10.7,-4.5,21.4,-9.3,29.3,-18.3l0,0.1c6.2,-4.6,8.5,-11.8,11.9,-18.2c5.2,4.3,3.3,10.1,2.2,15c-2.2,9.7,-9.6,15.7,-17.4,21   c-17.1,11.7,-36.5,18.1,-56.4,22.9c-19.3,4.7,-38.9,7.4,-58.7,9.3c-21.4,2,-42.8,2.5,-64.2,1.6c-20.3,-0.8,-40.5,-2.8,-60.6,-6.5   c-19,-3.5,-37.6,-8.2,-55.4,-15.4c-11.9,-4.8,-23.4,-10.6,-32.3,-20.2c-5.3,-5.8,-8.9,-12.4,-8.3,-20.6c0.1,-1.2,0,-2.4,1.1,-3.1   c3.3,3.1,4.1,7.8,7.2,11.1c9,9.9,20.2,16.3,32.4,21.4c16.8,7,34.3,11.7,52.3,14.5c0.6,0.1,1.2,0.2,1.9,0.3c0.9,0.8,2,0.7,3.1,0.6   c0.6,0.1,1.3,0.2,1.9,0.3C132.8,833,133.9,833,135,832.8z"
-        android:fillColor="#999899"/>
-    <path
-        android:pathData="M371.9,667c2.8,-3.5,0.4,-7.1,-0.3,-10.4c-5.7,-26.6,-17.7,-50.3,-34.2,-71.7c-0.8,-1,-1.5,-2.2,-2.3,-3.3   c-0.3,-0.5,-0.6,-1.1,-1,-1.9c3.4,3,6.9,5.4,9.6,8.6c10.8,13.1,20.4,27,27.7,42.4c8,16.9,13.1,34.6,15.8,53.1   c1.9,12.9,2.6,25.8,1.7,38.7c-1.7,22.4,-6,44.3,-14.7,65.1c-1.4,3.3,-3.1,6.6,-3,10.4c0,0,0,-0.1,0,-0.1c-1.8,-0.3,-3.3,0.4,-4.7,1.2   c-6.3,3.7,-12.6,7.3,-19.4,10.2c-24,10.3,-48.8,14.5,-74.7,9.2c-4.2,-0.9,-9.4,-0.2,-12.4,-4.8c13.8,-2,27.6,-4.4,41.1,-8   c10,-2.7,20,-5.4,29,-10.8c1.5,-0.5,3.2,-0.9,4.6,-1.6c10.6,-5.1,19.5,-12.1,25.3,-22.6c4.7,-3.1,8.2,-10.7,6.9,-15c0.3,-1.4,0.6,-2.9,1,-4.3   c5.4,-16.2,7.5,-33.1,9,-50C378,689.7,375.5,678.3,371.9,667z"
-        android:fillColor="#F1F0F0"/>
-    <path
-        android:pathData="M371.9,667c3.6,11.3,6.1,22.7,5.1,34.6c-1.5,16.9,-3.6,33.8,-9,50c-0.5,1.4,-0.7,2.9,-1,4.3   c-2.3,5,-4.6,10,-6.9,15c-5.8,10.5,-14.7,17.5,-25.3,22.6c-1.5,0.7,-3.1,1.1,-4.6,1.6c-0.3,-2.1,0.3,-3.9,1.1,-5.7   c3.4,-7.4,6.4,-14.9,8.9,-22.6c6,-18.1,10,-36.5,12,-55.6c1.2,-11.6,0.9,-23.2,0.6,-34.8c-0.2,-6.8,-0.7,-13.8,-2.8,-20.5   c2.4,-4.1,4.7,-8.1,7.1,-12.2c5.6,4.7,8.4,11.3,11.7,17.6C369.8,663.3,370.8,665.2,371.9,667z"
-        android:fillColor="#E6A3A3"/>
-    <path
-        android:pathData="M260,814c2.9,4.6,8.1,3.9,12.4,4.8c25.9,5.3,50.7,1.1,74.7,-9.2c6.7,-2.9,13.1,-6.4,19.4,-10.2   c1.4,-0.9,2.9,-1.6,4.7,-1.2c-7.9,9.1,-18.6,13.8,-29.3,18.3c-22.3,9.4,-45.9,14.3,-69.8,17.6c-22.4,3.1,-45,4.4,-67.6,4.1   c-3.1,-0.1,-6.3,-0.5,-9.4,-0.8c-0.1,-2,-1.4,-2.2,-3,-2.4c-28.3,-3,-56,-8.2,-82.4,-19.1c-13.4,-5.5,-26.5,-11.8,-35.3,-24.1c-1.3,-1.8,-2.4,-3.6,-2.2,-5.9   c15.1,11.6,32.9,16.7,51,21.1c17.7,4.4,35.8,6.6,54,8.3c10,0.9,20,1.1,29.8,1.1c15.7,0.1,31.5,0.4,47.1,-2.4   C256,814,258,814,260,814z"
-        android:fillColor="#EDECEC"/>
-    <path
-        android:pathData="M130,831.9c-1.1,0.1,-2.2,0.2,-3.1,-0.6C128.3,829.5,129.4,829.5,130,831.9z"
-        android:fillColor="#EDECEC"/>
-    <path
-        android:pathData="M135,832.8c-1.1,0.1,-2.2,0.2,-3.1,-0.7C133.4,830.5,134.4,830.6,135,832.8z"
-        android:fillColor="#EDECEC"/>
-    <path
-        android:pathData="M142,833.8c-1.1,0.1,-2.2,0.2,-3.1,-0.6C140.3,831.5,141.4,831.5,142,833.8z"
-        android:fillColor="#EDECEC"/>
-    <path
-        android:pathData="M260,814c-2,0,-4,0,-6,0c-6.8,-3.7,-13.9,-6.8,-20.5,-11c-18,-11.5,-32.7,-26.4,-45.1,-43.6c-11,-15.2,-21,-31,-27.5,-48.8   c-0.9,-2.5,-2,-4.9,-1.9,-7.7c0.7,0,1.4,-0.1,2,0.1c16.2,4.6,33.1,5.3,49.6,5.3c10,0,20.1,-0.2,30.2,-1.3c19.5,-2,38.7,-5.3,57,-12.4   c15.6,-6,30.1,-13.9,41.3,-26.9c4.7,-3.1,7,-8.3,11,-12c2.1,6.7,2.6,13.7,2.8,20.5c0.3,11.6,0.6,23.1,-0.6,34.8c-2,19,-6,37.5,-12,55.6   c-2.6,7.7,-5.5,15.3,-8.9,22.6c-0.9,1.9,-1.5,3.7,-1.1,5.7c-9,5.4,-19,8.1,-29,10.8C287.6,809.6,273.8,811.9,260,814z"
-        android:fillColor="#E6A3A3"/>
-    <path
-        android:pathData="M339,668c-11.1,13,-25.7,20.8,-41.3,26.9c-18.3,7.1,-37.5,10.4,-57,12.4c-10.1,1,-20.3,1.3,-30.2,1.3   c-16.6,0,-33.4,-0.7,-49.6,-5.3c-0.6,-0.2,-1.3,-0.1,-2,-0.1c-0.6,-0.4,-1.3,-0.7,-1.9,-1.1c-0.4,-3.8,0.3,-5,4.8,-4.2c12.1,2,24.3,2.8,36.5,3.4   c32.4,1.7,64.1,-2.3,95.1,-11.6c14.8,-4.5,29,-10.8,41.5,-20.1C336.3,668.5,337.5,667.9,339,668z"
-        android:fillColor="#FFFFFF"/>
-    <path
-        android:pathData="M96,678c1.6,0.2,3.7,-0.7,4,2C98.4,679.8,97,679.3,96,678z"
-        android:fillColor="#FFFFFF"/>
-    <path
-        android:pathData="M100,680c1.1,0,2.3,-0.2,3,1C101.9,681,100.7,681.2,100,680z"
-        android:fillColor="#FFFFFF"/>
-    <path
-        android:pathData="M91.9,675c0.8,0,1.6,0.2,2.1,1C93.2,676,92.4,675.8,91.9,675z"
-        android:fillColor="#FFFFFF"/>
-    <path
-        android:pathData="M94,676c0.3,0.3,0.7,0.7,1,1C94.7,676.7,94.3,676.3,94,676z"
-        android:fillColor="#FFFFFF"/>
-    <path
-        android:pathData="M95,677c0.3,0.3,0.7,0.7,1,1C95.7,677.7,95.3,677.3,95,677z"
-        android:fillColor="#C5C5C5"/>
-    <path
-        android:pathData="M360,771c2.3,-5,4.6,-10,6.9,-15C368.2,760.3,364.7,767.8,360,771z"
-        android:fillColor="#EDECEC"/>
-</vector>
diff --git a/packages/DocumentsUI/res/drawable/ic_breadcrumb_arrow.xml b/packages/DocumentsUI/res/drawable/ic_breadcrumb_arrow.xml
deleted file mode 100644
index 76c0e1f..0000000
--- a/packages/DocumentsUI/res/drawable/ic_breadcrumb_arrow.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_breadcrumb_arrow_am_alpha"
-    android:tint="?android:attr/colorControlNormal"
-    android:autoMirrored="true" />
diff --git a/packages/DocumentsUI/res/drawable/ic_breadcrumb_arrow_down.xml b/packages/DocumentsUI/res/drawable/ic_breadcrumb_arrow_down.xml
deleted file mode 100644
index 199a308..0000000
--- a/packages/DocumentsUI/res/drawable/ic_breadcrumb_arrow_down.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<rotate xmlns:android="http://schemas.android.com/apk/res/android"
-        android:fromDegrees="90"
-        android:toDegrees="90"
-        android:pivotX="50%"
-        android:pivotY="50%"
-        android:drawable="@drawable/ic_breadcrumb_arrow">
-</rotate>
\ No newline at end of file
diff --git a/packages/DocumentsUI/res/drawable/ic_cab_cancel.xml b/packages/DocumentsUI/res/drawable/ic_cab_cancel.xml
deleted file mode 100644
index 629100c..0000000
--- a/packages/DocumentsUI/res/drawable/ic_cab_cancel.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_cab_cancel_alpha"
-    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_check_circle.xml b/packages/DocumentsUI/res/drawable/ic_check_circle.xml
deleted file mode 100644
index 62a4e34..0000000
--- a/packages/DocumentsUI/res/drawable/ic_check_circle.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-Copyright (C) 2016 The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
-    <path
-        android:fillColor="?android:attr/colorAccent"
-        android:pathData="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10,-4.48 10,-10S17.52 2 12 2zm-2 15l-5,-5 1.41,-1.41L10 14.17l7.59,-7.59L19 8l-9 9z"/>
-</vector>
diff --git a/packages/DocumentsUI/res/drawable/ic_dialog_alert.xml b/packages/DocumentsUI/res/drawable/ic_dialog_alert.xml
deleted file mode 100644
index 5132df3..0000000
--- a/packages/DocumentsUI/res/drawable/ic_dialog_alert.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_dialog_alert_alpha"
-    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_dialog_info.xml b/packages/DocumentsUI/res/drawable/ic_dialog_info.xml
deleted file mode 100644
index a029cca..0000000
--- a/packages/DocumentsUI/res/drawable/ic_dialog_info.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_dialog_info_alpha"
-    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_doc_album.xml b/packages/DocumentsUI/res/drawable/ic_doc_album.xml
deleted file mode 100644
index 1ce3f02..0000000
--- a/packages/DocumentsUI/res/drawable/ic_doc_album.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-Copyright (C) 2015 The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
-    <path
-        android:fillColor="#FF737373"
-        android:pathData="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10,-4.48 10,-10S17.52 2 12 2zm0 14.5c-2.49 0,-4.5,-2.01,-4.5,-4.5S9.51 7.5 12 7.5s4.5 2.01 4.5 4.5,-2.01 4.5,-4.5 4.5zm0,-5.5c-.55 0,-1 .45,-1 1s.45 1 1 1 1,-.45 1,-1,-.45,-1,-1,-1z"/>
-</vector>
diff --git a/packages/DocumentsUI/res/drawable/ic_doc_folder.xml b/packages/DocumentsUI/res/drawable/ic_doc_folder.xml
deleted file mode 100644
index dcbce01..0000000
--- a/packages/DocumentsUI/res/drawable/ic_doc_folder.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-Copyright (C) 2015 The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
-    <path
-        android:fillColor="#FF737373"
-        android:pathData="M10 4H4c-1.1 0,-1.99.9,-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2,-.9 2,-2V8c0,-1.1,-.9,-2,-2,-2h-8l-2,-2z"/>
-</vector>
diff --git a/packages/DocumentsUI/res/drawable/ic_doc_text.xml b/packages/DocumentsUI/res/drawable/ic_doc_text.xml
deleted file mode 100644
index 7fc04e8..0000000
--- a/packages/DocumentsUI/res/drawable/ic_doc_text.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-Copyright (C) 2015 The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
-    <path
-        android:fillColor="#FF737373"
-        android:pathData="M14 2H6c-1.1 0,-1.99.9,-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2,-.9 2,-2V8l-6,-6zm2 16H8v-2h8v2zm0,-4H8v-2h8v2zm-3,-5V3.5L18.5 9H13z"/>
-</vector>
diff --git a/packages/DocumentsUI/res/drawable/ic_eject.xml b/packages/DocumentsUI/res/drawable/ic_eject.xml
deleted file mode 100644
index cbcd755..0000000
--- a/packages/DocumentsUI/res/drawable/ic_eject.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-Copyright (C) 2016 The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
-    <path
-        android:fillColor="#FF737373"
-        android:pathData="M5 17h14v2H5zm7-12L5.33 15h13.34z"/>
-</vector>
diff --git a/packages/DocumentsUI/res/drawable/ic_grid_folder.xml b/packages/DocumentsUI/res/drawable/ic_grid_folder.xml
deleted file mode 100644
index 0c87869..0000000
--- a/packages/DocumentsUI/res/drawable/ic_grid_folder.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_grid_folder_alpha"
-    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_hamburger.xml b/packages/DocumentsUI/res/drawable/ic_hamburger.xml
deleted file mode 100644
index 7cda32e..0000000
--- a/packages/DocumentsUI/res/drawable/ic_hamburger.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_hamburger_alpha"
-    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_menu_copy.xml b/packages/DocumentsUI/res/drawable/ic_menu_copy.xml
deleted file mode 100644
index e0abe07..0000000
--- a/packages/DocumentsUI/res/drawable/ic_menu_copy.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_menu_copy_alpha"
-    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_menu_delete.xml b/packages/DocumentsUI/res/drawable/ic_menu_delete.xml
deleted file mode 100644
index e52ed97..0000000
--- a/packages/DocumentsUI/res/drawable/ic_menu_delete.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_menu_delete_alpha"
-    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_menu_new_folder.xml b/packages/DocumentsUI/res/drawable/ic_menu_new_folder.xml
deleted file mode 100644
index b105535..0000000
--- a/packages/DocumentsUI/res/drawable/ic_menu_new_folder.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_menu_new_folder_am_alpha"
-    android:tint="?android:attr/colorControlNormal"
-    android:autoMirrored="true" />
diff --git a/packages/DocumentsUI/res/drawable/ic_menu_search.xml b/packages/DocumentsUI/res/drawable/ic_menu_search.xml
deleted file mode 100644
index 33f548b..0000000
--- a/packages/DocumentsUI/res/drawable/ic_menu_search.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_menu_search_alpha"
-    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_menu_share.xml b/packages/DocumentsUI/res/drawable/ic_menu_share.xml
deleted file mode 100644
index 927e7d3..0000000
--- a/packages/DocumentsUI/res/drawable/ic_menu_share.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_menu_share_alpha"
-    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_menu_sortby.xml b/packages/DocumentsUI/res/drawable/ic_menu_sortby.xml
deleted file mode 100644
index 065ea87..0000000
--- a/packages/DocumentsUI/res/drawable/ic_menu_sortby.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_menu_sortby_am_alpha"
-    android:tint="?android:attr/colorControlNormal"
-    android:autoMirrored="true" />
diff --git a/packages/DocumentsUI/res/drawable/ic_menu_view_grid.xml b/packages/DocumentsUI/res/drawable/ic_menu_view_grid.xml
deleted file mode 100644
index dc09a0c..0000000
--- a/packages/DocumentsUI/res/drawable/ic_menu_view_grid.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_menu_view_grid_alpha"
-    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_menu_view_list.xml b/packages/DocumentsUI/res/drawable/ic_menu_view_list.xml
deleted file mode 100644
index 23c5777..0000000
--- a/packages/DocumentsUI/res/drawable/ic_menu_view_list.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_menu_view_list_alpha"
-    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_root_documents.xml b/packages/DocumentsUI/res/drawable/ic_root_documents.xml
deleted file mode 100644
index afd886d..0000000
--- a/packages/DocumentsUI/res/drawable/ic_root_documents.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-Copyright (C) 2015 The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M10 4H4c-1.1 0,-1.99.9,-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2,-.9 2,-2V8c0,-1.1,-.9,-2,-2,-2h-8l-2,-2z"/>
-</vector>
diff --git a/packages/DocumentsUI/res/drawable/ic_root_download.xml b/packages/DocumentsUI/res/drawable/ic_root_download.xml
deleted file mode 100644
index f07d8f0..0000000
--- a/packages/DocumentsUI/res/drawable/ic_root_download.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_root_download_alpha"
-    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_root_recent.xml b/packages/DocumentsUI/res/drawable/ic_root_recent.xml
deleted file mode 100644
index 41e6a5e..0000000
--- a/packages/DocumentsUI/res/drawable/ic_root_recent.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
-    android:src="@drawable/ic_root_recent_alpha"
-    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_root_smartphone.xml b/packages/DocumentsUI/res/drawable/ic_root_smartphone.xml
deleted file mode 100644
index 3021b16..0000000
--- a/packages/DocumentsUI/res/drawable/ic_root_smartphone.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-Copyright (C) 2015 The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M17 1.01L7 1c-1.1 0,-2 .9,-2 2v18c0 1.1.9 2 2 2h10c1.1 0 2,-.9 2,-2V3c0,-1.1,-.9,-1.99,-2,-1.99zM17 19H7V5h10v14z"/>
-</vector>
diff --git a/packages/DocumentsUI/res/drawable/ic_sd_storage.xml b/packages/DocumentsUI/res/drawable/ic_sd_storage.xml
deleted file mode 100644
index 5aeebbb..0000000
--- a/packages/DocumentsUI/res/drawable/ic_sd_storage.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-Copyright (C) 2015 The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M18 2h-8L4.02 8 4 20c0 1.1.9 2 2 2h12c1.1 0 2,-.9 2,-2V4c0,-1.1,-.9,-2,-2,-2zm-6 6h-2V4h2v4zm3 0h-2V4h2v4zm3 0h-2V4h2v4z"/>
-</vector>
diff --git a/packages/DocumentsUI/res/drawable/ic_subdirectory_arrow.xml b/packages/DocumentsUI/res/drawable/ic_subdirectory_arrow.xml
deleted file mode 100644
index 0f34ba4..0000000
--- a/packages/DocumentsUI/res/drawable/ic_subdirectory_arrow.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-Copyright (C) 2016 The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
-    <path
-        android:fillColor="?android:attr/colorControlNormal"
-        android:pathData="M19 15l-6 6,-1.42,-1.42L15.17 16H4V4h2v10h9.17l-3.59,-3.58L13 9l6 6z"/>
-</vector>
diff --git a/packages/DocumentsUI/res/drawable/ic_usb_storage.xml b/packages/DocumentsUI/res/drawable/ic_usb_storage.xml
deleted file mode 100644
index 2a8d024..0000000
--- a/packages/DocumentsUI/res/drawable/ic_usb_storage.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-Copyright (C) 2015 The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
--->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
-    <path
-        android:fillColor="#FF000000"
-        android:pathData="M15 7v4h1v2h-3V5h2l-3,-4,-3 4h2v8H8v-2.07c.7,-.37 1.2,-1.08 1.2,-1.93 0,-1.21,-.99,-2.2,-2.2,-2.2,-1.21 0,-2.2.99,-2.2 2.2 0 .85.5 1.56 1.2 1.93V13c0 1.11.89 2 2 2h3v3.05c-.71.37,-1.2 1.1,-1.2 1.95 0 1.22.99 2.2 2.2 2.2 1.21 0 2.2,-.98 2.2,-2.2 0,-.85,-.49,-1.58,-1.2,-1.95V15h3c1.11 0 2,-.89 2,-2v-2h1V7h-4z"/>
-</vector>
diff --git a/packages/DocumentsUI/res/drawable/item_doc_grid_border.xml b/packages/DocumentsUI/res/drawable/item_doc_grid_border.xml
deleted file mode 100644
index db66094..0000000
--- a/packages/DocumentsUI/res/drawable/item_doc_grid_border.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-       android:shape="rectangle">
-    <stroke
-        android:width="2dp"
-        android:color="@color/item_doc_grid_border"/>
-</shape>
diff --git a/packages/DocumentsUI/res/drawable/item_doc_list_background.xml b/packages/DocumentsUI/res/drawable/item_doc_list_background.xml
deleted file mode 100644
index 13910bb..0000000
--- a/packages/DocumentsUI/res/drawable/item_doc_list_background.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-       android:shape="rectangle">
-    <solid android:color="@color/item_doc_list_background_activated" />
-</shape>
diff --git a/packages/DocumentsUI/res/drawable/progress_indeterminate_horizontal_material_trimmed.xml b/packages/DocumentsUI/res/drawable/progress_indeterminate_horizontal_material_trimmed.xml
deleted file mode 100644
index 070b9a1..0000000
--- a/packages/DocumentsUI/res/drawable/progress_indeterminate_horizontal_material_trimmed.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<!-- Variant of progress_indeterminate_horizontal_material in frameworks/base/core/res, which
-     draws the whole height of the progress bar instead having blank space above and below the
-     bar. -->
-<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:drawable="@drawable/vector_drawable_progress_indeterminate_horizontal_trimmed" >
-    <target
-        android:name="rect2_grp"
-        android:animation="@*android:anim/progress_indeterminate_horizontal_rect2" />
-    <target
-        android:name="rect1_grp"
-        android:animation="@*android:anim/progress_indeterminate_horizontal_rect1" />
-</animated-vector>
diff --git a/packages/DocumentsUI/res/drawable/root_item_background.xml b/packages/DocumentsUI/res/drawable/root_item_background.xml
deleted file mode 100644
index cc56f1e..0000000
--- a/packages/DocumentsUI/res/drawable/root_item_background.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<ripple
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res/com.android.documentsui"
-    android:color="?attr/colorControlHighlight">
-    <item
-        android:id="@android:id/mask"
-        android:drawable="@android:color/white"/>
-
-    <item>
-        <selector>
-            <item
-                app:state_highlighted="true"
-                android:drawable="@color/item_doc_background_selected"/>
-            <item
-                app:state_highlighted="false"
-                android:drawable="@android:color/transparent"/>
-        </selector>
-    </item>
-</ripple>
\ No newline at end of file
diff --git a/packages/DocumentsUI/res/drawable/vector_drawable_progress_indeterminate_horizontal_trimmed.xml b/packages/DocumentsUI/res/drawable/vector_drawable_progress_indeterminate_horizontal_trimmed.xml
deleted file mode 100644
index 39e3a37..0000000
--- a/packages/DocumentsUI/res/drawable/vector_drawable_progress_indeterminate_horizontal_trimmed.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<!-- Variant of vector_drawable_progress_indeterminate_horizontal in frameworks/base/core/res, which
-     draws the whole height of the progress bar instead having blank space above and below the
-     bar. -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:height="10dp"
-    android:width="360dp"
-    android:viewportHeight="10"
-    android:viewportWidth="360" >
-    <group
-        android:name="progress_group"
-        android:translateX="180"
-        android:translateY="5" >
-        <path
-            android:name="background_track"
-            android:pathData="M -180.0,-5.0 l 360.0,0 l 0,10.0 l -360.0,0 Z"
-            android:fillColor="?android:attr/colorControlActivated"
-            android:fillAlpha="?android:attr/disabledAlpha"/>
-        <group
-            android:name="rect2_grp"
-            android:translateX="-197.60001"
-            android:scaleX="0.1" >
-            <path
-                android:name="rect2"
-                android:pathData="M -144.0,-5.0 l 288.0,0 l 0,10.0 l -288.0,0 Z"
-                android:fillColor="?android:attr/colorControlActivated" />
-        </group>
-        <group
-            android:name="rect1_grp"
-            android:translateX="-522.59998"
-            android:scaleX="0.1" >
-            <path
-                android:name="rect1"
-                android:pathData="M -144.0,-5.0 l 288.0,0 l 0,10.0 l -288.0,0 Z"
-                android:fillColor="?android:attr/colorControlActivated" />
-        </group>
-    </group>
-</vector>
diff --git a/packages/DocumentsUI/res/layout-sw720dp-land/item_doc_list.xml b/packages/DocumentsUI/res/layout-sw720dp-land/item_doc_list.xml
deleted file mode 100644
index ecc26e1..0000000
--- a/packages/DocumentsUI/res/layout-sw720dp-land/item_doc_list.xml
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<com.android.documentsui.ListItem xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="@color/item_doc_background"
-    android:focusable="true"
-    android:orientation="horizontal" >
-
-    <View
-        android:id="@+id/focus_indicator"
-        android:layout_width="4dp"
-        android:layout_height="match_parent" />
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:baselineAligned="false"
-        android:gravity="center_vertical"
-        android:minHeight="@dimen/list_item_height"
-        android:orientation="horizontal"
-        android:paddingEnd="@dimen/list_item_padding"
-        android:paddingStart="@dimen/list_item_padding" >
-
-        <FrameLayout
-            android:id="@android:id/icon"
-            android:layout_width="@dimen/list_item_thumbnail_size"
-            android:layout_height="@dimen/list_item_thumbnail_size"
-            android:layout_marginEnd="16dp"
-            android:layout_marginStart="0dp" >
-
-            <ImageView
-                android:id="@+id/icon_mime"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center"
-                android:contentDescription="@null"
-                android:scaleType="centerInside" />
-
-            <ImageView
-                android:id="@+id/icon_thumb"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:layout_gravity="center"
-                android:contentDescription="@null"
-                android:scaleType="centerCrop" />
-
-            <ImageView
-                android:id="@+id/icon_check"
-                android:layout_width="@dimen/check_icon_size"
-                android:layout_height="@dimen/check_icon_size"
-                android:layout_gravity="center"
-                android:alpha="0"
-                android:contentDescription="@null"
-                android:scaleType="fitCenter"
-                android:src="@drawable/ic_check_circle" />
-
-        </FrameLayout>
-
-        <!-- This is the one special case where we want baseline alignment! -->
-
-        <LinearLayout
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:orientation="horizontal" >
-
-            <TextView
-                android:id="@android:id/title"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:layout_marginEnd="12dp"
-                android:layout_weight="0.5"
-                android:ellipsize="middle"
-                android:singleLine="true"
-                android:textAlignment="viewStart"
-                android:textAppearance="@android:style/TextAppearance.Material.Subhead"
-                android:textColor="?android:attr/textColorPrimary" />
-
-            <TextView
-                android:id="@android:id/summary"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:layout_marginEnd="12dp"
-                android:layout_weight="0.25"
-                android:ellipsize="end"
-                android:singleLine="true"
-                android:textAlignment="viewStart"
-                android:textAppearance="@android:style/TextAppearance.Material.Body1"
-                android:textColor="?android:attr/textColorSecondary" />
-
-            <TextView
-                android:id="@+id/size"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:layout_marginEnd="12dp"
-                android:layout_weight="0.125"
-                android:ellipsize="end"
-                android:minWidth="70dp"
-                android:singleLine="true"
-                android:textAlignment="viewEnd"
-                android:textAppearance="@android:style/TextAppearance.Material.Body1"
-                android:textColor="?android:attr/textColorSecondary" />
-
-            <TextView
-                android:id="@+id/date"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:layout_marginEnd="12dp"
-                android:layout_weight="0.125"
-                android:ellipsize="end"
-                android:minWidth="70dp"
-                android:singleLine="true"
-                android:textAlignment="viewEnd"
-                android:textAppearance="@android:style/TextAppearance.Material.Body1"
-                android:textColor="?android:attr/textColorSecondary" />
-        </LinearLayout>
-    </LinearLayout>
-
-</com.android.documentsui.ListItem>
diff --git a/packages/DocumentsUI/res/layout/dialog_delete_confirmation.xml b/packages/DocumentsUI/res/layout/dialog_delete_confirmation.xml
deleted file mode 100644
index a1c2910..0000000
--- a/packages/DocumentsUI/res/layout/dialog_delete_confirmation.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<TextView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:paddingTop="24dp"
-    android:paddingStart="24dp"
-    android:paddingEnd="24dp"
-    android:textAppearance="@android:style/TextAppearance.Material.Subhead"
-    android:textColor="@*android:color/primary_text_default_material_light">
-</TextView>
diff --git a/packages/DocumentsUI/res/layout/dialog_file_name.xml b/packages/DocumentsUI/res/layout/dialog_file_name.xml
deleted file mode 100644
index 3a95a13..0000000
--- a/packages/DocumentsUI/res/layout/dialog_file_name.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:fitsSystemWindows="true"
-    android:padding="?android:attr/listPreferredItemPaddingEnd">
-
-    <EditText
-        android:id="@android:id/text1"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:inputType="text" />
-
-</FrameLayout>
diff --git a/packages/DocumentsUI/res/layout/dialog_open_scoped_directory.xml b/packages/DocumentsUI/res/layout/dialog_open_scoped_directory.xml
deleted file mode 100644
index bfb0271..0000000
--- a/packages/DocumentsUI/res/layout/dialog_open_scoped_directory.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2016 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:theme="@style/Theme.AppCompat.Light.Dialog.Alert"
-    android:orientation="vertical"
-    android:paddingEnd="24dp"
-    android:paddingStart="24dp" >
-
-    <TextView
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/message"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:paddingEnd="24dp"
-        android:paddingStart="32dp"
-        android:paddingTop="24dp">
-    </TextView>
-
-    <CheckBox
-        android:id="@+id/do_not_ask_checkbox"
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="16dip"
-        android:text="@string/never_ask_again"
-        android:textColor="?android:attr/textColorSecondary"
-        android:visibility="gone" />
-</LinearLayout>
\ No newline at end of file
diff --git a/packages/DocumentsUI/res/layout/directory_cluster.xml b/packages/DocumentsUI/res/layout/directory_cluster.xml
deleted file mode 100644
index d84ef08..0000000
--- a/packages/DocumentsUI/res/layout/directory_cluster.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-
-    <FrameLayout
-        android:id="@+id/container_message_bar"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:elevation="8dp"
-        android:background="@color/material_grey_50"/>
-
-    <FrameLayout
-        android:id="@+id/container_directory"
-        android:clipToPadding="false"
-        android:layout_width="match_parent"
-        android:layout_height="0dp"
-        android:layout_weight="1" />
-
-    <FrameLayout
-        android:id="@+id/container_save"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="@color/material_grey_50"
-        android:elevation="8dp" />
-
-</LinearLayout>
diff --git a/packages/DocumentsUI/res/layout/drag_shadow_layout.xml b/packages/DocumentsUI/res/layout/drag_shadow_layout.xml
deleted file mode 100644
index 26613ef..0000000
--- a/packages/DocumentsUI/res/layout/drag_shadow_layout.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:paddingStart="8dp"
-    android:paddingEnd="8dp"
-    android:orientation="horizontal"
-    android:gravity="center_vertical|left"
-    android:background="@drawable/drag_shadow_background">
-
-    <ImageView
-        android:id="@android:id/icon"
-        android:layout_width="@dimen/root_icon_size"
-        android:layout_height="@dimen/root_icon_size"
-        android:scaleType="centerInside"
-        android:contentDescription="@null"
-        android:duplicateParentState="true"/>
-
-    <TextView
-        android:id="@android:id/title"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:maxLines="1"
-        android:ellipsize="end"
-        android:textAlignment="viewStart"
-        android:textColor="@color/item_title"
-        android:paddingStart="8dp"/>
-
-</LinearLayout>
diff --git a/packages/DocumentsUI/res/layout/drawer_layout.xml b/packages/DocumentsUI/res/layout/drawer_layout.xml
deleted file mode 100644
index 32ba6d0..0000000
--- a/packages/DocumentsUI/res/layout/drawer_layout.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<!-- CoordinatorLayout is necessary for various components (e.g. Snackbars, and
-     floating action buttons) to operate correctly. -->
-<android.support.design.widget.CoordinatorLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:id="@+id/coordinator_layout">
-
-    <android.support.v4.widget.DrawerLayout
-        android:id="@+id/drawer_layout"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:orientation="vertical">
-
-            <com.android.documentsui.DocumentsToolbar
-                android:id="@+id/toolbar"
-                android:layout_width="match_parent"
-                android:layout_height="?android:attr/actionBarSize"
-                android:background="?android:attr/colorPrimary"
-                android:elevation="8dp"
-                android:theme="?actionBarTheme"
-                android:popupTheme="?actionBarPopupTheme">
-
-                <com.android.documentsui.DropdownBreadcrumb
-                    android:id="@+id/dropdown_breadcrumb"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginStart="4dp"
-                    android:popupTheme="?actionBarPopupTheme"
-                    android:background="@android:color/transparent"
-                    android:overlapAnchor="true" />
-
-            </com.android.documentsui.DocumentsToolbar>
-
-            <FrameLayout
-                android:layout_width="match_parent"
-                android:layout_height="match_parent">
-
-                <include layout="@layout/directory_cluster"/>
-
-                <!-- Drawer edge is a dummy view used to capture hovering event
-                     on view edge to open the drawer. (b/28345294) -->
-                <View
-                    android:id="@+id/drawer_edge"
-                    android:background="@android:color/transparent"
-                    android:layout_width="@dimen/drawer_edge_width"
-                    android:layout_height="match_parent"/>
-            </FrameLayout>
-
-        </LinearLayout>
-
-        <LinearLayout
-            android:id="@+id/drawer_roots"
-            android:layout_width="256dp"
-            android:layout_height="match_parent"
-            android:layout_gravity="start"
-            android:orientation="vertical"
-            android:elevation="16dp"
-            android:background="@color/drawer_background">
-
-            <Toolbar
-                android:id="@+id/roots_toolbar"
-                android:layout_width="match_parent"
-                android:layout_height="?android:attr/actionBarSize"
-                android:background="?android:attr/colorPrimary"
-                android:elevation="8dp"
-                android:theme="?actionBarTheme"
-                android:popupTheme="?actionBarPopupTheme" />
-
-            <FrameLayout
-                android:id="@+id/container_roots"
-                android:layout_width="match_parent"
-                android:layout_height="0dp"
-                android:layout_weight="1" />
-
-        </LinearLayout>
-
-    </android.support.v4.widget.DrawerLayout>
-</android.support.design.widget.CoordinatorLayout>
diff --git a/packages/DocumentsUI/res/layout/fixed_layout.xml b/packages/DocumentsUI/res/layout/fixed_layout.xml
deleted file mode 100644
index 9882e94..0000000
--- a/packages/DocumentsUI/res/layout/fixed_layout.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<!-- CoordinatorLayout is necessary for various components (e.g. Snackbars, and
-     floating action buttons) to operate correctly. -->
-<!-- focusableInTouchMode is set in order to force key events to go to the activity's global key
-     callback, which is necessary for proper event routing. See BaseActivity.onKeyDown. -->
-<android.support.design.widget.CoordinatorLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:id="@+id/coordinator_layout"
-    android:focusableInTouchMode="true">
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:orientation="vertical">
-
-        <com.android.documentsui.DocumentsToolbar
-            android:id="@+id/toolbar"
-            android:layout_width="match_parent"
-            android:layout_height="?android:attr/actionBarSize"
-            android:background="?android:attr/colorPrimary"
-            android:elevation="8dp"
-            android:theme="?actionBarTheme"
-            android:popupTheme="?actionBarPopupTheme">
-
-            <com.android.documentsui.HorizontalBreadcrumb
-                android:id="@+id/horizontal_breadcrumb"
-                android:layout_marginRight="20dp"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content" />
-
-        </com.android.documentsui.DocumentsToolbar>
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:layout_weight="1"
-            android:orientation="horizontal"
-            android:baselineAligned="false">
-
-            <FrameLayout
-                android:id="@+id/container_roots"
-                android:layout_width="256dp"
-                android:layout_height="match_parent" />
-
-            <include layout="@layout/directory_cluster"
-                android:layout_width="0dp"
-                android:elevation="8dp" />
-
-        </LinearLayout>
-
-    </LinearLayout>
-
-</android.support.design.widget.CoordinatorLayout>
diff --git a/packages/DocumentsUI/res/layout/fragment_directory.xml b/packages/DocumentsUI/res/layout/fragment_directory.xml
deleted file mode 100644
index 1c086a6..0000000
--- a/packages/DocumentsUI/res/layout/fragment_directory.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<com.android.documentsui.dirlist.AnimationView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@color/directory_background"
-    android:outlineProvider="bounds"
-    android:elevation="4dp"
-    android:orientation="vertical">
-
-    <ProgressBar
-        android:id="@+id/progressbar"
-        android:layout_width="match_parent"
-        android:layout_height="@dimen/progress_bar_height"
-        android:indeterminate="true"
-        style="@style/TrimmedHorizontalProgressBar"
-        android:visibility="gone"/>
-
-    <FrameLayout
-        android:id="@+id/container_message_bar"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:elevation="8dp"
-        android:background="@color/material_grey_50"
-        android:visibility="gone"/>
-
-    <com.android.documentsui.dirlist.TouchSwipeRefreshLayout
-        android:id="@+id/refresh_layout"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-
-        <FrameLayout
-            android:layout_width="match_parent"
-            android:layout_height="match_parent">
-            <!-- The empty container view -->
-            <FrameLayout
-                android:id="@android:id/empty"
-                android:gravity="center"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:orientation="vertical"
-                android:background="@color/directory_background"
-                android:focusable="true"
-                android:focusableInTouchMode="true"
-                android:visibility="gone"
-                android:clickable="true">
-
-                <LinearLayout
-                    android:id="@+id/content"
-                    android:gravity="center"
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:orientation="vertical">
-
-                    <ImageView
-                        android:id="@+id/artwork"
-                        android:src="@drawable/cabinet"
-                        android:adjustViewBounds="true"
-                        android:layout_height="250dp"
-                        android:layout_width="fill_parent"
-                        android:alpha="1"
-                        android:layout_centerVertical="true"
-                        android:layout_marginBottom="25dp"
-                        android:scaleType="fitCenter"
-                        android:contentDescription="@null"/>
-
-                    <TextView
-                        android:id="@+id/message"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:text="@string/empty"
-                        style="@android:style/TextAppearance.Material.Subhead"/>
-
-                </LinearLayout>
-            </FrameLayout>
-
-            <android.support.v7.widget.RecyclerView
-                android:id="@+id/dir_list"
-                android:scrollbars="vertical"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:paddingStart="0dp"
-                android:paddingEnd="0dp"
-                android:paddingTop="0dp"
-                android:paddingBottom="0dp"
-                android:clipToPadding="false"
-                android:scrollbarStyle="outsideOverlay"
-                android:drawSelectorOnTop="true"/>
-        </FrameLayout>
-
-    </com.android.documentsui.dirlist.TouchSwipeRefreshLayout>
-
-</com.android.documentsui.dirlist.AnimationView>
diff --git a/packages/DocumentsUI/res/layout/fragment_message_bar.xml b/packages/DocumentsUI/res/layout/fragment_message_bar.xml
deleted file mode 100644
index 47e4e77..0000000
--- a/packages/DocumentsUI/res/layout/fragment_message_bar.xml
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:animateLayoutChanges="true"
-    android:layout_height="wrap_content"
-    android:layout_width="match_parent"
-    android:minHeight="?android:attr/listPreferredItemHeightSmall"
-    android:orientation="vertical"
-    android:paddingLeft="@dimen/list_item_padding"
-    android:paddingRight="@dimen/list_item_padding"
-    android:paddingTop="@dimen/list_item_padding">
-
-    <LinearLayout
-        android:id="@+id/container_info"
-        android:layout_height="wrap_content"
-        android:layout_width="wrap_content"
-        android:orientation="horizontal"
-        android:visibility="gone">
-
-        <FrameLayout
-            android:layout_height="@dimen/icon_size"
-            android:layout_width="@dimen/icon_size">
-
-            <ImageView
-                android:contentDescription="@null"
-                android:id="@+id/icon_info"
-                android:layout_height="match_parent"
-                android:layout_width="wrap_content"
-                android:scaleType="centerInside"/>
-
-        </FrameLayout>
-
-        <TextView
-            android:id="@+id/textview_info"
-            android:layout_gravity="center_vertical"
-            android:layout_height="wrap_content"
-            android:layout_width="match_parent"
-            android:selectAllOnFocus="true"/>
-
-    </LinearLayout>
-
-    <LinearLayout
-        android:id="@+id/container_error"
-        android:layout_height="wrap_content"
-        android:layout_width="wrap_content"
-        android:orientation="horizontal"
-        android:visibility="gone">
-
-        <FrameLayout
-            android:layout_height="@dimen/icon_size"
-            android:layout_width="@dimen/icon_size">
-
-            <ImageView
-                android:contentDescription="@null"
-                android:id="@+id/icon_error"
-                android:layout_height="match_parent"
-                android:layout_width="wrap_content"
-                android:scaleType="centerInside"/>
-
-        </FrameLayout>
-
-        <TextView
-            android:id="@+id/textview_error"
-            android:layout_gravity="center_vertical"
-            android:layout_height="wrap_content"
-            android:layout_width="match_parent"
-            android:selectAllOnFocus="true"/>
-
-    </LinearLayout>
-
-    <LinearLayout
-        android:layout_gravity="right"
-        android:layout_height="wrap_content"
-        android:layout_width="wrap_content"
-        android:orientation="horizontal">
-
-        <Button
-            android:id="@+id/button_dismiss"
-            android:layout_height="wrap_content"
-            android:layout_width="wrap_content"
-            android:text="@string/button_dismiss"
-            style="?android:attr/buttonBarPositiveButtonStyle"/>
-
-    </LinearLayout>
-
-</LinearLayout>
diff --git a/packages/DocumentsUI/res/layout/fragment_pick.xml b/packages/DocumentsUI/res/layout/fragment_pick.xml
deleted file mode 100644
index 40d4eb5..0000000
--- a/packages/DocumentsUI/res/layout/fragment_pick.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:orientation="horizontal"
-    android:baselineAligned="false"
-    android:gravity="end"
-    android:paddingEnd="8dp"
-    android:minHeight="?android:attr/listPreferredItemHeightSmall">
-    <Button
-        android:id="@android:id/button2"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:text="@android:string/cancel"
-        android:visibility="gone"
-        style="?android:attr/buttonBarNegativeButtonStyle" />
-    <Button
-        android:id="@android:id/button1"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        style="?android:attr/buttonBarPositiveButtonStyle" />
-</LinearLayout>
diff --git a/packages/DocumentsUI/res/layout/fragment_roots.xml b/packages/DocumentsUI/res/layout/fragment_roots.xml
deleted file mode 100644
index ae46207..0000000
--- a/packages/DocumentsUI/res/layout/fragment_roots.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<com.android.documentsui.RootsList xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/roots_list"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:paddingTop="8dp"
-    android:listSelector="@android:color/transparent"
-    android:drawSelectorOnTop="true"
-    android:divider="@null" />
diff --git a/packages/DocumentsUI/res/layout/fragment_save.xml b/packages/DocumentsUI/res/layout/fragment_save.xml
deleted file mode 100644
index a889b9f..0000000
--- a/packages/DocumentsUI/res/layout/fragment_save.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:paddingStart="@dimen/list_item_padding"
-    android:orientation="horizontal"
-    android:baselineAligned="false"
-    android:gravity="center_vertical"
-    android:fitsSystemWindows="true"
-    android:minHeight="?android:attr/listPreferredItemHeightSmall">
-
-    <FrameLayout
-        android:layout_width="@dimen/icon_size"
-        android:layout_height="@dimen/icon_size"
-        android:layout_marginEnd="16dp">
-
-        <ImageView
-            android:id="@android:id/icon"
-            android:layout_width="@dimen/root_icon_size"
-            android:layout_height="match_parent"
-            android:scaleType="centerInside"
-            android:contentDescription="@null" />
-
-    </FrameLayout>
-
-    <EditText
-        android:id="@android:id/title"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_weight="1"
-        android:singleLine="true"
-        android:selectAllOnFocus="true" />
-
-    <FrameLayout
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent">
-
-        <Button
-            android:id="@android:id/button1"
-            android:layout_width="wrap_content"
-            android:layout_height="match_parent"
-            android:text="@string/menu_save"
-            style="?android:attr/buttonBarPositiveButtonStyle" />
-
-        <ProgressBar
-            android:id="@android:id/progress"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center"
-            android:visibility="gone"
-            android:indeterminate="true"
-            android:padding="8dp"
-            style="?android:attr/progressBarStyle" />
-
-    </FrameLayout>
-
-</LinearLayout>
diff --git a/packages/DocumentsUI/res/layout/item_dir_grid.xml b/packages/DocumentsUI/res/layout/item_dir_grid.xml
deleted file mode 100644
index 36af9b9..0000000
--- a/packages/DocumentsUI/res/layout/item_dir_grid.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:layout_margin="@dimen/grid_item_margin"
-    android:background="@color/item_doc_background"
-    android:elevation="@dimen/grid_item_elevation"
-    android:focusable="true" >
-
-    <!-- The height is 48px.
-         paddingTop (9dp) + @dimen/check_icon_size (30dp) + paddingBottom (9dp) -->
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:orientation="horizontal"
-        android:paddingBottom="9dp"
-        android:paddingLeft="9dp"
-        android:paddingRight="12dp"
-        android:paddingTop="9dp"
-        android:gravity="center_vertical">
-
-        <FrameLayout
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginEnd="8dp" >
-
-            <ImageView
-                android:id="@+id/icon_mime_sm"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center"
-                android:contentDescription="@null"
-                android:scaleType="centerInside"
-                android:src="@drawable/ic_doc_folder" />
-
-            <ImageView
-                android:id="@+id/icon_check"
-                android:layout_width="@dimen/check_icon_size"
-                android:layout_height="@dimen/check_icon_size"
-                android:alpha="0"
-                android:contentDescription="@null"
-                android:scaleType="fitCenter"
-                android:src="@drawable/ic_check_circle" />
-
-        </FrameLayout>
-
-        <TextView
-            android:id="@android:id/title"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:ellipsize="end"
-            android:singleLine="true"
-            android:textAlignment="viewStart"
-            android:textAppearance="@android:style/TextAppearance.Material.Subhead"
-            android:textColor="@color/item_title" />
-
-    </LinearLayout>
-
-    <!-- An overlay that draws the item border when it is focused. -->
-
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:background="@drawable/item_doc_grid_border"
-        android:contentDescription="@null"
-        android:duplicateParentState="true" />
-
-</FrameLayout>
diff --git a/packages/DocumentsUI/res/layout/item_doc_grid.xml b/packages/DocumentsUI/res/layout/item_doc_grid.xml
deleted file mode 100644
index 56a061f..0000000
--- a/packages/DocumentsUI/res/layout/item_doc_grid.xml
+++ /dev/null
@@ -1,137 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:layout_margin="@dimen/grid_item_margin"
-    android:background="@color/item_doc_background"
-    android:elevation="@dimen/grid_item_elevation"
-    android:focusable="true">
-
-    <!-- Main item thumbnail.  Comprised of two overlapping images, the
-         visibility of which is controlled by code in
-         DirectoryFragment.java. -->
-
-    <FrameLayout
-        android:id="@+id/thumbnail"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content">
-
-        <com.android.documentsui.GridItemThumbnail
-            android:id="@+id/icon_thumb"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:scaleType="centerCrop"
-            android:contentDescription="@null" />
-
-        <com.android.documentsui.GridItemThumbnail
-            android:id="@+id/icon_mime_lg"
-            android:layout_width="@dimen/icon_size"
-            android:layout_height="@dimen/icon_size"
-            android:layout_gravity="center"
-            android:scaleType="fitCenter"
-            android:contentDescription="@null" />
-
-    </FrameLayout>
-
-    <!-- Item nameplate.  Has a mime-type icon and some text fields (title,
-         size, mod-time, etc). -->
-
-    <RelativeLayout
-        android:id="@+id/nameplate"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_below="@id/thumbnail"
-        android:paddingTop="8dp"
-        android:paddingBottom="8dp"
-        android:paddingLeft="12dp"
-        android:paddingRight="12dp">
-
-        <ImageView
-            android:id="@+id/icon_mime_sm"
-            android:layout_width="@dimen/grid_item_icon_size"
-            android:layout_height="@dimen/grid_item_icon_size"
-            android:layout_marginEnd="8dp"
-            android:layout_alignParentStart="true"
-            android:layout_centerVertical="true"
-            android:scaleType="center"
-            android:contentDescription="@null"/>
-
-        <ImageView
-            android:id="@+id/icon_check"
-            android:src="@drawable/ic_check_circle"
-            android:alpha="0"
-            android:layout_width="@dimen/check_icon_size"
-            android:layout_height="@dimen/check_icon_size"
-            android:layout_marginEnd="8dp"
-            android:layout_alignParentStart="true"
-            android:layout_centerVertical="true"
-            android:scaleType="fitCenter"
-            android:contentDescription="@null"/>
-
-        <TextView
-            android:id="@android:id/title"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_alignParentTop="true"
-            android:layout_toEndOf="@id/icon_mime_sm"
-            android:singleLine="true"
-            android:ellipsize="end"
-            android:textAlignment="viewStart"
-            android:textAppearance="@android:style/TextAppearance.Material.Subhead"
-            android:textColor="@color/item_title" />
-
-        <TextView
-            android:id="@+id/size"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_toEndOf="@id/icon_mime_sm"
-            android:layout_below="@android:id/title"
-            android:layout_marginEnd="4dp"
-            android:singleLine="true"
-            android:ellipsize="end"
-            android:textAlignment="viewStart"
-            android:textAppearance="@android:style/TextAppearance.Material.Caption"
-            android:textColor="@color/item_details" />
-
-        <TextView
-            android:id="@+id/date"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_below="@android:id/title"
-            android:layout_toEndOf="@id/size"
-            android:singleLine="true"
-            android:ellipsize="end"
-            android:textAlignment="viewStart"
-            android:textAppearance="@android:style/TextAppearance.Material.Caption"
-            android:textColor="@color/item_details" />
-
-    </RelativeLayout>
-
-    <!-- An overlay that draws the item border when it is focused. -->
-    <View
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_alignBottom="@id/nameplate"
-        android:layout_alignTop="@id/thumbnail"
-        android:layout_alignLeft="@id/thumbnail"
-        android:layout_alignRight="@id/thumbnail"
-        android:contentDescription="@null"
-        android:background="@drawable/item_doc_grid_border"
-        android:duplicateParentState="true" />
-
-</RelativeLayout>
diff --git a/packages/DocumentsUI/res/layout/item_doc_list.xml b/packages/DocumentsUI/res/layout/item_doc_list.xml
deleted file mode 100644
index a939fcd..0000000
--- a/packages/DocumentsUI/res/layout/item_doc_list.xml
+++ /dev/null
@@ -1,134 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<com.android.documentsui.ListItem xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="@color/item_doc_background"
-    android:focusable="true"
-    android:orientation="horizontal" >
-
-    <View
-        android:id="@+id/focus_indicator"
-        android:layout_width="4dp"
-        android:layout_height="match_parent" />
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:baselineAligned="false"
-        android:gravity="center_vertical"
-        android:minHeight="@dimen/list_item_height"
-        android:orientation="horizontal"
-        android:paddingEnd="@dimen/list_item_padding"
-        android:paddingStart="@dimen/list_item_padding" >
-
-        <FrameLayout
-            android:id="@android:id/icon"
-            android:layout_width="@dimen/list_item_thumbnail_size"
-            android:layout_height="@dimen/list_item_thumbnail_size"
-            android:layout_marginEnd="16dp" >
-
-            <ImageView
-                android:id="@+id/icon_mime"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center"
-                android:contentDescription="@null"
-                android:scaleType="centerInside" />
-
-            <ImageView
-                android:id="@+id/icon_thumb"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:contentDescription="@null"
-                android:scaleType="centerCrop" />
-
-            <ImageView
-                android:id="@+id/icon_check"
-                android:layout_width="@dimen/check_icon_size"
-                android:layout_height="@dimen/check_icon_size"
-                android:layout_gravity="center"
-                android:alpha="0"
-                android:contentDescription="@null"
-                android:scaleType="fitCenter"
-                android:src="@drawable/ic_check_circle" />
-        </FrameLayout>
-
-        <LinearLayout
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:orientation="vertical"
-            android:layout_gravity="center_vertical" >
-
-            <TextView
-                android:id="@android:id/title"
-                android:layout_width="wrap_content"
-                android:layout_height="0dp"
-                android:layout_weight="1"
-                android:ellipsize="end"
-                android:singleLine="true"
-                android:textAlignment="viewStart"
-                android:textAppearance="@android:style/TextAppearance.Material.Subhead"
-                android:textColor="@color/item_title" />
-
-            <LinearLayout
-                android:id="@+id/line2"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:baselineAligned="false"
-                android:gravity="center_vertical"
-                android:orientation="horizontal" >
-
-                <TextView
-                    android:id="@+id/date"
-                    android:layout_width="90dp"
-                    android:layout_height="wrap_content"
-                    android:ellipsize="end"
-                    android:singleLine="true"
-                    android:textAlignment="viewStart"
-                    android:textAppearance="@android:style/TextAppearance.Material.Caption"
-                    android:textColor="@color/item_details" />
-
-                <TextView
-                    android:id="@+id/size"
-                    android:layout_width="90dp"
-                    android:layout_height="wrap_content"
-                    android:layout_marginStart="8dp"
-                    android:ellipsize="end"
-                    android:singleLine="true"
-                    android:textAlignment="viewStart"
-                    android:textAppearance="@android:style/TextAppearance.Material.Caption"
-                    android:textColor="@color/item_details" />
-
-                <TextView
-                    android:id="@android:id/summary"
-                    android:layout_width="0dp"
-                    android:layout_height="wrap_content"
-                    android:layout_marginStart="8dp"
-                    android:layout_weight="1"
-                    android:ellipsize="end"
-                    android:singleLine="true"
-                    android:textAlignment="viewStart"
-                    android:textAppearance="@android:style/TextAppearance.Material.Caption"
-                    android:textColor="@color/item_details" />
-            </LinearLayout>
-        </LinearLayout>
-    </LinearLayout>
-
-</com.android.documentsui.ListItem>
diff --git a/packages/DocumentsUI/res/layout/item_root.xml b/packages/DocumentsUI/res/layout/item_root.xml
deleted file mode 100644
index 114fd09..0000000
--- a/packages/DocumentsUI/res/layout/item_root.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<com.android.documentsui.RootItemView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:minHeight="48dp"
-    android:paddingStart="@dimen/list_item_padding"
-    android:paddingEnd="@dimen/list_item_padding"
-    android:gravity="center_vertical"
-    android:orientation="horizontal"
-    android:baselineAligned="false"
-    android:background="@drawable/root_item_background">
-
-    <FrameLayout
-        android:layout_width="@dimen/icon_size"
-        android:layout_height="@dimen/icon_size"
-        android:duplicateParentState="true">
-
-        <ImageView
-            android:id="@android:id/icon"
-            android:layout_width="@dimen/root_icon_size"
-            android:layout_height="match_parent"
-            android:scaleType="centerInside"
-            android:contentDescription="@null"
-            android:duplicateParentState="true" />
-
-    </FrameLayout>
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:paddingTop="8dp"
-        android:paddingBottom="8dp"
-        android:orientation="vertical"
-        android:layout_weight="1">
-
-        <TextView
-            android:id="@android:id/title"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:singleLine="true"
-            android:ellipsize="end"
-            android:textAlignment="viewStart"
-            android:textAppearance="@android:style/TextAppearance.Material.Menu"
-            android:textColor="@color/item_root_primary_text" />
-
-        <TextView
-            android:id="@android:id/summary"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:singleLine="true"
-            android:ellipsize="end"
-            android:textAlignment="viewStart"
-            android:textAppearance="@android:style/TextAppearance.Material.Caption"
-            android:textColor="@color/item_root_primary_text" />
-
-    </LinearLayout>
-
-     <FrameLayout
-        android:layout_width="@dimen/icon_size"
-        android:layout_height="@dimen/icon_size"
-        android:duplicateParentState="true">
-
-        <ImageView
-            android:id="@+id/eject_icon"
-            android:layout_width="@dimen/root_icon_size"
-            android:layout_height="match_parent"
-            android:scaleType="centerInside"
-            android:contentDescription="@string/menu_eject_root"
-            android:visibility="gone" />
-
-    </FrameLayout>
-
-</com.android.documentsui.RootItemView>
diff --git a/packages/DocumentsUI/res/layout/item_root_header.xml b/packages/DocumentsUI/res/layout/item_root_header.xml
deleted file mode 100644
index 6b9857d..0000000
--- a/packages/DocumentsUI/res/layout/item_root_header.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:paddingTop="12dp">
-
-    <TextView
-        android:id="@android:id/title"
-        android:textColor="?android:attr/textColorTertiary"
-        style="?android:attr/listSeparatorTextViewStyle" />
-
-</FrameLayout>
diff --git a/packages/DocumentsUI/res/layout/item_root_spacer.xml b/packages/DocumentsUI/res/layout/item_root_spacer.xml
deleted file mode 100644
index b3beced..0000000
--- a/packages/DocumentsUI/res/layout/item_root_spacer.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:paddingTop="8dp"
-    android:paddingBottom="8dp">
-
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="?android:attr/listDivider" />
-
-</FrameLayout>
diff --git a/packages/DocumentsUI/res/layout/item_subdir.xml b/packages/DocumentsUI/res/layout/item_subdir.xml
deleted file mode 100644
index ffe4afe..0000000
--- a/packages/DocumentsUI/res/layout/item_subdir.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:minHeight="?android:attr/listPreferredItemHeightSmall"
-    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
-    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
-    android:gravity="center_vertical"
-    android:orientation="horizontal"
-    android:baselineAligned="false">
-
-    <TextView
-        android:id="@android:id/title"
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_weight="1"
-        android:singleLine="true"
-        android:ellipsize="end"
-        android:textAlignment="viewStart"
-        android:textAppearance="@android:style/TextAppearance.Material.Subhead"
-        android:textColor="?android:attr/textColorPrimary" />
-
-</LinearLayout>
diff --git a/packages/DocumentsUI/res/layout/item_subdir_title.xml b/packages/DocumentsUI/res/layout/item_subdir_title.xml
deleted file mode 100644
index 8d0d807..0000000
--- a/packages/DocumentsUI/res/layout/item_subdir_title.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:paddingEnd="8dp"
-    android:orientation="horizontal"
-    android:baselineAligned="false">
-
-    <TextView
-        android:id="@android:id/title"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:singleLine="true"
-        android:ellipsize="end"
-        android:textAlignment="viewStart"
-        android:drawablePadding="12dp"
-        android:drawableRight="@drawable/ic_breadcrumb_arrow_down"
-        android:textAppearance="@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title" />
-</LinearLayout>
diff --git a/packages/DocumentsUI/res/layout/navigation_breadcrumb_item.xml b/packages/DocumentsUI/res/layout/navigation_breadcrumb_item.xml
deleted file mode 100644
index 720f795..0000000
--- a/packages/DocumentsUI/res/layout/navigation_breadcrumb_item.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2016 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-
-<!--
-     CoordinatorLayout is necessary for various components (e.g. Snackbars, and
-     floating action buttons) to operate correctly.
--->
-<!--
-     focusableInTouchMode is set in order to force key events to go to the activity's global key
-     callback, which is necessary for proper event routing. See BaseActivity.onKeyDown.
--->
-
-<LinearLayout
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  android:layout_width="wrap_content"
-  android:layout_height="@dimen/breadcrumb_item_height"
-  android:layout_alignParentTop="true"
-  android:gravity="center_vertical"
-  android:orientation="horizontal">
-
-    <com.android.documentsui.DragOverTextView
-        android:id="@+id/breadcrumb_text"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:gravity="center_vertical"
-        android:textAppearance="@android:style/TextAppearance.Material.Widget.ActionBar.Title"
-        android:background="@drawable/breadcrumb_item_background" />
-
-    <ImageView
-        android:id="@+id/breadcrumb_arrow"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:src="@drawable/ic_breadcrumb_arrow"
-        android:layout_marginTop="2dp"
-        android:layout_marginRight="3dp"
-        android:layout_marginLeft="3dp" />
-
-</LinearLayout>
\ No newline at end of file
diff --git a/packages/DocumentsUI/res/layout/single_pane_layout.xml b/packages/DocumentsUI/res/layout/single_pane_layout.xml
deleted file mode 100644
index 7b7e229..0000000
--- a/packages/DocumentsUI/res/layout/single_pane_layout.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<!-- CoordinatorLayout is necessary for various components (e.g. Snackbars, and
-     floating action buttons) to operate correctly. -->
-<!-- focusableInTouchMode is set in order to force key events to go to the activity's global key 
-     callback, which is necessary for proper event routing. See BaseActivity.onKeyDown. -->
-<android.support.design.widget.CoordinatorLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:id="@+id/coordinator_layout"
-    android:focusableInTouchMode="true">
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:orientation="vertical">
-
-        <com.android.documentsui.DocumentsToolbar
-            android:id="@+id/toolbar"
-            android:layout_width="match_parent"
-            android:layout_height="?android:attr/actionBarSize"
-            android:background="?android:attr/colorPrimary"
-            android:elevation="8dp"
-            android:theme="?actionBarTheme"
-            android:popupTheme="?actionBarPopupTheme">
-
-            <Spinner
-                android:id="@+id/stack"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:popupTheme="?actionBarPopupTheme"
-                android:background="@android:color/transparent"
-                android:layout_marginStart="4dp"
-                android:overlapAnchor="true" />
-
-        </com.android.documentsui.DocumentsToolbar>
-
-        <include layout="@layout/directory_cluster"/>
-
-    </LinearLayout>
-
-</android.support.design.widget.CoordinatorLayout>
diff --git a/packages/DocumentsUI/res/menu/activity.xml b/packages/DocumentsUI/res/menu/activity.xml
deleted file mode 100644
index ed47bbc..0000000
--- a/packages/DocumentsUI/res/menu/activity.xml
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
-<!-- showAsAction flag impacts the behavior of SearchView.
-     When set to collapseActionView, collapsing SearchView to icon is the
-     default behavior. It would fit UX, however after expanding SearchView is
-     shown on the left site of the toolbar (replacing title). Since no way to
-     prevent this behavior was found, the flag is set to always. SearchView is
-     always visible by default and it is being collapse manually by calling
-     setIconified() method
--->
-    <item
-        android:id="@+id/menu_search"
-        android:title="@string/menu_search"
-        android:icon="@drawable/ic_menu_search"
-        android:showAsAction="always"
-        android:actionViewClass="android.widget.SearchView"
-        android:imeOptions="actionSearch"
-        android:visible="false" />
-<!-- This group is being hidden when searching is in full bar mode-->
-    <group android:id="@+id/group_hide_when_searching">
-        <item
-            android:id="@+id/menu_grid"
-            android:title="@string/menu_grid"
-            android:icon="@drawable/ic_menu_view_grid"
-            android:showAsAction="always" />
-        <item
-            android:id="@+id/menu_list"
-            android:title="@string/menu_list"
-            android:icon="@drawable/ic_menu_view_list"
-            android:showAsAction="always" />
-
-        <item
-            android:id="@+id/menu_new_window"
-            android:title="@string/menu_new_window"
-            android:alphabeticShortcut="n"
-            android:showAsAction="never"
-            android:visible="false" />
-        <item
-            android:id="@+id/menu_create_dir"
-            android:title="@string/menu_create_dir"
-            android:icon="@drawable/ic_menu_new_folder"
-            android:alphabeticShortcut="e"
-            android:showAsAction="never"
-            android:visible="false" />
-        <item
-            android:id="@+id/menu_sort"
-            android:title="@string/menu_sort"
-            android:icon="@drawable/ic_menu_sortby"
-            android:showAsAction="ifRoom">
-            <menu>
-                <item
-                    android:id="@+id/menu_sort_name"
-                    android:title="@string/sort_name" />
-                <item
-                    android:id="@+id/menu_sort_date"
-                    android:title="@string/sort_date" />
-                <item
-                    android:id="@+id/menu_sort_size"
-                    android:title="@string/sort_size" />
-            </menu>
-        </item>
-        <item
-            android:id="@+id/menu_file_size"
-            android:showAsAction="never"
-            android:visible="false" />
-        <item
-            android:id="@+id/menu_advanced"
-            android:showAsAction="never"
-            android:visible="false" />
-        <item
-            android:id="@+id/menu_settings"
-            android:title="@string/menu_settings"
-            android:showAsAction="never"
-            android:visible="false" />
-    </group>
-</menu>
diff --git a/packages/DocumentsUI/res/menu/context_menu.xml b/packages/DocumentsUI/res/menu/context_menu.xml
deleted file mode 100644
index 7474859..0000000
--- a/packages/DocumentsUI/res/menu/context_menu.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:id="@+id/menu_cut_to_clipboard"
-        android:title="@string/menu_cut_to_clipboard" />
-    <item
-        android:id="@+id/menu_copy_to_clipboard"
-        android:title="@string/menu_copy_to_clipboard" />
-    <item
-        android:id="@+id/menu_paste_from_clipboard"
-        android:title="@string/menu_paste_from_clipboard" />
-</menu>
diff --git a/packages/DocumentsUI/res/menu/mode_directory.xml b/packages/DocumentsUI/res/menu/mode_directory.xml
deleted file mode 100644
index e2125ad..0000000
--- a/packages/DocumentsUI/res/menu/mode_directory.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:id="@+id/menu_open"
-        android:title="@string/menu_open"
-        android:showAsAction="always" />
-    <item
-        android:id="@+id/menu_share"
-        android:icon="@drawable/ic_menu_share"
-        android:title="@string/menu_share"
-        android:showAsAction="always" />
-    <item
-        android:id="@+id/menu_delete"
-        android:icon="@drawable/ic_menu_delete"
-        android:title="@string/menu_delete"
-        android:showAsAction="always" />
-    <item
-        android:id="@+id/menu_select_all"
-        android:title="@string/menu_select_all"
-        android:showAsAction="never" />
-    <item
-        android:id="@+id/menu_copy_to"
-        android:title="@string/menu_copy"
-        android:showAsAction="never"
-        android:visible="false" />
-    <item
-        android:id="@+id/menu_move_to"
-        android:title="@string/menu_move"
-        android:showAsAction="never"
-        android:visible="false" />
-    <item
-        android:id="@+id/menu_rename"
-        android:title="@string/menu_rename"
-        android:showAsAction="never"
-        android:visible="false" />
-</menu>
diff --git a/packages/DocumentsUI/res/menu/root_context_menu.xml b/packages/DocumentsUI/res/menu/root_context_menu.xml
deleted file mode 100644
index 0cf00a4..0000000
--- a/packages/DocumentsUI/res/menu/root_context_menu.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
-    <item
-        android:id="@+id/menu_eject_root"
-        android:title="@string/menu_eject_root" />
-    <item
-        android:id="@+id/menu_settings"
-        android:title="@string/menu_settings" />
-</menu>
diff --git a/packages/DocumentsUI/res/mipmap-hdpi/ic_app_icon.png b/packages/DocumentsUI/res/mipmap-hdpi/ic_app_icon.png
deleted file mode 100644
index cd3a037..0000000
--- a/packages/DocumentsUI/res/mipmap-hdpi/ic_app_icon.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/mipmap-hdpi/ic_launcher_downloads.png b/packages/DocumentsUI/res/mipmap-hdpi/ic_launcher_downloads.png
deleted file mode 100644
index f958bbd..0000000
--- a/packages/DocumentsUI/res/mipmap-hdpi/ic_launcher_downloads.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/mipmap-mdpi/ic_app_icon.png b/packages/DocumentsUI/res/mipmap-mdpi/ic_app_icon.png
deleted file mode 100644
index 8d08e9b..0000000
--- a/packages/DocumentsUI/res/mipmap-mdpi/ic_app_icon.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/mipmap-mdpi/ic_launcher_downloads.png b/packages/DocumentsUI/res/mipmap-mdpi/ic_launcher_downloads.png
deleted file mode 100644
index f2e9376..0000000
--- a/packages/DocumentsUI/res/mipmap-mdpi/ic_launcher_downloads.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/mipmap-xhdpi/ic_app_icon.png b/packages/DocumentsUI/res/mipmap-xhdpi/ic_app_icon.png
deleted file mode 100644
index f3bacb7..0000000
--- a/packages/DocumentsUI/res/mipmap-xhdpi/ic_app_icon.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/mipmap-xhdpi/ic_launcher_downloads.png b/packages/DocumentsUI/res/mipmap-xhdpi/ic_launcher_downloads.png
deleted file mode 100644
index 4dc5336..0000000
--- a/packages/DocumentsUI/res/mipmap-xhdpi/ic_launcher_downloads.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/mipmap-xxhdpi/ic_app_icon.png b/packages/DocumentsUI/res/mipmap-xxhdpi/ic_app_icon.png
deleted file mode 100644
index 5156171..0000000
--- a/packages/DocumentsUI/res/mipmap-xxhdpi/ic_app_icon.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/mipmap-xxhdpi/ic_launcher_downloads.png b/packages/DocumentsUI/res/mipmap-xxhdpi/ic_launcher_downloads.png
deleted file mode 100644
index 8716290..0000000
--- a/packages/DocumentsUI/res/mipmap-xxhdpi/ic_launcher_downloads.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/mipmap-xxxhdpi/ic_app_icon.png b/packages/DocumentsUI/res/mipmap-xxxhdpi/ic_app_icon.png
deleted file mode 100644
index 6dc2f76..0000000
--- a/packages/DocumentsUI/res/mipmap-xxxhdpi/ic_app_icon.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/mipmap-xxxhdpi/ic_launcher_downloads.png b/packages/DocumentsUI/res/mipmap-xxxhdpi/ic_launcher_downloads.png
deleted file mode 100644
index f5be219..0000000
--- a/packages/DocumentsUI/res/mipmap-xxxhdpi/ic_launcher_downloads.png
+++ /dev/null
Binary files differ
diff --git a/packages/DocumentsUI/res/values-af/strings.xml b/packages/DocumentsUI/res/values-af/strings.xml
deleted file mode 100644
index 673c8d4..0000000
--- a/packages/DocumentsUI/res/values-af/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Lêers"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Aflaaie"</string>
-    <string name="title_open" msgid="4353228937663917801">"Maak oop vanuit"</string>
-    <string name="title_save" msgid="2433679664882857999">"Stoor na"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Nuwe vouer"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Roosteraansig"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Lysaansig"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Sorteer volgens"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Soek"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Berginginstellings"</string>
-    <string name="menu_open" msgid="432922957274920903">"Maak oop"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Stoor"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Deel"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Vee uit"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Kies alles"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Kopieer na …"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Skuif na …"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Nuwe venster"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Knip"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Kopieer"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Plak"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Wys interne berging"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Versteek interne berging"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Wys lêergrootte"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Versteek lêergrootte"</string>
-    <string name="button_select" msgid="527196987259139214">"Kies"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Kopieer"</string>
-    <string name="button_move" msgid="2202666023104202232">"Skuif"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Maak toe"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Probeer weer"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Volgens naam"</string>
-    <string name="sort_date" msgid="586080032956151448">"Volgens datum gewysig"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Volgens grootte"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Wys wortels"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Versteek wortels"</string>
-    <string name="save_error" msgid="6167009778003223664">"Kon nie dokument stoor nie"</string>
-    <string name="create_error" msgid="3735649141335444215">"Kon nie vouer skep nie"</string>
-    <string name="query_error" msgid="5999895349602476581">"Kan nie op die oomblik inhoud laai nie"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Onlangs"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> gratis"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Bergingdienste"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Kortpaaie"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Toestelle"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Nog programme"</string>
-    <string name="empty" msgid="7858882803708117596">"Geen items nie"</string>
-    <string name="no_results" msgid="6622510343880730446">"Geen passings in %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Kan nie lêer oopmaak nie"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Kan sommige dokumente nie uitvee nie"</string>
-    <string name="share_via" msgid="8966594246261344259">"Deel via"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Kopieer tans lêers"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Skuif tans lêers"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Vee tans lêers uit"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> oor"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">Kopieer tans <xliff:g id="COUNT_1">%1$d</xliff:g> lêers.</item>
-      <item quantity="one">Kopieer tans <xliff:g id="COUNT_0">%1$d</xliff:g> lêer.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">Skuif tans <xliff:g id="COUNT_1">%1$d</xliff:g> lêers.</item>
-      <item quantity="one">Skuif tans <xliff:g id="COUNT_0">%1$d</xliff:g> lêer.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">Vee tans <xliff:g id="COUNT_1">%1$d</xliff:g> lêers uit.</item>
-      <item quantity="one">Vee tans <xliff:g id="COUNT_0">%1$d</xliff:g> lêer uit.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Ontdoen"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Maak tans gereed vir kopieer …"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Berei tans voor vir skuif …"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Maak tans gereed om uit te vee …"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">Kon <xliff:g id="COUNT_1">%1$d</xliff:g> lêers nie kopieer nie</item>
-      <item quantity="one">Kon <xliff:g id="COUNT_0">%1$d</xliff:g> lêer nie kopieer nie</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">Kon <xliff:g id="COUNT_1">%1$d</xliff:g> lêers nie skuif nie</item>
-      <item quantity="one">Kon <xliff:g id="COUNT_0">%1$d</xliff:g> lêer nie skuif nie</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">Kon <xliff:g id="COUNT_1">%1$d</xliff:g> lêers nie uitvee nie</item>
-      <item quantity="one">Kon <xliff:g id="COUNT_0">%1$d</xliff:g> lêer nie uitvee nie</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Tik om besonderhede te bekyk"</string>
-    <string name="close" msgid="3043722427445528732">"Maak toe"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Hierdie lêers is nie gekopieer nie: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Hierdie lêers is nie geskuif nie: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Hierdie lêers is nie uitgevee nie: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Hierdie lêers is na \'n ander formaat omgeskakel: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">Het <xliff:g id="COUNT_1">%1$d</xliff:g> lêers na die knipbord gekopieer.</item>
-      <item quantity="one">Het <xliff:g id="COUNT_0">%1$d</xliff:g> lêer na die knipbord gekopieer.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Kan nie die geselekteerde lêers in hierdie ligging plak nie."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Hernoem"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Kon nie dokument hernoem nie"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Maak los"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Sommige lêers is omgeskakel"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Gee <xliff:g id="APPNAME"><b>^1</b></xliff:g> toegang tot <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>-gids op <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Gee <xliff:g id="APPNAME"><b>^1</b></xliff:g> toegang tot <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>-gids?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Gee <xliff:g id="APPNAME"><b>^1</b></xliff:g> toegang tot jou data, insluitend foto\'s en video\'s, op <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Moenie weer vra nie"</string>
-    <string name="allow" msgid="7225948811296386551">"Laat toe"</string>
-    <string name="deny" msgid="2081879885755434506">"Weier"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> gekies</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> gekies</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> items</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> item</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Vee \"<xliff:g id="NAME">%1$s</xliff:g>\" uit?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Vee vouer \"<xliff:g id="NAME">%1$s</xliff:g>\" en sy inhoud uit?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">Vee <xliff:g id="COUNT_1">%1$d</xliff:g> lêers uit?</item>
-      <item quantity="one">Vee <xliff:g id="COUNT_0">%1$d</xliff:g> lêer uit?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">Vee <xliff:g id="COUNT_1">%1$d</xliff:g> vouers en hul inhoud uit?</item>
-      <item quantity="one">Vee <xliff:g id="COUNT_0">%1$d</xliff:g> vouer en sy inhoud uit?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">Vee <xliff:g id="COUNT_1">%1$d</xliff:g> items uit?</item>
-      <item quantity="one">Vee <xliff:g id="COUNT_0">%1$d</xliff:g> item uit?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-am/strings.xml b/packages/DocumentsUI/res/values-am/strings.xml
deleted file mode 100644
index cc00163..0000000
--- a/packages/DocumentsUI/res/values-am/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"ፋይሎች"</string>
-    <string name="downloads_label" msgid="959113951084633612">"የወረዱ"</string>
-    <string name="title_open" msgid="4353228937663917801">"ክፈት ከ"</string>
-    <string name="title_save" msgid="2433679664882857999">"አስቀምጥ ወደ"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"አዲስ አቃፊ"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"የፍርግርግ እይታ"</string>
-    <string name="menu_list" msgid="7279285939892417279">"የዝርዝር እይታ"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"ደርድር በ"</string>
-    <string name="menu_search" msgid="3816712084502856974">"ፈልግ"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"የማከማቻ ቅንብሮች"</string>
-    <string name="menu_open" msgid="432922957274920903">"ክፈት"</string>
-    <string name="menu_save" msgid="2394743337684426338">"አስቀምጥ"</string>
-    <string name="menu_share" msgid="3075149983979628146">"አጋራ"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"ሰርዝ"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"ሁሉንም ምረጥ"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"ቅዳ ወደ…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"ይውሰዱ ወደ..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"አዲሰ መስኮት"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"ቁረጥ"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"ቅዳ"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"ለጥፍ"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"ውስጣዊ ማከማቻ አሳይ"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"ውስጣዊ ማከማቻ ደብቅ"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"የፋይል መጠን አሳይ"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"የፋይል መጠን ደብቅ"</string>
-    <string name="button_select" msgid="527196987259139214">"ምረጥ"</string>
-    <string name="button_copy" msgid="8706475544635021302">"ቅዳ"</string>
-    <string name="button_move" msgid="2202666023104202232">"አንቀሳቀስ"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"አሰናብት"</string>
-    <string name="button_retry" msgid="4392027584153752797">"እንደገና ይሞክሩ"</string>
-    <string name="sort_name" msgid="9183560467917256779">"በስም"</string>
-    <string name="sort_date" msgid="586080032956151448">"በተለወጠበት ቀን"</string>
-    <string name="sort_size" msgid="3350681319735474741">"በመጠን"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"ስሮችን አሳይ"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"ስሮችን ደብቅ"</string>
-    <string name="save_error" msgid="6167009778003223664">"ሰነድ ማስቀመጥ አልተሳካም"</string>
-    <string name="create_error" msgid="3735649141335444215">"አቃፊ መፍጠር አልተሳካም"</string>
-    <string name="query_error" msgid="5999895349602476581">"አሁን ይዘትን መጫን አልተቻለም"</string>
-    <string name="root_recent" msgid="4470053704320518133">"የቅርብ ጊዜ"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> ነፃ"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"የማከማቻ አገልግሎቶች"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"አቋራጮች"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"መሣሪያዎች"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"ተጨማሪ መተግበሪያዎች"</string>
-    <string name="empty" msgid="7858882803708117596">"ምንም ንጥሎች የሉም"</string>
-    <string name="no_results" msgid="6622510343880730446">"%1$s ውስጥ ምንም ተዛማጆች የሉም"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"ፋይሉን መክፈት አይቻልም"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"አንዳንድ ሰነዶችን መሰረዝ አልተቻለም"</string>
-    <string name="share_via" msgid="8966594246261344259">"በሚከተለው በኩል ያጋሩ"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"ፋይሎች በመገልበጥ ላይ"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"ፋይሎችን በመውሰድ ላይ"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"ፋይሎችን በመሰረዝ ላይ"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> ቀርቷል"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ፋይሎች በመቅዳት ላይ።</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ፋይሎች በመቅዳት ላይ።</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ፋይሎችን በመውሰድ ላይ።</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ፋይሎችን በመውሰድ ላይ።</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ፋይሎችን በመሰረዝ ላይ።</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ፋይሎችን በመሰረዝ ላይ።</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"ቀልብስ"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"ቅጂ በማዘጋጀት ላይ…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"ለመውሰድ በማዘጋጀት ላይ…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"ለመሰረዝ በመዘጋጀት ላይ…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ፋይሎችን መቅዳት አልተቻለም</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ፋይሎችን መቅዳት አልተቻለም</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ፋይሎችን መውሰድ አልተቻለም</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ፋይሎችን መውሰድ አልተቻለም</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ፋይሎችን መሰረዝ አልተቻለም</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ፋይሎችን መሰረዝ አልተቻለም</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"ዝርዝሮችን ለመመልከት መታ ያድርጉ"</string>
-    <string name="close" msgid="3043722427445528732">"ዝጋ"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"እነዚህ ፋይሎች አልተቀዱም፦ <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"እነዚህ ፋይሎች አልተወሰዱም፦ <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"እነዚህ ፋይሎች አልተሰረዙም፦ <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"እነዚህ ፋይሎች ወደ ሌላ ቅርጸት ተለውጠዋል፦ <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ፋይሎች ወደ ቅንጥብ ሰሌዳ ቀድቷል።</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ፋይሎች ወደ ቅንጥብ ሰሌዳ ቀድተዋል።</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"የተመረጡትን ፋይሎች ወደዚህ አካባቢ መለጠፍ አይቻልም።"</string>
-    <string name="menu_rename" msgid="7678802479104285353">"እንደገና ሰይም"</string>
-    <string name="rename_error" msgid="4203041674883412606">"ሰነዱን ዳግም መሰየም አልተሳካም"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"አስወጣ"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"አንዳንድ ፋይሎች ተለውጠዋል"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> በ<xliff:g id="STORAGE"><i>^3</i></xliff:g> ላይ የ<xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ማውጫ መደረሻ ይሰጠው?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"የ<xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ማውጫ መዳረሻ ለ<xliff:g id="APPNAME"><b>^1</b></xliff:g> ይሰጠው?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"በ<xliff:g id="STORAGE"><i>^2</i></xliff:g> ላይ ያሉትን ፎቶዎች እና ቪዲዮዎች ጨምሮ የውሂብዎ መዳረሻ ለ<xliff:g id="APPNAME"><b>^1</b></xliff:g> ይሰጥ?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"ዳግም አትጠይቅ"</string>
-    <string name="allow" msgid="7225948811296386551">"ይፍቀዱ"</string>
-    <string name="deny" msgid="2081879885755434506">"ያስተባብሉ"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ተመርጠዋል</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ተመርጠዋል</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ንጥሎች</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ንጥሎች</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"«<xliff:g id="NAME">%1$s</xliff:g>» ይሰረዝ?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"አቃፊ «<xliff:g id="NAME">%1$s</xliff:g>» እና ይዘቶቹ ይሰረዙ?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ፋይሎች ይሰረዙ?</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ፋይሎች ይሰረዙ?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> አቃፊዎች እና ይዘቶቻቸው ይሰረዙ?</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> አቃፊዎች እና ይዘቶቻቸው ይሰረዙ?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ንጥሎች ይሰረዙ?</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ንጥሎች ይሰረዙ?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-ar/strings.xml b/packages/DocumentsUI/res/values-ar/strings.xml
deleted file mode 100644
index ce53e2d..0000000
--- a/packages/DocumentsUI/res/values-ar/strings.xml
+++ /dev/null
@@ -1,192 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"الملفات"</string>
-    <string name="downloads_label" msgid="959113951084633612">"التنزيلات"</string>
-    <string name="title_open" msgid="4353228937663917801">"فتح من"</string>
-    <string name="title_save" msgid="2433679664882857999">"حفظ في"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"مجلد جديد"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"عرض الشبكة"</string>
-    <string name="menu_list" msgid="7279285939892417279">"عرض القائمة"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"ترتيب بحسب"</string>
-    <string name="menu_search" msgid="3816712084502856974">"بحث"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"إعدادات سعة التخزين"</string>
-    <string name="menu_open" msgid="432922957274920903">"فتح"</string>
-    <string name="menu_save" msgid="2394743337684426338">"حفظ"</string>
-    <string name="menu_share" msgid="3075149983979628146">"مشاركة"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"حذف"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"تحديد الكل"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"نسخ إلى…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"نقل إلى..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"نافذة جديدة"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"قص"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"نسخ"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"لصق"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"إظهار وحدة التخزين الداخلية"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"إخفاء وحدة التخزين الداخلية"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"إظهار حجم الملف"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"إخفاء حجم الملف"</string>
-    <string name="button_select" msgid="527196987259139214">"تحديد"</string>
-    <string name="button_copy" msgid="8706475544635021302">"نسخ"</string>
-    <string name="button_move" msgid="2202666023104202232">"نقل"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"إزالة"</string>
-    <string name="button_retry" msgid="4392027584153752797">"إعادة المحاولة"</string>
-    <string name="sort_name" msgid="9183560467917256779">"بحسب الاسم"</string>
-    <string name="sort_date" msgid="586080032956151448">"بحسب تاريخ التعديل"</string>
-    <string name="sort_size" msgid="3350681319735474741">"بحسب الحجم"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"عرض الجذور"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"إخفاء الجذور"</string>
-    <string name="save_error" msgid="6167009778003223664">"أخفق حفظ المستند"</string>
-    <string name="create_error" msgid="3735649141335444215">"أخفق إنشاء المجلد"</string>
-    <string name="query_error" msgid="5999895349602476581">"يتعذر تحميل المحتوى في الوقت الحالي"</string>
-    <string name="root_recent" msgid="4470053704320518133">"الأخيرة"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> خالية"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"خدمات التخزين"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"اختصارات"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"أجهزة"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"المزيد من التطبيقات"</string>
-    <string name="empty" msgid="7858882803708117596">"ليس هناك أي عناصر"</string>
-    <string name="no_results" msgid="6622510343880730446">"‏لا نتائج مطابقة في %1$s."</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"يتعذر فتح الملف"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"تعذر حذف بعض المستندات"</string>
-    <string name="share_via" msgid="8966594246261344259">"مشاركة عبر"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"جارٍ نسخ الملفات"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"نقل الملفات"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"جارٍ حذف الملفات"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"المدة المتبقية: <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="zero">جارٍ نسخ <xliff:g id="COUNT_1">%1$d</xliff:g> ملفات.</item>
-      <item quantity="two">جارٍ نسخ ملفين (<xliff:g id="COUNT_1">%1$d</xliff:g>).</item>
-      <item quantity="few">جارٍ نسخ <xliff:g id="COUNT_1">%1$d</xliff:g> ملفات.</item>
-      <item quantity="many">جارٍ نسخ <xliff:g id="COUNT_1">%1$d</xliff:g> ملفًا.</item>
-      <item quantity="other">جارٍ نسخ <xliff:g id="COUNT_1">%1$d</xliff:g> من الملفات.</item>
-      <item quantity="one">جارٍ نسخ ملف واحد (<xliff:g id="COUNT_0">%1$d</xliff:g>).</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="zero">لا ملفات <xliff:g id="COUNT_1">%1$d</xliff:g> يجري نقلها.</item>
-      <item quantity="two">جارٍ نقل ملفين (<xliff:g id="COUNT_1">%1$d</xliff:g>).</item>
-      <item quantity="few">جارٍ نقل <xliff:g id="COUNT_1">%1$d</xliff:g> ملفات.</item>
-      <item quantity="many">جارٍ نقل <xliff:g id="COUNT_1">%1$d</xliff:g> ملفًا.</item>
-      <item quantity="other">جارٍ نقل <xliff:g id="COUNT_1">%1$d</xliff:g> من الملفات.</item>
-      <item quantity="one">جارٍ نقل <xliff:g id="COUNT_0">%1$d</xliff:g> ملف واحد.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="zero">جارٍ حذف <xliff:g id="COUNT_1">%1$d</xliff:g> ملف.</item>
-      <item quantity="two">جارٍ حذف ملفين (<xliff:g id="COUNT_1">%1$d</xliff:g>).</item>
-      <item quantity="few">جارٍ حذف <xliff:g id="COUNT_1">%1$d</xliff:g> ملفات.</item>
-      <item quantity="many">جارٍ حذف <xliff:g id="COUNT_1">%1$d</xliff:g> ملفًا.</item>
-      <item quantity="other">جارٍ حذف <xliff:g id="COUNT_1">%1$d</xliff:g> من الملفات.</item>
-      <item quantity="one">جارٍ حذف <xliff:g id="COUNT_0">%1$d</xliff:g> ملف.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"تراجع"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"جارٍ التحضير للنسخ ..."</string>
-    <string name="move_preparing" msgid="2772219441375531410">"جارٍ التحضير للنقل…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"جارٍ الإعداد للحذف…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="zero">Couldn’t copy <xliff:g id="COUNT_1">%1$d</xliff:g> files</item>
-      <item quantity="two">تعذر نسخ ملفين (<xliff:g id="COUNT_1">%1$d</xliff:g>)</item>
-      <item quantity="few">تعذر نسخ <xliff:g id="COUNT_1">%1$d</xliff:g> ملفات</item>
-      <item quantity="many">تعذر نسخ <xliff:g id="COUNT_1">%1$d</xliff:g> ملفًا</item>
-      <item quantity="other">تعذر نسخ <xliff:g id="COUNT_1">%1$d</xliff:g> ملف</item>
-      <item quantity="one">تعذر نسخ ملف (<xliff:g id="COUNT_0">%1$d</xliff:g>)</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="zero">Couldn’t move <xliff:g id="COUNT_1">%1$d</xliff:g> files</item>
-      <item quantity="two">تعذر نقل ملفين (<xliff:g id="COUNT_1">%1$d</xliff:g>)</item>
-      <item quantity="few">تعذر نقل <xliff:g id="COUNT_1">%1$d</xliff:g> ملفات</item>
-      <item quantity="many">تعذر نقل <xliff:g id="COUNT_1">%1$d</xliff:g> ملفًا</item>
-      <item quantity="other">تعذر نقل <xliff:g id="COUNT_1">%1$d</xliff:g> ملف</item>
-      <item quantity="one">تعذر نقل ملف (<xliff:g id="COUNT_0">%1$d</xliff:g>)</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="zero">Couldn’t delete <xliff:g id="COUNT_1">%1$d</xliff:g> files</item>
-      <item quantity="two">تعذر حذف ملفين (<xliff:g id="COUNT_1">%1$d</xliff:g>)</item>
-      <item quantity="few">تعذر حذف <xliff:g id="COUNT_1">%1$d</xliff:g> ملفات</item>
-      <item quantity="many">تعذر حذف <xliff:g id="COUNT_1">%1$d</xliff:g> ملفًا</item>
-      <item quantity="other">تعذر حذف <xliff:g id="COUNT_1">%1$d</xliff:g> ملف</item>
-      <item quantity="one">تعذر حذف ملف (<xliff:g id="COUNT_0">%1$d</xliff:g>)</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"انقر لعرض التفاصيل."</string>
-    <string name="close" msgid="3043722427445528732">"إغلاق"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"لم يتم نسخ هذه الملفات: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"لم يتم نقل هذه الملفات: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"لم يتم حذف هذه الملفات: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"تم تحويل هذه الملفات إلى تنسيق آخر: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="zero">لم يتم نسخ أي ملف (<xliff:g id="COUNT_1">%1$d</xliff:g>) إلى الحافظة.</item>
-      <item quantity="two">تم نسخ ملفين اثنين (<xliff:g id="COUNT_1">%1$d</xliff:g>) إلى الحافظة.</item>
-      <item quantity="few">تم نسخ <xliff:g id="COUNT_1">%1$d</xliff:g> ملفات إلى الحافظة.</item>
-      <item quantity="many">تم نسخ <xliff:g id="COUNT_1">%1$d</xliff:g> ملفًا إلى الحافظة.</item>
-      <item quantity="other">تم نسخ <xliff:g id="COUNT_1">%1$d</xliff:g> من الملفات إلى الحافظة.</item>
-      <item quantity="one">تم نسخ ملف واحد (<xliff:g id="COUNT_0">%1$d</xliff:g>) إلى الحافظة.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"يتعذر لصق الملفات المحددة في هذا الموقع."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"إعادة تسمية"</string>
-    <string name="rename_error" msgid="4203041674883412606">"أخفقت إعادة تسمية المستند."</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"إخراج"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"تم تحويل بعض الملفات"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"هل تريد منح التطبيق <xliff:g id="APPNAME"><b>^1</b></xliff:g> حق الوصول إلى الدليل <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> على <xliff:g id="STORAGE"><i>^3</i></xliff:g>؟"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"هل تريد تمكين <xliff:g id="APPNAME"><b>^1</b></xliff:g> من الدخول إلى دليل <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>؟"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"هل تريد منح <xliff:g id="APPNAME"><b>^1</b></xliff:g> حق الوصول إلى بياناتك، بما في ذلك الصور ومقاطع الفيديو على <xliff:g id="STORAGE"><i>^2</i></xliff:g>؟"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"عدم السؤال مرة أخرى"</string>
-    <string name="allow" msgid="7225948811296386551">"السماح"</string>
-    <string name="deny" msgid="2081879885755434506">"رفض"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="zero">تم تحديد <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="two">تم تحديد <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="few">تم تحديد <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="many">تم تحديد <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="other">تم تحديد <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="one">تم تحديد <xliff:g id="COUNT_0">%1$d</xliff:g></item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="zero"><xliff:g id="COUNT_1">%1$d</xliff:g> عنصر</item>
-      <item quantity="two">عنصران (<xliff:g id="COUNT_1">%1$d</xliff:g>)</item>
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> عناصر</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> عنصرًا</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> عنصر</item>
-      <item quantity="one">عنصر واحد (<xliff:g id="COUNT_0">%1$d</xliff:g>)</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"هل تريد حذف \"<xliff:g id="NAME">%1$s</xliff:g>\"؟"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"هل تريد حذف المجلد \"<xliff:g id="NAME">%1$s</xliff:g>\" ومحتوياته؟"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="zero">هل تريد حذف <xliff:g id="COUNT_1">%1$d</xliff:g> ملف؟</item>
-      <item quantity="two">هل تريد حذف ملفين (<xliff:g id="COUNT_1">%1$d</xliff:g>)؟</item>
-      <item quantity="few">هل تريد حذف <xliff:g id="COUNT_1">%1$d</xliff:g> ملفات؟</item>
-      <item quantity="many">هل تريد حذف <xliff:g id="COUNT_1">%1$d</xliff:g> ملفًا؟</item>
-      <item quantity="other">هل تريد حذف <xliff:g id="COUNT_1">%1$d</xliff:g> ملف؟</item>
-      <item quantity="one">هل تريد حذف <xliff:g id="COUNT_0">%1$d</xliff:g> ملف؟</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="zero">هل تريد حذف <xliff:g id="COUNT_1">%1$d</xliff:g> مجلد ومحتوياته؟</item>
-      <item quantity="two">هل تريد حذف مجلدين (<xliff:g id="COUNT_1">%1$d</xliff:g>) ومحتوياتهما؟</item>
-      <item quantity="few">هل تريد حذف <xliff:g id="COUNT_1">%1$d</xliff:g> مجلدات ومحتوياتها؟</item>
-      <item quantity="many">هل تريد حذف <xliff:g id="COUNT_1">%1$d</xliff:g> مجلدًا ومحتويات هذه المجلدات؟</item>
-      <item quantity="other">هل تريد حذف <xliff:g id="COUNT_1">%1$d</xliff:g> مجلد ومحتويات هذه المجلدات؟</item>
-      <item quantity="one">هل تريد حذف <xliff:g id="COUNT_0">%1$d</xliff:g> مجلد ومحتوياته؟</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="zero">هل تريد حذف <xliff:g id="COUNT_1">%1$d</xliff:g> عنصر؟</item>
-      <item quantity="two">هل تريد حذف عنصرين (<xliff:g id="COUNT_1">%1$d</xliff:g>)؟</item>
-      <item quantity="few">هل تريد حذف <xliff:g id="COUNT_1">%1$d</xliff:g> عناصر؟</item>
-      <item quantity="many">هل تريد حذف <xliff:g id="COUNT_1">%1$d</xliff:g> عنصرًا؟</item>
-      <item quantity="other">هل تريد حذف <xliff:g id="COUNT_1">%1$d</xliff:g> عنصر؟</item>
-      <item quantity="one">هل تريد حذف <xliff:g id="COUNT_0">%1$d</xliff:g> عنصر؟</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-az-rAZ/strings.xml b/packages/DocumentsUI/res/values-az-rAZ/strings.xml
deleted file mode 100644
index f064feb..0000000
--- a/packages/DocumentsUI/res/values-az-rAZ/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Fayllar"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Endirmələr"</string>
-    <string name="title_open" msgid="4353228937663917801">"Vasitəsilə açın"</string>
-    <string name="title_save" msgid="2433679664882857999">"buraya saxlayın"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Yeni qovluq"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Torlu görünüş"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Siyahı görünüşü"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Sıralayın"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Axtarış"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Yaddaş ayarları"</string>
-    <string name="menu_open" msgid="432922957274920903">"Açın"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Yadda saxlayın"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Paylaşın"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Sil"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Hamısını seçin"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Buraya kopyalayın:"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Daşıyın..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Yeni pəncərə"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Kəsin"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Kopyalayın"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Yerləşdirin"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Daxili yaddaşı göstərin"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Daxili yaddaşı gizlədin"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Fayl ölçüsünü göstərin"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Fayl ölçüsünü gizlədin"</string>
-    <string name="button_select" msgid="527196987259139214">"Seçin"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Kopyala"</string>
-    <string name="button_move" msgid="2202666023104202232">"Köçürün"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Rədd edin"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Yenidən cəhd edin"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Ad üzrə"</string>
-    <string name="sort_date" msgid="586080032956151448">"Tarix üzrə dəyişmiş"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Ölçü üzrə"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Kökləri göstərin"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Kökləri gizlədin"</string>
-    <string name="save_error" msgid="6167009778003223664">"Sənədi yadda saxlaya bilmədi"</string>
-    <string name="create_error" msgid="3735649141335444215">"Qovluq yaradıla bilmədi"</string>
-    <string name="query_error" msgid="5999895349602476581">"Məzmun hazırda yüklənmir"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Son"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> ödənişsiz"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Saxlama xidmətləri"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Qısa yollar"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Cihazlar"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Digər tətbiqlər"</string>
-    <string name="empty" msgid="7858882803708117596">"Heç nə yoxdur"</string>
-    <string name="no_results" msgid="6622510343880730446">"%1$s ilə heç bir uyğunluq yoxdur"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Fayl açılmır"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Bəzi sənədləri silə bilmir"</string>
-    <string name="share_via" msgid="8966594246261344259">"Bunun vasitəsilə paylaş:"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Fayllar kopyalanır"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Fayllar köçürülür"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Fayllar silinir"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> qalıb"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> fayl kopyalanır.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> fayl kopyalanır.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> fayl köçürülür.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> fayl köçürülür.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> fayl silinir.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> fayl silinir.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Ləğv edin"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Kopyalanmaq üçün hazırlanır ..."</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Köçürmə üçün hazırlanır..."</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Silmək üçün hazırlanır..."</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> fayl kopyalanmadı</item>
-      <item quantity="one"> <xliff:g id="COUNT_0">%1$d</xliff:g> fayl kopyalanmadı</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> fayl köçürülmədi</item>
-      <item quantity="one"> <xliff:g id="COUNT_0">%1$d</xliff:g> fayl köçürülmədi</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> fayl silinmədi</item>
-      <item quantity="one"> <xliff:g id="COUNT_0">%1$d</xliff:g> fayl silinmədi</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Detallara baxmaq üçün basın"</string>
-    <string name="close" msgid="3043722427445528732">"Bağla"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Bu fayllar kopyalanmadı: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Bu fayllar köçürülmədi: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Bu fayllar silinmədi: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Bu fayllar başqa formata konvertasiya edilib: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> fayl buferə kopyalandı.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> fayl buferə kopyalandı.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Seçilmiş faylları bu məkana yerləşdirmək olmaz."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Adını dəyişdirin"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Sənəd adını dəyişmək uğursuz oldu"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Çıxarın"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Bəzi fayllar konvertasiya edilib"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="STORAGE"><i>^3</i></xliff:g> yaddaşında <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> kataloquna <xliff:g id="APPNAME"><b>^1</b></xliff:g> girişi təqdim edilsin?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="DIRECTORY"><i>^2</i></xliff:g> kataloquna <xliff:g id="APPNAME"><b>^1</b></xliff:g> girişi təqdim edilsin?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="STORAGE"><i>^2</i></xliff:g> yaddaşında foto və videolar daxil olmaqla datanıza <xliff:g id="APPNAME"><b>^1</b></xliff:g> girişi təmin edilsin?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Bir daha soruşmayın"</string>
-    <string name="allow" msgid="7225948811296386551">"İcazə verin"</string>
-    <string name="deny" msgid="2081879885755434506">"Rədd et"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> seçilib</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> seçilib</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> element</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> element</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"\"<xliff:g id="NAME">%1$s</xliff:g>\" silinsin?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"\"<xliff:g id="NAME">%1$s</xliff:g>\" qovluğu və onun məzmunu silinsin?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> fayl silinsin?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> fayl silinsin?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> qovluq və onun məzmunu silinsin?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> qovluq və onun məzmunu silinsin?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> element silinsin?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> element silinsin?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-b+sr+Latn/strings.xml b/packages/DocumentsUI/res/values-b+sr+Latn/strings.xml
deleted file mode 100644
index 1488466..0000000
--- a/packages/DocumentsUI/res/values-b+sr+Latn/strings.xml
+++ /dev/null
@@ -1,156 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Datoteke"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Preuzimanja"</string>
-    <string name="title_open" msgid="4353228937663917801">"Otvori sa"</string>
-    <string name="title_save" msgid="2433679664882857999">"Sačuvaj u"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Novi direktorijum"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Prikaz mreže"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Prikaz liste"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Sortiraj prema"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Pretraži"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Podešavanja memorije"</string>
-    <string name="menu_open" msgid="432922957274920903">"Otvori"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Sačuvaj"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Deli"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Izbriši"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Izaberi sve"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Kopiraj na..."</string>
-    <string name="menu_move" msgid="1828090633118079817">"Premesti u..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Novi prozor"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Iseci"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Kopiraj"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Nalepi"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Prikaži internu memoriju"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Sakrij internu memoriju"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Prikaži veličinu datoteke"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Sakrij veličinu datoteke"</string>
-    <string name="button_select" msgid="527196987259139214">"Izaberi"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Kopiraj"</string>
-    <string name="button_move" msgid="2202666023104202232">"Premesti"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Odbaci"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Pokušaj ponovo"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Prema imenu"</string>
-    <string name="sort_date" msgid="586080032956151448">"Prema datumu izmene"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Prema veličini"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Prikaži osnovne elemente"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Sakrij osnovne elemente"</string>
-    <string name="save_error" msgid="6167009778003223664">"Čuvanje dokumenta nije uspelo"</string>
-    <string name="create_error" msgid="3735649141335444215">"Direktorijum nije napravljen"</string>
-    <string name="query_error" msgid="5999895349602476581">"Učitavanje sadržaja trenutno nije moguće"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Nedavno"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"Slobodno je <xliff:g id="SIZE">%1$s</xliff:g>"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Usluge skladištenja"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Prečice"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Uređaji"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Još aplikacija"</string>
-    <string name="empty" msgid="7858882803708117596">"Nema stavki"</string>
-    <string name="no_results" msgid="6622510343880730446">"Nema podudaranja u %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Otvaranje datoteke nije uspelo"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Nije moguće izbrisati neke dokumente"</string>
-    <string name="share_via" msgid="8966594246261344259">"Delite preko"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Kopiranje datoteka"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Datoteke se premeštaju"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Datoteke se brišu"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Još <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one">Kopiranje <xliff:g id="COUNT_1">%1$d</xliff:g> datoteke.</item>
-      <item quantity="few">Kopiranje <xliff:g id="COUNT_1">%1$d</xliff:g> datoteke.</item>
-      <item quantity="other">Kopiranje <xliff:g id="COUNT_1">%1$d</xliff:g> datoteka.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one">Premešta se <xliff:g id="COUNT_1">%1$d</xliff:g> datoteka.</item>
-      <item quantity="few">Premeštaju se <xliff:g id="COUNT_1">%1$d</xliff:g> datoteke.</item>
-      <item quantity="other">Premešta se <xliff:g id="COUNT_1">%1$d</xliff:g> datoteka.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one">Briše se <xliff:g id="COUNT_1">%1$d</xliff:g> datoteka.</item>
-      <item quantity="few">Brišu se <xliff:g id="COUNT_1">%1$d</xliff:g> datoteke.</item>
-      <item quantity="other">Briše se <xliff:g id="COUNT_1">%1$d</xliff:g> datoteka.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Opozovi"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Priprema se kopiranje…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Priprema se premeštanje..."</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Priprema se brisanje…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one">Nismo uspeli da kopiramo <xliff:g id="COUNT_1">%1$d</xliff:g> datoteku</item>
-      <item quantity="few">Nismo uspeli da kopiramo <xliff:g id="COUNT_1">%1$d</xliff:g> datoteke</item>
-      <item quantity="other">Nismo uspeli da kopiramo <xliff:g id="COUNT_1">%1$d</xliff:g> datoteka</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one">Premeštanje <xliff:g id="COUNT_1">%1$d</xliff:g> datoteke nije uspelo</item>
-      <item quantity="few">Premeštanje <xliff:g id="COUNT_1">%1$d</xliff:g> datoteke nije uspelo</item>
-      <item quantity="other">Premeštanje <xliff:g id="COUNT_1">%1$d</xliff:g> datoteka nije uspelo</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one">Brisanje <xliff:g id="COUNT_1">%1$d</xliff:g> datoteke nije uspelo</item>
-      <item quantity="few">Brisanje <xliff:g id="COUNT_1">%1$d</xliff:g> datoteke nije uspelo</item>
-      <item quantity="other">Brisanje <xliff:g id="COUNT_1">%1$d</xliff:g> datoteka nije uspelo</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Dodirnite da biste prikazali detalje"</string>
-    <string name="close" msgid="3043722427445528732">"Zatvori"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Sledeće datoteke nisu kopirane: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Sledeće datoteke nisu premeštene: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Sledeće datoteke nisu izbrisane: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Ove datoteke su konvertovane u drugi format: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one">Kopirali ste <xliff:g id="COUNT_1">%1$d</xliff:g> datoteku u privremenu memoriju.</item>
-      <item quantity="few">Kopirali ste <xliff:g id="COUNT_1">%1$d</xliff:g> datoteke u privremenu memoriju.</item>
-      <item quantity="other">Kopirali ste <xliff:g id="COUNT_1">%1$d</xliff:g> datoteka u privremenu memoriju.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Izabrane datoteke ne mogu da se nalepe na ovoj lokaciji."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Preimenuj"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Preimenovanje dokumenta nije uspelo"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Izbaci"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Neke datoteke su konvertovane"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Želite li da aplikaciji <xliff:g id="APPNAME"><b>^1</b></xliff:g> odobrite pristup direktorijumu <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> na memorijskom prostoru <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Želite da dozvolite da <xliff:g id="APPNAME"><b>^1</b></xliff:g> pristupa direktorijumu <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Želite da li da dozvolite da aplikacija <xliff:g id="APPNAME"><b>^1</b></xliff:g> pristupa podacima, uključujući slike i video snimke, na lokaciji <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Ne pitaj ponovo"</string>
-    <string name="allow" msgid="7225948811296386551">"Dozvoli"</string>
-    <string name="deny" msgid="2081879885755434506">"Odbij"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one">Izabrana je <xliff:g id="COUNT_1">%1$d</xliff:g> stavka</item>
-      <item quantity="few">Izabrane su <xliff:g id="COUNT_1">%1$d</xliff:g> stavke</item>
-      <item quantity="other">Izabrano je <xliff:g id="COUNT_1">%1$d</xliff:g> stavki</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> stavka</item>
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> stavke</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> stavki</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Želite li da izbrišete „<xliff:g id="NAME">%1$s</xliff:g>“?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Želite li da izbrišete direktorijum „<xliff:g id="NAME">%1$s</xliff:g>“ i njegov sadržaj?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one">Želite li da izbrišete <xliff:g id="COUNT_1">%1$d</xliff:g> datoteku?</item>
-      <item quantity="few">Želite li da izbrišete <xliff:g id="COUNT_1">%1$d</xliff:g> datoteke?</item>
-      <item quantity="other">Želite li da izbrišete <xliff:g id="COUNT_1">%1$d</xliff:g> datoteka?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one">Želite li da izbrišete <xliff:g id="COUNT_1">%1$d</xliff:g> direktorijum i njihov sadržaj?</item>
-      <item quantity="few">Želite li da izbrišete <xliff:g id="COUNT_1">%1$d</xliff:g> direktorijuma i njihov sadržaj?</item>
-      <item quantity="other">Želite li da izbrišete <xliff:g id="COUNT_1">%1$d</xliff:g> direktorijuma i njihov sadržaj?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one">Želite li da izbrišete <xliff:g id="COUNT_1">%1$d</xliff:g> stavku?</item>
-      <item quantity="few">Želite li da izbrišete <xliff:g id="COUNT_1">%1$d</xliff:g> stavke?</item>
-      <item quantity="other">Želite li da izbrišete <xliff:g id="COUNT_1">%1$d</xliff:g> stavki?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-be-rBY/strings.xml b/packages/DocumentsUI/res/values-be-rBY/strings.xml
deleted file mode 100644
index 2fb069e..0000000
--- a/packages/DocumentsUI/res/values-be-rBY/strings.xml
+++ /dev/null
@@ -1,168 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Файлы"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Спампоўкі"</string>
-    <string name="title_open" msgid="4353228937663917801">"Адкрыць з"</string>
-    <string name="title_save" msgid="2433679664882857999">"Захаваць у"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Новая папка"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"У выглядзе табліцы"</string>
-    <string name="menu_list" msgid="7279285939892417279">"У выглядзе спіса"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Сартаваць па:"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Шукаць"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Налады сховішча"</string>
-    <string name="menu_open" msgid="432922957274920903">"Адкрыць"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Захаваць"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Абагуліць"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Выдаліць"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Выбраць усё"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Капіраваць у..."</string>
-    <string name="menu_move" msgid="1828090633118079817">"Перамясціць у..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Новае акно"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Выразаць"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Капіраваць"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Уставіць"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Паказаць унутр. сховішча"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Схаваць унутр. сховішча"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Паказаць памеры файлаў"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Схаваць памеры файлаў"</string>
-    <string name="button_select" msgid="527196987259139214">"Выбраць"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Капіраваць"</string>
-    <string name="button_move" msgid="2202666023104202232">"Перамясціць"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Адхіліць"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Паўтарыце спробу"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Па назве"</string>
-    <string name="sort_date" msgid="586080032956151448">"Па даце змянення"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Па памеры"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Паказаць каранёвыя папкі"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Схаваць каранёвыя папкі"</string>
-    <string name="save_error" msgid="6167009778003223664">"Не атрымалася захаваць дакумент"</string>
-    <string name="create_error" msgid="3735649141335444215">"Не атрымалася стварыць папку"</string>
-    <string name="query_error" msgid="5999895349602476581">"Зараз немагчыма загрузіць змесціва"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Нядаўнія"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> свабодна"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Службы захоўвання"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Ярлыкі"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Прылады"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Іншыя праграмы"</string>
-    <string name="empty" msgid="7858882803708117596">"Няма элементаў"</string>
-    <string name="no_results" msgid="6622510343880730446">"Няма супадзенняў у %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Немагчыма адкрыць файл"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Немагчыма выдаліць некаторыя дакументы"</string>
-    <string name="share_via" msgid="8966594246261344259">"Абагуліць праз"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Капіраванне файлаў"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Перамяшчэнне файлаў"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Выдаленне файлаў"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Засталося <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one">Капіраванне <xliff:g id="COUNT_1">%1$d</xliff:g> файла.</item>
-      <item quantity="few">Капіраванне <xliff:g id="COUNT_1">%1$d</xliff:g> файлаў.</item>
-      <item quantity="many">Капіраванне <xliff:g id="COUNT_1">%1$d</xliff:g> файлаў.</item>
-      <item quantity="other">Капіраванне <xliff:g id="COUNT_1">%1$d</xliff:g> файла.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one">Перамяшчэнне <xliff:g id="COUNT_1">%1$d</xliff:g> файла.</item>
-      <item quantity="few">Перамяшчэнне <xliff:g id="COUNT_1">%1$d</xliff:g> файлаў.</item>
-      <item quantity="many">Перамяшчэнне <xliff:g id="COUNT_1">%1$d</xliff:g> файлаў.</item>
-      <item quantity="other">Перамяшчэнне <xliff:g id="COUNT_1">%1$d</xliff:g> файла.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one">Выдаленне <xliff:g id="COUNT_1">%1$d</xliff:g> файла.</item>
-      <item quantity="few">Выдаленне <xliff:g id="COUNT_1">%1$d</xliff:g> файлаў.</item>
-      <item quantity="many">Выдаленне <xliff:g id="COUNT_1">%1$d</xliff:g> файлаў.</item>
-      <item quantity="other">Выдаленне <xliff:g id="COUNT_1">%1$d</xliff:g> файла.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Адрабіць"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Падрыхтоўка да капіравання..."</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Падрыхтоўка да перамяшчэння..."</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Падрыхтоўка да выдалення..."</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one">Не атрымалася скапіраваць <xliff:g id="COUNT_1">%1$d</xliff:g> файл</item>
-      <item quantity="few">Не атрымалася скапіраваць <xliff:g id="COUNT_1">%1$d</xliff:g> файлы</item>
-      <item quantity="many">Не атрымалася скапіраваць <xliff:g id="COUNT_1">%1$d</xliff:g> файлаў</item>
-      <item quantity="other">Не атрымалася скапіраваць <xliff:g id="COUNT_1">%1$d</xliff:g> файла</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one">Не атрымалася перамясціць <xliff:g id="COUNT_1">%1$d</xliff:g> файл</item>
-      <item quantity="few">Не атрымалася перамясціць <xliff:g id="COUNT_1">%1$d</xliff:g> файлы</item>
-      <item quantity="many">Не атрымалася перамясціць <xliff:g id="COUNT_1">%1$d</xliff:g> файлаў</item>
-      <item quantity="other">Не атрымалася перамясціць <xliff:g id="COUNT_1">%1$d</xliff:g> файла</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one">Не атрымалася выдаліць <xliff:g id="COUNT_1">%1$d</xliff:g> файл</item>
-      <item quantity="few">Не атрымалася выдаліць <xliff:g id="COUNT_1">%1$d</xliff:g> файлы</item>
-      <item quantity="many">Не атрымалася выдаліць <xliff:g id="COUNT_1">%1$d</xliff:g> файлаў</item>
-      <item quantity="other">Не атрымалася выдаліць <xliff:g id="COUNT_1">%1$d</xliff:g> файла</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Дакраніцеся, каб прагледзець больш падрабязна"</string>
-    <string name="close" msgid="3043722427445528732">"Закрыць"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Не былі скапіраваны наступныя файлы: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Не былі перамешчаны наступныя файлы: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Не былі выдалены наступныя файлы: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Гэтыя файлы былі сканвертаваныя ў іншы фармат: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one">У буфер абмену скапіраваны <xliff:g id="COUNT_1">%1$d</xliff:g> файл.</item>
-      <item quantity="few">У буфер абмену скапіраваны <xliff:g id="COUNT_1">%1$d</xliff:g> файлы.</item>
-      <item quantity="many">У буфер абмену скапіравана <xliff:g id="COUNT_1">%1$d</xliff:g> файлаў.</item>
-      <item quantity="other">У буфер абмену скапіравана <xliff:g id="COUNT_1">%1$d</xliff:g> файла.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Немагчыма ўставіць выбраныя файлы ў гэта месца."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Перайменаваць"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Не атрымалася перайменаваць дакумент"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Выняць"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Некаторыя файлы былі сканвертаваныя"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Даць праграме <xliff:g id="APPNAME"><b>^1</b></xliff:g> доступ да дырэкторыі <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> у <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Даць праграме <xliff:g id="APPNAME"><b>^1</b></xliff:g> доступ да каталога <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Даць <xliff:g id="APPNAME"><b>^1</b></xliff:g> доступ да вашых даных, у тым ліку фатаграфій і відэа, на <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Больш не пытацца"</string>
-    <string name="allow" msgid="7225948811296386551">"Дазволіць"</string>
-    <string name="deny" msgid="2081879885755434506">"Адмовіць"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one">Выбраны <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="few">Выбраны <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="many">Выбрана <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="other">Выбрана <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> элемент</item>
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> элементы</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> элементаў</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> элемента</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Выдаліць \"<xliff:g id="NAME">%1$s</xliff:g>\"?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Выдаліць папку \"<xliff:g id="NAME">%1$s</xliff:g>\" і яе змесціва?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one">Выдаліць <xliff:g id="COUNT_1">%1$d</xliff:g> файл?</item>
-      <item quantity="few">Выдаліць <xliff:g id="COUNT_1">%1$d</xliff:g> файлы?</item>
-      <item quantity="many">Выдаліць <xliff:g id="COUNT_1">%1$d</xliff:g> файлаў?</item>
-      <item quantity="other">Выдаліць <xliff:g id="COUNT_1">%1$d</xliff:g> файла?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one">Выдаліць <xliff:g id="COUNT_1">%1$d</xliff:g> папку і іх змесціва?</item>
-      <item quantity="few">Выдаліць <xliff:g id="COUNT_1">%1$d</xliff:g> папкі і іх змесціва?</item>
-      <item quantity="many">Выдаліць <xliff:g id="COUNT_1">%1$d</xliff:g> папак і іх змесціва?</item>
-      <item quantity="other">Выдаліць <xliff:g id="COUNT_1">%1$d</xliff:g> папкі і іх змесціва?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one">Выдаліць <xliff:g id="COUNT_1">%1$d</xliff:g> элемент?</item>
-      <item quantity="few">Выдаліць <xliff:g id="COUNT_1">%1$d</xliff:g> элементы?</item>
-      <item quantity="many">Выдаліць <xliff:g id="COUNT_1">%1$d</xliff:g> элементаў?</item>
-      <item quantity="other">Выдаліць <xliff:g id="COUNT_1">%1$d</xliff:g> элемента?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-bg/strings.xml b/packages/DocumentsUI/res/values-bg/strings.xml
deleted file mode 100644
index ab9d228..0000000
--- a/packages/DocumentsUI/res/values-bg/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Файлове"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Изтегляния"</string>
-    <string name="title_open" msgid="4353228937663917801">"Отваряне от"</string>
-    <string name="title_save" msgid="2433679664882857999">"Запазване във:"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Нова папка"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Изглед в мрежа"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Списъчен изглед"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Сортиране по"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Търсене"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Настройки на хранилището"</string>
-    <string name="menu_open" msgid="432922957274920903">"Отваряне"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Запазване"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Споделяне"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Изтриване"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Избиране на всичко"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Копиране във…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Преместване във…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Нов прозорец"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Изрязване"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Копиране"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Поставяне"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Вътр. хранилище: Показв."</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Вътр. хранилище: Скрив."</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Размер на файла: Показв."</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Размер на файла: Скрив."</string>
-    <string name="button_select" msgid="527196987259139214">"Избиране"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Копиране"</string>
-    <string name="button_move" msgid="2202666023104202232">"Преместване"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Отхвърляне"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Нов опит"</string>
-    <string name="sort_name" msgid="9183560467917256779">"По име"</string>
-    <string name="sort_date" msgid="586080032956151448">"По дата на промяната"</string>
-    <string name="sort_size" msgid="3350681319735474741">"По размер"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Показване на основните елементи"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Скриване на основните елементи"</string>
-    <string name="save_error" msgid="6167009778003223664">"Запазването на документа не бе успешно"</string>
-    <string name="create_error" msgid="3735649141335444215">"Създаването на папката не бе успешно"</string>
-    <string name="query_error" msgid="5999895349602476581">"Понастоящем съдържанието не може да се зареди"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Скорошни"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"Свободно: <xliff:g id="SIZE">%1$s</xliff:g>"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Услуги за съхранение"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Преки пътища"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Устройства"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Още приложения"</string>
-    <string name="empty" msgid="7858882803708117596">"Няма елементи"</string>
-    <string name="no_results" msgid="6622510343880730446">"В/ъв „%1$s“ няма съответствия"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Файлът не може да се отвори"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Някои документи не могат да бъдат изтрити"</string>
-    <string name="share_via" msgid="8966594246261344259">"Споделяне чрез"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Файловете се копират"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Файловете се преместват"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Изтриване на файлове"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Оставащо време: <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">Копират се <xliff:g id="COUNT_1">%1$d</xliff:g> файла.</item>
-      <item quantity="one">Копира се <xliff:g id="COUNT_0">%1$d</xliff:g> файл.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> файла се преместват.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> файл се премества.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">Изтриват се <xliff:g id="COUNT_1">%1$d</xliff:g> файла.</item>
-      <item quantity="one">Изтрива се <xliff:g id="COUNT_0">%1$d</xliff:g> файл.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Отмяна"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Подготвя се за копиране…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Преместването се подготвя…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Подготвя се за изтриване..."</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> файла не можаха да се копират</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> файл не можа да се копира</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> файла не можаха да бъдат преместени</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> файл не можа да бъде преместен</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> файла не можаха да бъдат изтрити</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> файл не можа да бъде изтрит</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Докоснете, за да видите подробности"</string>
-    <string name="close" msgid="3043722427445528732">"Затваряне"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Следните файлове не бяха копирани: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Следните файлове не бяха преместени: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Следните файлове не бяха изтрити: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Следните файлове бяха преобразувани в друг формат: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">Копирахте <xliff:g id="COUNT_1">%1$d</xliff:g> файла в буферната памет.</item>
-      <item quantity="one">Копирахте <xliff:g id="COUNT_0">%1$d</xliff:g> файл в буферната памет.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Избраните файлове не могат да се поставят на това място."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Преименуване"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Преименуването на документа не бе успешно"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Изваждане"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Някои файлове бяха преобразувани"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Да се предостави ли на <xliff:g id="APPNAME"><b>^1</b></xliff:g> достъп до директорията „<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>“ в/ъв <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Да се предостави ли на <xliff:g id="APPNAME"><b>^1</b></xliff:g> достъп до директорията „<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>“?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Да се предостави ли на <xliff:g id="APPNAME"><b>^1</b></xliff:g> достъп до данните ви в хранилището (<xliff:g id="STORAGE"><i>^2</i></xliff:g>), включително снимки и видеоклипове?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Без повторно питане"</string>
-    <string name="allow" msgid="7225948811296386551">"Разрешаване"</string>
-    <string name="deny" msgid="2081879885755434506">"Отказване"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other">Избрахте <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="one">Избрахте <xliff:g id="COUNT_0">%1$d</xliff:g></item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> елемента</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> елемент</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Искате ли да изтриете „<xliff:g id="NAME">%1$s</xliff:g>“?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Искате ли да изтриете папката „<xliff:g id="NAME">%1$s</xliff:g>“ и съдържанието в нея?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">Искате ли да изтриете <xliff:g id="COUNT_1">%1$d</xliff:g> файла?</item>
-      <item quantity="one">Искате ли да изтриете <xliff:g id="COUNT_0">%1$d</xliff:g> файл?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">Искате ли да изтриете <xliff:g id="COUNT_1">%1$d</xliff:g> папки и съдържанието в тях?</item>
-      <item quantity="one">Искате ли да изтриете <xliff:g id="COUNT_0">%1$d</xliff:g> папка и съдържанието в нея?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">Искате ли да изтриете <xliff:g id="COUNT_1">%1$d</xliff:g> елемента?</item>
-      <item quantity="one">Искате ли да изтриете <xliff:g id="COUNT_0">%1$d</xliff:g> елемент?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-bn-rBD/strings.xml b/packages/DocumentsUI/res/values-bn-rBD/strings.xml
deleted file mode 100644
index 3b2171d..0000000
--- a/packages/DocumentsUI/res/values-bn-rBD/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"ফাইল"</string>
-    <string name="downloads_label" msgid="959113951084633612">"ডাউনলোডগুলি"</string>
-    <string name="title_open" msgid="4353228937663917801">"এখান থেকে খুলুন"</string>
-    <string name="title_save" msgid="2433679664882857999">"এতে সংরক্ষণ করুন"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"নতুন ফোল্ডার"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"গ্রিড দৃশ্য"</string>
-    <string name="menu_list" msgid="7279285939892417279">"তালিকা দৃশ্য"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"এই অনুসারে বাছুন"</string>
-    <string name="menu_search" msgid="3816712084502856974">"অনুসন্ধান করুন"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"সঞ্চয়স্থান সেটিংস"</string>
-    <string name="menu_open" msgid="432922957274920903">"খুলুন"</string>
-    <string name="menu_save" msgid="2394743337684426338">"সংরক্ষণ করুন"</string>
-    <string name="menu_share" msgid="3075149983979628146">"শেয়ার করুন"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"মুছুন"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"সবগুলি নির্বাচন করুন"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"এতে কপি করুন…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"এতে সরান..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"নতুন উইন্ডো"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"কাট করুন"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"প্রতিলিপি করুন"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"আটকান"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"অভ্যন্তরীণ সঞ্চয়স্থান দেখান"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"অভ্যন্তরীণ সঞ্চয়স্থান লুকান"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"ফাইলের আকার দেখান"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"ফাইলের আকার লুকান"</string>
-    <string name="button_select" msgid="527196987259139214">"নির্বাচন করুন"</string>
-    <string name="button_copy" msgid="8706475544635021302">"কপি করুন"</string>
-    <string name="button_move" msgid="2202666023104202232">"সরান"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"খারিজ করুন"</string>
-    <string name="button_retry" msgid="4392027584153752797">"আবার চেষ্টা করুন"</string>
-    <string name="sort_name" msgid="9183560467917256779">"নামের দ্বারা"</string>
-    <string name="sort_date" msgid="586080032956151448">"পরিবর্তনের তারিখ দ্বারা"</string>
-    <string name="sort_size" msgid="3350681319735474741">"আকার অনুযায়ী"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"রুটগুলি দেখান"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"রুটগুলি লুকান"</string>
-    <string name="save_error" msgid="6167009778003223664">"দস্তাবেজ সংরক্ষণ করতে ব্যর্থ হয়েছে"</string>
-    <string name="create_error" msgid="3735649141335444215">"ফোল্ডার তৈরি করতে ব্যর্থ হয়েছে"</string>
-    <string name="query_error" msgid="5999895349602476581">"এই মুহূর্তে সামগ্রী লোড করা যাবে না"</string>
-    <string name="root_recent" msgid="4470053704320518133">"সাম্প্রতিক"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> খালি আছে"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"সঞ্চয়স্থান পরিষেবাগুলি"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"শর্টকাটগুলি"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"ডিভাইসগুলি"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"আরো অ্যাপ্লিকেশান"</string>
-    <string name="empty" msgid="7858882803708117596">"কোনো আইটেম নেই"</string>
-    <string name="no_results" msgid="6622510343880730446">"%1$s এ কোনো মিল নেই"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"ফাইল খোলা যাবে না"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"কিছু দস্তাবেজ মুছতে অসমর্থ"</string>
-    <string name="share_via" msgid="8966594246261344259">"এর মাধ্যমে শেয়ার করুন"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"ফাইলগুলি অনুলিপি করা হচ্ছে"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"ফাইলগুলি সরানো হচ্ছে"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"ফাইলগুলি মোছা হচ্ছে"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> বাকি"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g>টি ফাইল অনুলিপি করা হচ্ছে৷</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>টি ফাইল অনুলিপি করা হচ্ছে৷</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g>টি ফাইল সরানো হচ্ছে৷</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>টি ফাইল সরানো হচ্ছে৷</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g>টি ফাইল মোছা হচ্ছে।</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>টি ফাইল মোছা হচ্ছে।</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"পূর্বাবস্থায় ফিরুন"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"অনুলিপি করার জন্য প্রস্তুত করা হচ্ছে..."</string>
-    <string name="move_preparing" msgid="2772219441375531410">"সরানোর জন্য প্রস্তুত হচ্ছে..."</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"মোছার জন্য প্রস্তুত করা হচ্ছে..."</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g>টি ফাইল প্রতিলিপি করা গেল না</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>টি ফাইল প্রতিলিপি করা গেল না</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g>টি ফাইল সরানো গেল না</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>টি ফাইল সরানো গেল না</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g>টি ফাইল মোছা গেল না</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>টি ফাইল মোছা গেল না</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"বিশদ বিবরণ দেখতে আলতো চাপুন"</string>
-    <string name="close" msgid="3043722427445528732">"বন্ধ করুন"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"এই ফাইলগুলির প্রতিলিপি করা হয়নি: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"এই ফাইলগুলি সরানো হয়নি: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"এই ফাইলগুলি মোছা হয়নি: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"এই ফাইলগুলি অন্য ফরম্যাটে রূপান্তর করা হয়েছে: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one"> <xliff:g id="COUNT_1">%1$d</xliff:g>টি ফাইল ক্লিপবোর্ডে প্রতিলিপি করা হয়েছে।</item>
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g>টি ফাইল ক্লিপবোর্ডে প্রতিলিপি করা হয়েছে।</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"এই স্থানে নির্বাচিত ফাইলগুলি আটকানো যাবে না।"</string>
-    <string name="menu_rename" msgid="7678802479104285353">"পুনঃনামকরণ"</string>
-    <string name="rename_error" msgid="4203041674883412606">"দস্তাবেজের পুনঃনামকরণ ব্যর্থ হয়েছে৷"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"সরিয়ে দিন"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"কিছু ফাইল রূপান্তরিত হয়েছে"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> কে <xliff:g id="STORAGE"><i>^3</i></xliff:g> এ <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> সংগ্রহ অ্যাক্সেস করার মঞ্জুরি দিতে চান?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> কে <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> সংগ্রহ অ্যাক্সেস করার অনুমতি দেবেন?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="STORAGE"><i>^2</i></xliff:g> এ থাকা ফটো ও ভিডিওগুলি সমেত <xliff:g id="APPNAME"><b>^1</b></xliff:g> কে আপনার ডেটা অ্যাক্সেস করার অনুমতি দেবেন?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"আর জিজ্ঞাসা করবেন না"</string>
-    <string name="allow" msgid="7225948811296386551">"অনুমতি দিন"</string>
-    <string name="deny" msgid="2081879885755434506">"আস্বীকার করুন"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g>টি নির্বাচন করা হয়েছে</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>টি নির্বাচন করা হয়েছে</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g>টি আইটেম</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>টি আইটেম</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"\"<xliff:g id="NAME">%1$s</xliff:g>\" মুছবেন?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"\"<xliff:g id="NAME">%1$s</xliff:g>\" ফোল্ডার এবং এটির সামগ্রীগুলিকে মুছবেন?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g>টি ফাইল মুছবেন?</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>টি ফাইল মুছবেন?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g>টি ফোল্ডার এবং সেগুলির সামগ্রী মুছবেন?</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>টি ফোল্ডার এবং সেগুলির সামগ্রী মুছবেন?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g>টি আইটেম মুছবেন?</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>টি আইটেম মুছবেন?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-bs-rBA/strings.xml b/packages/DocumentsUI/res/values-bs-rBA/strings.xml
deleted file mode 100644
index 5df3e53..0000000
--- a/packages/DocumentsUI/res/values-bs-rBA/strings.xml
+++ /dev/null
@@ -1,156 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Fajlovi"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Preuzimanja"</string>
-    <string name="title_open" msgid="4353228937663917801">"Otvori iz"</string>
-    <string name="title_save" msgid="2433679664882857999">"Sačuvaj u"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Nova fascikla"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Prikaz u vidu mreže"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Prikaz u vidu liste"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Sortiraj po"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Traži"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Postavke pohrane"</string>
-    <string name="menu_open" msgid="432922957274920903">"Otvori"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Sačuvaj"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Podijeli"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Izbriši"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Odaberi sve"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Kopiraj na..."</string>
-    <string name="menu_move" msgid="1828090633118079817">"Premjesti u..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Novi prozor"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Izreži"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Kopiraj"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Zalijepi"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Pokaži internu pohranu"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Sakrij internu pohranu"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Pokaži veličinu fajla"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Sakrij veličinu fajla"</string>
-    <string name="button_select" msgid="527196987259139214">"Odaberi"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Kopiraj"</string>
-    <string name="button_move" msgid="2202666023104202232">"Premjesti"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Odbaci"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Pokušajte ponovo"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Po nazivu"</string>
-    <string name="sort_date" msgid="586080032956151448">"Po datumu izmjene"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Po veličini"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Pokaži korijeni"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Sakrij korijenske foldere"</string>
-    <string name="save_error" msgid="6167009778003223664">"Pohranjivanje dokumenta nije uspjelo"</string>
-    <string name="create_error" msgid="3735649141335444215">"Kreiranje mape nije uspjelo"</string>
-    <string name="query_error" msgid="5999895349602476581">"Trenutno nije moguće učitati sadržaj"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Nedavni"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> slobodno"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Usluge pohranjivanja"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Prečice"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Uređaji"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Više aplikacija"</string>
-    <string name="empty" msgid="7858882803708117596">"Nema stavki"</string>
-    <string name="no_results" msgid="6622510343880730446">"Nema rezultata u %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Nije moguće otvoriti fajl"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Nije moguće obrisati neke dokumente"</string>
-    <string name="share_via" msgid="8966594246261344259">"Podijeli preko"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Kopiraju se fajlovi"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Premještanje fajlova"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Brisanje fajlova"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Još <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one">Kopira se <xliff:g id="COUNT_1">%1$d</xliff:g> fajl.</item>
-      <item quantity="few">Kopiraju se <xliff:g id="COUNT_1">%1$d</xliff:g> fajla.</item>
-      <item quantity="other">Kopira se <xliff:g id="COUNT_1">%1$d</xliff:g> fajlova.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one">Premješta se <xliff:g id="COUNT_1">%1$d</xliff:g> fajl.</item>
-      <item quantity="few">Premještaju se <xliff:g id="COUNT_1">%1$d</xliff:g> fajla.</item>
-      <item quantity="other">Premješta se <xliff:g id="COUNT_1">%1$d</xliff:g> fajlova.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one">Briše se <xliff:g id="COUNT_1">%1$d</xliff:g> fajl.</item>
-      <item quantity="few">Brišu se <xliff:g id="COUNT_1">%1$d</xliff:g> fajla.</item>
-      <item quantity="other">Briše se <xliff:g id="COUNT_1">%1$d</xliff:g> fajlova.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Vrati"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Priprema se kopiranje..."</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Priprema za premještanje..."</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Pripremanje za brisanje…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one">Nije moguće kopirati <xliff:g id="COUNT_1">%1$d</xliff:g> fajl</item>
-      <item quantity="few">Nije moguće kopirati <xliff:g id="COUNT_1">%1$d</xliff:g> fajla</item>
-      <item quantity="other">Nije moguće kopirati <xliff:g id="COUNT_1">%1$d</xliff:g> fajlova</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one">Nije moguće premjestiti <xliff:g id="COUNT_1">%1$d</xliff:g> fajl</item>
-      <item quantity="few">Nije moguće premjestiti <xliff:g id="COUNT_1">%1$d</xliff:g> fajla</item>
-      <item quantity="other">Nije moguće premjestiti <xliff:g id="COUNT_1">%1$d</xliff:g> fajlova</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one">Nije moguće izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> fajl</item>
-      <item quantity="few">Nije moguće izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> fajla</item>
-      <item quantity="other">Nije moguće izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> fajlova</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Dodirnite za prikaz detalja"</string>
-    <string name="close" msgid="3043722427445528732">"Zatvori"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Nisu kopirani sljedeći fajlovi: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Nisu premješteni sljedeći fajlovi: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Nisu izbrisani sljedeći fajlovi: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Ove datoteke su pretvorene u drugi format: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> fajl je kopiran u međuspremnik.</item>
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> fajla su kopirana u međuspremnik.</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> fajlova je kopirano u međuspremnik.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Odabrani fajlovi se ne mogu zalijepiti na ovu lokaciju."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Preimenuj"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Nije uspjelo preimenovanje dokumenta"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Izbaci"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Neke od datoteka su pretvorene"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Omogućiti <xliff:g id="APPNAME"><b>^1</b></xliff:g> pristup direktoriju <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> sa <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Odobriti aplikaciji <xliff:g id="APPNAME"><b>^1</b></xliff:g> pristup direktoriju <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Želite li odobriti aplikaciji <xliff:g id="APPNAME"><b>^1</b></xliff:g> pristup svojim podacima, uključujući fotografije i video zapise, na <xliff:g id="STORAGE"><i>^2</i></xliff:g> ?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Ne pitaj ponovo"</string>
-    <string name="allow" msgid="7225948811296386551">"Dozvoli"</string>
-    <string name="deny" msgid="2081879885755434506">"Odbijte"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> stavka je odabrana</item>
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> stavke su odabrane</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> stavki je odabrano</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> stavka</item>
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> stavke</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> stavki</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Želite li izbrisati \"<xliff:g id="NAME">%1$s</xliff:g>\"?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Želite li izbrisati folder \"<xliff:g id="NAME">%1$s</xliff:g>\" i njegov sadržaj?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one">Želite li izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> fajl?</item>
-      <item quantity="few">Želite li izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> fajla?</item>
-      <item quantity="other">Želite li izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> fajlova?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one">Želite li izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> folder i njihov sadržaj?</item>
-      <item quantity="few">Želite li izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> foldera i njihov sadržaj?</item>
-      <item quantity="other">Želite li izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> foldera i njihov sadržaj?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one">Želite li izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> stavku?</item>
-      <item quantity="few">Želite li izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> stavke?</item>
-      <item quantity="other">Želite li izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> stavki?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-ca/strings.xml b/packages/DocumentsUI/res/values-ca/strings.xml
deleted file mode 100644
index 40e67cf..0000000
--- a/packages/DocumentsUI/res/values-ca/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Fitxers"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Baixades"</string>
-    <string name="title_open" msgid="4353228937663917801">"Obre des de"</string>
-    <string name="title_save" msgid="2433679664882857999">"Desa a"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Carpeta nova"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Visualització de quadrícula"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Visualització de llista"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Ordena per"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Cerca"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Config. d\'emmagatzematge"</string>
-    <string name="menu_open" msgid="432922957274920903">"Obre"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Desa"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Comparteix"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Suprimeix"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Selecciona-ho tot"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Copia a…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Mou a..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Finestra nova"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Retalla"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Copia"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Enganxa"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Mostra emmagatz. intern"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Amaga emmagatz. intern"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Mostra la mida del fitxer"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Amaga la mida del fitxer"</string>
-    <string name="button_select" msgid="527196987259139214">"Selecciona"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Copia"</string>
-    <string name="button_move" msgid="2202666023104202232">"Desplaça"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Ignora"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Torna-ho a provar"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Per nom"</string>
-    <string name="sort_date" msgid="586080032956151448">"Per data de modificació"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Per mida"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Mostra les arrels"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Amaga les arrels"</string>
-    <string name="save_error" msgid="6167009778003223664">"No s\'ha pogut desar el document."</string>
-    <string name="create_error" msgid="3735649141335444215">"No s\'ha pogut crear la carpeta"</string>
-    <string name="query_error" msgid="5999895349602476581">"En aquest moment no es pot carregar el contingut"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Recent"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> lliures"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Serveis d\'emmagatzematge"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Dreceres"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Dispositius"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Més aplicacions"</string>
-    <string name="empty" msgid="7858882803708117596">"Sense elements"</string>
-    <string name="no_results" msgid="6622510343880730446">"No hi ha cap coincidència a %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"No es pot obrir el fitxer"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"No es poden suprimir alguns documents."</string>
-    <string name="share_via" msgid="8966594246261344259">"Comparteix mitjançant"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"S\'estan copiant fitxers"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"S\'estan movent fitxers"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Suprimint els fitxers"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Temps restant: <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">S\'estan copiant <xliff:g id="COUNT_1">%1$d</xliff:g> fitxers.</item>
-      <item quantity="one">S\'està copiant <xliff:g id="COUNT_0">%1$d</xliff:g> fitxer.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">S\'estan movent <xliff:g id="COUNT_1">%1$d</xliff:g> fitxers.</item>
-      <item quantity="one">S\'està movent <xliff:g id="COUNT_0">%1$d</xliff:g> fitxer.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">S\'estan suprimint <xliff:g id="COUNT_1">%1$d</xliff:g> fitxers.</item>
-      <item quantity="one">S\'està suprimint <xliff:g id="COUNT_0">%1$d</xliff:g> fitxer.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Desfés"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"S\'està preparant una còpia…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"S\'està preparant per moure\'ls..."</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"S\'està preparant per suprimir…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">No s\'han pogut copiar <xliff:g id="COUNT_1">%1$d</xliff:g> fitxers</item>
-      <item quantity="one">No s\'ha pogut copiar <xliff:g id="COUNT_0">%1$d</xliff:g> fitxer</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">No s\'han pogut moure <xliff:g id="COUNT_1">%1$d</xliff:g> fitxers</item>
-      <item quantity="one">No s\'ha pogut moure <xliff:g id="COUNT_0">%1$d</xliff:g> fitxer</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">No s\'han pogut suprimir <xliff:g id="COUNT_1">%1$d</xliff:g> fitxers</item>
-      <item quantity="one">No s\'ha pogut suprimir <xliff:g id="COUNT_0">%1$d</xliff:g> fitxer</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Toca per veure\'n els detalls"</string>
-    <string name="close" msgid="3043722427445528732">"Tanca"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Aquests fitxers no s\'han copiat: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Aquests fitxers no s\'han mogut: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Aquests fitxers no s\'han suprimit: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Aquests fitxers s\'han convertit a un altre format: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">S\'han copiat <xliff:g id="COUNT_1">%1$d</xliff:g> fitxers al porta-retalls.</item>
-      <item quantity="one">S\'ha copiat <xliff:g id="COUNT_0">%1$d</xliff:g> fitxer al porta-retalls.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"No s\'han pogut enganxar els fitxers seleccionats en aquesta ubicació."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Canvia el nom"</string>
-    <string name="rename_error" msgid="4203041674883412606">"No s\'ha pogut canviar el nom del document"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Expulsa"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"S\'han convertit alguns fitxers"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Vols que l\'aplicació <xliff:g id="APPNAME"><b>^1</b></xliff:g> tingui accés al directori <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> de l\'emmagatzematge <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Vols que l\'aplicació <xliff:g id="APPNAME"><b>^1</b></xliff:g> tingui accés al directori <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Vols que l\'aplicació <xliff:g id="APPNAME"><b>^1</b></xliff:g> tingui accés a les dades de <xliff:g id="STORAGE"><i>^2</i></xliff:g>, incloses les fotos i els vídeos?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"No m\'ho demanis més"</string>
-    <string name="allow" msgid="7225948811296386551">"Permet"</string>
-    <string name="deny" msgid="2081879885755434506">"Denega"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> elements seleccionats</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> element seleccionat</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> elements</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> element</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Vols suprimir el fitxer <xliff:g id="NAME">%1$s</xliff:g>?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Vols suprimir la carpeta <xliff:g id="NAME">%1$s</xliff:g> i el seu contingut?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">Vols suprimir <xliff:g id="COUNT_1">%1$d</xliff:g> fitxers?</item>
-      <item quantity="one">Vols suprimir <xliff:g id="COUNT_0">%1$d</xliff:g> fitxer?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">Vols suprimir <xliff:g id="COUNT_1">%1$d</xliff:g> carpetes i el seu contingut?</item>
-      <item quantity="one">Vols suprimir <xliff:g id="COUNT_0">%1$d</xliff:g> carpeta i el seu contingut?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">Vols suprimir <xliff:g id="COUNT_1">%1$d</xliff:g> elements?</item>
-      <item quantity="one">Vols suprimir <xliff:g id="COUNT_0">%1$d</xliff:g> element?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-cs/strings.xml b/packages/DocumentsUI/res/values-cs/strings.xml
deleted file mode 100644
index 0132bda..0000000
--- a/packages/DocumentsUI/res/values-cs/strings.xml
+++ /dev/null
@@ -1,168 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Soubory"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Stahování"</string>
-    <string name="title_open" msgid="4353228937663917801">"Otevřít"</string>
-    <string name="title_save" msgid="2433679664882857999">"Uložit do"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Nová složka"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Mřížkové zobrazení"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Zobrazení seznamu"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Řadit podle"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Hledat"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Nastavení úložiště"</string>
-    <string name="menu_open" msgid="432922957274920903">"Otevřít"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Uložit"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Sdílet"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Smazat"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Vybrat vše"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Kopírovat do…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Přesunout do…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Nové okno"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Vyjmout"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Kopírovat"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Vložit"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Zobrazit inter. úložiště"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Skrýt interní úložiště"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Zobrazit velikost souboru"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Skrýt velikost souboru"</string>
-    <string name="button_select" msgid="527196987259139214">"Vybrat"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Kopírovat"</string>
-    <string name="button_move" msgid="2202666023104202232">"Přesunout"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Zavřít"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Zkusit znovu"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Podle názvu"</string>
-    <string name="sort_date" msgid="586080032956151448">"Podle data úpravy"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Podle velikosti"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Zobrazit kořeny"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Skrýt kořeny"</string>
-    <string name="save_error" msgid="6167009778003223664">"Uložení dokumentu se nezdařilo"</string>
-    <string name="create_error" msgid="3735649141335444215">"Složku se nepodařilo vytvořit"</string>
-    <string name="query_error" msgid="5999895349602476581">"Obsah nyní nelze načíst"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Nedávné"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"Volné místo: <xliff:g id="SIZE">%1$s</xliff:g>"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Služby úložiště"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Klávesové zkratky"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Zařízení"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Další aplikace"</string>
-    <string name="empty" msgid="7858882803708117596">"Žádné položky"</string>
-    <string name="no_results" msgid="6622510343880730446">"%1$s – žádné shody"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Soubor nelze otevřít"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Některé dokumenty nelze smazat"</string>
-    <string name="share_via" msgid="8966594246261344259">"Sdílet pomocí"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Kopírování souborů"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Přesouvání souborů"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Mazání souborů"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Zbývající čas: <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="few">Kopírování <xliff:g id="COUNT_1">%1$d</xliff:g> souborů</item>
-      <item quantity="many">Kopírování <xliff:g id="COUNT_1">%1$d</xliff:g> souboru</item>
-      <item quantity="other">Kopírování <xliff:g id="COUNT_1">%1$d</xliff:g> souborů</item>
-      <item quantity="one">Kopírování <xliff:g id="COUNT_0">%1$d</xliff:g> souboru</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="few">Přesouvají se <xliff:g id="COUNT_1">%1$d</xliff:g> soubory.</item>
-      <item quantity="many">Přesouvá se <xliff:g id="COUNT_1">%1$d</xliff:g> souboru.</item>
-      <item quantity="other">Přesouvá se <xliff:g id="COUNT_1">%1$d</xliff:g> souborů.</item>
-      <item quantity="one">Přesouvá se <xliff:g id="COUNT_0">%1$d</xliff:g> soubor.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="few">Mazání <xliff:g id="COUNT_1">%1$d</xliff:g> souborů.</item>
-      <item quantity="many">Mazání <xliff:g id="COUNT_1">%1$d</xliff:g> souboru.</item>
-      <item quantity="other">Mazání <xliff:g id="COUNT_1">%1$d</xliff:g> souborů.</item>
-      <item quantity="one">Mazání <xliff:g id="COUNT_0">%1$d</xliff:g> souboru.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Vrátit zpět"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Příprava na kopírování…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Příprava na přesunutí…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Příprava na mazání…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> soubory se zkopírovat nepodařilo</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> souboru se zkopírovat nepodařilo</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> souborů se zkopírovat nepodařilo</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> soubor se zkopírovat nepodařilo</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> soubory nelze přesunout</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> souboru nelze přesunout</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> souborů nelze přesunout</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> soubor nelze přesunout</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> soubory se smazat nepodařilo</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> souboru se smazat nepodařilo</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> souborů se smazat nepodařilo</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> soubor se smazat nepodařilo</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Klepnutím zobrazíte podrobnosti"</string>
-    <string name="close" msgid="3043722427445528732">"Zavřít"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Následující soubory nebyly zkopírovány: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Následující soubory nebyly přesunuty: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Následující soubory nebyly smazány: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Soubory byly převedeny do jiného formátu: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> soubory byly zkopírovány do schránky.</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> souboru bylo zkopírováno do schránky.</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> souborů bylo zkopírováno do schránky.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> soubor byl zkopírován do schránky.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Vybrané soubory nelze vložit do tohoto umístění."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Přejmenovat"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Dokument se nepodařilo přejmenovat."</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Odpojit"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Některé soubory byly převedeny"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Chcete aplikaci <xliff:g id="APPNAME"><b>^1</b></xliff:g> udělit přístup k adresáři <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> v úložišti <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Chcete aplikaci <xliff:g id="APPNAME"><b>^1</b></xliff:g> udělit přístup k adresáři <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Chcete aplikaci <xliff:g id="APPNAME"><b>^1</b></xliff:g> udělit přístup ke svým datům v úložišti <xliff:g id="STORAGE"><i>^2</i></xliff:g>, včetně fotek a videí?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Příště se neptat"</string>
-    <string name="allow" msgid="7225948811296386551">"Povolit"</string>
-    <string name="deny" msgid="2081879885755434506">"Odepřít"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="few">Vybrány <xliff:g id="COUNT_1">%1$d</xliff:g> položky</item>
-      <item quantity="many">Vybráno <xliff:g id="COUNT_1">%1$d</xliff:g> položky</item>
-      <item quantity="other">Vybráno <xliff:g id="COUNT_1">%1$d</xliff:g> položek</item>
-      <item quantity="one">Vybrána <xliff:g id="COUNT_0">%1$d</xliff:g> položka</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> položky</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> položky</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> položek</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> položka</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Smazat soubor <xliff:g id="NAME">%1$s</xliff:g>?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Smazat složku <xliff:g id="NAME">%1$s</xliff:g> a její obsah?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="few">Smazat <xliff:g id="COUNT_1">%1$d</xliff:g> soubory?</item>
-      <item quantity="many">Smazat <xliff:g id="COUNT_1">%1$d</xliff:g> souboru?</item>
-      <item quantity="other">Smazat <xliff:g id="COUNT_1">%1$d</xliff:g> souborů?</item>
-      <item quantity="one">Smazat <xliff:g id="COUNT_0">%1$d</xliff:g> soubor?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="few">Smazat <xliff:g id="COUNT_1">%1$d</xliff:g> složky a jejich obsah?</item>
-      <item quantity="many">Smazat <xliff:g id="COUNT_1">%1$d</xliff:g> složky a jejich obsah?</item>
-      <item quantity="other">Smazat <xliff:g id="COUNT_1">%1$d</xliff:g> složek a jejich obsah?</item>
-      <item quantity="one">Smazat <xliff:g id="COUNT_0">%1$d</xliff:g> složku a její obsah?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="few">Smazat <xliff:g id="COUNT_1">%1$d</xliff:g> položky?</item>
-      <item quantity="many">Smazat <xliff:g id="COUNT_1">%1$d</xliff:g> položky?</item>
-      <item quantity="other">Smazat <xliff:g id="COUNT_1">%1$d</xliff:g> položek?</item>
-      <item quantity="one">Smazat <xliff:g id="COUNT_0">%1$d</xliff:g> položku?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-da/strings.xml b/packages/DocumentsUI/res/values-da/strings.xml
deleted file mode 100644
index b47326e..0000000
--- a/packages/DocumentsUI/res/values-da/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Filer"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Downloads"</string>
-    <string name="title_open" msgid="4353228937663917801">"Åbn fra"</string>
-    <string name="title_save" msgid="2433679664882857999">"Gem i"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Ny mappe"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Gittervisning"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Listevisning"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Sortér efter"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Søg"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Indstillinger for lager"</string>
-    <string name="menu_open" msgid="432922957274920903">"Åbn"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Gem"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Del"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Slet"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Markér alle"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Kopiér til…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Flyt til…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Nyt vindue"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Klip"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Kopiér"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Indsæt"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Vis intern lagerplads"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Skjul intern lagerplads"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Vis filstørrelse"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Skjul filstørrelse"</string>
-    <string name="button_select" msgid="527196987259139214">"Vælg"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Kopiér"</string>
-    <string name="button_move" msgid="2202666023104202232">"Flyt"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Luk"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Prøv igen"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Efter navn"</string>
-    <string name="sort_date" msgid="586080032956151448">"Efter ændringsdato"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Efter størrelse"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Vis rødder"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Skjul rødder"</string>
-    <string name="save_error" msgid="6167009778003223664">"Dokumentet kunne ikke gemmes"</string>
-    <string name="create_error" msgid="3735649141335444215">"Mappen kunne ikke oprettes"</string>
-    <string name="query_error" msgid="5999895349602476581">"Der kan ikke indlæses indhold i øjeblikket"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Seneste"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> ledig plads"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Lagringstjenester"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Genveje"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Enheder"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Flere apps"</string>
-    <string name="empty" msgid="7858882803708117596">"Ingen elementer"</string>
-    <string name="no_results" msgid="6622510343880730446">"Ingen kampe i %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Filen kan ikke åbnes"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Nogle dokumenter kan ikke slettes"</string>
-    <string name="share_via" msgid="8966594246261344259">"Del via"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Kopierer filer"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Flytter filer"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Filerne slettes"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> tilbage"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one">Kopierer <xliff:g id="COUNT_1">%1$d</xliff:g> filer.</item>
-      <item quantity="other">Kopierer <xliff:g id="COUNT_1">%1$d</xliff:g> filer.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one">Flytter <xliff:g id="COUNT_1">%1$d</xliff:g> filer.</item>
-      <item quantity="other">Flytter <xliff:g id="COUNT_1">%1$d</xliff:g> filer.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> filer slettes.</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> filer slettes.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Fortryd"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Forbereder kopiering…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Forbereder flytning…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Forbereder til sletning…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> af <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> fil kunne ikke kopieres</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> filer kunne ikke kopieres</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> fil kunne ikke flyttes</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> filer kunne ikke flyttes</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> fil kunne ikke slettes</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> filer kunne ikke slettes</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Tryk for at se oplysninger"</string>
-    <string name="close" msgid="3043722427445528732">"Luk"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Disse filer blev ikke kopieret: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Disse filer blev ikke flyttet: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Disse filer blev ikke slettet: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Disse filer er konverteret til et andet format: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> filer blev kopieret til udklipsholder.</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> filer blev kopieret til udklipsholder.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"De valgte filer kan ikke indsættes på denne placering."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Omdøb"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Dokumentet kunne ikke omdøbes"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Skub ud"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Nogle filer er konverteret"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Vil du give <xliff:g id="APPNAME"><b>^1</b></xliff:g> adgang til mappen <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> på <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Vil du give <xliff:g id="APPNAME"><b>^1</b></xliff:g> adgang til indekset <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Vil du give <xliff:g id="APPNAME"><b>^1</b></xliff:g> adgang til dine data, herunder billeder og videoer på <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Spørg ikke igen"</string>
-    <string name="allow" msgid="7225948811296386551">"Tillad"</string>
-    <string name="deny" msgid="2081879885755434506">"Afvis"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one">Der er valgt <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="other">Der er valgt <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> element</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> elementer</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Vil du slette \"<xliff:g id="NAME">%1$s</xliff:g>\"?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Vil du slette mappen \"<xliff:g id="NAME">%1$s</xliff:g>\" og dens indhold?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one">Vil du slette <xliff:g id="COUNT_1">%1$d</xliff:g> fil?</item>
-      <item quantity="other">Vil du slette <xliff:g id="COUNT_1">%1$d</xliff:g> filer?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one">Vil du slette <xliff:g id="COUNT_1">%1$d</xliff:g> mappe og dens indhold?</item>
-      <item quantity="other">Vil du slette <xliff:g id="COUNT_1">%1$d</xliff:g> mapper og deres indhold?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one">Vil du slette <xliff:g id="COUNT_1">%1$d</xliff:g> element?</item>
-      <item quantity="other">Vil du slette <xliff:g id="COUNT_1">%1$d</xliff:g> elementer?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-de/strings.xml b/packages/DocumentsUI/res/values-de/strings.xml
deleted file mode 100644
index 123bf19..0000000
--- a/packages/DocumentsUI/res/values-de/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Dateien"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Downloads"</string>
-    <string name="title_open" msgid="4353228937663917801">"Öffnen von"</string>
-    <string name="title_save" msgid="2433679664882857999">"Speichern unter"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Neuer Ordner"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Rasteransicht"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Listenansicht"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Sortieren nach"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Suchen"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Speichereinstellungen"</string>
-    <string name="menu_open" msgid="432922957274920903">"Öffnen"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Speichern"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Teilen"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Löschen"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Alle auswählen"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Kopieren nach..."</string>
-    <string name="menu_move" msgid="1828090633118079817">"Verschieben nach…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Neues Fenster"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Ausschneiden"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Kopieren"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Einfügen"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Int. Speicher anzeigen"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Int. Speicher ausblenden"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Dateigröße anzeigen"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Dateigröße ausblenden"</string>
-    <string name="button_select" msgid="527196987259139214">"Auswählen"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Kopieren"</string>
-    <string name="button_move" msgid="2202666023104202232">"Verschieben"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Schließen"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Erneut versuchen"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Nach Name"</string>
-    <string name="sort_date" msgid="586080032956151448">"Nach Änderungsdatum"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Nach Größe"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Root-Verzeichnis anzeigen"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Root-Verzeichnis ausblenden"</string>
-    <string name="save_error" msgid="6167009778003223664">"Dokument konnte nicht gespeichert werden."</string>
-    <string name="create_error" msgid="3735649141335444215">"Ordner konnte nicht erstellt werden."</string>
-    <string name="query_error" msgid="5999895349602476581">"Inhalte können momentan nicht geladen werden"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Letzte"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> verfügbar"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Speicherdienste"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Verknüpfungen"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Geräte"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Weitere Apps"</string>
-    <string name="empty" msgid="7858882803708117596">"Keine Dokumente"</string>
-    <string name="no_results" msgid="6622510343880730446">"Keine Übereinstimmungen in %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Datei kann nicht geöffnet werden"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Einige Dokumente konnten nicht gelöscht werden."</string>
-    <string name="share_via" msgid="8966594246261344259">"Teilen über"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Dateien werden kopiert"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Dateien werden verschoben"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Dateien werden gelöscht"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Noch <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> Dateien werden kopiert.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> Datei wird kopiert.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> Dateien werden verschoben.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> Datei wird verschoben.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> Dateien werden gelöscht.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> Datei wird gelöscht.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Rückgängig machen"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Kopieren wird vorbereitet…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Verschieben wird vorbereitet…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Löschvorgang wird vorbereitet…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> Dateien konnten nicht kopiert werden</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> Datei konnte nicht kopiert werden</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> Dateien konnten nicht verschoben werden</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> Datei konnte nicht verschoben werden</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> Dateien konnten nicht gelöscht werden</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> Datei konnte nicht gelöscht werden</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Zum Ansehen der Details tippen"</string>
-    <string name="close" msgid="3043722427445528732">"Schließen"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Diese Dateien wurden nicht kopiert: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Diese Dateien wurden nicht verschoben: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Diese Dateien wurden nicht gelöscht: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Folgende Dateien wurden in ein anderes Format konvertiert: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> Dateien wurden in die Zwischenablage kopiert.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> Datei wurde in die Zwischenablage kopiert.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Die ausgewählten Dateien können an diesem Ort nicht eingefügt werden."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Umbenennen"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Dokument konnte nicht umbenannt werden"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Auswerfen"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Einige Dateien wurden konvertiert"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> Zugriff auf das Verzeichnis <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> auf <xliff:g id="STORAGE"><i>^3</i></xliff:g> geben?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Möchtest du <xliff:g id="APPNAME"><b>^1</b></xliff:g> Zugriff auf das Verzeichnis <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> geben?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Möchtest du <xliff:g id="APPNAME"><b>^1</b></xliff:g> Zugriff auf deine Daten auf <xliff:g id="STORAGE"><i>^2</i></xliff:g> geben, einschließlich Fotos und Videos?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Nicht mehr fragen"</string>
-    <string name="allow" msgid="7225948811296386551">"Zulassen"</string>
-    <string name="deny" msgid="2081879885755434506">"Ablehnen"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ausgewählt</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ausgewählt</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> Einträge</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> Eintrag</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"\"<xliff:g id="NAME">%1$s</xliff:g>\" löschen?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Ordner \"<xliff:g id="NAME">%1$s</xliff:g>\" und dessen Inhalte löschen?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">Möchtest du <xliff:g id="COUNT_1">%1$d</xliff:g> Dateien löschen?</item>
-      <item quantity="one">Möchtest du <xliff:g id="COUNT_0">%1$d</xliff:g> Datei löschen?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">Möchtest du <xliff:g id="COUNT_1">%1$d</xliff:g> Ordner und deren Inhalte löschen?</item>
-      <item quantity="one">Möchtest du <xliff:g id="COUNT_0">%1$d</xliff:g> Ordner und dessen Inhalte löschen?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">Möchtest du <xliff:g id="COUNT_1">%1$d</xliff:g> Elemente löschen?</item>
-      <item quantity="one">Möchtest du <xliff:g id="COUNT_0">%1$d</xliff:g> Element löschen?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-el/strings.xml b/packages/DocumentsUI/res/values-el/strings.xml
deleted file mode 100644
index 5a199d7..0000000
--- a/packages/DocumentsUI/res/values-el/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Αρχεία"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Λήψεις"</string>
-    <string name="title_open" msgid="4353228937663917801">"Άνοιγμα από"</string>
-    <string name="title_save" msgid="2433679664882857999">"Αποθήκευση σε"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Νέος φάκελος"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Προβολή πλέγματος"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Προβολή λίστας"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Ταξινόμηση κατά"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Αναζήτηση"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Ρυθμίσεις αποθ/κού χώρου"</string>
-    <string name="menu_open" msgid="432922957274920903">"Άνοιγμα"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Αποθήκευση"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Κοινή χρήση"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Διαγραφή"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Επιλογή όλων"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Αντιγραφή σε…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Μετακίνηση σε..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Νέο παράθυρο"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Αποκοπή"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Αντιγραφή"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Επικόλληση"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Εμφ.εσωτ.χώρου αποθήκ."</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Απόκρ.εσωτ.χώρου αποθήκ."</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Εμφ. μεγέθους αρχείου"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Απόκρ. μεγέθους αρχείου"</string>
-    <string name="button_select" msgid="527196987259139214">"Επιλογή"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Αντιγραφή"</string>
-    <string name="button_move" msgid="2202666023104202232">"Μετακίνηση"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Παράβλεψη"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Δοκιμάστε ξανά"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Κατά όνομα"</string>
-    <string name="sort_date" msgid="586080032956151448">"Κατά ημερομηνία τροποποίησης"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Κατά μέγεθος"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Εμφάνιση ρίζας"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Απόκρυψη ρίζας"</string>
-    <string name="save_error" msgid="6167009778003223664">"Αποτυχία αποθήκευσης του εγγράφου"</string>
-    <string name="create_error" msgid="3735649141335444215">"Αποτυχία δημιουργίας φακέλου"</string>
-    <string name="query_error" msgid="5999895349602476581">"Δεν είναι δυνατή η φόρτωση περιεχομένου τώρα"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Πρόσφατα"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> ελεύθερα"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Υπηρεσίες αποθήκευσης"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Συντομεύσεις"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Συσκευές"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Περισσότερες εφαρμογές"</string>
-    <string name="empty" msgid="7858882803708117596">"Δεν υπάρχουν στοιχεία"</string>
-    <string name="no_results" msgid="6622510343880730446">"Χωρίς αντιστοιχίσεις στο %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Δεν είναι δυνατό το άνοιγμα του αρχείου"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Δεν είναι δυνατή η διαγραφή ορισμένων εγγράφων"</string>
-    <string name="share_via" msgid="8966594246261344259">"Κοινοποίηση μέσω"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Αντιγραφή αρχείων"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Μετακίνηση αρχείων"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Διαγραφή αρχείων"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Απομένουν <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">Αντιγραφή <xliff:g id="COUNT_1">%1$d</xliff:g> αρχείων.</item>
-      <item quantity="one">Αντιγραφή <xliff:g id="COUNT_0">%1$d</xliff:g> αρχείου.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">Μετακίνηση <xliff:g id="COUNT_1">%1$d</xliff:g> αρχείων.</item>
-      <item quantity="one">Μετακίνηση <xliff:g id="COUNT_0">%1$d</xliff:g> αρχείου.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">Διαγραφή <xliff:g id="COUNT_1">%1$d</xliff:g> αρχείων.</item>
-      <item quantity="one">Διαγραφή <xliff:g id="COUNT_0">%1$d</xliff:g> αρχείου.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Αναίρεση"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Προετοιμασία για αντιγραφή…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Προετοιμασία για μετακίνηση…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Προετοιμασία για διαγραφή…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">Δεν ήταν δυνατή η αντιγραφή <xliff:g id="COUNT_1">%1$d</xliff:g> αρχείων</item>
-      <item quantity="one">Δεν ήταν δυνατή η αντιγραφή <xliff:g id="COUNT_0">%1$d</xliff:g> αρχείου</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">Δεν ήταν δυνατή η μετακίνηση <xliff:g id="COUNT_1">%1$d</xliff:g> αρχείων</item>
-      <item quantity="one">Δεν ήταν δυνατή η μετακίνηση <xliff:g id="COUNT_0">%1$d</xliff:g> αρχείου</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">Δεν ήταν δυνατή η διαγραφή <xliff:g id="COUNT_1">%1$d</xliff:g> αρχείων</item>
-      <item quantity="one">Δεν ήταν δυνατή η διαγραφή <xliff:g id="COUNT_0">%1$d</xliff:g> αρχείου</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Πατήστε για προβολή λεπτομερειών"</string>
-    <string name="close" msgid="3043722427445528732">"Κλείσιμο"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Αυτά τα αρχεία δεν αντιγράφηκαν: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Αυτά τα αρχεία δεν μετακινήθηκαν: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Αυτά τα αρχεία δεν διαγράφηκαν: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Αυτά τα αρχεία μετατράπηκαν σε άλλη μορφή: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> αρχεία αντιγράφηκαν στο πρόχειρο.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> αρχείο αντιγράφηκε στο πρόχειρο.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Δεν είναι δυνατή η επικόλληση των επιλεγμένων αρχείων σε αυτήν την τοποθεσία."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Μετονομασία"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Αποτυχία μετονομασίας εγγράφου"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Εξαγωγή"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Ορισμένα αρχεία μετατράπηκαν"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Να εκχωρηθεί στην εφαρμογή <xliff:g id="APPNAME"><b>^1</b></xliff:g> πρόσβαση στον κατάλογο <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> στον αποθηκευτικό χώρο <xliff:g id="STORAGE"><i>^3</i></xliff:g>;"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Εκχώρηση πρόσβασης στην εφαρμογή <xliff:g id="APPNAME"><b>^1</b></xliff:g> στον κατάλογο <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>;"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Θέλετε να εκχωρήσετε πρόσβαση στα δεδομένα σας στην εφαρμογή <xliff:g id="APPNAME"><b>^1</b></xliff:g>, συμπεριλαμβανομένων των φωτογραφιών και των βίντεό σας, στον αποθηκευτικό χώρο <xliff:g id="STORAGE"><i>^2</i></xliff:g>;"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Να μην ερωτηθώ ξανά"</string>
-    <string name="allow" msgid="7225948811296386551">"Να επιτρέπεται"</string>
-    <string name="deny" msgid="2081879885755434506">"Άρνηση"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> επιλεγμένα</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> επιλεγμένο</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> στοιχεία</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> στοιχείο</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Να διαγραφεί το αρχείο \"<xliff:g id="NAME">%1$s</xliff:g>\";"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Να διαγραφεί ο φάκελος \"<xliff:g id="NAME">%1$s</xliff:g>\" και τα περιεχόμενά του;"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">Να διαγραφούν <xliff:g id="COUNT_1">%1$d</xliff:g> αρχεία;</item>
-      <item quantity="one">Να διαγραφεί <xliff:g id="COUNT_0">%1$d</xliff:g> αρχείο;</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">Να διαγραφούν <xliff:g id="COUNT_1">%1$d</xliff:g> φάκελοι και τα περιεχόμενά τους;</item>
-      <item quantity="one">Να διαγραφεί <xliff:g id="COUNT_0">%1$d</xliff:g> φάκελος και τα περιεχόμενά του;</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">Να διαγραφούν <xliff:g id="COUNT_1">%1$d</xliff:g> στοιχεία;</item>
-      <item quantity="one">Να διαγραφεί <xliff:g id="COUNT_0">%1$d</xliff:g> στοιχείο;</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-en-rAU/strings.xml b/packages/DocumentsUI/res/values-en-rAU/strings.xml
deleted file mode 100644
index f2b25b8..0000000
--- a/packages/DocumentsUI/res/values-en-rAU/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Files"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Downloads"</string>
-    <string name="title_open" msgid="4353228937663917801">"Open from"</string>
-    <string name="title_save" msgid="2433679664882857999">"Save to"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"New folder"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Grid view"</string>
-    <string name="menu_list" msgid="7279285939892417279">"List view"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Sort by"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Search"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Storage settings"</string>
-    <string name="menu_open" msgid="432922957274920903">"Open"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Save"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Share"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Delete"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Select all"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Copy to…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Move to…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"New window"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Cut"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Copy"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Paste"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Show internal storage"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Hide internal storage"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Show file size"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Hide file size"</string>
-    <string name="button_select" msgid="527196987259139214">"select"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Copy"</string>
-    <string name="button_move" msgid="2202666023104202232">"Move"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Dismiss"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Try again"</string>
-    <string name="sort_name" msgid="9183560467917256779">"By name"</string>
-    <string name="sort_date" msgid="586080032956151448">"By date modified"</string>
-    <string name="sort_size" msgid="3350681319735474741">"By size"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Show roots"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Hide roots"</string>
-    <string name="save_error" msgid="6167009778003223664">"Failed to save document"</string>
-    <string name="create_error" msgid="3735649141335444215">"Failed to create folder"</string>
-    <string name="query_error" msgid="5999895349602476581">"Can’t load content at the moment"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Recent"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> free"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Storage services"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Shortcuts"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Devices"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"More apps"</string>
-    <string name="empty" msgid="7858882803708117596">"No items"</string>
-    <string name="no_results" msgid="6622510343880730446">"No matches in %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Can’t open file"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Unable to delete some documents"</string>
-    <string name="share_via" msgid="8966594246261344259">"Share via"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Copying files"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Moving files"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Deleting files"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> left"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">Copying <xliff:g id="COUNT_1">%1$d</xliff:g> files.</item>
-      <item quantity="one">Copying <xliff:g id="COUNT_0">%1$d</xliff:g> file.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">Moving <xliff:g id="COUNT_1">%1$d</xliff:g> files.</item>
-      <item quantity="one">Moving <xliff:g id="COUNT_0">%1$d</xliff:g> file.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">Deleting <xliff:g id="COUNT_1">%1$d</xliff:g> files.</item>
-      <item quantity="one">Deleting <xliff:g id="COUNT_0">%1$d</xliff:g> file.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Undo"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Preparing for copy…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Preparing for move…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Preparing to delete…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">Couldn’t copy <xliff:g id="COUNT_1">%1$d</xliff:g> files</item>
-      <item quantity="one">Couldn’t copy <xliff:g id="COUNT_0">%1$d</xliff:g> file</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">Couldn’t move <xliff:g id="COUNT_1">%1$d</xliff:g> files</item>
-      <item quantity="one">Couldn’t move <xliff:g id="COUNT_0">%1$d</xliff:g> file</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">Couldn’t delete <xliff:g id="COUNT_1">%1$d</xliff:g> files</item>
-      <item quantity="one">Couldn’t delete <xliff:g id="COUNT_0">%1$d</xliff:g> file</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Tap to view details"</string>
-    <string name="close" msgid="3043722427445528732">"Close"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"These files weren’t copied: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"These files weren’t moved: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"These files weren’t deleted: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"These files were converted to another format: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">Copied <xliff:g id="COUNT_1">%1$d</xliff:g> files to clipboard.</item>
-      <item quantity="one">Copied <xliff:g id="COUNT_0">%1$d</xliff:g> file to clipboard.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Cannot paste the selected files in this location."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Rename"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Failed to rename document"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Eject"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Some files were converted"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Grant <xliff:g id="APPNAME"><b>^1</b></xliff:g> access to <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> directory on <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Grant <xliff:g id="APPNAME"><b>^1</b></xliff:g> access to <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> directory?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Grant <xliff:g id="APPNAME"><b>^1</b></xliff:g> access to your data, including photos and videos, on <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Don\'t ask again"</string>
-    <string name="allow" msgid="7225948811296386551">"Allow"</string>
-    <string name="deny" msgid="2081879885755434506">"Deny"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> selected</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> selected</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> items</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> item</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Delete \"<xliff:g id="NAME">%1$s</xliff:g>\"?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Delete folder \"<xliff:g id="NAME">%1$s</xliff:g>\" and its contents?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">Delete <xliff:g id="COUNT_1">%1$d</xliff:g> files?</item>
-      <item quantity="one">Delete <xliff:g id="COUNT_0">%1$d</xliff:g> file?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">Delete <xliff:g id="COUNT_1">%1$d</xliff:g> folders and their contents?</item>
-      <item quantity="one">Delete <xliff:g id="COUNT_0">%1$d</xliff:g> folder and its contents?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">Delete <xliff:g id="COUNT_1">%1$d</xliff:g> items?</item>
-      <item quantity="one">Delete <xliff:g id="COUNT_0">%1$d</xliff:g> item?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-en-rGB/strings.xml b/packages/DocumentsUI/res/values-en-rGB/strings.xml
deleted file mode 100644
index f2b25b8..0000000
--- a/packages/DocumentsUI/res/values-en-rGB/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Files"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Downloads"</string>
-    <string name="title_open" msgid="4353228937663917801">"Open from"</string>
-    <string name="title_save" msgid="2433679664882857999">"Save to"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"New folder"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Grid view"</string>
-    <string name="menu_list" msgid="7279285939892417279">"List view"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Sort by"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Search"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Storage settings"</string>
-    <string name="menu_open" msgid="432922957274920903">"Open"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Save"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Share"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Delete"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Select all"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Copy to…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Move to…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"New window"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Cut"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Copy"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Paste"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Show internal storage"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Hide internal storage"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Show file size"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Hide file size"</string>
-    <string name="button_select" msgid="527196987259139214">"select"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Copy"</string>
-    <string name="button_move" msgid="2202666023104202232">"Move"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Dismiss"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Try again"</string>
-    <string name="sort_name" msgid="9183560467917256779">"By name"</string>
-    <string name="sort_date" msgid="586080032956151448">"By date modified"</string>
-    <string name="sort_size" msgid="3350681319735474741">"By size"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Show roots"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Hide roots"</string>
-    <string name="save_error" msgid="6167009778003223664">"Failed to save document"</string>
-    <string name="create_error" msgid="3735649141335444215">"Failed to create folder"</string>
-    <string name="query_error" msgid="5999895349602476581">"Can’t load content at the moment"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Recent"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> free"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Storage services"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Shortcuts"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Devices"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"More apps"</string>
-    <string name="empty" msgid="7858882803708117596">"No items"</string>
-    <string name="no_results" msgid="6622510343880730446">"No matches in %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Can’t open file"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Unable to delete some documents"</string>
-    <string name="share_via" msgid="8966594246261344259">"Share via"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Copying files"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Moving files"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Deleting files"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> left"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">Copying <xliff:g id="COUNT_1">%1$d</xliff:g> files.</item>
-      <item quantity="one">Copying <xliff:g id="COUNT_0">%1$d</xliff:g> file.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">Moving <xliff:g id="COUNT_1">%1$d</xliff:g> files.</item>
-      <item quantity="one">Moving <xliff:g id="COUNT_0">%1$d</xliff:g> file.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">Deleting <xliff:g id="COUNT_1">%1$d</xliff:g> files.</item>
-      <item quantity="one">Deleting <xliff:g id="COUNT_0">%1$d</xliff:g> file.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Undo"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Preparing for copy…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Preparing for move…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Preparing to delete…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">Couldn’t copy <xliff:g id="COUNT_1">%1$d</xliff:g> files</item>
-      <item quantity="one">Couldn’t copy <xliff:g id="COUNT_0">%1$d</xliff:g> file</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">Couldn’t move <xliff:g id="COUNT_1">%1$d</xliff:g> files</item>
-      <item quantity="one">Couldn’t move <xliff:g id="COUNT_0">%1$d</xliff:g> file</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">Couldn’t delete <xliff:g id="COUNT_1">%1$d</xliff:g> files</item>
-      <item quantity="one">Couldn’t delete <xliff:g id="COUNT_0">%1$d</xliff:g> file</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Tap to view details"</string>
-    <string name="close" msgid="3043722427445528732">"Close"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"These files weren’t copied: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"These files weren’t moved: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"These files weren’t deleted: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"These files were converted to another format: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">Copied <xliff:g id="COUNT_1">%1$d</xliff:g> files to clipboard.</item>
-      <item quantity="one">Copied <xliff:g id="COUNT_0">%1$d</xliff:g> file to clipboard.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Cannot paste the selected files in this location."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Rename"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Failed to rename document"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Eject"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Some files were converted"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Grant <xliff:g id="APPNAME"><b>^1</b></xliff:g> access to <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> directory on <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Grant <xliff:g id="APPNAME"><b>^1</b></xliff:g> access to <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> directory?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Grant <xliff:g id="APPNAME"><b>^1</b></xliff:g> access to your data, including photos and videos, on <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Don\'t ask again"</string>
-    <string name="allow" msgid="7225948811296386551">"Allow"</string>
-    <string name="deny" msgid="2081879885755434506">"Deny"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> selected</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> selected</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> items</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> item</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Delete \"<xliff:g id="NAME">%1$s</xliff:g>\"?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Delete folder \"<xliff:g id="NAME">%1$s</xliff:g>\" and its contents?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">Delete <xliff:g id="COUNT_1">%1$d</xliff:g> files?</item>
-      <item quantity="one">Delete <xliff:g id="COUNT_0">%1$d</xliff:g> file?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">Delete <xliff:g id="COUNT_1">%1$d</xliff:g> folders and their contents?</item>
-      <item quantity="one">Delete <xliff:g id="COUNT_0">%1$d</xliff:g> folder and its contents?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">Delete <xliff:g id="COUNT_1">%1$d</xliff:g> items?</item>
-      <item quantity="one">Delete <xliff:g id="COUNT_0">%1$d</xliff:g> item?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-en-rIN/strings.xml b/packages/DocumentsUI/res/values-en-rIN/strings.xml
deleted file mode 100644
index f2b25b8..0000000
--- a/packages/DocumentsUI/res/values-en-rIN/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Files"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Downloads"</string>
-    <string name="title_open" msgid="4353228937663917801">"Open from"</string>
-    <string name="title_save" msgid="2433679664882857999">"Save to"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"New folder"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Grid view"</string>
-    <string name="menu_list" msgid="7279285939892417279">"List view"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Sort by"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Search"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Storage settings"</string>
-    <string name="menu_open" msgid="432922957274920903">"Open"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Save"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Share"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Delete"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Select all"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Copy to…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Move to…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"New window"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Cut"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Copy"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Paste"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Show internal storage"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Hide internal storage"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Show file size"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Hide file size"</string>
-    <string name="button_select" msgid="527196987259139214">"select"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Copy"</string>
-    <string name="button_move" msgid="2202666023104202232">"Move"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Dismiss"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Try again"</string>
-    <string name="sort_name" msgid="9183560467917256779">"By name"</string>
-    <string name="sort_date" msgid="586080032956151448">"By date modified"</string>
-    <string name="sort_size" msgid="3350681319735474741">"By size"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Show roots"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Hide roots"</string>
-    <string name="save_error" msgid="6167009778003223664">"Failed to save document"</string>
-    <string name="create_error" msgid="3735649141335444215">"Failed to create folder"</string>
-    <string name="query_error" msgid="5999895349602476581">"Can’t load content at the moment"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Recent"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> free"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Storage services"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Shortcuts"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Devices"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"More apps"</string>
-    <string name="empty" msgid="7858882803708117596">"No items"</string>
-    <string name="no_results" msgid="6622510343880730446">"No matches in %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Can’t open file"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Unable to delete some documents"</string>
-    <string name="share_via" msgid="8966594246261344259">"Share via"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Copying files"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Moving files"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Deleting files"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> left"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">Copying <xliff:g id="COUNT_1">%1$d</xliff:g> files.</item>
-      <item quantity="one">Copying <xliff:g id="COUNT_0">%1$d</xliff:g> file.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">Moving <xliff:g id="COUNT_1">%1$d</xliff:g> files.</item>
-      <item quantity="one">Moving <xliff:g id="COUNT_0">%1$d</xliff:g> file.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">Deleting <xliff:g id="COUNT_1">%1$d</xliff:g> files.</item>
-      <item quantity="one">Deleting <xliff:g id="COUNT_0">%1$d</xliff:g> file.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Undo"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Preparing for copy…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Preparing for move…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Preparing to delete…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">Couldn’t copy <xliff:g id="COUNT_1">%1$d</xliff:g> files</item>
-      <item quantity="one">Couldn’t copy <xliff:g id="COUNT_0">%1$d</xliff:g> file</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">Couldn’t move <xliff:g id="COUNT_1">%1$d</xliff:g> files</item>
-      <item quantity="one">Couldn’t move <xliff:g id="COUNT_0">%1$d</xliff:g> file</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">Couldn’t delete <xliff:g id="COUNT_1">%1$d</xliff:g> files</item>
-      <item quantity="one">Couldn’t delete <xliff:g id="COUNT_0">%1$d</xliff:g> file</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Tap to view details"</string>
-    <string name="close" msgid="3043722427445528732">"Close"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"These files weren’t copied: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"These files weren’t moved: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"These files weren’t deleted: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"These files were converted to another format: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">Copied <xliff:g id="COUNT_1">%1$d</xliff:g> files to clipboard.</item>
-      <item quantity="one">Copied <xliff:g id="COUNT_0">%1$d</xliff:g> file to clipboard.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Cannot paste the selected files in this location."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Rename"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Failed to rename document"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Eject"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Some files were converted"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Grant <xliff:g id="APPNAME"><b>^1</b></xliff:g> access to <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> directory on <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Grant <xliff:g id="APPNAME"><b>^1</b></xliff:g> access to <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> directory?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Grant <xliff:g id="APPNAME"><b>^1</b></xliff:g> access to your data, including photos and videos, on <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Don\'t ask again"</string>
-    <string name="allow" msgid="7225948811296386551">"Allow"</string>
-    <string name="deny" msgid="2081879885755434506">"Deny"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> selected</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> selected</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> items</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> item</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Delete \"<xliff:g id="NAME">%1$s</xliff:g>\"?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Delete folder \"<xliff:g id="NAME">%1$s</xliff:g>\" and its contents?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">Delete <xliff:g id="COUNT_1">%1$d</xliff:g> files?</item>
-      <item quantity="one">Delete <xliff:g id="COUNT_0">%1$d</xliff:g> file?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">Delete <xliff:g id="COUNT_1">%1$d</xliff:g> folders and their contents?</item>
-      <item quantity="one">Delete <xliff:g id="COUNT_0">%1$d</xliff:g> folder and its contents?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">Delete <xliff:g id="COUNT_1">%1$d</xliff:g> items?</item>
-      <item quantity="one">Delete <xliff:g id="COUNT_0">%1$d</xliff:g> item?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-es-rUS/strings.xml b/packages/DocumentsUI/res/values-es-rUS/strings.xml
deleted file mode 100644
index 1cd7428..0000000
--- a/packages/DocumentsUI/res/values-es-rUS/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Archivos"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Descargas"</string>
-    <string name="title_open" msgid="4353228937663917801">"Abrir desde"</string>
-    <string name="title_save" msgid="2433679664882857999">"Guardar en"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Carpeta nueva"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Vista de cuadrícula"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Vista de lista"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Ordenar por"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Buscar"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Configuración"</string>
-    <string name="menu_open" msgid="432922957274920903">"Abrir"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Guardar"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Compartir"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Eliminar"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Seleccionar todo"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Copiar a…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Mover a…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Ventana nueva"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Cortar"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Copiar"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Pegar"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Mostrar almacen. interno"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Ocultar almacen. interno"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Mostrar tamaño archivos"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Ocultar tamaño archivos"</string>
-    <string name="button_select" msgid="527196987259139214">"Seleccionar"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Copiar"</string>
-    <string name="button_move" msgid="2202666023104202232">"Mover"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Descartar"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Reintentar"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Por nombre"</string>
-    <string name="sort_date" msgid="586080032956151448">"Por fecha de modificación"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Por tamaño"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Mostrar raíces"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Ocultar raíces"</string>
-    <string name="save_error" msgid="6167009778003223664">"Error al guardar el documento"</string>
-    <string name="create_error" msgid="3735649141335444215">"Error al crear la carpeta"</string>
-    <string name="query_error" msgid="5999895349602476581">"No se puede cargar el contenido en este momento"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Recientes"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> de espacio libre"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Almacenamiento"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Accesos directos"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Dispositivos"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Más aplicaciones"</string>
-    <string name="empty" msgid="7858882803708117596">"Sin elementos"</string>
-    <string name="no_results" msgid="6622510343880730446">"No hay coincidencias en %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"No se puede abrir el archivo"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"No es posible eliminar algunos documentos."</string>
-    <string name="share_via" msgid="8966594246261344259">"Compartir mediante"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Copiando archivos"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Moviendo archivos"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Borrando los archivos"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Faltan <xliff:g id="DURATION">%s</xliff:g>."</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">Copiando <xliff:g id="COUNT_1">%1$d</xliff:g> archivos</item>
-      <item quantity="one">Copiando <xliff:g id="COUNT_0">%1$d</xliff:g> archivo</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">Moviendo <xliff:g id="COUNT_1">%1$d</xliff:g> archivos</item>
-      <item quantity="one">Moviendo <xliff:g id="COUNT_0">%1$d</xliff:g> archivo</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">Se están borrando <xliff:g id="COUNT_1">%1$d</xliff:g> archivos.</item>
-      <item quantity="one">Se está borrando <xliff:g id="COUNT_0">%1$d</xliff:g> archivo.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Deshacer"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Preparando para copiar…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Preparación para mover archivos…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Preparando para borrar…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">No se pudieron copiar <xliff:g id="COUNT_1">%1$d</xliff:g> archivos</item>
-      <item quantity="one">No se pudo copiar <xliff:g id="COUNT_0">%1$d</xliff:g> archivo</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">No se pudieron trasladar <xliff:g id="COUNT_1">%1$d</xliff:g> archivos</item>
-      <item quantity="one">No se pudo trasladar <xliff:g id="COUNT_0">%1$d</xliff:g> archivo</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">No se pudieron borrar <xliff:g id="COUNT_1">%1$d</xliff:g> archivos</item>
-      <item quantity="one">No se pudo borrar <xliff:g id="COUNT_0">%1$d</xliff:g> archivo</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Presiona para ver los detalles"</string>
-    <string name="close" msgid="3043722427445528732">"Cerrar"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Los siguientes archivos no se pudieron copiar: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Los siguientes archivos no se trasladaron: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Los siguientes archivos no se pudieron borrar: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Estos archivos se convirtieron a otro formato: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">Se copiaron <xliff:g id="COUNT_1">%1$d</xliff:g> archivos al portapapeles.</item>
-      <item quantity="one">Se copió <xliff:g id="COUNT_0">%1$d</xliff:g> archivo al portapapeles.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"No se pueden pegar los archivos seleccionados en esta ubicación."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Cambiar nombre"</string>
-    <string name="rename_error" msgid="4203041674883412606">"No se pudo cambiar el nombre del documento"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Expulsar"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Se convirtieron algunos archivos"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"¿Otorgar acceso a <xliff:g id="APPNAME"><b>^1</b></xliff:g> al directorio <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> en <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"¿Quieres otorgar acceso a <xliff:g id="APPNAME"><b>^1</b></xliff:g> al directorio <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"¿Quieres otorgar acceso a la app de <xliff:g id="APPNAME"><b>^1</b></xliff:g> a tus datos, incluidas tus fotos y videos en <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"No volver a preguntar"</string>
-    <string name="allow" msgid="7225948811296386551">"Permitir"</string>
-    <string name="deny" msgid="2081879885755434506">"Denegar"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> elementos seleccionados</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> elemento seleccionado</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> elementos</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> elemento</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"¿Deseas borrar \"<xliff:g id="NAME">%1$s</xliff:g>\"?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"¿Deseas borrar la carpeta \"<xliff:g id="NAME">%1$s</xliff:g>\" y su contenido?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">¿Deseas borrar <xliff:g id="COUNT_1">%1$d</xliff:g> archivos?</item>
-      <item quantity="one">¿Deseas borrar <xliff:g id="COUNT_0">%1$d</xliff:g> archivo?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">¿Deseas borrar <xliff:g id="COUNT_1">%1$d</xliff:g> carpetas y su contenido?</item>
-      <item quantity="one">¿Deseas borrar <xliff:g id="COUNT_0">%1$d</xliff:g> carpeta y su contenido?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">¿Deseas borrar <xliff:g id="COUNT_1">%1$d</xliff:g> elementos?</item>
-      <item quantity="one">¿Deseas borrar <xliff:g id="COUNT_0">%1$d</xliff:g> elemento?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-es/strings.xml b/packages/DocumentsUI/res/values-es/strings.xml
deleted file mode 100644
index e3de716..0000000
--- a/packages/DocumentsUI/res/values-es/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Archivos"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Descargas"</string>
-    <string name="title_open" msgid="4353228937663917801">"Abrir desde"</string>
-    <string name="title_save" msgid="2433679664882857999">"Guardar en"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Nueva carpeta"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Vista de cuadrícula"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Vista de lista"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Ordenar por"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Buscar"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Ajustes de almacenamiento"</string>
-    <string name="menu_open" msgid="432922957274920903">"Abrir"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Guardar"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Compartir"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Eliminar"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Seleccionar todo"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Copiar en…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Mover a…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Nueva ventana"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Cortar"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Copiar"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Pegar"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Mostrar almac. interno"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Ocultar almac. interno"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Mostrar tamaño del archivo"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Ocultar tamaño del archivo"</string>
-    <string name="button_select" msgid="527196987259139214">"Seleccionar"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Copiar"</string>
-    <string name="button_move" msgid="2202666023104202232">"Mover"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Descartar"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Reintentar"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Por nombre"</string>
-    <string name="sort_date" msgid="586080032956151448">"Por fecha de modificación"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Por tamaño"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Mostrar raíces"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Ocultar raíces"</string>
-    <string name="save_error" msgid="6167009778003223664">"Error al guardar documento"</string>
-    <string name="create_error" msgid="3735649141335444215">"Error al crear la carpeta"</string>
-    <string name="query_error" msgid="5999895349602476581">"No se puede cargar contenido en este momento"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Reciente"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> de espacio libre"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Servicios almacenamiento"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Accesos directos"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Dispositivos"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Más aplicaciones"</string>
-    <string name="empty" msgid="7858882803708117596">"No hay elementos"</string>
-    <string name="no_results" msgid="6622510343880730446">"Sin coincidencias en %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"No se puede abrir el archivo"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"No es posible eliminar algunos documentos"</string>
-    <string name="share_via" msgid="8966594246261344259">"Compartir a través de"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Copiando archivos"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Moviendo archivos"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Eliminando archivos"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Tiempo restante: <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">Copiando <xliff:g id="COUNT_1">%1$d</xliff:g> archivos.</item>
-      <item quantity="one">Copiando <xliff:g id="COUNT_0">%1$d</xliff:g> archivo.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">Moviendo <xliff:g id="COUNT_1">%1$d</xliff:g> archivos.</item>
-      <item quantity="one">Moviendo <xliff:g id="COUNT_0">%1$d</xliff:g> archivo.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">Eliminando <xliff:g id="COUNT_1">%1$d</xliff:g> archivos.</item>
-      <item quantity="one">Eliminando <xliff:g id="COUNT_0">%1$d</xliff:g> archivo.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Deshacer"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Preparando para copiar..."</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Preparando para mover…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Preparando para eliminar…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> de <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">No se han podido copiar <xliff:g id="COUNT_1">%1$d</xliff:g> archivos</item>
-      <item quantity="one">No se ha podido copiar <xliff:g id="COUNT_0">%1$d</xliff:g> archivo</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">No se han podido mover <xliff:g id="COUNT_1">%1$d</xliff:g> archivos</item>
-      <item quantity="one">No se ha podido mover <xliff:g id="COUNT_0">%1$d</xliff:g> archivo</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">No se han podido eliminar <xliff:g id="COUNT_1">%1$d</xliff:g> archivos</item>
-      <item quantity="one">No se ha podido eliminar <xliff:g id="COUNT_0">%1$d</xliff:g> archivo</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Toca para ver detalles"</string>
-    <string name="close" msgid="3043722427445528732">"Cerrar"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Archivos que no se han copiado: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Archivos que no se han movido: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Archivos que no se han eliminado: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Estos archivos se han convertido a otro formato: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">Se han copiado <xliff:g id="COUNT_1">%1$d</xliff:g> archivos al portapapeles.</item>
-      <item quantity="one">Se ha copiado <xliff:g id="COUNT_0">%1$d</xliff:g> archivo al portapapeles.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Los archivos seleccionados no se pueden pegar en esta ubicación."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Cambiar nombre"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Error al cambiar el nombre del documento"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Expulsar"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Se han convertido algunos archivos"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"¿Permitir que <xliff:g id="APPNAME"><b>^1</b></xliff:g> acceda al directorio <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> (<xliff:g id="STORAGE"><i>^3</i></xliff:g>)?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"¿Permitir que <xliff:g id="APPNAME"><b>^1</b></xliff:g> acceda al directorio <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"¿Permitir que <xliff:g id="APPNAME"><b>^1</b></xliff:g> acceda a tus datos, incluidos los vídeos y las fotos, de <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"No volver a preguntar"</string>
-    <string name="allow" msgid="7225948811296386551">"Permitir"</string>
-    <string name="deny" msgid="2081879885755434506">"Denegar"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> seleccionados</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> seleccionado</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> elementos</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> elemento</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"¿Eliminar <xliff:g id="NAME">%1$s</xliff:g>?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"¿Eliminar la carpeta <xliff:g id="NAME">%1$s</xliff:g> y su contenido?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">¿Eliminar <xliff:g id="COUNT_1">%1$d</xliff:g> archivos?</item>
-      <item quantity="one">¿Eliminar <xliff:g id="COUNT_0">%1$d</xliff:g> archivo?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">¿Eliminar <xliff:g id="COUNT_1">%1$d</xliff:g> carpetas y su contenido?</item>
-      <item quantity="one">¿Eliminar <xliff:g id="COUNT_0">%1$d</xliff:g> carpeta y su contenido?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">¿Eliminar <xliff:g id="COUNT_1">%1$d</xliff:g> elementos?</item>
-      <item quantity="one">¿Eliminar <xliff:g id="COUNT_0">%1$d</xliff:g> elemento?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-et-rEE/strings.xml b/packages/DocumentsUI/res/values-et-rEE/strings.xml
deleted file mode 100644
index 91f9204..0000000
--- a/packages/DocumentsUI/res/values-et-rEE/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Failid"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Allalaadimised"</string>
-    <string name="title_open" msgid="4353228937663917801">"Ava asukohast:"</string>
-    <string name="title_save" msgid="2433679664882857999">"Salvesta:"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Uus kaust"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Ruudustikkuva"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Loendikuva"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Sortimisalus"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Otsing"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Salvestusruumi seaded"</string>
-    <string name="menu_open" msgid="432922957274920903">"Ava"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Salvesta"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Jaga"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Kustuta"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Vali kõik"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Kopeeri asukohta..."</string>
-    <string name="menu_move" msgid="1828090633118079817">"Teisalda asukohta..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Uus aken"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Lõika"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Kopeeri"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Kleebi"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Kuva sis. salvestusruum"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Peida sis. salvestusruum"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Kuva faili suurus"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Peida faili suurus"</string>
-    <string name="button_select" msgid="527196987259139214">"Vali"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Kopeeri"</string>
-    <string name="button_move" msgid="2202666023104202232">"Teisalda"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Loobu"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Proovi uuesti"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Nime järgi"</string>
-    <string name="sort_date" msgid="586080032956151448">"Muutmiskuupäeva järgi"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Suuruse järgi"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Kuva juured"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Peida juured"</string>
-    <string name="save_error" msgid="6167009778003223664">"Dokumendi salvestamine ebaõnnestus"</string>
-    <string name="create_error" msgid="3735649141335444215">"Kausta loomine ebaõnnestus"</string>
-    <string name="query_error" msgid="5999895349602476581">"Sisu ei saa praegu laadida"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Hiljutised"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> on vaba"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Mäluruumi teenused"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Otseteed"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Seadmed"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Rohkem rakendusi"</string>
-    <string name="empty" msgid="7858882803708117596">"Üksusi ei ole"</string>
-    <string name="no_results" msgid="6622510343880730446">"Otsing %1$s ei andnud vasteid"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Faili ei saa avada"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Mõnda dokumenti ei õnnestu kustutada"</string>
-    <string name="share_via" msgid="8966594246261344259">"Jagage teenusega"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Failide kopeerimine"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Failide teisaldamine"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Failide kustutamine"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Jäänud on <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> faili kopeerimine.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> faili kopeerimine.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">Teisaldatakse <xliff:g id="COUNT_1">%1$d</xliff:g> faili.</item>
-      <item quantity="one">Teisaldatakse <xliff:g id="COUNT_0">%1$d</xliff:g> fail.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">Kustutatakse <xliff:g id="COUNT_1">%1$d</xliff:g> faili.</item>
-      <item quantity="one">Kustutatakse <xliff:g id="COUNT_0">%1$d</xliff:g> fail.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Võta tagasi"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Kopeerimise ettevalmistamine …"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Teisaldamise ettevalmistamine …"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Kustutamise ettevalmistamine …"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> faili ei saanud kopeerida</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> faili ei saanud kopeerida</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> faili ei saanud teisaldada</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> faili ei saanud teisaldada</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> faili ei saanud kustutada</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> faili ei saanud kustutada</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Puudutage üksikasjade vaatamiseks"</string>
-    <string name="close" msgid="3043722427445528732">"Sule"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Neid faile ei kopeeritud: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Neid faile ei teisaldatud: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Neid faile ei kustutatud: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Need failid teisendati teise vormingusse: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> faili kopeeriti lõikelauale.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> fail kopeeriti lõikelauale.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Valitud faile ei saa sellesse asukohta kleepida."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Nimeta ümber"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Dokumendi ümbernimetamine ebaõnnestus"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Eemalda"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Mõned failid teisendati"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Kas anda rakendusele <xliff:g id="APPNAME"><b>^1</b></xliff:g> juurdepääs kataloogile <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> salvestusruumis <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Kas anda rakendusele <xliff:g id="APPNAME"><b>^1</b></xliff:g> juurdepääs kataloogile <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Kas anda rakendusele <xliff:g id="APPNAME"><b>^1</b></xliff:g> juurdepääs teie andmetele (sh fotod ja videod) salvestusruumis <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Ära enam küsi"</string>
-    <string name="allow" msgid="7225948811296386551">"Luba"</string>
-    <string name="deny" msgid="2081879885755434506">"Keela"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> on valitud</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> on valitud</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> üksust</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> üksus</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Kas kustutada fail „<xliff:g id="NAME">%1$s</xliff:g>”?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Kas kustutada kaust „<xliff:g id="NAME">%1$s</xliff:g>” ja selle sisu?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">Kas kustutada <xliff:g id="COUNT_1">%1$d</xliff:g> faili?</item>
-      <item quantity="one">Kas kustutada <xliff:g id="COUNT_0">%1$d</xliff:g> fail?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">Kas kustutada <xliff:g id="COUNT_1">%1$d</xliff:g> kausta ja nende sisu?</item>
-      <item quantity="one">Kas kustutada <xliff:g id="COUNT_0">%1$d</xliff:g> kaust ja selle sisu?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">Kas kustutada <xliff:g id="COUNT_1">%1$d</xliff:g> üksust?</item>
-      <item quantity="one">Kas kustutada <xliff:g id="COUNT_0">%1$d</xliff:g> üksus?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-eu-rES/strings.xml b/packages/DocumentsUI/res/values-eu-rES/strings.xml
deleted file mode 100644
index 34db965..0000000
--- a/packages/DocumentsUI/res/values-eu-rES/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Fitxategiak"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Deskargak"</string>
-    <string name="title_open" msgid="4353228937663917801">"Ireki hemendik"</string>
-    <string name="title_save" msgid="2433679664882857999">"Gorde hemen"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Karpeta berria"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Sareta-ikuspegia"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Zerrenda-ikuspegia"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Ordenatzeko irizpidea"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Bilatu"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Memoriaren ezarpenak"</string>
-    <string name="menu_open" msgid="432922957274920903">"Ireki"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Gorde"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Partekatu"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Ezabatu"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Hautatu guztiak"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Kopiatu hemen…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Eraman hona…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Leiho berria"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Ebaki"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Kopiatu"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Itsatsi"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Erakutsi barneko memoria"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Ezkutatu barneko memoria"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Erakutsi fitxategi-tamaina"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Ezkutatu fitxategi-tamaina"</string>
-    <string name="button_select" msgid="527196987259139214">"Hautatu"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Kopiatu"</string>
-    <string name="button_move" msgid="2202666023104202232">"Mugitu"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Baztertu"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Saiatu berriro"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Izenaren arabera"</string>
-    <string name="sort_date" msgid="586080032956151448">"Aldatze-dataren arabera"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Tamainaren arabera"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Erakutsi erroko karpetak"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Ezkutatu erroko karpetak"</string>
-    <string name="save_error" msgid="6167009778003223664">"Ezin izan da dokumentua gorde"</string>
-    <string name="create_error" msgid="3735649141335444215">"Ezin izan da karpeta sortu"</string>
-    <string name="query_error" msgid="5999895349602476581">"Une honetan ezin da kargatu edukia"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Azkenak"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> doan"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Biltegiratze-zerbitzuak"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Lasterbideak"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Gailuak"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Aplikazio gehiago"</string>
-    <string name="empty" msgid="7858882803708117596">"Ez dago elementurik"</string>
-    <string name="no_results" msgid="6622510343880730446">"Ez da aurkitu ezer %1$s atalean"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Ezin da ireki fitxategia"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Ezin izan dira dokumentu batzuk ezabatu"</string>
-    <string name="share_via" msgid="8966594246261344259">"Partekatu honen bidez:"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Fitxategiak kopiatzen"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Fitxategiak mugitzea"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Fitxategiak ezabatzea"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Falta den denbora: <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> fitxategi kopiatzen.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> fitxategi kopiatzen.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> fitxategi mugitzen.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> fitxategi mugitzen.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> fitxategi ezabatzen ari dira.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> fitxategi ezabatzen ari da.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Desegin"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Kopiatzeko prestatzen…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Mugitzeko prestatzen…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Ezabatzeko prestatzen…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">Ezin izan dira kopiatu <xliff:g id="COUNT_1">%1$d</xliff:g> fitxategi</item>
-      <item quantity="one">Ezin izan da kopiatu <xliff:g id="COUNT_0">%1$d</xliff:g> fitxategi</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">Ezin izan dira mugitu <xliff:g id="COUNT_1">%1$d</xliff:g> fitxategi</item>
-      <item quantity="one">Ezin izan da mugitu <xliff:g id="COUNT_0">%1$d</xliff:g> fitxategi</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">Ezin izan dira ezabatu <xliff:g id="COUNT_1">%1$d</xliff:g> fitxategi</item>
-      <item quantity="one">Ezin izan da ezabatu <xliff:g id="COUNT_0">%1$d</xliff:g> fitxategi</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Sakatu xehetasunak ikusteko"</string>
-    <string name="close" msgid="3043722427445528732">"Itxi"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Ez dira kopiatu fitxategi hauek: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Ez dira mugitu fitxategi hauek: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Ez dira ezabatu fitxategi hauek: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Fitxategi hauek beste formatu bateko fitxategi bihurtu dira: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> fitxategi kopiatu dira arbelean.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> fitxategi kopiatu da arbelean.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Ezin dira itsatsi hautatutako fitxategiak kokapen honetan."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Aldatu izena"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Ezin izan zaio aldatu izena dokumentuari"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Atera"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Artxibo batzuk bihurtu dira"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> aplikazioari <xliff:g id="STORAGE"><i>^3</i></xliff:g> unitateko <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> direktorioa atzitzeko baimena eman nahi diozu?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> aplikazioari <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> direktoriorako sarbidea eman nahi diozu?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> aplikazioari zure datuak atzitzea baimendu nahi diozu, besteak beste, <xliff:g id="STORAGE"><i>^2</i></xliff:g> biltegian dituzun argazkiak eta bideoak?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Ez galdetu berriro"</string>
-    <string name="allow" msgid="7225948811296386551">"Onartu"</string>
-    <string name="deny" msgid="2081879885755434506">"Ukatu"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> hautatuta</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> hautatuta</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> elementu</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> elementu</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"\"<xliff:g id="NAME">%1$s</xliff:g>\" ezabatu nahi duzu?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"\"<xliff:g id="NAME">%1$s</xliff:g>\" karpeta eta bertako edukia ezabatu nahi duzu?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> fitxategi ezabatu nahi dituzu?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> fitxategi ezabatu nahi duzu?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> karpeta eta beren eduki guztia ezabatu nahi duzu?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> karpeta eta bere eduki guztia ezabatu nahi duzu?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> elementu ezabatu nahi dituzu?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> elementu ezabatu nahi duzu?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-fa/strings.xml b/packages/DocumentsUI/res/values-fa/strings.xml
deleted file mode 100644
index 4db84b9..0000000
--- a/packages/DocumentsUI/res/values-fa/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Files"</string>
-    <string name="downloads_label" msgid="959113951084633612">"بارگیری‌ها"</string>
-    <string name="title_open" msgid="4353228937663917801">"باز کردن از"</string>
-    <string name="title_save" msgid="2433679664882857999">"ذخیره در"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"پوشه جدید"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"نمای جدولی"</string>
-    <string name="menu_list" msgid="7279285939892417279">"نمای فهرستی"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"مرتب‌سازی براساس"</string>
-    <string name="menu_search" msgid="3816712084502856974">"جستجو"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"تنظیمات ذخیره‌سازی"</string>
-    <string name="menu_open" msgid="432922957274920903">"باز کردن"</string>
-    <string name="menu_save" msgid="2394743337684426338">"ذخیره"</string>
-    <string name="menu_share" msgid="3075149983979628146">"اشتراک‌گذاری"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"حذف"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"انتخاب همه"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"کپی در..."</string>
-    <string name="menu_move" msgid="1828090633118079817">"انتقال به…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"پنجره جدید"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"برش"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"کپی"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"جای‌گذاری"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"نمایش فضای ذخیره‌سازی داخلی"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"پنهان کردن فضای ذخیره‌سازی داخلی"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"نمایش اندازه فایل"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"پنهان کردن اندازه فایل"</string>
-    <string name="button_select" msgid="527196987259139214">"انتخاب"</string>
-    <string name="button_copy" msgid="8706475544635021302">"کپی"</string>
-    <string name="button_move" msgid="2202666023104202232">"انتقال"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"نپذیرفتن"</string>
-    <string name="button_retry" msgid="4392027584153752797">"دوباره امتحان کنید"</string>
-    <string name="sort_name" msgid="9183560467917256779">"براساس نام"</string>
-    <string name="sort_date" msgid="586080032956151448">"براساس تاریخ اصلاح"</string>
-    <string name="sort_size" msgid="3350681319735474741">"براساس اندازه"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"نمایش ریشه‌ها"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"پنهان کردن ریشه‌ها"</string>
-    <string name="save_error" msgid="6167009778003223664">"ذخیره سند انجام نشد"</string>
-    <string name="create_error" msgid="3735649141335444215">"ایجاد پوشه انجام نشد"</string>
-    <string name="query_error" msgid="5999895349602476581">"محتوا درحال حاضر بارگیری نمی‌شود"</string>
-    <string name="root_recent" msgid="4470053704320518133">"اخیر"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> آزاد"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"خدمات ذخیره‌سازی"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"میان‌برها"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"دستگاه‌ها"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"برنامه‌های بیشتر"</string>
-    <string name="empty" msgid="7858882803708117596">"موردی موجود نیست"</string>
-    <string name="no_results" msgid="6622510343880730446">"‏مورد منطبقی در %1$s وجود ندارد"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"فایل باز نمی‌شود"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"برخی از اسناد حذف نمی‌شوند"</string>
-    <string name="share_via" msgid="8966594246261344259">"اشتراک‌گذاری از طریق"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"در حال کپی کردن فایل‌ها"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"درحال انتقال فایل‌ها"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"در حال حذف فایل‌ها"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> باقی‌مانده"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one">در حال کپی کردن <xliff:g id="COUNT_1">%1$d</xliff:g> فایل.</item>
-      <item quantity="other">در حال کپی کردن <xliff:g id="COUNT_1">%1$d</xliff:g> فایل.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one">در حال انتقال <xliff:g id="COUNT_1">%1$d</xliff:g> فایل.</item>
-      <item quantity="other">در حال انتقال <xliff:g id="COUNT_1">%1$d</xliff:g> فایل.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one">در حال حذف <xliff:g id="COUNT_1">%1$d</xliff:g> فایل.</item>
-      <item quantity="other">در حال حذف <xliff:g id="COUNT_1">%1$d</xliff:g> فایل.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"لغو"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"در حال آماده‌سازی برای کپی..."</string>
-    <string name="move_preparing" msgid="2772219441375531410">"درحال آماده‌سازی برای انتقال…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"درحال آماده‌سازی برای حذف…‏"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one"> <xliff:g id="COUNT_1">%1$d</xliff:g> فایل کپی نشد</item>
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> فایل کپی نشد</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one"> <xliff:g id="COUNT_1">%1$d</xliff:g> فایل منتقل نشد</item>
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> فایل منتقل نشد</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one"> <xliff:g id="COUNT_1">%1$d</xliff:g> فایل حذف نشد</item>
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> فایل حذف نشد</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"برای مشاهده جزئیات ضربه بزنید"</string>
-    <string name="close" msgid="3043722427445528732">"بستن"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"این فایل‌ها کپی نشدند: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"این فایل‌ها منتقل نشدند: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"این فایل‌ها حذف نشدند: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"این فایل‌ها به قالب دیگری تبدیل شدند: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> فایل در بریده‌دان کپی شد.</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> فایل در بریده‌دان کپی شد.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"نمی‌توان فایل‌های انتخابی را در این مکان جای‌گذاری کرد."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"تغییر نام"</string>
-    <string name="rename_error" msgid="4203041674883412606">"نام سند تغییر نکرد"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"بیرون راندن"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"بعضی از فایل‌ها تبدیل شدند"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"به <xliff:g id="APPNAME"><b>^1</b></xliff:g> اجازه داده شود به فهرست راهنمای <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> در <xliff:g id="STORAGE"><i>^3</i></xliff:g> دسترسی داشته باشد؟"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"به <xliff:g id="APPNAME"><b>^1</b></xliff:g> اجازه دسترسی به دایرکتوری <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> داده شود؟"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"به <xliff:g id="APPNAME"><b>^1</b></xliff:g> اجازه می‌دهید به داده‌هایتان دسترسی پیدا کند، از جمله عکس‌ها و ویدیوهایتان در <xliff:g id="STORAGE"><i>^2</i></xliff:g>؟"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"دوباره سؤال نشود"</string>
-    <string name="allow" msgid="7225948811296386551">"ارزیابی‌شده"</string>
-    <string name="deny" msgid="2081879885755434506">"اجازه ندارد"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one">‏<xliff:g id="COUNT_1">%1$d</xliff:g> مورد انتخاب شد</item>
-      <item quantity="other">‏<xliff:g id="COUNT_1">%1$d</xliff:g> مورد انتخاب شد</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> مورد</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> مورد</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"«<xliff:g id="NAME">%1$s</xliff:g>» حذف شود؟"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"پوشه «<xliff:g id="NAME">%1$s</xliff:g>» و محتوای آن حذف شود؟"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> فایل حذف شود؟</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> فایل حذف شود؟</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one"> <xliff:g id="COUNT_1">%1$d</xliff:g> پوشه و محتوای آن‌ها حذف شود؟</item>
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> پوشه و محتوای آن‌ها حذف شود؟</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> مورد حذف شود؟</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> مورد حذف شود؟</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-fi/strings.xml b/packages/DocumentsUI/res/values-fi/strings.xml
deleted file mode 100644
index d1d0032..0000000
--- a/packages/DocumentsUI/res/values-fi/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Tiedostot"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Lataukset"</string>
-    <string name="title_open" msgid="4353228937663917801">"Avaa sijainnista"</string>
-    <string name="title_save" msgid="2433679664882857999">"Tallenna kohteeseen"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Uusi kansio"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Ruudukkonäkymä"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Luettelonäkymä"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Lajitteluperuste"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Haku"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Tallennusasetukset"</string>
-    <string name="menu_open" msgid="432922957274920903">"Avaa"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Tallenna"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Jaa"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Poista"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Valitse kaikki"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Kopioi kohteeseen…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Siirrä kohteeseen…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Uusi ikkuna"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Leikkaa"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Kopioi"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Liitä"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Näytä sis. tallennustila"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Piilota sis. tallennust."</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Näytä tiedostokoko"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Piilota tiedostokoko"</string>
-    <string name="button_select" msgid="527196987259139214">"Valitse"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Kopioi"</string>
-    <string name="button_move" msgid="2202666023104202232">"Siirrä"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Hylkää"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Yritä uudelleen"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Nimen mukaan"</string>
-    <string name="sort_date" msgid="586080032956151448">"Muokkauspäivän mukaan"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Koon mukaan"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Näytä juuret"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Piilota juuret"</string>
-    <string name="save_error" msgid="6167009778003223664">"Asiakirjan tallennus epäonnistui"</string>
-    <string name="create_error" msgid="3735649141335444215">"Kansion luominen epäonnistui"</string>
-    <string name="query_error" msgid="5999895349602476581">"Sisältöä ei juuri nyt voi ladata."</string>
-    <string name="root_recent" msgid="4470053704320518133">"Viimeisimmät"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> vapaana"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Tallennuspalvelut"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Pikakuvakkeet"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Laitteet"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Lisää sovelluksia"</string>
-    <string name="empty" msgid="7858882803708117596">"Ei kohteita"</string>
-    <string name="no_results" msgid="6622510343880730446">"Ei osumia kohteessa %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Tiedoston avaaminen epäonnistui."</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Joitakin asiakirjoja ei voi poistaa"</string>
-    <string name="share_via" msgid="8966594246261344259">"Jaa sovelluksessa"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Kopioidaan tiedostoja"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Siirretään tiedostoja"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Poistetaan tiedostoja"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> jäljellä"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">Kopioidaan <xliff:g id="COUNT_1">%1$d</xliff:g> tiedostoa.</item>
-      <item quantity="one">Kopioidaan <xliff:g id="COUNT_0">%1$d</xliff:g> tiedosto.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">Siirretään <xliff:g id="COUNT_1">%1$d</xliff:g> tiedostoa.</item>
-      <item quantity="one">Siirretään <xliff:g id="COUNT_0">%1$d</xliff:g> tiedosto.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">Poistetaan <xliff:g id="COUNT_1">%1$d</xliff:g> tiedostoa.</item>
-      <item quantity="one">Poistetaan <xliff:g id="COUNT_0">%1$d</xliff:g> tiedosto.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Kumoa"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Valmistellaan kopiointia…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Valmistellaan siirtämistä…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Valmistellaan poistamista…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> tiedoston kopioiminen epäonnistui.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> tiedoston kopioiminen epäonnistui.</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> tiedoston siirtäminen epäonnistui.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> tiedoston siirtäminen epäonnistui.</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> tiedoston poistaminen epäonnistui.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> tiedoston poistaminen epäonnistui.</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Tarkastele tietoja napauttamalla"</string>
-    <string name="close" msgid="3043722427445528732">"Sulje"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Näitä tiedostoja ei kopioitu: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Näitä tiedostoja ei siirretty: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Näitä tiedostoja ei poistettu: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Seuraavat tiedostot muunnettiin toiseen muotoon: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> tiedostoa kopioitiin leikepöydälle.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> tiedosto kopioitiin leikepöydälle.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Valittuja tiedostoja ei voi liittää tähän sijaintiin."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Nimeä uudelleen"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Dokumentin nimen muuttaminen epäonnistui."</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Poista"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Joitakin tiedostoja muunnettiin."</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Myönnetäänkö sovellukselle <xliff:g id="APPNAME"><b>^1</b></xliff:g> sijainnissa <xliff:g id="STORAGE"><i>^3</i></xliff:g> olevan hakemiston <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> käyttöoikeus?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Saako <xliff:g id="APPNAME"><b>^1</b></xliff:g> käyttää hakemistoa <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Myönnetäänkö sovellukselle <xliff:g id="APPNAME"><b>^1</b></xliff:g> sijainnissa <xliff:g id="STORAGE"><i>^2</i></xliff:g> olevien tietojesi, mukaan lukien valokuviesi ja videoidesi, käyttöoikeus?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Älä kysy uudestaan"</string>
-    <string name="allow" msgid="7225948811296386551">"Salli"</string>
-    <string name="deny" msgid="2081879885755434506">"Kiellä"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> valittu</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> valittu</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> kohdetta</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> kohde</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Poistetaanko <xliff:g id="NAME">%1$s</xliff:g>?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Poistetaanko kansio <xliff:g id="NAME">%1$s</xliff:g> ja sen sisältö?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">Poistetaanko <xliff:g id="COUNT_1">%1$d</xliff:g> tiedostoa?</item>
-      <item quantity="one">Poistetaanko <xliff:g id="COUNT_0">%1$d</xliff:g> tiedosto?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">Poistetaanko <xliff:g id="COUNT_1">%1$d</xliff:g> kansiota ja niiden sisältö?</item>
-      <item quantity="one">Poistetaanko <xliff:g id="COUNT_0">%1$d</xliff:g> kansio ja sen sisältö?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">Poistetaanko <xliff:g id="COUNT_1">%1$d</xliff:g> kohdetta?</item>
-      <item quantity="one">Poistetaanko <xliff:g id="COUNT_0">%1$d</xliff:g> kohde?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-fr-rCA/strings.xml b/packages/DocumentsUI/res/values-fr-rCA/strings.xml
deleted file mode 100644
index ae76565..0000000
--- a/packages/DocumentsUI/res/values-fr-rCA/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Fichiers"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Téléchargements"</string>
-    <string name="title_open" msgid="4353228937663917801">"Ouvrir à partir de"</string>
-    <string name="title_save" msgid="2433679664882857999">"Enregistrer dans"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Nouveau dossier"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Grille"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Liste"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Trier par"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Rechercher"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Paramètres de stockage"</string>
-    <string name="menu_open" msgid="432922957274920903">"Ouvrir"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Enregistrer"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Partager"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Supprimer"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Tout sélectionner"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Copier dans..."</string>
-    <string name="menu_move" msgid="1828090633118079817">"Déplacer dans…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Nouvelle fenêtre"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Couper"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Copier"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Coller"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Aff. mém. stock. interne"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Masquer mém. stock. int."</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Afficher taille fichier"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Masquer taille fichier"</string>
-    <string name="button_select" msgid="527196987259139214">"Sélectionner"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Copier"</string>
-    <string name="button_move" msgid="2202666023104202232">"Déplacer"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Faire disparaître"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Réessayer"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Par nom"</string>
-    <string name="sort_date" msgid="586080032956151448">"Par date de modification"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Par taille"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Afficher les racines"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Masquer les racines"</string>
-    <string name="save_error" msgid="6167009778003223664">"Échec de l\'enregistrement du document"</string>
-    <string name="create_error" msgid="3735649141335444215">"Échec de la création du dossier"</string>
-    <string name="query_error" msgid="5999895349602476581">"Impossible de charger le contenu pour le moment"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Récents"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> disponible"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Services de stockage"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Raccourcis"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Appareils"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Plus d\'applications"</string>
-    <string name="empty" msgid="7858882803708117596">"Aucun élément"</string>
-    <string name="no_results" msgid="6622510343880730446">"Aucune correspondance dans %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Impossible d\'ouvrir le fichier"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Impossible de supprimer certains documents"</string>
-    <string name="share_via" msgid="8966594246261344259">"Partager par"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Copie de fichiers..."</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Déplacement des fichiers"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Suppression des fichiers"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Durée restante : <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one">Copier de <xliff:g id="COUNT_1">%1$d</xliff:g> fichier en cours.</item>
-      <item quantity="other">Copier de <xliff:g id="COUNT_1">%1$d</xliff:g> fichiers en cours.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one">Déplacement de <xliff:g id="COUNT_1">%1$d</xliff:g> fichier en cours.</item>
-      <item quantity="other">Déplacement de <xliff:g id="COUNT_1">%1$d</xliff:g> fichiers en cours.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one">Suppression de <xliff:g id="COUNT_1">%1$d</xliff:g> fichier.</item>
-      <item quantity="other">Suppression de <xliff:g id="COUNT_1">%1$d</xliff:g> fichiers.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Annuler"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Préparation de la copie en cours"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Préparation du déplacement..."</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Préparation de la suppression..."</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> sur <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one">Impossible de copier <xliff:g id="COUNT_1">%1$d</xliff:g> fichier</item>
-      <item quantity="other">Impossible de copier <xliff:g id="COUNT_1">%1$d</xliff:g> fichiers</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one">Impossible de déplacer <xliff:g id="COUNT_1">%1$d</xliff:g> fichier</item>
-      <item quantity="other">Impossible de déplacer <xliff:g id="COUNT_1">%1$d</xliff:g> fichiers</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one">Impossible de supprimer <xliff:g id="COUNT_1">%1$d</xliff:g> dossier</item>
-      <item quantity="other">Impossible de supprimer <xliff:g id="COUNT_1">%1$d</xliff:g> dossiers</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Touchez pour afficher les détails"</string>
-    <string name="close" msgid="3043722427445528732">"Fermer"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Ces fichiers ne ont pas été copiés : <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Ces fichiers n\'ont pas été déplacés : <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Ces fichiers n\'ont pas été supprimés : <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Ces fichiers ont été convertis dans un autre format : <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> fichier a été copié dans le presse-papiers.</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> fichiers ont été copiés dans le presse-papiers.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Impossible de coller les fichiers sélectionnés à cet endroit."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Renommer"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Impossible de renommer le document"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Éjecter"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Certains fichiers ont été convertis"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Accorder à <xliff:g id="APPNAME"><b>^1</b></xliff:g> l\'accès au répertoire <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> sur <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Accorder à <xliff:g id="APPNAME"><b>^1</b></xliff:g> l\'accès au répertoire <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Voulez-vous accorder l\'accès à vos données à <xliff:g id="APPNAME"><b>^1</b></xliff:g>, y compris vos photos et vos vidéos, sur <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Ne plus me demander"</string>
-    <string name="allow" msgid="7225948811296386551">"Autoriser"</string>
-    <string name="deny" msgid="2081879885755434506">"Refuser"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> sélectionné</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> sélectionnés</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> article</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> articles</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Supprimer « <xliff:g id="NAME">%1$s</xliff:g> »?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Supprimer le dossier «  <xliff:g id="NAME">%1$s</xliff:g> » et son contenu?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one">Supprimer <xliff:g id="COUNT_1">%1$d</xliff:g> fichier?</item>
-      <item quantity="other">Supprimer <xliff:g id="COUNT_1">%1$d</xliff:g> fichiers?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one">Supprimer <xliff:g id="COUNT_1">%1$d</xliff:g> dossier et son contenu?</item>
-      <item quantity="other">Supprimer <xliff:g id="COUNT_1">%1$d</xliff:g> dossiers et leur contenu?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one">Supprimer <xliff:g id="COUNT_1">%1$d</xliff:g> élément?</item>
-      <item quantity="other">Supprimer <xliff:g id="COUNT_1">%1$d</xliff:g> éléments?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-fr/strings.xml b/packages/DocumentsUI/res/values-fr/strings.xml
deleted file mode 100644
index 5f45aae..0000000
--- a/packages/DocumentsUI/res/values-fr/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Fichiers"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Téléchargements"</string>
-    <string name="title_open" msgid="4353228937663917801">"Ouvrir à partir de"</string>
-    <string name="title_save" msgid="2433679664882857999">"Enregistrer sous"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Nouveau dossier"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Grille"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Liste"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Trier par"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Rechercher"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Paramètres de stockage"</string>
-    <string name="menu_open" msgid="432922957274920903">"Ouvrir"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Enregistrer"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Partager"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Supprimer"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Tout sélectionner"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Copier vers…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Placer dans…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Nouvelle fenêtre"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Couper"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Copier"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Coller"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Aff. mém. stock. interne"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Masquer mém. stock. int."</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Afficher taille fichier"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Masquer taille fichier"</string>
-    <string name="button_select" msgid="527196987259139214">"Sélectionner"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Copier"</string>
-    <string name="button_move" msgid="2202666023104202232">"Déplacer"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Fermer"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Réessayer"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Par nom"</string>
-    <string name="sort_date" msgid="586080032956151448">"Par date de modification"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Par taille"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Afficher les répertoires racines"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Masquer les répertoires racines"</string>
-    <string name="save_error" msgid="6167009778003223664">"Échec de l\'enregistrement du document."</string>
-    <string name="create_error" msgid="3735649141335444215">"Échec de la création du dossier."</string>
-    <string name="query_error" msgid="5999895349602476581">"Impossible de charger le contenu pour le moment"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Récents"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"Espace disponible : <xliff:g id="SIZE">%1$s</xliff:g>"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Services de stockage"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Raccourcis"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Appareils"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Autres applications"</string>
-    <string name="empty" msgid="7858882803708117596">"Aucun élément"</string>
-    <string name="no_results" msgid="6622510343880730446">"Aucune correspondance dans %1$s."</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Impossible d\'ouvrir le fichier"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Impossible de supprimer certains documents."</string>
-    <string name="share_via" msgid="8966594246261344259">"Partager via"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Copie de fichiers en cours"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Déplacement de fichiers"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Suppression des fichiers…"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Temps restant : <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one">Copie de <xliff:g id="COUNT_1">%1$d</xliff:g> fichier en cours…</item>
-      <item quantity="other">Copie de <xliff:g id="COUNT_1">%1$d</xliff:g> fichiers en cours…</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one">Déplacement de <xliff:g id="COUNT_1">%1$d</xliff:g> fichier en cours…</item>
-      <item quantity="other">Déplacement de <xliff:g id="COUNT_1">%1$d</xliff:g> fichiers en cours…</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one">Suppression de <xliff:g id="COUNT_1">%1$d</xliff:g> fichier en cours…</item>
-      <item quantity="other">Suppression de <xliff:g id="COUNT_1">%1$d</xliff:g> fichiers en cours…</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Annuler"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Préparation de la copie en cours…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Préparation au déplacement…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Préparation à la suppression…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one">Impossible de copier <xliff:g id="COUNT_1">%1$d</xliff:g> fichier</item>
-      <item quantity="other">Impossible de copier <xliff:g id="COUNT_1">%1$d</xliff:g> fichiers</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one">Impossible de déplacer <xliff:g id="COUNT_1">%1$d</xliff:g> fichier</item>
-      <item quantity="other">Impossible de déplacer <xliff:g id="COUNT_1">%1$d</xliff:g> fichiers</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one">Impossible de supprimer <xliff:g id="COUNT_1">%1$d</xliff:g> fichier</item>
-      <item quantity="other">Impossible de supprimer <xliff:g id="COUNT_1">%1$d</xliff:g> fichiers</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Appuyez pour afficher plus d\'informations."</string>
-    <string name="close" msgid="3043722427445528732">"Fermer"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Les fichiers suivants n\'ont pas été copiés : <xliff:g id="LIST">%1$s</xliff:g>."</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Les fichiers suivants n\'ont pas été déplacés : <xliff:g id="LIST">%1$s</xliff:g>."</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Les fichiers suivants n\'ont pas été supprimés : <xliff:g id="LIST">%1$s</xliff:g>."</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Ces fichiers ont été convertis dans un autre format : <xliff:g id="LIST">%1$s</xliff:g>."</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> fichier a bien été copié dans le Presse-papiers.</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> fichiers ont bien été copiés dans le Presse-papiers.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Impossible de coller les fichiers sélectionnés à cet endroit."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Renommer"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Échec du changement de nom du document."</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Éjecter"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Certains fichiers ont été convertis"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Autoriser <xliff:g id="APPNAME"><b>^1</b></xliff:g> à accéder à l\'annuaire \"<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>\" sur <xliff:g id="STORAGE"><i>^3</i></xliff:g> ?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Autoriser <xliff:g id="APPNAME"><b>^1</b></xliff:g> à accéder à l\'annuaire \"<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>\" ?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Autoriser <xliff:g id="APPNAME"><b>^1</b></xliff:g> à accéder à vos données, y compris les photos et les vidéos, sur <xliff:g id="STORAGE"><i>^2</i></xliff:g> ?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Ne plus demander"</string>
-    <string name="allow" msgid="7225948811296386551">"Autoriser"</string>
-    <string name="deny" msgid="2081879885755434506">"Refuser"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> élément sélectionné</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> éléments sélectionnés</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> élément</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> éléments</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Supprimer \"<xliff:g id="NAME">%1$s</xliff:g>\" ?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Supprimer le dossier \"<xliff:g id="NAME">%1$s</xliff:g>\" et son contenu ?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one">Supprimer <xliff:g id="COUNT_1">%1$d</xliff:g> fichier ?</item>
-      <item quantity="other">Supprimer <xliff:g id="COUNT_1">%1$d</xliff:g> fichiers ?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one">Supprimer <xliff:g id="COUNT_1">%1$d</xliff:g> dossier et son contenu ?</item>
-      <item quantity="other">Supprimer <xliff:g id="COUNT_1">%1$d</xliff:g> dossiers et leur contenu ?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one">Supprimer <xliff:g id="COUNT_1">%1$d</xliff:g> élément ?</item>
-      <item quantity="other">Supprimer <xliff:g id="COUNT_1">%1$d</xliff:g> éléments ?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-gl-rES/strings.xml b/packages/DocumentsUI/res/values-gl-rES/strings.xml
deleted file mode 100644
index 46a5fb0..0000000
--- a/packages/DocumentsUI/res/values-gl-rES/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Ficheiros"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Descargas"</string>
-    <string name="title_open" msgid="4353228937663917801">"Abrir desde"</string>
-    <string name="title_save" msgid="2433679664882857999">"Gardar en"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Novo cartafol"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Vista de grade"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Vista de lista"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Ordenar por"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Buscar"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Configur. almacenamento"</string>
-    <string name="menu_open" msgid="432922957274920903">"Abrir"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Gardar"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Compartir"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Eliminar"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Seleccionar todo"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Copiar en…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Mover a…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Nova ventá"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Cortar"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Copiar"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Pegar"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Mostrar almacen. interno"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Ocultar almacen. interno"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Mostrar tamaño ficheiro"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Ocultar tamaño ficheiro"</string>
-    <string name="button_select" msgid="527196987259139214">"Seleccionar"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Copiar"</string>
-    <string name="button_move" msgid="2202666023104202232">"Mover"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Ignorar"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Tentar de novo"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Por nome"</string>
-    <string name="sort_date" msgid="586080032956151448">"Por data de modificación"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Por tamaño"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Mostrar raíces"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Ocultar raíces"</string>
-    <string name="save_error" msgid="6167009778003223664">"Non se puido gardar o documento"</string>
-    <string name="create_error" msgid="3735649141335444215">"Non se puido crear o cartafol"</string>
-    <string name="query_error" msgid="5999895349602476581">"Non se pode cargar o contido neste momento"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Recentes"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> libres"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Servizos de almacenamento"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Atallos"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Dispositivos"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Máis aplicacións"</string>
-    <string name="empty" msgid="7858882803708117596">"Ningún elemento"</string>
-    <string name="no_results" msgid="6622510343880730446">"Non hai coincidencias en %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Non se pode abrir o ficheiro"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Non se poden eliminar algúns documentos"</string>
-    <string name="share_via" msgid="8966594246261344259">"Compartir a través de"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Copiando ficheiros"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Mover ficheiros"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Eliminando ficheiros"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Tempo restante: <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">Copiando <xliff:g id="COUNT_1">%1$d</xliff:g> ficheiros.</item>
-      <item quantity="one">Copianto <xliff:g id="COUNT_0">%1$d</xliff:g> ficheiro.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">Movendo <xliff:g id="COUNT_1">%1$d</xliff:g> ficheiros.</item>
-      <item quantity="one">Movendo <xliff:g id="COUNT_0">%1$d</xliff:g> ficheiro.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">Eliminando <xliff:g id="COUNT_1">%1$d</xliff:g> ficheiros.</item>
-      <item quantity="one">Eliminando <xliff:g id="COUNT_0">%1$d</xliff:g> ficheiro.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Desfacer"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Preparando para copiar…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Preparándose para mover..."</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Preparando para eliminar…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">Non se puideron copiar <xliff:g id="COUNT_1">%1$d</xliff:g> ficheiros</item>
-      <item quantity="one">Non se puido copiar <xliff:g id="COUNT_0">%1$d</xliff:g> ficheiro</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">Non se puideron mover <xliff:g id="COUNT_1">%1$d</xliff:g> ficheiros</item>
-      <item quantity="one">Non se puido mover <xliff:g id="COUNT_0">%1$d</xliff:g> ficheiro</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">Non se puideron eliminar <xliff:g id="COUNT_1">%1$d</xliff:g> ficheiros</item>
-      <item quantity="one">Non se puido eliminar <xliff:g id="COUNT_0">%1$d</xliff:g> ficheiro</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Toca para ver detalles"</string>
-    <string name="close" msgid="3043722427445528732">"Pechar"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Non se copiaron estes ficheiros: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Non se moveron estes ficheiros: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Non se eliminaron estes ficheiros: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Estes ficheiros convertéronse a outro formato: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">Copiáronse <xliff:g id="COUNT_1">%1$d</xliff:g> ficheiros no portapapeis.</item>
-      <item quantity="one">Copiouse <xliff:g id="COUNT_0">%1$d</xliff:g> ficheiro no portapapeis.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Non se poden pegar os ficheiros seleccionados nesta localización."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Cambiar nome"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Non se puido cambiar o nome do documento"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Expulsar"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Convertéronse algúns ficheiros"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Queres outorgar acceso a <xliff:g id="APPNAME"><b>^1</b></xliff:g> ao directorio <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> no almacenamento de <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Queres darlle acceso a <xliff:g id="APPNAME"><b>^1</b></xliff:g> ao directorio <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Queres darlle acceso a <xliff:g id="APPNAME"><b>^1</b></xliff:g> aos teus datos almacenados en <xliff:g id="STORAGE"><i>^2</i></xliff:g>, incluídos vídeos e fotos?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Non preguntar de novo"</string>
-    <string name="allow" msgid="7225948811296386551">"Permitir"</string>
-    <string name="deny" msgid="2081879885755434506">"Rexeitar"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other">Seleccionáronse <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="one">Seleccionouse <xliff:g id="COUNT_0">%1$d</xliff:g></item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> elementos</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> elemento</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Queres eliminar \"<xliff:g id="NAME">%1$s</xliff:g>\"?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Queres eliminar o cartafol \"<xliff:g id="NAME">%1$s</xliff:g>\" e o seu contido?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">Queres eliminar <xliff:g id="COUNT_1">%1$d</xliff:g> ficheiros?</item>
-      <item quantity="one">Queres eliminar <xliff:g id="COUNT_0">%1$d</xliff:g> ficheiro?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">Queres eliminar <xliff:g id="COUNT_1">%1$d</xliff:g> cartafoles e os seus contidos?</item>
-      <item quantity="one">Queres eliminar <xliff:g id="COUNT_0">%1$d</xliff:g> cartafol e os seus contidos?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">Queres eliminar <xliff:g id="COUNT_1">%1$d</xliff:g> elementos?</item>
-      <item quantity="one">Queres eliminar <xliff:g id="COUNT_0">%1$d</xliff:g> elemento?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-gu-rIN/strings.xml b/packages/DocumentsUI/res/values-gu-rIN/strings.xml
deleted file mode 100644
index 974d1f2..0000000
--- a/packages/DocumentsUI/res/values-gu-rIN/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"ફાઇલો"</string>
-    <string name="downloads_label" msgid="959113951084633612">"ડાઉનલોડ્સ"</string>
-    <string name="title_open" msgid="4353228937663917801">"અહીંથી ખોલો"</string>
-    <string name="title_save" msgid="2433679664882857999">"આમાં સાચવો"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"નવું ફોલ્ડર"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"ગ્રિડ દૃશ્ય"</string>
-    <string name="menu_list" msgid="7279285939892417279">"સૂચિ દૃશ્ય"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"આ પ્રમાણે સૉર્ટ કરો"</string>
-    <string name="menu_search" msgid="3816712084502856974">"શોધો"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"સ્ટોરેજ સેટિંગ્સ"</string>
-    <string name="menu_open" msgid="432922957274920903">"ખોલો"</string>
-    <string name="menu_save" msgid="2394743337684426338">"સાચવો"</string>
-    <string name="menu_share" msgid="3075149983979628146">"શેર કરો"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"કાઢી નાખો"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"બધા પસંદ કરો"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"આના પર કૉપિ કરો…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"આમાં ખસેડો…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"નવી વિંડો"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"કાપો"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"કૉપિ કરો"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"પેસ્ટ કરો"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"આંતરિક સ્ટોરેજ બતાવો"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"આંતરિક સંગ્રહ છુપાવો"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"ફાઇલ કદ બતાવો"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"ફાઇલ કદ છુપાવો"</string>
-    <string name="button_select" msgid="527196987259139214">"પસંદ કરો"</string>
-    <string name="button_copy" msgid="8706475544635021302">"કૉપિ કરો"</string>
-    <string name="button_move" msgid="2202666023104202232">"ખસેડો"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"છોડી દો"</string>
-    <string name="button_retry" msgid="4392027584153752797">"ફરીથી પ્રયત્ન કરો"</string>
-    <string name="sort_name" msgid="9183560467917256779">"નામ દ્વારા"</string>
-    <string name="sort_date" msgid="586080032956151448">"સંશોધન તારીખ દ્વારા"</string>
-    <string name="sort_size" msgid="3350681319735474741">"કદ દ્વારા"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"રૂટ્સ બતાવો"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"રૂટ્સ છુપાવો"</string>
-    <string name="save_error" msgid="6167009778003223664">"દસ્તાવેજ સાચવવામાં નિષ્ફળ થયાં."</string>
-    <string name="create_error" msgid="3735649141335444215">"ફોલ્ડર બનાવવામાં નિષ્ફળ થયા"</string>
-    <string name="query_error" msgid="5999895349602476581">"આ પળે સામગ્રી લોડ કરી શકતાં નથી"</string>
-    <string name="root_recent" msgid="4470053704320518133">"તાજેતરના"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> ખાલી"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"સંગ્રહ સેવાઓ"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"શોર્ટકટ્સ"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"ઉપકરણો"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"વધુ ઍપ્લિકેશનો"</string>
-    <string name="empty" msgid="7858882803708117596">"કોઈ આઇટમ્સ નથી"</string>
-    <string name="no_results" msgid="6622510343880730446">"%1$s માં કોઇ મેળ નથી"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"ફાઇલ ખોલી શકતાં નથી"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"કેટલાક દસ્તાવેજો કાઢી નાખવામાં અસમર્થ"</string>
-    <string name="share_via" msgid="8966594246261344259">"આના દ્વારા શેર કરો"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"ફાઇલો કૉપિ કરી રહ્યાં છે"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"ફાઇલો ખસેડી રહ્યાં છે"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"ફાઇલને નીકાળી રહ્યાં છે"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> બાકી"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ફાઇલો કૉપિ કરી રહ્યાં છે.</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ફાઇલો કૉપિ કરી રહ્યાં છે.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ફાઇલો ખસેડી રહ્યાં છે.</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ફાઇલો ખસેડી રહ્યાં છે.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ફાઇલ કાઢી નાખી રહ્યાં છે.</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ફાઇલ કાઢી નાખી રહ્યાં છે.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"પૂર્વવત્ કરો"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"કૉપિ માટે તૈયારી કરી રહ્યું છે…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"ખસેડવા માટે તૈયાર કરી રહ્યું છે…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"કાઢી નાખવાની તૈયારી કરી રહ્યાં છે…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ફાઇલ કૉપિ કરી શક્યાં નથી</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ફાઇલ કૉપિ કરી શક્યાં નથી</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ફાઇલ ખસેડી શક્યાં નથી</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ફાઇલ ખસેડી શક્યાં નથી</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ફાઇલ કાઢી નાખી શક્યાં નથી</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ફાઇલ કાઢી નાખી શક્યાં નથી</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"વિગતો જોવા માટે ટૅપ કરો"</string>
-    <string name="close" msgid="3043722427445528732">"બંધ કરો"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"આ ફાઇલો કૉપિ કરી નહોતી: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"આ ફાઇલો ખસેડી નહોતી: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"આ ફાઇલો કાઢી નાખી નહોતી: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"આ ફાઇલો બીજા ફોર્મેટમાં રૂપાંતરિત કરી હતી: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one">ક્લિપબોર્ડ પર <xliff:g id="COUNT_1">%1$d</xliff:g> ફાઇલો કૉપિ કરી.</item>
-      <item quantity="other">ક્લિપબોર્ડ પર <xliff:g id="COUNT_1">%1$d</xliff:g> ફાઇલો કૉપિ કરી.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"આ સ્થાનમાં પસંદ કરેલ ફાઇલો પેસ્ટ કરી શકાતી નથી."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"નામ બદલો"</string>
-    <string name="rename_error" msgid="4203041674883412606">"દસ્તાવેજનું નામ બદલવામાં નિષ્ફળ થયાં"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"બહાર કાઢો"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"કેટલીક ફાઇલો રૂપાંતરિત કરી હતી"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> ને <xliff:g id="STORAGE"><i>^3</i></xliff:g> પર <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> નિર્દેશિકાની ઍક્સેસ આપીએ?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> ને <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> નિર્દેશિકાની ઍક્સેસ આપીએ?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> ને <xliff:g id="STORAGE"><i>^2</i></xliff:g> પર ફોટા અને વિડિઓઝ સહિત તમારા ડેટાની અ‍ૅક્સેસ આપીએ?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"ફરીથી પૂછશો નહીં"</string>
-    <string name="allow" msgid="7225948811296386551">"મંજૂરી આપો"</string>
-    <string name="deny" msgid="2081879885755434506">"નકારો"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> પસંદ કરી</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> પસંદ કરી</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> આઇટમ</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> આઇટમ</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"\"<xliff:g id="NAME">%1$s</xliff:g>\" ને કાઢી નાખીએ?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"\"<xliff:g id="NAME">%1$s</xliff:g>\" ફોલ્ડર અને તેની સામગ્રીઓને કાઢી નાખીએ?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ફાઇલ કાઢી નાખીએ?</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ફાઇલ કાઢી નાખીએ?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ફોલ્ડર અને તેમની સામગ્રીઓ કાઢી નાખીએ?</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ફોલ્ડર અને તેમની સામગ્રીઓ કાઢી નાખીએ?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> આઇટમ કાઢી નાખીએ?</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> આઇટમ કાઢી નાખીએ?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-hi/strings.xml b/packages/DocumentsUI/res/values-hi/strings.xml
deleted file mode 100644
index ff0faed..0000000
--- a/packages/DocumentsUI/res/values-hi/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"फ़ाइल"</string>
-    <string name="downloads_label" msgid="959113951084633612">"डाउनलोड"</string>
-    <string name="title_open" msgid="4353228937663917801">"यहां से खोलें"</string>
-    <string name="title_save" msgid="2433679664882857999">"यहां सहेजें"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"नया फ़ोल्डर"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"ग्रिड दृश्य"</string>
-    <string name="menu_list" msgid="7279285939892417279">"सूची दृश्य"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"इससे क्रमित करें"</string>
-    <string name="menu_search" msgid="3816712084502856974">"खोजें"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"मेमोरी सेटिंग"</string>
-    <string name="menu_open" msgid="432922957274920903">"खोलें"</string>
-    <string name="menu_save" msgid="2394743337684426338">"जोड़ें"</string>
-    <string name="menu_share" msgid="3075149983979628146">"साझा करें"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"हटाएं"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"सभी चुनें"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"इनकी कॉपी बनाएं..."</string>
-    <string name="menu_move" msgid="1828090633118079817">"इसमें ले जाएं…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"नई विंडो"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"काटें"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"कॉपी करें"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"चिपकाएं"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"आंतरिक मेमोरी दिखाएं"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"आंतरिक मेमोरी छिपाएं"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"फ़ाइल आकार दिखाएं"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"फ़ाइल आकार छिपाएं"</string>
-    <string name="button_select" msgid="527196987259139214">"चुनें"</string>
-    <string name="button_copy" msgid="8706475544635021302">"कॉपी करें"</string>
-    <string name="button_move" msgid="2202666023104202232">"ले जाएं"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"ख़ारिज करें"</string>
-    <string name="button_retry" msgid="4392027584153752797">"पुनः प्रयास करें"</string>
-    <string name="sort_name" msgid="9183560467917256779">"नाम के अनुसार"</string>
-    <string name="sort_date" msgid="586080032956151448">"बदलाव के दिनांक के अनुसार"</string>
-    <string name="sort_size" msgid="3350681319735474741">"आकार के अनुसार"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"रूट दिखाएं"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"रूट छिपाएं"</string>
-    <string name="save_error" msgid="6167009778003223664">"दस्तावेज़ सहेजने में विफल रहा"</string>
-    <string name="create_error" msgid="3735649141335444215">"फ़ोल्डर बनाने में विफल"</string>
-    <string name="query_error" msgid="5999895349602476581">"इस समय सामग्री लोड नहीं की जा सकती"</string>
-    <string name="root_recent" msgid="4470053704320518133">"हाल ही के"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> खाली"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"मेमोरी सेवाएं"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"शॉर्टकट"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"डिवाइस"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"अधिक ऐप्स"</string>
-    <string name="empty" msgid="7858882803708117596">"कोई आइटम नहीं"</string>
-    <string name="no_results" msgid="6622510343880730446">"%1$s में कोई मिलान नहीं मिला"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"फ़ाइल नहीं खोली जा सकती"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"कुछ दस्तावेज़ों को हटाने में अक्षम"</string>
-    <string name="share_via" msgid="8966594246261344259">"इसके द्वारा साझा करें"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"फ़ाइलें कॉपी हो रही हैं"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"फाइलें ले जाई जा रही हैं"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"फ़ाइलें हटाई जा रही हैं"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> शेष"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> फ़ाइलें कॉपी की जा रही हैं.</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> फ़ाइलें कॉपी की जा रही हैं.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one"> <xliff:g id="COUNT_1">%1$d</xliff:g> फ़ाइलें ले जाई जा रही हैं.</item>
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> फ़ाइलें ले जाई जा रही हैं.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> फ़ाइलें हटाई जा रही हैं.</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> फ़ाइलें हटाई जा रही हैं.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"वापस लाएं"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"कॉपी करने की तैयारी हो रही है…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"ले जाने की तैयारी हो रही है…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"हटाने के लिए तैयार हो रहा है…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> फ़ाइलों को कॉपी नहीं किया जा सका</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> फ़ाइलों को कॉपी नहीं किया जा सका</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> फ़ाइलें नहीं ले जाई जा सकीं</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> फ़ाइलें नहीं ले जाई जा सकीं</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> फ़ाइलें हटाई नहीं जा सकीं</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> फ़ाइलें हटाई नहीं जा सकीं</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"विवरणों को देखने के लिए टैप करें"</string>
-    <string name="close" msgid="3043722427445528732">"बंद करें"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"इन फ़ाइलों की कॉपी नहीं बनाई गई: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"ये फ़ाइलें नहीं ले जाई गईं: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"इन फ़ाइलों को हटाया नहीं गया: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"ये फ़ाइलें किसी अन्‍य प्रारूप में रूपांतरित हो गई थीं: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one">क्‍लिपबोर्ड पर <xliff:g id="COUNT_1">%1$d</xliff:g> फ़ाइलों की कॉपी बनाई गई.</item>
-      <item quantity="other">क्‍लिपबोर्ड पर <xliff:g id="COUNT_1">%1$d</xliff:g> फ़ाइलों की कॉपी बनाई गई.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"चयनित फ़ाइलों को इस स्‍थान में नहीं चिपकाया जा सकता."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"नाम बदलें"</string>
-    <string name="rename_error" msgid="4203041674883412606">"दस्‍तावेज़ का नाम बदलना विफल रहा"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"निकालें"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"कुछ फ़ाइलें रूपांतरित हो गई थीं"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> को <xliff:g id="STORAGE"><i>^3</i></xliff:g> पर <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> निर्देशिका का एक्सेस दें?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> को <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> निर्देशिका का एक्सेस प्रदान करें?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> को <xliff:g id="STORAGE"><i>^2</i></xliff:g> पर मौजूद फ़ोटो और वीडियो सहित, अपने डेटा का एक्सेस प्रदान करें?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"फिर से ना पूछें"</string>
-    <string name="allow" msgid="7225948811296386551">"अनुमति दें"</string>
-    <string name="deny" msgid="2081879885755434506">"अस्वीकारें"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> चयनित</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> चयनित</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> आइटम</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> आइटम</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"\"<xliff:g id="NAME">%1$s</xliff:g>\" को हटाएं?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"\"<xliff:g id="NAME">%1$s</xliff:g>\" फ़ोल्डर और उसकी सामग्रियां हटाएं?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> फ़ाइलें हटाएं?</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> फ़ाइलें हटाएं?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> फ़ोल्डर और उनकी सामग्री हटाएं?</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> फ़ोल्डर और उनकी सामग्री हटाएं?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> आइटम हटाएं?</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> आइटम हटाएं?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-hr/strings.xml b/packages/DocumentsUI/res/values-hr/strings.xml
deleted file mode 100644
index dfaebd3..0000000
--- a/packages/DocumentsUI/res/values-hr/strings.xml
+++ /dev/null
@@ -1,156 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Datoteke"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Preuzimanja"</string>
-    <string name="title_open" msgid="4353228937663917801">"Otvori iz"</string>
-    <string name="title_save" msgid="2433679664882857999">"Spremi u"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Nova mapa"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Prikaz rešetke"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Prikaz popisa"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Poredano po"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Pretraživanje"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Postavke pohrane"</string>
-    <string name="menu_open" msgid="432922957274920903">"Otvaranje"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Spremi"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Dijeli"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Izbriši"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Odaberi sve"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Kopiraj u…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Premjesti u…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Novi prozor"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Izreži"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Kopiraj"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Zalijepi"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Pokaži internu pohranu"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Sakrij internu pohranu"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Pokaži veličinu datoteke"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Sakrij veličinu datoteke"</string>
-    <string name="button_select" msgid="527196987259139214">"Odaberi"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Kopiraj"</string>
-    <string name="button_move" msgid="2202666023104202232">"Premjesti"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Odbaci"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Pokušaj ponovo"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Po nazivu"</string>
-    <string name="sort_date" msgid="586080032956151448">"Po datumu izmjene"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Po veličini"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Prikaži korijene"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Sakrij korijene"</string>
-    <string name="save_error" msgid="6167009778003223664">"Nije uspjelo spremanje dokumenta"</string>
-    <string name="create_error" msgid="3735649141335444215">"Izrada mape nije uspjela"</string>
-    <string name="query_error" msgid="5999895349602476581">"Sadržaj se trenutačno ne može učitati"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Nedavno"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> besplatno"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Usluge pohrane"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Prečaci"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Uređaji"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Više aplikacija"</string>
-    <string name="empty" msgid="7858882803708117596">"Nema stavki"</string>
-    <string name="no_results" msgid="6622510343880730446">"%1$s ne sadrži podudaranja"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Datoteka se ne može otvoriti"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Nije moguće izbrisati neke dokumente"</string>
-    <string name="share_via" msgid="8966594246261344259">"Dijeli putem"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Kopiranje datoteka"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Premještanje datoteka"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Brisanje datoteka"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Još <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one">Kopiranje <xliff:g id="COUNT_1">%1$d</xliff:g> datoteke.</item>
-      <item quantity="few">Kopiranje <xliff:g id="COUNT_1">%1$d</xliff:g> datoteke.</item>
-      <item quantity="other">Kopiranje <xliff:g id="COUNT_1">%1$d</xliff:g> datoteka.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one">Premještanje <xliff:g id="COUNT_1">%1$d</xliff:g> datoteke.</item>
-      <item quantity="few">Premještanje <xliff:g id="COUNT_1">%1$d</xliff:g> datoteke.</item>
-      <item quantity="other">Premještanje <xliff:g id="COUNT_1">%1$d</xliff:g> datoteka.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one">Brisanje <xliff:g id="COUNT_1">%1$d</xliff:g> datoteke.</item>
-      <item quantity="few">Brisanje <xliff:g id="COUNT_1">%1$d</xliff:g> datoteke.</item>
-      <item quantity="other">Brisanje <xliff:g id="COUNT_1">%1$d</xliff:g> datoteka.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Poništi"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Priprema za kopiranje…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Priprema za premještanje…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Priprema za brisanje…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> datoteka nije kopirana</item>
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> datoteke nisu kopirane</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> datoteka nije kopirano</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> datoteka nije premještena</item>
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> datoteke nisu premještene</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> datoteka nije premješteno</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> datoteka nije izbrisana</item>
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> datoteke nisu izbrisane</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> datoteka nije izbrisano</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Dodirnite da biste vidjeli pojedinosti"</string>
-    <string name="close" msgid="3043722427445528732">"Zatvori"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Ove datoteke nisu kopirane: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Ove datoteke nisu premještene: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Ove datoteke nisu izbrisane: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Ove su datoteke konvertirane u neki drugi format: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> datoteka kopirana je u međuspremnik.</item>
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> datoteke kopirane su u međuspremnik.</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> datoteka kopirano je u međuspremnik.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Nije moguće zalijepiti odabrane datoteke na ovu lokaciju."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Promijeni naziv"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Naziv dokumenta nije promijenjen"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Izbaci"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Neke su datoteke konvertirane"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Želite li aplikaciji <xliff:g id="APPNAME"><b>^1</b></xliff:g> odobriti pristup direktoriju <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> na pohrani <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Želite li aplikaciji <xliff:g id="APPNAME"><b>^1</b></xliff:g> odobriti da pristupa direktoriju <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Želite li aplikaciji <xliff:g id="APPNAME"><b>^1</b></xliff:g> dopustiti pristup podacima, uključujući fotografije i videozapise na vanjskoj pohrani (<xliff:g id="STORAGE"><i>^2</i></xliff:g>)?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Više me ne pitaj"</string>
-    <string name="allow" msgid="7225948811296386551">"Dopusti"</string>
-    <string name="deny" msgid="2081879885755434506">"Odbij"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one">Odabrano: <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="few">Odabrano: <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="other">Odabrano: <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> stavka</item>
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> stavke</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> stavki</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Želite li izbrisati datoteku \"<xliff:g id="NAME">%1$s</xliff:g>\"?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Želite li izbrisati mapu \"<xliff:g id="NAME">%1$s</xliff:g>\" i njezin sadržaj?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one">Želite li izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> datoteku?</item>
-      <item quantity="few">Želite li izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> datoteke?</item>
-      <item quantity="other">Želite li izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> datoteka?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one">Želite li izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> mapu i njihov sadržaj?</item>
-      <item quantity="few">Želite li izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> mape i njihov sadržaj?</item>
-      <item quantity="other">Želite li izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> mapa i njihov sadržaj?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one">Želite li izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> stavku?</item>
-      <item quantity="few">Želite li izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> stavke?</item>
-      <item quantity="other">Želite li izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> stavki?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-hu/strings.xml b/packages/DocumentsUI/res/values-hu/strings.xml
deleted file mode 100644
index 0044081..0000000
--- a/packages/DocumentsUI/res/values-hu/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Fájlok"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Letöltések"</string>
-    <string name="title_open" msgid="4353228937663917801">"Megnyitás innen"</string>
-    <string name="title_save" msgid="2433679664882857999">"Mentés ide"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Új mappa"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Rács"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Lista"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Rendezés alapja"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Keresés"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Tárolóhely beállításai"</string>
-    <string name="menu_open" msgid="432922957274920903">"Megnyitás"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Mentés"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Megosztás"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Törlés"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Összes kijelölése"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Másolás ide…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Áthelyezés…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Új ablak"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Kivágás"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Másolás"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Beillesztés"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Belső tárhely"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Belső tárhely elrejtése"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Fájlméret megjelenítése"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Fájlméret elrejtése"</string>
-    <string name="button_select" msgid="527196987259139214">"Kiválasztás"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Másolás"</string>
-    <string name="button_move" msgid="2202666023104202232">"Áthelyezés"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Elvetés"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Újrapróbálkozás"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Név szerint"</string>
-    <string name="sort_date" msgid="586080032956151448">"Módosítás dátuma szerint"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Méret szerint"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Gyökérszint megjelenítése"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Gyökérszint elrejtése"</string>
-    <string name="save_error" msgid="6167009778003223664">"Nem sikerült menteni a dokumentumot"</string>
-    <string name="create_error" msgid="3735649141335444215">"Nem sikerült létrehozni a mappát"</string>
-    <string name="query_error" msgid="5999895349602476581">"Jelenleg nem lehet tartalmat betölteni"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Legutóbbiak"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> szabad"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Tárhelyszolgáltatások"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Parancsikonok"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Eszközök"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"További alkalmazások"</string>
-    <string name="empty" msgid="7858882803708117596">"Nincsenek elemek"</string>
-    <string name="no_results" msgid="6622510343880730446">"Nincs találat itt: %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"A fájlt nem lehet megnyitni"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Néhány dokumentumot nem lehet törölni"</string>
-    <string name="share_via" msgid="8966594246261344259">"Megosztás itt:"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Fájlok másolása"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Fájlok áthelyezése"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Fájlok törlése"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> van hátra"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> fájl másolása.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> fájl másolása.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> fájl áthelyezése.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> fájl áthelyezése.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> fájl törlése.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> fájl törlése.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Visszavonás"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Felkészülés a másolásra…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Áthelyezés előkészítése…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Törlés előkészítése…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> fájlt nem sikerült átmásolni</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> fájlt nem sikerült átmásolni</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> fájlt nem sikerült áthelyezni</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> fájlt nem sikerült áthelyezni</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> fájlt nem sikerült törölni</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> fájlt nem sikerült törölni</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Koppintson rá a részletek megtekintéséhez"</string>
-    <string name="close" msgid="3043722427445528732">"Bezárás"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"A következő fájlokat nem sikerült átmásolni: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"A következő fájlokat nem sikerült áthelyezni: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"A következő fájlokat nem sikerült törölni: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"A következő fájlokat a rendszer más formátumba konvertálta: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> fájl vágólapra másolva.</item>
-      <item quantity="one"> <xliff:g id="COUNT_0">%1$d</xliff:g> fájl vágólapra másolva.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"A kijelölt fájlokat nem lehet beilleszteni erre a helyre."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Átnevezés"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Nem sikerült átnevezni a dokumentumot"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Kiadás"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Egyes fájlokat konvertált a rendszer"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Hozzáférést biztosít a(z) <xliff:g id="APPNAME"><b>^1</b></xliff:g> számára a(z) <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> könyvtárhoz itt: <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Hozzáférést biztosít a(z) <xliff:g id="APPNAME"><b>^1</b></xliff:g> alkalmazásnak a(z) <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> könyvtárhoz?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Hozzáférést biztosít a(z) <xliff:g id="APPNAME"><b>^1</b></xliff:g> számára az Ön adataihoz, beleértve a következő tárhelyen található képekhez és videókhoz: <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Ne jelenjen meg többé"</string>
-    <string name="allow" msgid="7225948811296386551">"Engedélyezés"</string>
-    <string name="deny" msgid="2081879885755434506">"Elutasítás"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> kiválasztva</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> kiválasztva</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> elem</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> elem</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Törli a következőt: „<xliff:g id="NAME">%1$s</xliff:g>”?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Törli „<xliff:g id="NAME">%1$s</xliff:g>” mappát a tartalmával együtt?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">Töröl <xliff:g id="COUNT_1">%1$d</xliff:g> fájlt?</item>
-      <item quantity="one">Töröl <xliff:g id="COUNT_0">%1$d</xliff:g> fájlt?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">Töröl <xliff:g id="COUNT_1">%1$d</xliff:g> mappát a tartalmukkal együtt?</item>
-      <item quantity="one">Töröl <xliff:g id="COUNT_0">%1$d</xliff:g> mappát a tartalmával együtt?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">Töröl <xliff:g id="COUNT_1">%1$d</xliff:g> elemet?</item>
-      <item quantity="one">Töröl <xliff:g id="COUNT_0">%1$d</xliff:g> elemet?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-hy-rAM/strings.xml b/packages/DocumentsUI/res/values-hy-rAM/strings.xml
deleted file mode 100644
index f4c85c3..0000000
--- a/packages/DocumentsUI/res/values-hy-rAM/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Ֆայլեր"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Ներբեռնումներ"</string>
-    <string name="title_open" msgid="4353228937663917801">"Բացել այստեղից"</string>
-    <string name="title_save" msgid="2433679664882857999">"Պահել այստեղ"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Նոր պանակ"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Ցանցի տեսքով"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Ցուցակի տեսք"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Դասավորել ըստ"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Որոնել"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Հիշասարքի կարգավորումներ"</string>
-    <string name="menu_open" msgid="432922957274920903">"Բացել"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Պահել"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Կիսվել"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Ջնջել"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Ընտրել բոլորը"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Պատճենել…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Տեղափոխել…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Նոր պատուհան"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Կտրել"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Պատճենել"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Տեղադրել"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Ցույց տալ ներքին պահոցը"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Թաքցնել ներքին պահոցը"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Ցույց տալ ֆայլի չափը"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Թաքցնել ֆայլի չափը"</string>
-    <string name="button_select" msgid="527196987259139214">"Ընտրել"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Պատճենել"</string>
-    <string name="button_move" msgid="2202666023104202232">"Տեղափոխել"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Փակել"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Փորձել նորից"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Ըստ անվան"</string>
-    <string name="sort_date" msgid="586080032956151448">"Ըստ փոփոխման ամսաթվի"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Ըստ չափի"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Ցույց տալ արմատները"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Թաքցնել արմատները"</string>
-    <string name="save_error" msgid="6167009778003223664">"Չհաջողվեց պահել փաստաթուղթը"</string>
-    <string name="create_error" msgid="3735649141335444215">"Չհաջողվեց ստեղծել պանակը"</string>
-    <string name="query_error" msgid="5999895349602476581">"Այս պահին հնարավոր չէ բեռնել բովանդակությունը"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Վերջին"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> ազատ է"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Պահուստի ծառայություններ"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Դյուրանցումներ"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Սարքեր"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Հավելյալ ծրագրեր"</string>
-    <string name="empty" msgid="7858882803708117596">"Ոչինչ չկա"</string>
-    <string name="no_results" msgid="6622510343880730446">"%1$s-ում համընկնումներ չկան"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Հնարավոր չէ բացել ֆայլը"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Անհնար է ջնջել որոշ փաստաթղթեր"</string>
-    <string name="share_via" msgid="8966594246261344259">"Կիսվել"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Ֆայլերի պատճենում"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Ֆայլերի տեղափոխում"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Ֆայլերը ջնջվում են"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Մնացել է <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ֆայլի պատճենում:</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ֆայլի պատճենում:</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ֆայլի տեղափոխում:</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ֆայլի տեղափոխում:</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ֆայլի ջնջում:</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ֆայլի ջնջում:</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Հետարկել"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Պատճենման նախապատրաստում…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Տեղափոխման նախապատրաստում…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Պատրաստվում է ջնջել…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one">Չհաջողվեց պատճենել <xliff:g id="COUNT_1">%1$d</xliff:g> ֆայլ</item>
-      <item quantity="other">Չհաջողվեց պատճենել <xliff:g id="COUNT_1">%1$d</xliff:g> ֆայլ</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one">Չհաջողվեց տեղափոխել <xliff:g id="COUNT_1">%1$d</xliff:g> ֆայլ</item>
-      <item quantity="other">Չհաջողվեց տեղափոխել <xliff:g id="COUNT_1">%1$d</xliff:g> ֆայլ</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one">Չհաջողվեց ջնջել <xliff:g id="COUNT_1">%1$d</xliff:g> ֆայլ</item>
-      <item quantity="other">Չհաջողվեց ջնջել <xliff:g id="COUNT_1">%1$d</xliff:g> ֆայլ</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Հպեք՝ մանրամասները դիտելու համար"</string>
-    <string name="close" msgid="3043722427445528732">"Փակել"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Հետևյալ ֆայլերը չեն պատճենվել՝ <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Հետևյալ ֆայլերը չեն տեղափոխվել՝ <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Հետևյալ ֆայլերը չեն ջնջվել՝ <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Այս ֆայլերը փոխարկվել են մեկ այլ ձևաչափի՝ <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ֆայլ պատճենվեց սեղմատախտակին:</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ֆայլ պատճենվեց սեղմատախտակին:</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Հնարավոր չէ տեղադրել ընտրված ֆայլերը այս տեղադրությունում:"</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Վերանվանել"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Չհաջողվեց վերանվանել փաստաթուղթը"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Անջատել"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Որոշ ֆայլեր փոխարկվել են"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> հավելվածին տրամադրե՞լ <xliff:g id="STORAGE"><i>^3</i></xliff:g>-ի <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> գրացուցակն օգտագործելու թույլտվություն:"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> հավելվածին տրամադրե՞լ <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> գրացուցակն օգտագործելու թույլտվություն:"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> հավելվածին տրամադրե՞լ <xliff:g id="STORAGE"><i>^2</i></xliff:g>-ում պահվող ձեր տվյալները, այդ թվում նաև լուսանկարները և տեսանյութերը, օգտագործելու թույլտվություն:"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Այլևս չհարցնել"</string>
-    <string name="allow" msgid="7225948811296386551">"Թույլատրել"</string>
-    <string name="deny" msgid="2081879885755434506">"Մերժել"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one">Ընտրված է՝ <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="other">Ընտրված է՝ <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> տարր</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> տարր</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Ջնջե՞լ «<xliff:g id="NAME">%1$s</xliff:g>» ֆայլը:"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Ջնջե՞լ «<xliff:g id="NAME">%1$s</xliff:g>» պանակը՝ բովանդակության հետ մեկտեղ:"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one">Ջնջե՞լ <xliff:g id="COUNT_1">%1$d</xliff:g> ֆայլ:</item>
-      <item quantity="other">Ջնջե՞լ <xliff:g id="COUNT_1">%1$d</xliff:g> ֆայլ:</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one">Ջնջե՞լ <xliff:g id="COUNT_1">%1$d</xliff:g> պանակ՝ բովանդակության հետ մեկտեղ:</item>
-      <item quantity="other">Ջնջե՞լ <xliff:g id="COUNT_1">%1$d</xliff:g> պանակ՝ բովանդակության հետ մեկտեղ:</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one">Ջնջե՞լ <xliff:g id="COUNT_1">%1$d</xliff:g> տարր:</item>
-      <item quantity="other">Ջնջե՞լ <xliff:g id="COUNT_1">%1$d</xliff:g> տարր:</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-in/strings.xml b/packages/DocumentsUI/res/values-in/strings.xml
deleted file mode 100644
index 964c69a..0000000
--- a/packages/DocumentsUI/res/values-in/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"File"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Unduhan"</string>
-    <string name="title_open" msgid="4353228937663917801">"Buka dari"</string>
-    <string name="title_save" msgid="2433679664882857999">"Simpan ke"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Folder baru"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Tampilan kisi"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Tampilan daftar"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Urutkan menurut"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Telusuri"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Setelan penyimpanan"</string>
-    <string name="menu_open" msgid="432922957274920903">"Buka"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Simpan"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Bagikan"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Hapus"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Pilih semua"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Salin ke…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Pindahkan ke..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Jendela baru"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Potong"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Salin"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Tempel"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Tampilkan simpanan internal"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Sembunyikan simpanan internal"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Tampilkan ukuran file"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Sembunyikan ukuran file"</string>
-    <string name="button_select" msgid="527196987259139214">"Pilih"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Salin"</string>
-    <string name="button_move" msgid="2202666023104202232">"Pindahkan"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Tutup"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Coba Lagi"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Menurut nama"</string>
-    <string name="sort_date" msgid="586080032956151448">"Menurut tanggal diubah"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Menurut ukuran"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Tampilkan akar"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Sembunyikan akar"</string>
-    <string name="save_error" msgid="6167009778003223664">"Gagal menyimpan dokumen"</string>
-    <string name="create_error" msgid="3735649141335444215">"Gagal membuat folder"</string>
-    <string name="query_error" msgid="5999895349602476581">"Saat ini tidak dapat memuat konten"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Terkini"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> kosong"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Layanan penyimpanan"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Pintasan"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Perangkat"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Aplikasi lain"</string>
-    <string name="empty" msgid="7858882803708117596">"Tidak ada item"</string>
-    <string name="no_results" msgid="6622510343880730446">"Tidak ada kecocokan dalam %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Tidak dapat membuka file"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Tidak dapat menghapus beberapa dokumen"</string>
-    <string name="share_via" msgid="8966594246261344259">"Bagikan melalui"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Menyalin file"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Memindahkan file"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Menghapus file"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> lagi"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">Menyalin <xliff:g id="COUNT_1">%1$d</xliff:g> file.</item>
-      <item quantity="one">Menyalin <xliff:g id="COUNT_0">%1$d</xliff:g> file.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">Memindahkan <xliff:g id="COUNT_1">%1$d</xliff:g> file.</item>
-      <item quantity="one">Memindahkan <xliff:g id="COUNT_0">%1$d</xliff:g> file.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">Menghapus <xliff:g id="COUNT_1">%1$d</xliff:g> file.</item>
-      <item quantity="one">Menghapus <xliff:g id="COUNT_0">%1$d</xliff:g> file.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Urungkan"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Menyiapkan salinan..."</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Menyiapkan pemindahan…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Bersiap menghapus…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">Tidak dapat menyalin <xliff:g id="COUNT_1">%1$d</xliff:g> file</item>
-      <item quantity="one">Tidak dapat menyalin <xliff:g id="COUNT_0">%1$d</xliff:g> file</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">Tidak dapat memindahkan <xliff:g id="COUNT_1">%1$d</xliff:g> file</item>
-      <item quantity="one">Tidak dapat memindahkan <xliff:g id="COUNT_0">%1$d</xliff:g> file</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">Tidak dapat menghapus <xliff:g id="COUNT_1">%1$d</xliff:g> file</item>
-      <item quantity="one">Tidak dapat menghapus <xliff:g id="COUNT_0">%1$d</xliff:g> file</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Ketuk untuk melihat detail"</string>
-    <string name="close" msgid="3043722427445528732">"Tutup"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Semua file ini tidak disalin: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Semua file ini tidak dipindahkan: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Semua file ini tidak dihapus: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"File ini dikonversi ke format lain: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> file disalin ke papan klip.</item>
-      <item quantity="one"> <xliff:g id="COUNT_0">%1$d</xliff:g> file disalin ke papan klip.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Tidak dapat menempel file yang dipilih di lokasi ini."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Ganti nama"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Gagal mengganti nama dokumen"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Keluarkan"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Beberapa file dikonversi"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Beri <xliff:g id="APPNAME"><b>^1</b></xliff:g> akses ke direktori <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> di <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Beri <xliff:g id="APPNAME"><b>^1</b></xliff:g> akses ke direktori <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Beri <xliff:g id="APPNAME"><b>^1</b></xliff:g> akses ke data Anda, termasuk foto dan video, di <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Jangan tanya lagi"</string>
-    <string name="allow" msgid="7225948811296386551">"Izinkan"</string>
-    <string name="deny" msgid="2081879885755434506">"Tolak"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> dipilih</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> dipilih</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> item</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> item</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Hapus \"<xliff:g id="NAME">%1$s</xliff:g>\"?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Hapus folder \"<xliff:g id="NAME">%1$s</xliff:g>\" dan kontennya?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">Hapus <xliff:g id="COUNT_1">%1$d</xliff:g> file?</item>
-      <item quantity="one">Hapus <xliff:g id="COUNT_0">%1$d</xliff:g> file?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">Hapus <xliff:g id="COUNT_1">%1$d</xliff:g> folder dan kontennya?</item>
-      <item quantity="one">Hapus <xliff:g id="COUNT_0">%1$d</xliff:g> folder dan kontennya?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">Hapus <xliff:g id="COUNT_1">%1$d</xliff:g> item?</item>
-      <item quantity="one">Hapus <xliff:g id="COUNT_0">%1$d</xliff:g> item?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-is-rIS/strings.xml b/packages/DocumentsUI/res/values-is-rIS/strings.xml
deleted file mode 100644
index 983090c..0000000
--- a/packages/DocumentsUI/res/values-is-rIS/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Skrár"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Niðurhal"</string>
-    <string name="title_open" msgid="4353228937663917801">"Opna frá"</string>
-    <string name="title_save" msgid="2433679664882857999">"Vista í"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Ný mappa"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Töfluyfirlit"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Listayfirlit"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Raða eftir"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Leita"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Geymslustillingar"</string>
-    <string name="menu_open" msgid="432922957274920903">"Opna"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Vista"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Deila"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Eyða"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Velja allt"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Afrita í ..."</string>
-    <string name="menu_move" msgid="1828090633118079817">"Færa í…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Nýr gluggi"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Klippa"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Afrita"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Líma"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Sýna innbyggða geymslu"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Fela innbyggða geymslu"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Sýna skráarstærð"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Fela skráarstærð"</string>
-    <string name="button_select" msgid="527196987259139214">"Velja"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Afrita"</string>
-    <string name="button_move" msgid="2202666023104202232">"Færa"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Hunsa"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Reyna aftur"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Eftir heiti"</string>
-    <string name="sort_date" msgid="586080032956151448">"Eftir breytingadags."</string>
-    <string name="sort_size" msgid="3350681319735474741">"Eftir stærð"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Sýna rótarsöfn"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Fela rótarsöfn"</string>
-    <string name="save_error" msgid="6167009778003223664">"Mistókst að vista skjalið"</string>
-    <string name="create_error" msgid="3735649141335444215">"Mistókst að búa til möppu"</string>
-    <string name="query_error" msgid="5999895349602476581">"Ekki hægt að hlaða efni í augnablikinu"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Nýlegt"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> laus"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Geymsluþjónusta"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Flýtileiðir"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Tæki"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Fleiri forrit"</string>
-    <string name="empty" msgid="7858882803708117596">"Engin atriði"</string>
-    <string name="no_results" msgid="6622510343880730446">"Engar samsvarandi niðurstöður í %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Ekki hægt að opna skrá"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Ekki er hægt að eyða einhverjum skjölum"</string>
-    <string name="share_via" msgid="8966594246261344259">"Deila í gegnum"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Afritar skrár"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Skrár færðar"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Eyðir skrám"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> eftir"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one">Afritar <xliff:g id="COUNT_1">%1$d</xliff:g> skrá.</item>
-      <item quantity="other">Afritar <xliff:g id="COUNT_1">%1$d</xliff:g> skrár.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one">Færir <xliff:g id="COUNT_1">%1$d</xliff:g> skrá.</item>
-      <item quantity="other">Færir <xliff:g id="COUNT_1">%1$d</xliff:g> skrár.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one">Eyðir <xliff:g id="COUNT_1">%1$d</xliff:g> skrá.</item>
-      <item quantity="other">Eyðir <xliff:g id="COUNT_1">%1$d</xliff:g> skrám.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Afturkalla"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Undirbúningur fyrir afritun…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Flutningur undirbúinn…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Býr sig undir að eyða…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one">Ekki tókst að afrita <xliff:g id="COUNT_1">%1$d</xliff:g> skrá</item>
-      <item quantity="other">Ekki tókst að afrita <xliff:g id="COUNT_1">%1$d</xliff:g> skrár</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one">Ekki tókst að færa <xliff:g id="COUNT_1">%1$d</xliff:g> skrá</item>
-      <item quantity="other">Ekki tókst að færa <xliff:g id="COUNT_1">%1$d</xliff:g> skrár</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one">Ekki tókst að eyða <xliff:g id="COUNT_1">%1$d</xliff:g> skrá</item>
-      <item quantity="other">Ekki tókst að eyða <xliff:g id="COUNT_1">%1$d</xliff:g> skrám</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Ýttu til að skoða frekari upplýsingar"</string>
-    <string name="close" msgid="3043722427445528732">"Loka"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Þessar skrár voru ekki afritaðar: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Þessar skrár voru ekki færðar: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Þessum skrám var ekki eytt: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Þessum skrám var umbreytt yfir á annað snið: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> skrá afrituð á klippiborð.</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> skrár afritaðar á klippiborð.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Ekki er hægt að vista valdar skrár á þessum stað."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Endurnefna"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Ekki tókst að endurnefna skjalið"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Fjarlægja"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Sumum skrám var umbreytt"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Veita <xliff:g id="APPNAME"><b>^1</b></xliff:g> aðgang að skráasafninu <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> á <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Viltu veita <xliff:g id="APPNAME"><b>^1</b></xliff:g> aðgang að skráasafninu <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Veita <xliff:g id="APPNAME"><b>^1</b></xliff:g> aðgang að gögnunum þínum, þar á meðal myndum og myndskeiðum, á <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Ekki spyrja aftur"</string>
-    <string name="allow" msgid="7225948811296386551">"Leyfa"</string>
-    <string name="deny" msgid="2081879885755434506">"Hafna"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> valið</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> valin</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> atriði</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> atriði</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Eyða „<xliff:g id="NAME">%1$s</xliff:g>“?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Eyða möppunni „<xliff:g id="NAME">%1$s</xliff:g>“ og öllu innihaldi hennar?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one">Eyða <xliff:g id="COUNT_1">%1$d</xliff:g> skrá?</item>
-      <item quantity="other">Eyða <xliff:g id="COUNT_1">%1$d</xliff:g> skrám?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one">Eyða <xliff:g id="COUNT_1">%1$d</xliff:g> möppu og innihaldi þeirra?</item>
-      <item quantity="other">Eyða <xliff:g id="COUNT_1">%1$d</xliff:g> möppum og innihaldi þeirra?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one">Eyða <xliff:g id="COUNT_1">%1$d</xliff:g> atriði?</item>
-      <item quantity="other">Eyða <xliff:g id="COUNT_1">%1$d</xliff:g> atriðum?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-it/strings.xml b/packages/DocumentsUI/res/values-it/strings.xml
deleted file mode 100644
index df287fe..0000000
--- a/packages/DocumentsUI/res/values-it/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"File"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Download"</string>
-    <string name="title_open" msgid="4353228937663917801">"Apri da"</string>
-    <string name="title_save" msgid="2433679664882857999">"Salva in"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Nuova cartella"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Visualizzazione griglia"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Visualizzazione elenco"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Ordina per"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Cerca"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Impostazioni memoria"</string>
-    <string name="menu_open" msgid="432922957274920903">"Apri"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Salva"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Condividi"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Elimina"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Seleziona tutto"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Copia in…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Sposta in..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Nuova finestra"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Taglia"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Copia"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Incolla"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Mostra memoria interna"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Nascondi memoria interna"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Mostra dimensioni file"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Nascondi dimensioni file"</string>
-    <string name="button_select" msgid="527196987259139214">"Seleziona"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Copia"</string>
-    <string name="button_move" msgid="2202666023104202232">"Sposta"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Ignora"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Riprova"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Per nome"</string>
-    <string name="sort_date" msgid="586080032956151448">"Per data di modifica"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Per dimensioni"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Mostra nodi principali"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Nascondi nodi principali"</string>
-    <string name="save_error" msgid="6167009778003223664">"Impossibile salvare il documento"</string>
-    <string name="create_error" msgid="3735649141335444215">"Impossibile creare la cartella"</string>
-    <string name="query_error" msgid="5999895349602476581">"Impossibile caricare i contenuti al momento"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Recenti"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> liberi"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Servizi di archiviazione"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Scorciatoie"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Dispositivi"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Altre app"</string>
-    <string name="empty" msgid="7858882803708117596">"Nessun elemento"</string>
-    <string name="no_results" msgid="6622510343880730446">"Nessuna corrispondenza in %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Impossibile aprire il file"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Impossibile eliminare alcuni documenti"</string>
-    <string name="share_via" msgid="8966594246261344259">"Condividi via"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Copia di file in corso"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Spostamento di file"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Eliminazione dei file"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> rimanenti"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">Copia di <xliff:g id="COUNT_1">%1$d</xliff:g> file in corso.</item>
-      <item quantity="one">Copia di <xliff:g id="COUNT_0">%1$d</xliff:g> file in corso.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">Spostamento di <xliff:g id="COUNT_1">%1$d</xliff:g> file.</item>
-      <item quantity="one">Spostamento di <xliff:g id="COUNT_0">%1$d</xliff:g> file.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">Eliminazione di <xliff:g id="COUNT_1">%1$d</xliff:g> file.</item>
-      <item quantity="one">Eliminazione di <xliff:g id="COUNT_0">%1$d</xliff:g> file.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Annulla"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Preparazione alla copia…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Preparazione dello spostamento…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Preparazione eliminazione…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">Impossibile copiare <xliff:g id="COUNT_1">%1$d</xliff:g> file</item>
-      <item quantity="one">Impossibile copiare <xliff:g id="COUNT_0">%1$d</xliff:g> file</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">Impossibile spostare <xliff:g id="COUNT_1">%1$d</xliff:g> file</item>
-      <item quantity="one">Impossibile spostare <xliff:g id="COUNT_0">%1$d</xliff:g> file</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">Impossibile eliminare <xliff:g id="COUNT_1">%1$d</xliff:g> file</item>
-      <item quantity="one">Impossibile eliminare <xliff:g id="COUNT_0">%1$d</xliff:g> file</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Tocca per vedere i dettagli"</string>
-    <string name="close" msgid="3043722427445528732">"Chiudi"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"I seguenti file non sono stati copiati: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"I seguenti file non sono stati spostati: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"I seguenti file non sono stati eliminati: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"I file sono stati convertiti in un altro formato: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> file copiati negli appunti.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> file copiato negli appunti.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Impossibile incollare i file selezionati in questa posizione."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Rinomina"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Ridenominazione documento non riuscita"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Espelli"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Alcuni file sono stati convertiti"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Concedere all\'app <xliff:g id="APPNAME"><b>^1</b></xliff:g> l\'accesso alla directory <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> su <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Concedere all\'app <xliff:g id="APPNAME"><b>^1</b></xliff:g> l\'accesso alla directory <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Concedere all\'app <xliff:g id="APPNAME"><b>^1</b></xliff:g> l\'accesso ai tuoi dati, inclusi video e foto, sull\'unità <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Non chiedermelo più"</string>
-    <string name="allow" msgid="7225948811296386551">"Consenti"</string>
-    <string name="deny" msgid="2081879885755434506">"Nega"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> file selezionati</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> file selezionato</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> elementi</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> elemento</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Eliminare \"<xliff:g id="NAME">%1$s</xliff:g>\"?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Eliminare la cartella \"<xliff:g id="NAME">%1$s</xliff:g>\" e i relativi contenuti?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">Eliminare <xliff:g id="COUNT_1">%1$d</xliff:g> file?</item>
-      <item quantity="one">Eliminare <xliff:g id="COUNT_0">%1$d</xliff:g> file?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">Eliminare <xliff:g id="COUNT_1">%1$d</xliff:g> cartelle e i relativi contenuti?</item>
-      <item quantity="one">Eliminare <xliff:g id="COUNT_0">%1$d</xliff:g> cartella e i relativi contenuti?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">Eliminare <xliff:g id="COUNT_1">%1$d</xliff:g> elementi?</item>
-      <item quantity="one">Eliminare <xliff:g id="COUNT_0">%1$d</xliff:g> elemento?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-iw/strings.xml b/packages/DocumentsUI/res/values-iw/strings.xml
deleted file mode 100644
index 19e3790..0000000
--- a/packages/DocumentsUI/res/values-iw/strings.xml
+++ /dev/null
@@ -1,168 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"קבצים"</string>
-    <string name="downloads_label" msgid="959113951084633612">"הורדות"</string>
-    <string name="title_open" msgid="4353228937663917801">"פתח מ-"</string>
-    <string name="title_save" msgid="2433679664882857999">"שמור ב-"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"תיקייה חדשה"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"תצוגת רשת"</string>
-    <string name="menu_list" msgid="7279285939892417279">"תצוגת רשימה"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"מיין לפי"</string>
-    <string name="menu_search" msgid="3816712084502856974">"חפש"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"הגדרות אחסון"</string>
-    <string name="menu_open" msgid="432922957274920903">"פתח"</string>
-    <string name="menu_save" msgid="2394743337684426338">"שמור"</string>
-    <string name="menu_share" msgid="3075149983979628146">"שתף"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"מחק"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"בחר הכל"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"העתק אל…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"העבר אל…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"חלון חדש"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"גזור"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"העתק"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"הדבק"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"הצג אחסון פנימי"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"הסתר אחסון פנימי"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"הצג גודל קובץ"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"הסתר גודל קובץ"</string>
-    <string name="button_select" msgid="527196987259139214">"בחר"</string>
-    <string name="button_copy" msgid="8706475544635021302">"העתק"</string>
-    <string name="button_move" msgid="2202666023104202232">"העבר"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"הסר"</string>
-    <string name="button_retry" msgid="4392027584153752797">"נסה שוב"</string>
-    <string name="sort_name" msgid="9183560467917256779">"לפי שם"</string>
-    <string name="sort_date" msgid="586080032956151448">"לפי תאריך שינוי"</string>
-    <string name="sort_size" msgid="3350681319735474741">"לפי גודל"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"הצג שורשים"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"הסתר שורשים"</string>
-    <string name="save_error" msgid="6167009778003223664">"שמירת המסמך נכשלה"</string>
-    <string name="create_error" msgid="3735649141335444215">"יצירת התיקיה נכשלה"</string>
-    <string name="query_error" msgid="5999895349602476581">"לא ניתן כרגע לטעון תוכן"</string>
-    <string name="root_recent" msgid="4470053704320518133">"מהזמן האחרון"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> של שטח פנוי"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"שירותי אחסון"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"קיצורי דרך"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"מכשירים"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"עוד אפליקציות"</string>
-    <string name="empty" msgid="7858882803708117596">"אין פריטים"</string>
-    <string name="no_results" msgid="6622510343880730446">"‏אין התאמות ב-%1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"לא ניתן לפתוח את הקובץ"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"לא ניתן למחוק חלק מהמסמכים"</string>
-    <string name="share_via" msgid="8966594246261344259">"שתף באמצעות"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"מעתיק קבצים"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"מעביר קבצים"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"מחיקת קבצים מתבצעת"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"זמן נותר: <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="two">מעתיק <xliff:g id="COUNT_1">%1$d</xliff:g> קבצים.</item>
-      <item quantity="many">מעתיק <xliff:g id="COUNT_1">%1$d</xliff:g> קבצים.</item>
-      <item quantity="other">מעתיק <xliff:g id="COUNT_1">%1$d</xliff:g> קבצים.</item>
-      <item quantity="one">מעתיק קובץ <xliff:g id="COUNT_0">%1$d</xliff:g>.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="two">מעביר <xliff:g id="COUNT_1">%1$d</xliff:g> קבצים.</item>
-      <item quantity="many">מעביר <xliff:g id="COUNT_1">%1$d</xliff:g> קבצים.</item>
-      <item quantity="other">מעביר <xliff:g id="COUNT_1">%1$d</xliff:g> קבצים.</item>
-      <item quantity="one">מעביר קובץ <xliff:g id="COUNT_0">%1$d</xliff:g>.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="two">מוחק <xliff:g id="COUNT_1">%1$d</xliff:g> קבצים.</item>
-      <item quantity="many">מוחק <xliff:g id="COUNT_1">%1$d</xliff:g> קבצים.</item>
-      <item quantity="other">מוחק <xliff:g id="COUNT_1">%1$d</xliff:g> קבצים.</item>
-      <item quantity="one"> מוחק קובץ <xliff:g id="COUNT_0">%1$d</xliff:g>.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"בטל"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"מתכונן להעתקה..."</string>
-    <string name="move_preparing" msgid="2772219441375531410">"מתכונן להעברה…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"מתכונן למחיקה…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="two">לא ניתן היה להעתיק <xliff:g id="COUNT_1">%1$d</xliff:g> קבצים</item>
-      <item quantity="many">לא ניתן היה להעתיק <xliff:g id="COUNT_1">%1$d</xliff:g> קבצים</item>
-      <item quantity="other">לא ניתן היה להעתיק <xliff:g id="COUNT_1">%1$d</xliff:g> קבצים</item>
-      <item quantity="one">לא ניתן היה להעתיק <xliff:g id="COUNT_0">%1$d</xliff:g> קובץ</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="two">לא ניתן היה להעביר <xliff:g id="COUNT_1">%1$d</xliff:g> קבצים</item>
-      <item quantity="many">לא ניתן היה להעביר <xliff:g id="COUNT_1">%1$d</xliff:g> קבצים</item>
-      <item quantity="other">לא ניתן היה להעביר <xliff:g id="COUNT_1">%1$d</xliff:g> קבצים</item>
-      <item quantity="one">לא ניתן היה להעביר <xliff:g id="COUNT_0">%1$d</xliff:g> קובץ</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="two">לא ניתן היה למחוק <xliff:g id="COUNT_1">%1$d</xliff:g> קבצים</item>
-      <item quantity="many">לא ניתן היה למחוק <xliff:g id="COUNT_1">%1$d</xliff:g> קבצים</item>
-      <item quantity="other">לא ניתן היה למחוק <xliff:g id="COUNT_1">%1$d</xliff:g> קבצים</item>
-      <item quantity="one">לא ניתן היה למחוק <xliff:g id="COUNT_0">%1$d</xliff:g> קובץ</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"הקש כדי להציג פרטים"</string>
-    <string name="close" msgid="3043722427445528732">"סגור"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"הקבצים הבאים לא הועתקו: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"הקבצים הבאים לא הועברו: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"הקבצים הבאים לא נמחקו: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"הקבצים האלה הומרו לפורמט אחר: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="two"><xliff:g id="COUNT_1">%1$d</xliff:g> קבצים הועתקו אל הלוח.</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> קבצים הועתקו אל הלוח.</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> קבצים הועתקו אל הלוח.</item>
-      <item quantity="one">קובץ <xliff:g id="COUNT_0">%1$d</xliff:g> הועתק אל הלוח.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"לא ניתן להדביק את הקבצים הנבחרים במיקום הזה."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"שנה שם"</string>
-    <string name="rename_error" msgid="4203041674883412606">"ניסיון שינוי שם המסמך נכשל"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"הוצא"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"קבצים מסוימים הומרו"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"האם להעניק לאפליקציה <xliff:g id="APPNAME"><b>^1</b></xliff:g> גישה לספריה <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> באחסון <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"האם להעניק לאפליקציה <xliff:g id="APPNAME"><b>^1</b></xliff:g> גישה אל ספריית <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"האם להעניק לאפליקציה <xliff:g id="APPNAME"><b>^1</b></xliff:g> גישה לנתונים שלך, כולל תמונות וסרטונים, השמורים ב<xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"אל תשאל שוב"</string>
-    <string name="allow" msgid="7225948811296386551">"אפשר"</string>
-    <string name="deny" msgid="2081879885755434506">"דחה"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="two"><xliff:g id="COUNT_1">%1$d</xliff:g> נבחרו</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> נבחרו</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> נבחרו</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> נבחר</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="two"><xliff:g id="COUNT_1">%1$d</xliff:g> פריטים</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> פריטים</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> פריטים</item>
-      <item quantity="one">פריט <xliff:g id="COUNT_0">%1$d</xliff:g></item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"האם למחוק את \"<xliff:g id="NAME">%1$s</xliff:g>\"?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"האם למחוק את התיקייה \"<xliff:g id="NAME">%1$s</xliff:g>\" ואת התוכן שלה?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="two">האם למחוק <xliff:g id="COUNT_1">%1$d</xliff:g> קבצים?</item>
-      <item quantity="many">האם למחוק <xliff:g id="COUNT_1">%1$d</xliff:g> קבצים?</item>
-      <item quantity="other">האם למחוק <xliff:g id="COUNT_1">%1$d</xliff:g> קבצים?</item>
-      <item quantity="one">האם למחוק <xliff:g id="COUNT_0">%1$d</xliff:g> קובץ?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="two">האם למחוק <xliff:g id="COUNT_1">%1$d</xliff:g> תיקיות ואת התוכן שלהן?</item>
-      <item quantity="many">האם למחוק <xliff:g id="COUNT_1">%1$d</xliff:g> תיקיות ואת התוכן שלהן?</item>
-      <item quantity="other">האם למחוק <xliff:g id="COUNT_1">%1$d</xliff:g> תיקיות ואת התוכן שלהן?</item>
-      <item quantity="one">האם למחוק <xliff:g id="COUNT_0">%1$d</xliff:g> תיקייה ואת התוכן שלה?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="two">האם למחוק <xliff:g id="COUNT_1">%1$d</xliff:g> פריטים?</item>
-      <item quantity="many">האם למחוק <xliff:g id="COUNT_1">%1$d</xliff:g> פריטים?</item>
-      <item quantity="other">האם למחוק <xliff:g id="COUNT_1">%1$d</xliff:g> פריטים?</item>
-      <item quantity="one">האם למחוק <xliff:g id="COUNT_0">%1$d</xliff:g> פריט?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-ja/strings.xml b/packages/DocumentsUI/res/values-ja/strings.xml
deleted file mode 100644
index 3cee741..0000000
--- a/packages/DocumentsUI/res/values-ja/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"ファイル"</string>
-    <string name="downloads_label" msgid="959113951084633612">"ダウンロード"</string>
-    <string name="title_open" msgid="4353228937663917801">"次から開く:"</string>
-    <string name="title_save" msgid="2433679664882857999">"次に保存:"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"新しいフォルダ"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"グリッド表示"</string>
-    <string name="menu_list" msgid="7279285939892417279">"リスト表示"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"並べ替え"</string>
-    <string name="menu_search" msgid="3816712084502856974">"検索"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"ストレージの設定"</string>
-    <string name="menu_open" msgid="432922957274920903">"開く"</string>
-    <string name="menu_save" msgid="2394743337684426338">"保存"</string>
-    <string name="menu_share" msgid="3075149983979628146">"共有"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"削除"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"すべて選択"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"コピー…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"移動..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"新しいウィンドウ"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"切り取り"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"コピー"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"貼り付け"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"内部ストレージを表示"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"内部ストレージを非表示"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"ファイルサイズを表示"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"ファイルサイズを非表示"</string>
-    <string name="button_select" msgid="527196987259139214">"選択"</string>
-    <string name="button_copy" msgid="8706475544635021302">"コピー"</string>
-    <string name="button_move" msgid="2202666023104202232">"移動"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"表示しない"</string>
-    <string name="button_retry" msgid="4392027584153752797">"再試行"</string>
-    <string name="sort_name" msgid="9183560467917256779">"名前順"</string>
-    <string name="sort_date" msgid="586080032956151448">"更新日順"</string>
-    <string name="sort_size" msgid="3350681319735474741">"サイズ順"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"ルートを表示する"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"ルートを非表示にする"</string>
-    <string name="save_error" msgid="6167009778003223664">"ドキュメントを保存できませんでした"</string>
-    <string name="create_error" msgid="3735649141335444215">"フォルダを作成できませんでした"</string>
-    <string name="query_error" msgid="5999895349602476581">"現在、コンテンツを読み込むことができません"</string>
-    <string name="root_recent" msgid="4470053704320518133">"最近"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"空き容量: <xliff:g id="SIZE">%1$s</xliff:g>"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"ストレージサービス"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"ショートカット"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"端末"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"その他のアプリ"</string>
-    <string name="empty" msgid="7858882803708117596">"アイテムがありません"</string>
-    <string name="no_results" msgid="6622510343880730446">"該当するものは %1$s にありません"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"ファイルを開けません"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"一部のドキュメントを削除できません"</string>
-    <string name="share_via" msgid="8966594246261344259">"共有ツール"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"ファイルのコピー中"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"ファイルを移動中"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"ファイルを削除しています"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"残り<xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>個のファイルをコピーしています。</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g>個のファイルをコピーしています。</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>個のファイルを移動しています。</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g>個のファイルを移動しています。</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>件のファイルを削除しています。</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g>件のファイルを削除しています。</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"元に戻す"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"コピーの準備をしています…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"移動の準備をしています…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"削除の準備をしています…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> 個のファイルをコピーできませんでした</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> 個のファイルをコピーできませんでした</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> 個のファイルを移動できませんでした</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> 個のファイルを移動できませんでした</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> 個のファイルを削除できませんでした</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> 個のファイルを削除できませんでした</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"タップすると詳細が表示されます"</string>
-    <string name="close" msgid="3043722427445528732">"閉じる"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"次のファイルをコピーできませんでした: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"次のファイルを移動できませんでした: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"次のファイルを削除できませんでした: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"次のファイルが別の形式に変換されました: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>件のファイルをクリップボードにコピーしました。</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g>件のファイルをクリップボードにコピーしました。</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"選択したファイルをこの場所に貼り付けることはできません。"</string>
-    <string name="menu_rename" msgid="7678802479104285353">"名前を変更"</string>
-    <string name="rename_error" msgid="4203041674883412606">"ドキュメントの名前を変更できませんでした"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"取り外し"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"一部のファイルが変換されました"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"「<xliff:g id="STORAGE"><i>^3</i></xliff:g>」の「<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>」ディレクトリに「<xliff:g id="APPNAME"><b>^1</b></xliff:g>」へのアクセスを許可しますか?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"「<xliff:g id="APPNAME"><b>^1</b></xliff:g>」アプリに「<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>」ディレクトリへのアクセスを許可しますか?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="STORAGE"><i>^2</i></xliff:g>の写真や動画などのデータへのアクセスを「<xliff:g id="APPNAME"><b>^1</b></xliff:g>」に許可しますか?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"今後表示しない"</string>
-    <string name="allow" msgid="7225948811296386551">"許可"</string>
-    <string name="deny" msgid="2081879885755434506">"拒否"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> 個を選択中</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> 個を選択中</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> 個のアイテム</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> 個のアイテム</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"「<xliff:g id="NAME">%1$s</xliff:g>」を削除しますか?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"フォルダ「<xliff:g id="NAME">%1$s</xliff:g>」とそのコンテンツを削除しますか?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> 個のファイルを削除しますか?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> 個のファイルを削除しますか?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> 個のフォルダとそのコンテンツを削除しますか?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> 個のフォルダとそのコンテンツを削除しますか?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> 個の項目を削除しますか?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> 個の項目を削除しますか?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-ka-rGE/strings.xml b/packages/DocumentsUI/res/values-ka-rGE/strings.xml
deleted file mode 100644
index ccb96a7..0000000
--- a/packages/DocumentsUI/res/values-ka-rGE/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"ფაილები"</string>
-    <string name="downloads_label" msgid="959113951084633612">"ჩამოტვირთვები"</string>
-    <string name="title_open" msgid="4353228937663917801">"გახსნა აქედან:"</string>
-    <string name="title_save" msgid="2433679664882857999">"შენახვა აქ:"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"ახალი საქაღალდე"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"ბადის ხედი"</string>
-    <string name="menu_list" msgid="7279285939892417279">"სიის ხედი"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"სორტირება:"</string>
-    <string name="menu_search" msgid="3816712084502856974">"ძიება"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"საცავის პარამეტრები"</string>
-    <string name="menu_open" msgid="432922957274920903">"გახსნა"</string>
-    <string name="menu_save" msgid="2394743337684426338">"შენახვა"</string>
-    <string name="menu_share" msgid="3075149983979628146">"გაზიარება"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"წაშლა"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"ყველას არჩევა"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"კოპირება…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"გადაადგილება..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"ახალი ფანჯარა"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"ამოჭრა"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"კოპირება"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"ჩასმა"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"შიდა საცავის ჩვენება"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"შიდა მეხსიერების დამალვა"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"ფაილის ზომის ჩვენება"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"ფაილის ზომის დამალვა"</string>
-    <string name="button_select" msgid="527196987259139214">"არჩევა"</string>
-    <string name="button_copy" msgid="8706475544635021302">"კოპირება"</string>
-    <string name="button_move" msgid="2202666023104202232">"გადაადგილება"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"დახურვა"</string>
-    <string name="button_retry" msgid="4392027584153752797">"ისევ ცდა"</string>
-    <string name="sort_name" msgid="9183560467917256779">"სახელით"</string>
-    <string name="sort_date" msgid="586080032956151448">"ცვლილების თარიღით"</string>
-    <string name="sort_size" msgid="3350681319735474741">"ზომით"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"ფესვების ჩვენება"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"ფესვების დამალვა"</string>
-    <string name="save_error" msgid="6167009778003223664">"დოკუმენტის შენახვა ვერ მოხერხდა"</string>
-    <string name="create_error" msgid="3735649141335444215">"საქაღალდის შექმნა ვერ მოხერხდა"</string>
-    <string name="query_error" msgid="5999895349602476581">"კონტენტის ჩატვირთვა ამჟამად ვერ ხერხდება"</string>
-    <string name="root_recent" msgid="4470053704320518133">"ბოლო"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> თავისუფალია"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"მეხსიერების სერვისები"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"მალსახმობები"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"მოწყობილობები"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"მეტი აპები"</string>
-    <string name="empty" msgid="7858882803708117596">"ერთეულები არ არის"</string>
-    <string name="no_results" msgid="6622510343880730446">"„%1$s“-ში დამთხვევა ვერ მოიძებნა"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"ფაილის გახსნა ვერ ხერხდება"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"ზოგიერთი დოკუმენტის წაშლა ვერ ხერხდება"</string>
-    <string name="share_via" msgid="8966594246261344259">"გაზიარება:"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"მიმდ. ფაილების კოპირება"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"ფაილების გადაადგილება"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"ფაილების წაშლა…"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"დარჩა <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">მიმდინარეობს <xliff:g id="COUNT_1">%1$d</xliff:g> ფაილის კოპირება.</item>
-      <item quantity="one">მიმდინარეობს <xliff:g id="COUNT_0">%1$d</xliff:g> ფაილის კოპირება.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">გადაადგილდება <xliff:g id="COUNT_1">%1$d</xliff:g> ფაილი.</item>
-      <item quantity="one">გადაადგილდება <xliff:g id="COUNT_0">%1$d</xliff:g> ფაილი.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">მიმდინარეობს <xliff:g id="COUNT_1">%1$d</xliff:g> ფაილის წაშლა.</item>
-      <item quantity="one">მიმდინარეობს <xliff:g id="COUNT_0">%1$d</xliff:g> ფაილის წაშლა.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"დაბრუნება"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"მომზადება კოპირებისთვის…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"გადაადგილება მზადდება..."</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"მზადდება წასაშლელად…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>-დან"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ფაილი ვერ დაკოპირდა</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ფაილი ვერ დაკოპირდა</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ფაილი ვერ გადაადგილდა</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ფაილი ვერ გადაადგილდა</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ფაილი ვერ წაიშალა</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ფაილი ვერ წაიშალა</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"შეეხეთ დეტალების სანახავად"</string>
-    <string name="close" msgid="3043722427445528732">"დახურვა"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"შემდეგი ფაილები არ დაკოპირდა: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"შემდეგი ფაილები არ გადაადგილდა: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"შემდეგი ფაილები არ წაიშალა: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"შემდეგი ფაილები გარდაქმნილია სხვა ფორმატში: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">მოხდა <xliff:g id="COUNT_1">%1$d</xliff:g> ფაილის გაცვლის ბუფერში კოპირება.</item>
-      <item quantity="one">მოხდა <xliff:g id="COUNT_0">%1$d</xliff:g> ფაილის გაცვლის ბუფერში კოპირება.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"ამ მდებარეობაში შერჩეული ფაილების ჩასმა შეუძლებელია."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"გადარქმევა"</string>
-    <string name="rename_error" msgid="4203041674883412606">"დოკუმენტის გადარქმევა ვერ მოხერხდა"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"ამოღება"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"ზოგიერთი ფაილი გარდაქმნილია"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"გსურთ, <xliff:g id="APPNAME"><b>^1</b></xliff:g> სარგებლობდეს <xliff:g id="STORAGE"><i>^3</i></xliff:g>-ის დირექტორიაზე „<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>“ წვდომის უფლებით?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"გსურთ, <xliff:g id="APPNAME"><b>^1</b></xliff:g> სარგებლობდეს დირექტორიაზე „<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>“ წვდომის უფლებით?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"გსურთ, <xliff:g id="APPNAME"><b>^1</b></xliff:g> სარგებლობდეს <xliff:g id="STORAGE"><i>^2</i></xliff:g>-ზე არსებულ მონაცემებზე, მათ შორის, ფოტოებსა და ვიდეოებზე, წვდომის უფლებით?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"აღარ მკითხოთ"</string>
-    <string name="allow" msgid="7225948811296386551">"უფლების მიცემა"</string>
-    <string name="deny" msgid="2081879885755434506">"აკრძალვა"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other">არჩეულია <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="one">არჩეულია <xliff:g id="COUNT_0">%1$d</xliff:g></item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ერთეული</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ერთეული</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"გსურთ, წაშალოთ „<xliff:g id="NAME">%1$s</xliff:g>“?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"გსურთ, წაშალოთ საქაღალდე „<xliff:g id="NAME">%1$s</xliff:g>“ და მისი შიგთავსი?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">გსურთ <xliff:g id="COUNT_1">%1$d</xliff:g> ფაილის წაშლა?</item>
-      <item quantity="one">გსურთ <xliff:g id="COUNT_0">%1$d</xliff:g> ფაილის წაშლა?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">გსურთ <xliff:g id="COUNT_1">%1$d</xliff:g> საქაღალდისა და მათი შიგთავსის წაშლა?</item>
-      <item quantity="one">გსურთ <xliff:g id="COUNT_0">%1$d</xliff:g> საქაღალდისა და მისი შიგთავსის წაშლა?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">გსურთ <xliff:g id="COUNT_1">%1$d</xliff:g> ერთეულის წაშლა?</item>
-      <item quantity="one">გსურთ <xliff:g id="COUNT_0">%1$d</xliff:g> ერთეულის წაშლა?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-kk-rKZ/strings.xml b/packages/DocumentsUI/res/values-kk-rKZ/strings.xml
deleted file mode 100644
index 2925361..0000000
--- a/packages/DocumentsUI/res/values-kk-rKZ/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Файлдар"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Жүктеулер"</string>
-    <string name="title_open" msgid="4353228937663917801">"Мынадан ашу:"</string>
-    <string name="title_save" msgid="2433679664882857999">"Сақталатын орны"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Жаңа қалта"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Торлы көрініс"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Тізім көрінісі"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Белгіге қарай сұрыптау"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Іздеу"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Жад параметрлері"</string>
-    <string name="menu_open" msgid="432922957274920903">"Ашу"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Сақтау"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Бөлісу"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Жою"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Барлығын таңдау"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Көшіру орны…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Орнын ауыстыру…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Жаңа терезе"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Қиып алу"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Көшіру"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Қою"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Ішкі жадты көрсету"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Ішкі жадты жасыру"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Файл өлшемін көрсету"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Файл өлшемін жасыру"</string>
-    <string name="button_select" msgid="527196987259139214">"Таңдау"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Көшіру"</string>
-    <string name="button_move" msgid="2202666023104202232">"Жылжыту"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Өшіру"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Әрекетті қайталау"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Атауы бойынша"</string>
-    <string name="sort_date" msgid="586080032956151448">"Өзгертілген мерзімі бойынша"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Өлшемі бойынша"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Тамырын көрсету"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Тамырын жасыру"</string>
-    <string name="save_error" msgid="6167009778003223664">"Құжатты сақтау орындалмады"</string>
-    <string name="create_error" msgid="3735649141335444215">"Қалта жасақтау іске аспады"</string>
-    <string name="query_error" msgid="5999895349602476581">"Қазір мазмұнды жүктеу мүмкін емес"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Жуықта қолданылған"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> бос"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Жад қызметтері"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Төте пернелер"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Құрылғылар"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Басқа қолданбалар"</string>
-    <string name="empty" msgid="7858882803708117596">"Бос"</string>
-    <string name="no_results" msgid="6622510343880730446">"%1$s ішінде сәйкестіктер жоқ"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Файлды ашу мүмкін емес"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Кейбір құжаттарды жою мүмкін болмады"</string>
-    <string name="share_via" msgid="8966594246261344259">"Бөлісу"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Файлдарды көшіру"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Файлдар тасымалдануда"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Файлдар жойылуда"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> қалды"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> файлды көшіру.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> файлды көшіру.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> файл орын ауыстыруда.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> файл орын ауыстыруда.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> файл жойылуда.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> файл жойылуда.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Кері қайтару"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Көшіруге дайындау…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Тасымалдауға дайындалуда..."</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Жоюға дайындалуда…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> файлды көшіру мүмкін болмады</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> файлды көшіру мүмкін болмады</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> файлды жылжыту мүмкін болмады</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> файлды жылжыту мүмкін болмады</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> файлды жою мүмкін болмады</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> файлды жою мүмкін болмады</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Мәліметтерді көру үшін түртіңіз"</string>
-    <string name="close" msgid="3043722427445528732">"Жабу"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Мына файлдар көшірілген жоқ: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Мына файлдар жылжытылған жоқ: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Келесі файлдар жойылмады: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Мына файлдар басқа пішімге түрлендірілді: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">Аралық сақтағышқа <xliff:g id="COUNT_1">%1$d</xliff:g> файл көшірілді.</item>
-      <item quantity="one">Аралық сақтағышқа <xliff:g id="COUNT_0">%1$d</xliff:g> файл көшірілді.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Таңдалған файлдарды бұл орынға қою мүмкін емес."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Атын өзгерту"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Құжат қайта аталмады"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Шығару"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Кейбір файлдар түрлендірілді"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> қолданбасына <xliff:g id="STORAGE"><i>^3</i></xliff:g> қоймасындағы <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> каталогына өтуге рұқсат беру керек пе?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> қолданбасына <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> каталогына кіруге рұқсат беру керек пе?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> <xliff:g id="STORAGE"><i>^2</i></xliff:g> қоймасындағы деректерге, соның ішінде фотосуреттерге және бейнелерге кіру мүмкіндігін беру керек пе?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Қайта сұралмасын"</string>
-    <string name="allow" msgid="7225948811296386551">"Рұқсат беру"</string>
-    <string name="deny" msgid="2081879885755434506">"Бас тарту"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> таңдалды</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> таңдалды</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> элемент</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> элемент</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"\"<xliff:g id="NAME">%1$s</xliff:g>\" жою керек пе?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"\"<xliff:g id="NAME">%1$s</xliff:g>\" қалтасын және оның мазмұнын жою керек пе?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> файлды жою керек пе?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> файлды жою керек пе?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> қалтаны ішіндегісімен бірге жою керек пе?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> қалтаны ішіндегісімен бірге жою керек пе?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> элементті жою керек пе?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> элементті жою керек пе?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-km-rKH/strings.xml b/packages/DocumentsUI/res/values-km-rKH/strings.xml
deleted file mode 100644
index 808a63e..0000000
--- a/packages/DocumentsUI/res/values-km-rKH/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"ឯកសារ"</string>
-    <string name="downloads_label" msgid="959113951084633612">"ទាញយក"</string>
-    <string name="title_open" msgid="4353228937663917801">"បើក​ពី"</string>
-    <string name="title_save" msgid="2433679664882857999">"រក្សា​ទុក​ទៅ"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"ថត​ថ្មី"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"ទិដ្ឋភាព​ក្រឡា​"</string>
-    <string name="menu_list" msgid="7279285939892417279">"ទិដ្ឋភាព​បញ្ជី"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"តម្រៀប​តាម"</string>
-    <string name="menu_search" msgid="3816712084502856974">"ស្វែងរក"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"កំណត់ការផ្ទុក"</string>
-    <string name="menu_open" msgid="432922957274920903">"បើក"</string>
-    <string name="menu_save" msgid="2394743337684426338">"រក្សាទុក"</string>
-    <string name="menu_share" msgid="3075149983979628146">"ចែករំលែក​"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"លុប"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"ជ្រើសរើសទាំងអស់"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"ថតចម្លងទៅ…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"ផ្លាស់ទីទៅ៖"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"បង្អួចថ្មី"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"កាត់"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"ចម្លង"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"បិទភ្ជាប់"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"បង្ហាញឧបករណ៍ផ្ទុកខាងក្នុង"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"លាក់​ឧបករណ៍​​ផ្ទុក​ខាងក្នុង"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"បង្ហាញទំហំឯកសារ"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"លាក់ទំហំឯកសារ"</string>
-    <string name="button_select" msgid="527196987259139214">"ជ្រើស"</string>
-    <string name="button_copy" msgid="8706475544635021302">"ចម្លង"</string>
-    <string name="button_move" msgid="2202666023104202232">"ផ្លាស់ទី"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"បដិសេធ"</string>
-    <string name="button_retry" msgid="4392027584153752797">"ព្យាយាមម្ដងទៀត"</string>
-    <string name="sort_name" msgid="9183560467917256779">"តាម​ឈ្មោះ"</string>
-    <string name="sort_date" msgid="586080032956151448">"តាម​កាលបរិច្ឆេទ​បាន​កែប្រែ"</string>
-    <string name="sort_size" msgid="3350681319735474741">"តាម​​ទំហំ"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"បង្ហាញ roots"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"លាក់ roots"</string>
-    <string name="save_error" msgid="6167009778003223664">"បាន​បរាជ័យ​ក្នុង​ការ​រក្សា​ទុក​ឯកសារ"</string>
-    <string name="create_error" msgid="3735649141335444215">"បាន​បរាជ័យ​ក្នុង​ការ​បង្កើត​ថត"</string>
-    <string name="query_error" msgid="5999895349602476581">"មិនអាចដំណើរការមាតិកាបានទេនៅពេលនេះ"</string>
-    <string name="root_recent" msgid="4470053704320518133">"ថ្មីៗ"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"ទំនេរ <xliff:g id="SIZE">%1$s</xliff:g>"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"សេវាកម្ម​ផ្ដល់​ឧបករណ៍​ផ្ទុក"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"ផ្លូវកាត់"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"ឧបករណ៍"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"កម្ម​វិធី​​ច្រើន​ទៀត"</string>
-    <string name="empty" msgid="7858882803708117596">"គ្មានធាតុ​"</string>
-    <string name="no_results" msgid="6622510343880730446">"មិនមានការប្រកួតនៅក្នុង %1$s ទេ"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"មិនអាចបើកឯកសារបានទេ"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"មិន​អាច​លុប​ឯកសារ​មួយ​ចំនួន"</string>
-    <string name="share_via" msgid="8966594246261344259">"ចែករំលែក​តាម"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"កំពុងថតចម្លងឯកសារ"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"ផ្លាស់ទីឯកសារ"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"កំពុងលុបឯកសារ"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"នៅសល់ <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">កំពុងថតចម្លងឯកសារចំនួន <xliff:g id="COUNT_1">%1$d</xliff:g> ។</item>
-      <item quantity="one">កំពុងថតចម្លងឯកសារចំនួន <xliff:g id="COUNT_0">%1$d</xliff:g> ។</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">កំពុងផ្លាស់ទីឯកសារ <xliff:g id="COUNT_1">%1$d</xliff:g>។</item>
-      <item quantity="one">កំពុងផ្លាស់ទីឯកសារ <xliff:g id="COUNT_0">%1$d</xliff:g>។</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">កំពុងលុបឯកសារ <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="one">កំពុងលុបឯកសារ <xliff:g id="COUNT_0">%1$d</xliff:g></item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"មិនធ្វើវិញ"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"កំពុងរៀបចំចម្លង…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"កំពុងរៀបចំផ្លាស់ទី…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"កំពុងរៀបចំលុប…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">មិនអាចថតចម្លងឯកសារ <xliff:g id="COUNT_1">%1$d</xliff:g> ច្បាប់</item>
-      <item quantity="one">មិនអាចថតចម្លងឯកសារ <xliff:g id="COUNT_0">%1$d</xliff:g> ច្បាប់</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">មិនអាចផ្លាស់ទីឯកសារ <xliff:g id="COUNT_1">%1$d</xliff:g> ច្បាប់</item>
-      <item quantity="one">មិនអាចផ្លាស់ទីឯកសារ <xliff:g id="COUNT_0">%1$d</xliff:g> ច្បាប់</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">មិនអាចលុបឯកសារ <xliff:g id="COUNT_1">%1$d</xliff:g> ច្បាប់</item>
-      <item quantity="one">មិនអាចលុបឯកសារ <xliff:g id="COUNT_0">%1$d</xliff:g> ច្បាប់</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"ប៉ះដើម្បីមើលព័ត៌មានលម្អិត"</string>
-    <string name="close" msgid="3043722427445528732">"បិទ"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"ឯកសារទាំងនេះមិនត្រូវបានថតចម្លងទេ៖ <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"ឯកសារទាំងនេះមិនត្រូវបានផ្លាស់ទីទេ៖ <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"ឯកសារទាំងនេះមិនត្រូវបានលុបទេ៖ <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"ឯកសារទាំងនេះត្រូវបានបម្លែងទៅជាទម្រង់ផ្សេង៖ <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">បានចម្លងឯកសារ <xliff:g id="COUNT_1">%1$d</xliff:g> ទៅតម្បៀតខ្ទាស់។</item>
-      <item quantity="one">បានចម្លងឯកសារ <xliff:g id="COUNT_0">%1$d</xliff:g> ទៅតម្បៀតខ្ទាស់។</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"មិនអាចបិទភ្ជាប់ឯកសារដែលបានជ្រើសនៅក្នុងទីតាំងនេះបានទេ។"</string>
-    <string name="menu_rename" msgid="7678802479104285353">"ប្ដូរឈ្មោះ"</string>
-    <string name="rename_error" msgid="4203041674883412606">"បានបរាជ័យក្នុងការប្តូរឈ្មោះឯកសារ"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"ដកចេញ"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"ឯកសារមួយចំនួនត្រូវបានបម្លែង"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"ផ្តល់សិទ្ធិឲ្យ <xliff:g id="APPNAME"><b>^1</b></xliff:g> ចូលដំណើរការថត <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> នៅលើ <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"ផ្តល់សិទ្ធិឲ្យ <xliff:g id="APPNAME"><b>^1</b></xliff:g> ចូលដំណើរការថត <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ឬ?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"ផ្តល់សិទ្ធិអនុញ្ញាតដល់ <xliff:g id="APPNAME"><b>^1</b></xliff:g> ដើម្បីចូលដំណើរការទិន្នន័យរបស់អ្នក រាប់បញ្ចូលទាំងរូបថត និងវីដេអូ នៅលើ <xliff:g id="STORAGE"><i>^2</i></xliff:g> ឬទេ?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"កុំសួរទៀត"</string>
-    <string name="allow" msgid="7225948811296386551">"អនុញ្ញាត​"</string>
-    <string name="deny" msgid="2081879885755434506">"បដិសេធ"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other">បានជ្រើស <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="one">បានជ្រើស <xliff:g id="COUNT_0">%1$d</xliff:g></item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ធាតុ</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ធាតុ</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"លុប \"<xliff:g id="NAME">%1$s</xliff:g>\" ឬ?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"លុបថតឯកសារ \"<xliff:g id="NAME">%1$s</xliff:g>\" និងមាតិការបស់វាឬ?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">លុបឯកសារ <xliff:g id="COUNT_1">%1$d</xliff:g> ច្បាប់ឬ?</item>
-      <item quantity="one">លុបឯកសារ <xliff:g id="COUNT_0">%1$d</xliff:g> ច្បាប់ឬ?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">លុបថតឯកសារ <xliff:g id="COUNT_1">%1$d</xliff:g> និងមាតិការបស់វាឬ?</item>
-      <item quantity="one">លុបថតឯកសារ <xliff:g id="COUNT_0">%1$d</xliff:g> និងមាតិការបស់វាឬ?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">លុបធាតុ <xliff:g id="COUNT_1">%1$d</xliff:g> ឬ?</item>
-      <item quantity="one">លុបធាតុ <xliff:g id="COUNT_0">%1$d</xliff:g> ឬ?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-kn-rIN/strings.xml b/packages/DocumentsUI/res/values-kn-rIN/strings.xml
deleted file mode 100644
index 9e83f2a..0000000
--- a/packages/DocumentsUI/res/values-kn-rIN/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"ಫೈಲ್‌ಗಳು"</string>
-    <string name="downloads_label" msgid="959113951084633612">"ಡೌನ್‌ಲೋಡ್‌ಗಳು"</string>
-    <string name="title_open" msgid="4353228937663917801">"ಇದರ ಮೂಲಕ ತೆರೆಯಿರಿ"</string>
-    <string name="title_save" msgid="2433679664882857999">"ಇವುಗಳಲ್ಲಿ ಉಳಿಸಿ"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"ಹೊಸ ಫೋಲ್ಡರ್"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"ಗ್ರಿಡ್ ವೀಕ್ಷಣೆ"</string>
-    <string name="menu_list" msgid="7279285939892417279">"ಪಟ್ಟಿ ವೀಕ್ಷಣೆ"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"ಈ ಪ್ರಕಾರ ವಿಂಗಡಿಸು"</string>
-    <string name="menu_search" msgid="3816712084502856974">"ಹುಡುಕು"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"ಸಂಗ್ರಹಣೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
-    <string name="menu_open" msgid="432922957274920903">"ತೆರೆ"</string>
-    <string name="menu_save" msgid="2394743337684426338">"ಉಳಿಸು"</string>
-    <string name="menu_share" msgid="3075149983979628146">"ಹಂಚು"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"ಅಳಿಸು"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"ಎಲ್ಲವನ್ನೂ ಆಯ್ಕೆಮಾಡಿ"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"ಇದಕ್ಕೆ ನಕಲಿಸಿ…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"ಇದಕ್ಕೆ ಸರಿಸು…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"ಹೊಸ ವಿಂಡೋ"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"ಕತ್ತರಿಸು"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"ನಕಲಿಸು"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"ಅಂಟಿಸು"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"ಆಂತರಿಕ ಸಂಗ್ರಹಣೆಯನ್ನು ತೋರಿಸು"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"ಆಂತರಿಕ ಸಂಗ್ರಹಣೆಯನ್ನು ಮರೆಮಾಡಿ"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"ಫೈಲ್‌ ಗಾತ್ರವನ್ನು ತೋರಿಸು"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"ಫೈಲ್‌ ಗಾತ್ರವನ್ನು ಮರೆಮಾಡಿ"</string>
-    <string name="button_select" msgid="527196987259139214">"ಆಯ್ಕೆಮಾಡು"</string>
-    <string name="button_copy" msgid="8706475544635021302">"ನಕಲಿಸು"</string>
-    <string name="button_move" msgid="2202666023104202232">"ಸರಿಸು"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"ವಜಾಗೊಳಿಸಿ"</string>
-    <string name="button_retry" msgid="4392027584153752797">"ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ"</string>
-    <string name="sort_name" msgid="9183560467917256779">"ಹೆಸರಿನ ಪ್ರಕಾರ"</string>
-    <string name="sort_date" msgid="586080032956151448">"ಮಾರ್ಪಡಿಸಿರುವ ದಿನಾಂಕದ ಪ್ರಕಾರ"</string>
-    <string name="sort_size" msgid="3350681319735474741">"ಗಾತ್ರದ ಪ್ರಕಾರ"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"ರೂಟ್‌ಗಳನ್ನು ತೋರಿಸು"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"ರೂಟ್‌ಗಳನ್ನು ಮರೆಮಾಡು"</string>
-    <string name="save_error" msgid="6167009778003223664">"ಡಾಕ್ಯುಮೆಂಟ್ ಉಳಿಸಲು ವಿಫಲವಾಗಿದೆ"</string>
-    <string name="create_error" msgid="3735649141335444215">"ಫೋಲ್ಡರ್ ರಚಿಸಲು ವಿಫಲವಾಗಿದೆ"</string>
-    <string name="query_error" msgid="5999895349602476581">"ಈ ಕ್ಷಣದಲ್ಲಿ ವಿಷಯವನ್ನು ಲೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
-    <string name="root_recent" msgid="4470053704320518133">"ಇತ್ತೀಚಿನದು"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> ಮುಕ್ತವಾಗಿದೆ"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"ಸಂಗ್ರಹಣೆ ಸೇವೆಗಳು"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"ಶಾರ್ಟ್‌ಕಟ್‌ಗಳು"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"ಸಾಧನಗಳು"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"ಇನ್ನಷ್ಟು ಅಪ್ಲಿಕೇಶನ್‌ಗಳು"</string>
-    <string name="empty" msgid="7858882803708117596">"ಯಾವುದೇ ಐಟಂಗಳಿಲ್ಲ"</string>
-    <string name="no_results" msgid="6622510343880730446">"%1$s ರಲ್ಲಿ ಯಾವುದೇ ಹೊಂದಾಣಿಕೆಗಳಿಲ್ಲ"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"ಫೈಲ್ ತೆರೆಯಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"ಕೆಲವು ಡಾಕ್ಯುಮೆಂಟ್‌ಗಳನ್ನು ಅಳಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ"</string>
-    <string name="share_via" msgid="8966594246261344259">"ಈ ಮೂಲಕ ಹಂಚಿಕೊಳ್ಳಿ"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"ಫೈಲ್‌ಗಳನ್ನು ನಕಲಿಸಲಾಗುತ್ತಿದೆ"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"ಫೈಲ್‌ಗಳನ್ನು ಸರಿಸಲಾಗುತ್ತಿದೆ"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"ಫೈಲ್ ಅಳಿಸಲಾಗುತ್ತಿದೆ"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> ಉಳಿದಿದೆ"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one"> <xliff:g id="COUNT_1">%1$d</xliff:g> ಫೈಲ್‌ಗಳನ್ನು ನಕಲಿಸಲಾಗುತ್ತಿದೆ.</item>
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> ಫೈಲ್‌ಗಳನ್ನು ನಕಲಿಸಲಾಗುತ್ತಿದೆ.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ಫೈಲ್‌ಗಳನ್ನು ಸರಿಸಲಾಗುತ್ತಿದೆ.</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ಫೈಲ್‌ಗಳನ್ನು ಸರಿಸಲಾಗುತ್ತಿದೆ.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ಫೈಲ್‌ಗಳನ್ನು ಅಳಿಸಲಾಗುತ್ತಿದೆ.</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ಫೈಲ್‌ಗಳನ್ನು ಅಳಿಸಲಾಗುತ್ತಿದೆ.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"ರದ್ದುಗೊಳಿಸಿ"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"ನಕಲಿಸಲು ಸಿದ್ಧಪಡಿಸಲಾಗುತ್ತಿದೆ..."</string>
-    <string name="move_preparing" msgid="2772219441375531410">"ಸರಿಸಲು ಸಿದ್ಧಪಡಿಸಲಾಗುತ್ತಿದೆ…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"ಅಳಿಸಲು ಸಿದ್ಧಪಡಿಸಲಾಗುತ್ತಿದೆ…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ಫೈಲ್‌ಗಳನ್ನು ನಕಲಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ಫೈಲ್‌ಗಳನ್ನು ನಕಲಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ಫೈಲ್‌ಗಳನ್ನು ಸರಿಸಲಾಗಲಿಲ್ಲ</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ಫೈಲ್‌ಗಳನ್ನು ಸರಿಸಲಾಗಲಿಲ್ಲ</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ಫೈಲ್‌ಗಳನ್ನು ಅಳಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ಫೈಲ್‌ಗಳನ್ನು ಅಳಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"ವಿವರಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
-    <string name="close" msgid="3043722427445528732">"ಮುಚ್ಚು"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"ಈ ಫೈಲ್‌ಗಳನ್ನು ನಕಲಿಸಲಾಗಿಲ್ಲ: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"ಈ ಫೈಲ್‌ಗಳನ್ನು ಸರಿಸಲಾಗಿಲ್ಲ: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"ಈ ಫೈಲ್‌ಗಳನ್ನು ಅಳಿಸಲಾಗಿಲ್ಲ: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"ಈ ಫೈಲ್‌ಗಳನ್ನು ಮತ್ತೊಂದು ಫಾರ್ಮೆಟ್‌ಗೆ ಪರಿವರ್ತಿಸಲಾಗಿತ್ತು: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one">ಕ್ಲಿಪ್‌ಬೋರ್ಡ್‌ಗೆ <xliff:g id="COUNT_1">%1$d</xliff:g> ಫೈಲ್‌ಗಳನ್ನು ನಕಲಿಸಲಾಗಿದೆ.</item>
-      <item quantity="other">ಕ್ಲಿಪ್‌ಬೋರ್ಡ್‌ಗೆ <xliff:g id="COUNT_1">%1$d</xliff:g> ಫೈಲ್‌ಗಳನ್ನು ನಕಲಿಸಲಾಗಿದೆ.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"ಈ ಸ್ಥಳದಲ್ಲಿ ಆಯ್ಕೆಮಾಡಿದ ಫೈಲ್‌ಗಳನ್ನು ಅಂಟಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"ಮರುಹೆಸರಿಸು"</string>
-    <string name="rename_error" msgid="4203041674883412606">"ಡಾಕ್ಯುಮೆಂಟ್ ಮರುಹೆಸರಿಸಲು ವಿಫಲವಾಗಿದೆ"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"ಎಜೆಕ್ಟ್‌‌"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"ಕೆಲವು ಫೈಲ್‌ಗಳನ್ನು ಪರಿವರ್ತಿಸಲಾಗಿದೆ"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="STORAGE"><i>^3</i></xliff:g> ರಲ್ಲಿ <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ಡೈರೆಕ್ಟರಿಗೆ <xliff:g id="APPNAME"><b>^1</b></xliff:g> ಪ್ರವೇಶ ನೀಡುವುದೇ?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g><xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ಡೈರೆಕ್ಟರಿ ಪ್ರವೇಶಿಸಲು ಅನುಮತಿಸುವುದೇ?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="STORAGE"><i>^2</i></xliff:g> ಸಂಗ್ರಹಣೆಯಲ್ಲಿನ ಪೋಟೋಗಳು ಮತ್ತು ವೀಡಿಯೊಗಳು ಸೇರಿದಂತೆ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸಲು <xliff:g id="APPNAME"><b>^1</b></xliff:g> ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಅನುಮತಿಸುವುದೇ?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"ಮತ್ತೆ ಕೇಳಬೇಡಿ"</string>
-    <string name="allow" msgid="7225948811296386551">"ಅನುಮತಿಸು"</string>
-    <string name="deny" msgid="2081879885755434506">"ನಿರಾಕರಿಸು"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ಐಟಂಗಳು</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ಐಟಂಗಳು</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"\"<xliff:g id="NAME">%1$s</xliff:g>\" ಅಳಿಸುವುದೇ?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"\"<xliff:g id="NAME">%1$s</xliff:g>\" ಫೋಲ್ಡರ್‌ ಮತ್ತು ಅದರ ವಿಷಯಗಳನ್ನು ಅಳಿಸುವುದೇ?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one"> <xliff:g id="COUNT_1">%1$d</xliff:g> ಫೈಲ್‌ಗಳನ್ನು ಅಳಿಸುವುದೇ?</item>
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> ಫೈಲ್‌ಗಳನ್ನು ಅಳಿಸುವುದೇ?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one"> <xliff:g id="COUNT_1">%1$d</xliff:g> ಫೋಲ್ಡರ್‌ಗಳು ಮತ್ತು ಅವುಗಳ ವಿಷಯಗಳನ್ನು ಅಳಿಸುವುದೇ?</item>
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> ಫೋಲ್ಡರ್‌ಗಳು ಮತ್ತು ಅವುಗಳ ವಿಷಯಗಳನ್ನು ಅಳಿಸುವುದೇ?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one"> <xliff:g id="COUNT_1">%1$d</xliff:g> ಐಟಂಗಳನ್ನು ಅಳಿಸುವುದೇ?</item>
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> ಐಟಂಗಳನ್ನು ಅಳಿಸುವುದೇ?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-ko/strings.xml b/packages/DocumentsUI/res/values-ko/strings.xml
deleted file mode 100644
index c990d9f..0000000
--- a/packages/DocumentsUI/res/values-ko/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"파일"</string>
-    <string name="downloads_label" msgid="959113951084633612">"다운로드"</string>
-    <string name="title_open" msgid="4353228937663917801">"열기:"</string>
-    <string name="title_save" msgid="2433679664882857999">"저장 위치:"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"새 폴더"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"바둑판식 보기"</string>
-    <string name="menu_list" msgid="7279285939892417279">"목록 보기"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"정렬 기준"</string>
-    <string name="menu_search" msgid="3816712084502856974">"검색"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"저장소 설정"</string>
-    <string name="menu_open" msgid="432922957274920903">"열기"</string>
-    <string name="menu_save" msgid="2394743337684426338">"저장"</string>
-    <string name="menu_share" msgid="3075149983979628146">"공유"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"삭제"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"모두 선택"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"복사…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"이동…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"새 창"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"잘라내기"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"복사"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"붙여넣기"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"내부 저장소 표시"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"내부 저장소 숨기기"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"파일 크기 표시"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"파일 크기 숨기기"</string>
-    <string name="button_select" msgid="527196987259139214">"선택"</string>
-    <string name="button_copy" msgid="8706475544635021302">"복사"</string>
-    <string name="button_move" msgid="2202666023104202232">"이동"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"닫기"</string>
-    <string name="button_retry" msgid="4392027584153752797">"다시 시도"</string>
-    <string name="sort_name" msgid="9183560467917256779">"이름순"</string>
-    <string name="sort_date" msgid="586080032956151448">"수정된 날짜순"</string>
-    <string name="sort_size" msgid="3350681319735474741">"크기순"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"루트 표시"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"루트 숨기기"</string>
-    <string name="save_error" msgid="6167009778003223664">"문서 저장 실패"</string>
-    <string name="create_error" msgid="3735649141335444215">"폴더를 만들지 못함"</string>
-    <string name="query_error" msgid="5999895349602476581">"현재 콘텐츠를 로드할 수 없습니다."</string>
-    <string name="root_recent" msgid="4470053704320518133">"최근"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> 남음"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"저장용량 서비스"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"바로가기"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"기기"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"앱 더보기"</string>
-    <string name="empty" msgid="7858882803708117596">"항목 없음"</string>
-    <string name="no_results" msgid="6622510343880730446">"%1$s에 일치하는 항목이 없습니다."</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"파일을 열 수 없습니다."</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"일부 문서를 삭제할 수 없음"</string>
-    <string name="share_via" msgid="8966594246261344259">"공유 방법"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"파일 복사 중"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"파일 이동"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"파일 삭제"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> 남음"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">파일 <xliff:g id="COUNT_1">%1$d</xliff:g>개를 복사합니다.</item>
-      <item quantity="one">파일 <xliff:g id="COUNT_0">%1$d</xliff:g>개를 복사합니다.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">파일 <xliff:g id="COUNT_1">%1$d</xliff:g>개 이동</item>
-      <item quantity="one">파일 <xliff:g id="COUNT_0">%1$d</xliff:g>개 이동</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">파일 <xliff:g id="COUNT_1">%1$d</xliff:g>개 삭제</item>
-      <item quantity="one">파일 <xliff:g id="COUNT_0">%1$d</xliff:g>개 삭제</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"실행취소"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"사본 준비 중…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"이동 준비 중…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"삭제 준비 중..."</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">파일 <xliff:g id="COUNT_1">%1$d</xliff:g>개를 복사할 수 없습니다.</item>
-      <item quantity="one">파일 <xliff:g id="COUNT_0">%1$d</xliff:g>개를 복사할 수 없습니다.</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">파일 <xliff:g id="COUNT_1">%1$d</xliff:g>개를 이동할 수 없습니다.</item>
-      <item quantity="one">파일 <xliff:g id="COUNT_0">%1$d</xliff:g>개를 이동할 수 없습니다.</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">파일 <xliff:g id="COUNT_1">%1$d</xliff:g>개를 삭제할 수 없습니다.</item>
-      <item quantity="one">파일 <xliff:g id="COUNT_0">%1$d</xliff:g>개를 삭제할 수 없습니다.</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"세부정보를 보려면 탭하세요."</string>
-    <string name="close" msgid="3043722427445528732">"닫기"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"다음 파일이 복사되지 않았습니다. <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"다음 파일이 이동되지 않았습니다. <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"다음 파일이 삭제되지 않았습니다. <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"파일이 다음과 같이 다른 형식으로 변환되었습니다. <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">파일 <xliff:g id="COUNT_1">%1$d</xliff:g>개를 클립보드에 복사함</item>
-      <item quantity="one">파일 <xliff:g id="COUNT_0">%1$d</xliff:g>개를 클립보드에 복사함</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"선택한 파일을 이 위치에 붙여넣을 수 없습니다."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"이름 바꾸기"</string>
-    <string name="rename_error" msgid="4203041674883412606">"문서 이름을 변경하지 못했습니다."</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"꺼내기"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"일부 파일이 변환되었습니다."</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g>이(가) <xliff:g id="STORAGE"><i>^3</i></xliff:g>에서 <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> 디렉토리에 액세스하도록 허용하시겠습니까?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g>이(가) <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> 디렉토리에 액세스하도록 허용하시겠습니까?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="APPNAME"><b>^1</b></xliff:g>에서 사진, 동영상 등 <xliff:g id="STORAGE"><i>^2</i></xliff:g>의 내 데이터에 액세스하도록 허용하시겠습니까?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"다시 묻지 않음"</string>
-    <string name="allow" msgid="7225948811296386551">"허용"</string>
-    <string name="deny" msgid="2081879885755434506">"거부"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>개 선택됨</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g>개 선택됨</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other">항목 <xliff:g id="COUNT_1">%1$d</xliff:g>개</item>
-      <item quantity="one">항목 <xliff:g id="COUNT_0">%1$d</xliff:g>개</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"<xliff:g id="NAME">%1$s</xliff:g>을(를) 삭제하시겠습니까?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"\'<xliff:g id="NAME">%1$s</xliff:g>\' 폴더와 폴더에 포함된 콘텐츠를 삭제하시겠습니까?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">파일 <xliff:g id="COUNT_1">%1$d</xliff:g>개를 삭제하시겠습니까?</item>
-      <item quantity="one">파일 <xliff:g id="COUNT_0">%1$d</xliff:g>개를 삭제하시겠습니까?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">폴더 <xliff:g id="COUNT_1">%1$d</xliff:g>개와 폴더에 포함된 콘텐츠를 삭제하시겠습니까?</item>
-      <item quantity="one">폴더 <xliff:g id="COUNT_0">%1$d</xliff:g>개와 폴더에 포함된 콘텐츠를 삭제하시겠습니까?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">항목 <xliff:g id="COUNT_1">%1$d</xliff:g>개를 삭제하시겠습니까?</item>
-      <item quantity="one">항목 <xliff:g id="COUNT_0">%1$d</xliff:g>개를 삭제하시겠습니까?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-ky-rKG/strings.xml b/packages/DocumentsUI/res/values-ky-rKG/strings.xml
deleted file mode 100644
index 5c1d71a..0000000
--- a/packages/DocumentsUI/res/values-ky-rKG/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Файлдар"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Жүктөлүп алынгандар"</string>
-    <string name="title_open" msgid="4353228937663917801">"Кийинкиден ачуу:"</string>
-    <string name="title_save" msgid="2433679664882857999">"Кийинкиге сактоо:"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Жаңы куржун"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Тор көрүнүшү"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Тизмек көрүнүшү"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Ылгоо"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Издөө"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Сактагычтын жөндөөлөрү"</string>
-    <string name="menu_open" msgid="432922957274920903">"Ачуу"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Сактоо"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Бөлүшүү"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Жок кылуу"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Бардыгын тандоо"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Төмөнкүгө көчүрүү…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Төмөнкүгө жылдыруу..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Жаңы терезе"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Кесүү"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Көчүрүү"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Чаптоо"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Ички сактагычты көрсөтүү"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Ички эстутумду жашыруу"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Файл өлчөмүн көрсөтүү"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Файл өлчөмүн жашыруу"</string>
-    <string name="button_select" msgid="527196987259139214">"Тандоо"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Көчүрүү"</string>
-    <string name="button_move" msgid="2202666023104202232">"Жылдыруу"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Этибарга албоо"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Дагы аракет кылыңыз"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Аты боюнча"</string>
-    <string name="sort_date" msgid="586080032956151448">"Өзгөртүлгөн күнү боюнча"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Өлчөмү боюнча"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Папкаларды көрсөтүү"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Папкаларды жашыруу"</string>
-    <string name="save_error" msgid="6167009778003223664">"Документтерди сактоо кыйрады"</string>
-    <string name="create_error" msgid="3735649141335444215">"Папка түзүү кыйрады"</string>
-    <string name="query_error" msgid="5999895349602476581">"Учурда мазмун жүктөлбөй жатат"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Акыркы"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> бош"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Сактагыч кызматтар"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Тез чакырмалар"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Түзмөктөр"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Көбүрөөк колдонмолор"</string>
-    <string name="empty" msgid="7858882803708117596">"Эч нерсе жок"</string>
-    <string name="no_results" msgid="6622510343880730446">"%1$s ичинде дал келүүлөр жок"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Файл ачылбай жатат"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Кээ бир документтерди өчүрүү кыйрады"</string>
-    <string name="share_via" msgid="8966594246261344259">"Кийинки аркылуу бөлүшүү:"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Файлдар көчүрүлүүдө"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Файлдар жылдырылууда…"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Файлдар жок кылынууда"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> калды"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> файл көчүрүлүүдө.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> файл көчүрүлүүдө.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> файл жылдырылууда.</item>
-      <item quantity="one"> <xliff:g id="COUNT_0">%1$d</xliff:g> файл жылдырылууда.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> файл жок кылынууда.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> файл жок кылынууда.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Артка кайтаруу"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Көчүрүүгө даярдалууда…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Жылдырууга даярдалууда…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Жок кылууга даярдалууда…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> файл көчүрүлбөй койду</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> файл көчүрүлбөй койду</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> файл жылдырылбай койду</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> файл жылдырылбай койду</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> файл жок кылынбай койду</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> файл жок кылынбай койду</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Чоо-жайын көрүү үчүн таптаңыз"</string>
-    <string name="close" msgid="3043722427445528732">"Жабуу"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Төмөнкү файлдар көчүрүлгөн жок: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Төмөнкү файлдар жылдырылган жок: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Төмөнкү файлдар өчүрүлгөн жок: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Бул файлдар башка форматка айландырылды: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> файл буферге көчүрүлдү.</item>
-      <item quantity="one"> <xliff:g id="COUNT_0">%1$d</xliff:g> файл буферге көчүрүлдү.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Тандалган файлдарды бул жерге чаптоого мүмкүн эмес."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Аталышын өзгөртүү"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Документтин аталышы өзгөртүлбөй калды"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Чыгаруу"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Айрым файлдардын форматы өзгөртүлдү"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> колдонмосуна <xliff:g id="STORAGE"><i>^3</i></xliff:g> түзмөгүндөгү <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> папканы пайдалануу мүмкүнчүлүгү берилсинби?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> колдонмосуна <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> каталогун пайдалануу мүмкүнчүлүгү берилсинби?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> колдонмосуна <xliff:g id="STORAGE"><i>^2</i></xliff:g> түзмөгүндөгү дайындарыңыз, сүрөттөрүңүз жана видеолоруңузду пайдалануу мүмкүнчүлүгү берилсинби?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Экинчи суралбасын"</string>
-    <string name="allow" msgid="7225948811296386551">"Уруксат берүү"</string>
-    <string name="deny" msgid="2081879885755434506">"Жок"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> тандалды</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> тандалды</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> нерсе</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> нерсе</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"\"<xliff:g id="NAME">%1$s</xliff:g>\" жок кылынсынбы?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"\"<xliff:g id="NAME">%1$s</xliff:g>\" куржуну мазмуну менен жок кылынсынбы?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> файл жок кылынсынбы?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> файл жок кылынсынбы?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> куржун мазмуну менен жок кылынсынбы?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> куржун мазмуну менен жок кылынсынбы?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> нерсе жок кылынсынбы?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> нерсе жок кылынсынбы?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-lo-rLA/strings.xml b/packages/DocumentsUI/res/values-lo-rLA/strings.xml
deleted file mode 100644
index cb1bad3..0000000
--- a/packages/DocumentsUI/res/values-lo-rLA/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"​ໄຟລ໌"</string>
-    <string name="downloads_label" msgid="959113951084633612">"ການດາວໂຫລດ"</string>
-    <string name="title_open" msgid="4353228937663917801">"ເປີດ​ຈາກ"</string>
-    <string name="title_save" msgid="2433679664882857999">"ບັນທຶກໄປທີ່"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"ໂຟ​ລ​ເດີໃໝ່"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"ມຸມມອງແບບຊ່ອງ"</string>
-    <string name="menu_list" msgid="7279285939892417279">"ມຸມມອງແບບລາຍຊື່"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"ຮຽງລຳດັບຕາມ"</string>
-    <string name="menu_search" msgid="3816712084502856974">"ຊອກຫາ"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"ການຕັ້ງຄ່າບ່ອນເກັບຂໍ້ມູນ"</string>
-    <string name="menu_open" msgid="432922957274920903">"ເປີດ"</string>
-    <string name="menu_save" msgid="2394743337684426338">"ບັນທຶກ"</string>
-    <string name="menu_share" msgid="3075149983979628146">"ແບ່ງປັນ"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"ລຶບ"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"ເລືອກທັງຫມົດ"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"ສຳເນົາໄປໃສ່..."</string>
-    <string name="menu_move" msgid="1828090633118079817">"ຍ້າຍໄປໃສ່..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"ໜ້າຈໍໃໝ່"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"​ຕັດ"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"ສຳເນົາ"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"​ວາງໃສ່"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"ສະແດງ​ໂຕເກັບ​ຂໍ້ມູນພາຍໃນ"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"ເຊື່ອງ​ໂຕ​ເກັບຂໍ້ມູນ​ພາຍໃນ"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"ສະແດງ​ຂະໜາດ​ໄຟລ໌"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"ເຊື່ອງ​ຂະ​ຫນາດ​ໄຟລ໌"</string>
-    <string name="button_select" msgid="527196987259139214">"ເລືອກ"</string>
-    <string name="button_copy" msgid="8706475544635021302">"ສຳເນົາ"</string>
-    <string name="button_move" msgid="2202666023104202232">"ຍ້າຍ"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"ປິດໄວ້"</string>
-    <string name="button_retry" msgid="4392027584153752797">"​ລອງ​ໃໝ່​ອີກ​"</string>
-    <string name="sort_name" msgid="9183560467917256779">"ຕາມຊື່"</string>
-    <string name="sort_date" msgid="586080032956151448">"ຕາມວັນທີທີ່ແກ້ໄຂ"</string>
-    <string name="sort_size" msgid="3350681319735474741">"ຕາມຂະໜາດ"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"ສະແດງ roots"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"ເຊື່ອງ roots"</string>
-    <string name="save_error" msgid="6167009778003223664">"ການບັນທຶກເອກະສານລົ້ມເຫລວ"</string>
-    <string name="create_error" msgid="3735649141335444215">"ການ​ສ້າງ​ໂຟນ​ເດີລົ້ມເຫຼວ"</string>
-    <string name="query_error" msgid="5999895349602476581">"ບໍ່ສາມາດໂຫຼດເນື້ອຫາໄດ້ໃນຂະນະນີ້"</string>
-    <string name="root_recent" msgid="4470053704320518133">"ຫຼ້າສຸດ"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"ຟຣີ <xliff:g id="SIZE">%1$s</xliff:g>"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"ບໍລິການບ່ອນຈັດເກັບຂໍ້ມູນ"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"ທາງລັດ"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"ອຸປະກອນ"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"ແອັບຯອື່ນໆ"</string>
-    <string name="empty" msgid="7858882803708117596">"ບໍ່ມີລາຍການ"</string>
-    <string name="no_results" msgid="6622510343880730446">"ບໍ່ພົບສິ່ງກົງກັນໃນ %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"ບໍ່ສາມາດເປີດໄຟລ໌ໄດ້"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"ບໍ່ສາມາດລຶບບາງເອກະສານໄດ້"</string>
-    <string name="share_via" msgid="8966594246261344259">"ແບ່ງປັນຜ່ານ"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"ກຳ​ລັງ​ອັດ​ສຳ​ເນົາ​ໄຟ​ລ໌"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"ກຳ​ລັງ​ຍ້າຍ​ໄຟ​ລ໌"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"ກຳລັງລຶບໄຟລ໌"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> ຍັງ​ເຫຼືອ​ຢູ່"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">ກຳ​ລັງ​ອັດ​ສຳ​ເນົາ <xliff:g id="COUNT_1">%1$d</xliff:g> ໄຟ​ລ໌.</item>
-      <item quantity="one">ກຳ​ລັງ​ອັດ​ສຳ​ເນົາ <xliff:g id="COUNT_0">%1$d</xliff:g> ໄຟ​ລ໌.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">ກຳ​ລັງ​ຍ້າຍ <xliff:g id="COUNT_1">%1$d</xliff:g> ໄຟ​ລ໌.</item>
-      <item quantity="one">ກຳ​ລັງ​ຍ້າຍ <xliff:g id="COUNT_0">%1$d</xliff:g> ໄຟ​ລ໌.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">ກຳ​ລັງ​ລຶບ <xliff:g id="COUNT_1">%1$d</xliff:g> ໄຟ​ລ໌.</item>
-      <item quantity="one">ກຳ​ລັງ​ລຶບ <xliff:g id="COUNT_0">%1$d</xliff:g> ໄຟ​ລ໌.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"ບໍ່​ເຮັດ"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"ກຳ​ລັງ​ກຽມ​ອັດ​ສຳ​ເນົາ…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"ກຳ​ລັງ​ກະ​ກຽມ​ຍ້າຍ…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"ກຳລັງກະກຽມລຶບ…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">ບໍ່ສາມາດສຳເນົາ <xliff:g id="COUNT_1">%1$d</xliff:g> ໄຟລ໌ໄດ້</item>
-      <item quantity="one">ບໍ່ສາມາດສຳເນົາ <xliff:g id="COUNT_0">%1$d</xliff:g> ໄຟລ໌ໄດ້</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">ບໍ່ສາມາດຍ້າຍ <xliff:g id="COUNT_1">%1$d</xliff:g> ໄຟລ໌ໄດ້</item>
-      <item quantity="one">ບໍ່ສາມາດຍ້າຍ <xliff:g id="COUNT_0">%1$d</xliff:g> ໄຟລ໌ໄດ້</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">ບໍ່ສາມາດລຶບ <xliff:g id="COUNT_1">%1$d</xliff:g> ໄຟລ໌ໄດ້</item>
-      <item quantity="one">ບໍ່ສາມາດລຶບ <xliff:g id="COUNT_0">%1$d</xliff:g> ໄຟລ໌ໄດ້</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"ແຕະເພື່ອເບິ່ງລາຍລະອຽດ"</string>
-    <string name="close" msgid="3043722427445528732">"ປິດ"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"ໄຟລ໌ເຫຼົ່ານີ້ບໍ່ໄດ້ຖືກສຳເນົາ: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"ໄຟລ໌ເຫຼົ່ານີ້ບໍ່ໄດ້ຖືກຍ້າຍ: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"ໄຟລ໌ເຫຼົ່ານີ້ບໍ່ໄດ້ຖືກລຶບເທື່ອ: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"ໄຟລ໌ເຫຼົ່ານີ້ໄດ້ຖືກປ່ຽນເປັນຮູບແບບອື່ນແລ້ວ: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">ອັດ​ສຳ​ເນົາ <xliff:g id="COUNT_1">%1$d</xliff:g> ໄຟ​ລ໌​ໃສ່​ຄ​ລິບບອດ​ແລ້ວ.</item>
-      <item quantity="one">ອັດ​ສຳ​ເນົາ <xliff:g id="COUNT_0">%1$d</xliff:g> ໄຟ​ລ໌​ໃສ່​ຄ​ລິບບອດ​ແລ້ວ.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"ບໍ່​ສາ​ມາດ​ແປະ​ໄຟ​ລ໌​ເລືອກ​ໄວ້​ຢູ່​ໃນ​ທີ່​ຕັ້ງ​ນີ້​ໄດ້."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"ປ່ຽນຊື່"</string>
-    <string name="rename_error" msgid="4203041674883412606">"ປ່ຽນຊື່ເອກະສານບໍ່ສຳເລັດ"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"ຖອດອອກ"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"ປ່ຽນແປງບາງໄຟລ໌ແລ້ວ"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"ອະນຸຍາດສິດເຂົ້າເຖິງໃຫ້ <xliff:g id="APPNAME"><b>^1</b></xliff:g> ເພື່ອເຂົ້າໄດເຣກທໍຣີ <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ຢູ່ <xliff:g id="STORAGE"><i>^3</i></xliff:g> ບໍ?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"ອະນຸມັດ <xliff:g id="APPNAME"><b>^1</b></xliff:g> ໃຫ້ເຂົ້າຫາໄດເຣັກທໍຣີ <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ບໍ?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"ອະນຸມັດໃຫ້ <xliff:g id="APPNAME"><b>^1</b></xliff:g> ເຂົ້າເຖິງຂໍ້ມູນຂອງທ່ານ ເຊິ່ງຮວມເຖິງຮູບພາບ ແລະ ວິດີໂອໃນ <xliff:g id="STORAGE"><i>^2</i></xliff:g> ໄດ້ບໍ?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"ບໍ່ຕ້ອງຖາມຄືນ"</string>
-    <string name="allow" msgid="7225948811296386551">"ອະນຸຍາດ"</string>
-    <string name="deny" msgid="2081879885755434506">"ປະ​ຕິ​ເສດ"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other">ເລືອກ <xliff:g id="COUNT_1">%1$d</xliff:g> ແລ້ວ</item>
-      <item quantity="one">ເລືອກ <xliff:g id="COUNT_0">%1$d</xliff:g> ແລ້ວ</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ລາຍການ</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ລາຍການ</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"ລຶບ \"<xliff:g id="NAME">%1$s</xliff:g>\" ອອກບໍ?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"ລຶບໂຟນເດີ \"<xliff:g id="NAME">%1$s</xliff:g>\" ແລະ ເນື້ອຫາທັງໝົດຂອງມັນອອກບໍ?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">ລຶບ <xliff:g id="COUNT_1">%1$d</xliff:g> ໄຟລ໌ອອກບໍ?</item>
-      <item quantity="one">ລຶບ <xliff:g id="COUNT_0">%1$d</xliff:g> ໄຟລ໌ອອກບໍ?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">ລຶບ <xliff:g id="COUNT_1">%1$d</xliff:g> ໂຟນເດີ ແລະ ເນື້ອຫາຂອງມັນອອກບໍ?</item>
-      <item quantity="one">ລຶບ <xliff:g id="COUNT_0">%1$d</xliff:g> ໂຟນເດີ ແລະ ເນື້ອຫາຂອງມັນອອກບໍ?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">ລຶບ <xliff:g id="COUNT_1">%1$d</xliff:g> ລາຍການອອກບໍ?</item>
-      <item quantity="one">ລຶບ <xliff:g id="COUNT_0">%1$d</xliff:g> ລາຍການອອກບໍ?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-lt/strings.xml b/packages/DocumentsUI/res/values-lt/strings.xml
deleted file mode 100644
index 5e5dbfa..0000000
--- a/packages/DocumentsUI/res/values-lt/strings.xml
+++ /dev/null
@@ -1,168 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Failai"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Atsisiuntimai"</string>
-    <string name="title_open" msgid="4353228937663917801">"Atidaryti iš"</string>
-    <string name="title_save" msgid="2433679664882857999">"Išsaugoti į"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Naujas aplankas"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Tinklelio rodinys"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Sąrašo rodinys"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Rūšiuoti pagal"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Ieškoti"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Saugyklos nustatymai"</string>
-    <string name="menu_open" msgid="432922957274920903">"Atidaryti"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Išsaugoti"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Bendrinti"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Ištrinti"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Pasirinkti viską"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Kopijuoti į..."</string>
-    <string name="menu_move" msgid="1828090633118079817">"Perkelti į…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Naujas langas"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Iškirpti"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Kopijuoti"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Įklijuoti"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Rodyti vidinę atmintį"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Slėpti vidinę atmintį"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Rodyti failo dydį"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Slėpti failo dydį"</string>
-    <string name="button_select" msgid="527196987259139214">"Pasirinkti"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Kopijuoti"</string>
-    <string name="button_move" msgid="2202666023104202232">"Perkelti"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Atsisakyti"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Bandyti dar kartą"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Pagal pavadinimą"</string>
-    <string name="sort_date" msgid="586080032956151448">"Pagal keitimo datą"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Pagal dydį"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Rodyti šaknis"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Slėpti šaknis"</string>
-    <string name="save_error" msgid="6167009778003223664">"Nepavyko išsaugoti dokumento"</string>
-    <string name="create_error" msgid="3735649141335444215">"Nepavyko sukurti aplanko"</string>
-    <string name="query_error" msgid="5999895349602476581">"Šiuo metu nepavyksta įkelti turinio"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Naujausi"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"Laisvos vietos: <xliff:g id="SIZE">%1$s</xliff:g>"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Saugyklos paslaugos"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Spartieji klavišai"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Įrenginiai"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Daugiau programų"</string>
-    <string name="empty" msgid="7858882803708117596">"Nėra elementų"</string>
-    <string name="no_results" msgid="6622510343880730446">"Nėra jokių atitikčių pagal %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Nepavyksta atidaryti failo"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Nepavyko ištrinti kai kurių dokumentų"</string>
-    <string name="share_via" msgid="8966594246261344259">"Bendrinti naudojant"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Kopijuojami failai"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Perkeliami failai"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Failų ištrynimas"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Liko: <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one">Kopijuojamas <xliff:g id="COUNT_1">%1$d</xliff:g> failas.</item>
-      <item quantity="few">Kopijuojami <xliff:g id="COUNT_1">%1$d</xliff:g> failai.</item>
-      <item quantity="many">Kopijuojama <xliff:g id="COUNT_1">%1$d</xliff:g> failo.</item>
-      <item quantity="other">Kopijuojama <xliff:g id="COUNT_1">%1$d</xliff:g> failų.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one">Perkeliamas <xliff:g id="COUNT_1">%1$d</xliff:g> failas.</item>
-      <item quantity="few">Perkeliami <xliff:g id="COUNT_1">%1$d</xliff:g> failai.</item>
-      <item quantity="many">Perkeliama <xliff:g id="COUNT_1">%1$d</xliff:g> failo.</item>
-      <item quantity="other">Perkeliama <xliff:g id="COUNT_1">%1$d</xliff:g> failų.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one">Trinamas <xliff:g id="COUNT_1">%1$d</xliff:g> failas.</item>
-      <item quantity="few">Trinami <xliff:g id="COUNT_1">%1$d</xliff:g> failai.</item>
-      <item quantity="many">Trinama <xliff:g id="COUNT_1">%1$d</xliff:g> failo.</item>
-      <item quantity="other">Trinama <xliff:g id="COUNT_1">%1$d</xliff:g> failų.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Anuliuoti"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Ruošiamasi kopijuoti…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Ruošiamasi perkelti…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Ruošiama ištrinti…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one">Nepavyko nukopijuoti <xliff:g id="COUNT_1">%1$d</xliff:g> failo</item>
-      <item quantity="few">Nepavyko nukopijuoti <xliff:g id="COUNT_1">%1$d</xliff:g> failų</item>
-      <item quantity="many">Nepavyko nukopijuoti <xliff:g id="COUNT_1">%1$d</xliff:g> failo</item>
-      <item quantity="other">Nepavyko nukopijuoti <xliff:g id="COUNT_1">%1$d</xliff:g> failų</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one">Nepavyko perkelti <xliff:g id="COUNT_1">%1$d</xliff:g> failo</item>
-      <item quantity="few">Nepavyko perkelti <xliff:g id="COUNT_1">%1$d</xliff:g> failų</item>
-      <item quantity="many">Nepavyko perkelti <xliff:g id="COUNT_1">%1$d</xliff:g> failo</item>
-      <item quantity="other">Nepavyko perkelti <xliff:g id="COUNT_1">%1$d</xliff:g> failų</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one">Nepavyko ištrinti <xliff:g id="COUNT_1">%1$d</xliff:g> failo</item>
-      <item quantity="few">Nepavyko ištrinti <xliff:g id="COUNT_1">%1$d</xliff:g> failų</item>
-      <item quantity="many">Nepavyko ištrinti <xliff:g id="COUNT_1">%1$d</xliff:g> failo</item>
-      <item quantity="other">Nepavyko ištrinti <xliff:g id="COUNT_1">%1$d</xliff:g> failų</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Palieskite, kad peržiūrėtumėte informaciją"</string>
-    <string name="close" msgid="3043722427445528732">"Uždaryti"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Šie failai nebuvo nukopijuoti: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Šie failai nebuvo perkelti: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Šie failai nebuvo ištrinti: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Šie failai konvertuoti į kitą formatą: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one">Nukopijuotas <xliff:g id="COUNT_1">%1$d</xliff:g> failas į iškarpinę.</item>
-      <item quantity="few">Nukopijuoti <xliff:g id="COUNT_1">%1$d</xliff:g> failai į iškarpinę.</item>
-      <item quantity="many">Nukopijuota <xliff:g id="COUNT_1">%1$d</xliff:g> failo į iškarpinę.</item>
-      <item quantity="other">Nukopijuota <xliff:g id="COUNT_1">%1$d</xliff:g> failų į iškarpinę.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Nepavyko įklijuoti pasirinktų failų šioje vietoje."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Pervardyti"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Nepavyko pervardyti dokumento"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Pašalinti"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Kai kurie failai buvo konvertuoti"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Suteikti „<xliff:g id="APPNAME"><b>^1</b></xliff:g>“ prieigą prie katalogo „<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>“ <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Suteikti „<xliff:g id="APPNAME"><b>^1</b></xliff:g>“ prieigą prie katalogo „<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>“?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Suteikti programai „<xliff:g id="APPNAME"><b>^1</b></xliff:g>“ prieigą prie duomenų, įskaitant nuotraukas ir vaizdo įrašus, <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Daugiau neklausti"</string>
-    <string name="allow" msgid="7225948811296386551">"Leisti"</string>
-    <string name="deny" msgid="2081879885755434506">"Atmesti"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one">Pasirinktas <xliff:g id="COUNT_1">%1$d</xliff:g> elementas</item>
-      <item quantity="few">Pasirinkti <xliff:g id="COUNT_1">%1$d</xliff:g> elementai</item>
-      <item quantity="many">Pasirinkta <xliff:g id="COUNT_1">%1$d</xliff:g> elemento</item>
-      <item quantity="other">Pasirinkta <xliff:g id="COUNT_1">%1$d</xliff:g> elementų</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> elementas</item>
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> elementai</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> elemento</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> elementų</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Ištrinti „<xliff:g id="NAME">%1$s</xliff:g>“?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Ištrinti aplanką „<xliff:g id="NAME">%1$s</xliff:g>“ ir jo turinį?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one">Ištrinti <xliff:g id="COUNT_1">%1$d</xliff:g> failą?</item>
-      <item quantity="few">Ištrinti <xliff:g id="COUNT_1">%1$d</xliff:g> failus?</item>
-      <item quantity="many">Ištrinti <xliff:g id="COUNT_1">%1$d</xliff:g> failo?</item>
-      <item quantity="other">Ištrinti <xliff:g id="COUNT_1">%1$d</xliff:g> failų?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one">Ištrinti <xliff:g id="COUNT_1">%1$d</xliff:g> aplanką ir jų turinį?</item>
-      <item quantity="few">Ištrinti <xliff:g id="COUNT_1">%1$d</xliff:g> aplankus ir jų turinį?</item>
-      <item quantity="many">Ištrinti <xliff:g id="COUNT_1">%1$d</xliff:g> aplanko ir jų turinį?</item>
-      <item quantity="other">Ištrinti <xliff:g id="COUNT_1">%1$d</xliff:g> aplankų ir jų turinį?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one">Ištrinti <xliff:g id="COUNT_1">%1$d</xliff:g> elementą?</item>
-      <item quantity="few">Ištrinti <xliff:g id="COUNT_1">%1$d</xliff:g> elementus?</item>
-      <item quantity="many">Ištrinti <xliff:g id="COUNT_1">%1$d</xliff:g> elemento?</item>
-      <item quantity="other">Ištrinti <xliff:g id="COUNT_1">%1$d</xliff:g> elementų?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-lv/strings.xml b/packages/DocumentsUI/res/values-lv/strings.xml
deleted file mode 100644
index 56a9deb..0000000
--- a/packages/DocumentsUI/res/values-lv/strings.xml
+++ /dev/null
@@ -1,156 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Faili"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Lejupielādes"</string>
-    <string name="title_open" msgid="4353228937663917801">"Atvēršana no:"</string>
-    <string name="title_save" msgid="2433679664882857999">"Saglabāšana:"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Jauna mape"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Režģis"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Saraksts"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Kārtot pēc"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Meklēt"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Atmiņas iestatījumi"</string>
-    <string name="menu_open" msgid="432922957274920903">"Atvērt"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Saglabāt"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Kopīgot"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Dzēst"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Atlasīt visus"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Kopēt…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Pārvietot uz…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Jauns logs"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Izgriezt"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Kopēt"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Ielīmēt"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Rādīt iekšējo atmiņu"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Paslēpt iekšējo atmiņu"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Rādīt failu lielumu"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Paslēpt failu lielumu"</string>
-    <string name="button_select" msgid="527196987259139214">"Atlasīt"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Kopēt"</string>
-    <string name="button_move" msgid="2202666023104202232">"Pārvietot"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Noraidīt"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Mēģināt vēlreiz"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Pēc nosaukuma"</string>
-    <string name="sort_date" msgid="586080032956151448">"Pēc pārveidošanas datuma"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Pēc lieluma"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Rādīt saknes"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Slēpt saknes"</string>
-    <string name="save_error" msgid="6167009778003223664">"Neizdevās saglabāt dokumentu."</string>
-    <string name="create_error" msgid="3735649141335444215">"Neizdevās izveidot mapi."</string>
-    <string name="query_error" msgid="5999895349602476581">"Pašlaik nevar ielādēt saturu."</string>
-    <string name="root_recent" msgid="4470053704320518133">"Pēdējie"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"Brīva vieta: <xliff:g id="SIZE">%1$s</xliff:g>"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Glabāšanas pakalpojumi"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Saīsnes"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Ierīces"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Vairāk lietotņu"</string>
-    <string name="empty" msgid="7858882803708117596">"Nav vienumu"</string>
-    <string name="no_results" msgid="6622510343880730446">"Failā %1$s nav atbilstību"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Nevar atvērt failu."</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Nevar dzēst dažus dokumentus."</string>
-    <string name="share_via" msgid="8966594246261344259">"Kopīgot, izmantojot"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Notiek failu kopēšana"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Failu pārvietošana"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Notiek failu dzēšana"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Atlikušais laiks: <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="zero">Notiek <xliff:g id="COUNT_1">%1$d</xliff:g> failu kopēšana.</item>
-      <item quantity="one">Notiek <xliff:g id="COUNT_1">%1$d</xliff:g> faila kopēšana.</item>
-      <item quantity="other">Notiek <xliff:g id="COUNT_1">%1$d</xliff:g> failu kopēšana.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="zero">Notiek <xliff:g id="COUNT_1">%1$d</xliff:g> failu pārvietošana.</item>
-      <item quantity="one">Notiek <xliff:g id="COUNT_1">%1$d</xliff:g> faila pārvietošana.</item>
-      <item quantity="other">Notiek <xliff:g id="COUNT_1">%1$d</xliff:g> failu pārvietošana.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="zero">Notiek <xliff:g id="COUNT_1">%1$d</xliff:g> failu dzēšana.</item>
-      <item quantity="one">Notiek <xliff:g id="COUNT_1">%1$d</xliff:g> faila dzēšana.</item>
-      <item quantity="other">Notiek <xliff:g id="COUNT_1">%1$d</xliff:g> failu dzēšana.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Atsaukt"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Gatavošanās kopēšanai…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Sagatavošana pārvietošanai…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Notiek gatavošanās dzēšanai…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> no <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="zero">Nevarēja nokopēt <xliff:g id="COUNT_1">%1$d</xliff:g> failus</item>
-      <item quantity="one">Nevarēja nokopēt <xliff:g id="COUNT_1">%1$d</xliff:g> failu</item>
-      <item quantity="other">Nevarēja nokopēt <xliff:g id="COUNT_1">%1$d</xliff:g> failus</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="zero">Nevarēja pārvietot <xliff:g id="COUNT_1">%1$d</xliff:g> failus</item>
-      <item quantity="one">Nevarēja pārvietot <xliff:g id="COUNT_1">%1$d</xliff:g> failu</item>
-      <item quantity="other">Nevarēja pārvietot <xliff:g id="COUNT_1">%1$d</xliff:g> failus</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="zero">Nevarēja izdzēst <xliff:g id="COUNT_1">%1$d</xliff:g> failus</item>
-      <item quantity="one">Nevarēja izdzēst <xliff:g id="COUNT_1">%1$d</xliff:g> failu</item>
-      <item quantity="other">Nevarēja izdzēst <xliff:g id="COUNT_1">%1$d</xliff:g> failus</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Pieskarieties, lai skatītu informāciju"</string>
-    <string name="close" msgid="3043722427445528732">"Aizvērt"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Netika nokopēti šādi faili: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Netika pārvietoti šādi faili: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Netika izdzēsti šādi faili: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Šie faili tika pārveidoti citā formātā: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="zero"><xliff:g id="COUNT_1">%1$d</xliff:g> faili tika kopēti starpliktuvē.</item>
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> fails tika kopēts starpliktuvē.</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> faili tika kopēti starpliktuvē.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Atlasītos failus šeit nevar ielīmēt."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Pārdēvēt"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Neizdevās pārdēvēt dokumentu"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Noņemt"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Daži faili tika pārveidoti."</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Vai atļaut lietotnei <xliff:g id="APPNAME"><b>^1</b></xliff:g> piekļūt direktorijam <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> šajā krātuvē: <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Vai piešķirt lietotnei <xliff:g id="APPNAME"><b>^1</b></xliff:g> piekļuvi direktorijam <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Vai atļaut lietotnei <xliff:g id="APPNAME"><b>^1</b></xliff:g> piekļūt jūsu datiem, tostarp fotoattēliem un videoklipiem, šajā krātuvē: <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Turpmāk vairs nejautāt"</string>
-    <string name="allow" msgid="7225948811296386551">"Atļaut"</string>
-    <string name="deny" msgid="2081879885755434506">"Noraidīt"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="zero"><xliff:g id="COUNT_1">%1$d</xliff:g> atlasīti</item>
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> atlasīts</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> atlasīti</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="zero"><xliff:g id="COUNT_1">%1$d</xliff:g> vienumu</item>
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> vienums</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> vienumi</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Vai izdzēst failu “<xliff:g id="NAME">%1$s</xliff:g>”?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Vai izdzēst mapi “<xliff:g id="NAME">%1$s</xliff:g>” un tās saturu?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="zero">Vai izdzēst <xliff:g id="COUNT_1">%1$d</xliff:g> failus?</item>
-      <item quantity="one">Vai izdzēst <xliff:g id="COUNT_1">%1$d</xliff:g> failu?</item>
-      <item quantity="other">Vai izdzēst <xliff:g id="COUNT_1">%1$d</xliff:g> failus?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="zero">Vai izdzēst <xliff:g id="COUNT_1">%1$d</xliff:g> mapes un to saturu?</item>
-      <item quantity="one">Vai izdzēst <xliff:g id="COUNT_1">%1$d</xliff:g> mapi un to saturu?</item>
-      <item quantity="other">Vai izdzēst <xliff:g id="COUNT_1">%1$d</xliff:g> mapes un to saturu?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="zero">Vai izdzēst <xliff:g id="COUNT_1">%1$d</xliff:g> vienumus?</item>
-      <item quantity="one">Vai izdzēst <xliff:g id="COUNT_1">%1$d</xliff:g> vienumu?</item>
-      <item quantity="other">Vai izdzēst <xliff:g id="COUNT_1">%1$d</xliff:g> vienumus?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-mk-rMK/strings.xml b/packages/DocumentsUI/res/values-mk-rMK/strings.xml
deleted file mode 100644
index 58bfc99..0000000
--- a/packages/DocumentsUI/res/values-mk-rMK/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Датотеки"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Преземања"</string>
-    <string name="title_open" msgid="4353228937663917801">"Отвори од"</string>
-    <string name="title_save" msgid="2433679664882857999">"Зачувај во"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Нова папка"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Приказ на мрежа"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Приказ на список"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Подреди по"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Пребарај"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Поставки на меморија"</string>
-    <string name="menu_open" msgid="432922957274920903">"Отвори"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Зачувај"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Сподели"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Избриши"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Избери ги сите"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Копирај во…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Премести во..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Нов прозорец"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Исечи"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Копирај"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Залепи"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Прикажи внатрешна мемор."</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Скриј внатрешна меморија"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Прикажи ја големината"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Сокриј ја големината"</string>
-    <string name="button_select" msgid="527196987259139214">"Избери"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Копирај"</string>
-    <string name="button_move" msgid="2202666023104202232">"Премести"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Отфрли"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Обиди се пак"</string>
-    <string name="sort_name" msgid="9183560467917256779">"По име"</string>
-    <string name="sort_date" msgid="586080032956151448">"Изменети по датум"</string>
-    <string name="sort_size" msgid="3350681319735474741">"По големина"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Прикажи корени"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Сокриј корени"</string>
-    <string name="save_error" msgid="6167009778003223664">"Документот не успеа да се зачува"</string>
-    <string name="create_error" msgid="3735649141335444215">"Не успеа да се создаде папка"</string>
-    <string name="query_error" msgid="5999895349602476581">"Во моментов не може да се вчита содржина."</string>
-    <string name="root_recent" msgid="4470053704320518133">"Последни"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> слободен простор"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Услуги на складирање"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Кратенки"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Уреди"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Повеќе апликации"</string>
-    <string name="empty" msgid="7858882803708117596">"Нема ставки"</string>
-    <string name="no_results" msgid="6622510343880730446">"Нема совпаѓања во %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Датотеката не може да се отвори"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Некои документи не може да се избришат"</string>
-    <string name="share_via" msgid="8966594246261344259">"Сподели преку"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Се копираат датотеки"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Датотеките се преместуваат"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Се бришат датотеките"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Уште <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one">Се копира <xliff:g id="COUNT_1">%1$d</xliff:g> датотека.</item>
-      <item quantity="other">Се копираат <xliff:g id="COUNT_1">%1$d</xliff:g> датотеки.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one">Се преместува <xliff:g id="COUNT_1">%1$d</xliff:g> датотека.</item>
-      <item quantity="other">Се преместуваат <xliff:g id="COUNT_1">%1$d</xliff:g> датотеки.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one">Се брише <xliff:g id="COUNT_1">%1$d</xliff:g> датотека.</item>
-      <item quantity="other">Се бришат <xliff:g id="COUNT_1">%1$d</xliff:g> датотеки.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Врати"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Се подготвува за копирање…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Се подготвува за преместување…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Се подготвува за бришење…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one">Не може да копира <xliff:g id="COUNT_1">%1$d</xliff:g> датотека</item>
-      <item quantity="other">Не може да копира <xliff:g id="COUNT_1">%1$d</xliff:g> датотеки</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one">Не може да премести <xliff:g id="COUNT_1">%1$d</xliff:g> датотека</item>
-      <item quantity="other">Не може да премести <xliff:g id="COUNT_1">%1$d</xliff:g> датотеки</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one">Не може да избрише <xliff:g id="COUNT_1">%1$d</xliff:g> датотека</item>
-      <item quantity="other">Не може да избрише <xliff:g id="COUNT_1">%1$d</xliff:g> датотеки</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Допрете за да ги погледнете деталите"</string>
-    <string name="close" msgid="3043722427445528732">"Затвори"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Датотекиве не се ископирани: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Датотекиве не се преместени: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Датотекиве не се избришани: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Овие датотеки беа конвертирани во друг формат: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one">Копирана е <xliff:g id="COUNT_1">%1$d</xliff:g> датотека на таблата со исечоци.</item>
-      <item quantity="other">Копирани се <xliff:g id="COUNT_1">%1$d</xliff:g> датотеки на таблата со исечоци.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Не може да ги залепи избраните датотеки на локацијава."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Преименувај"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Не успеа да се преименува документот"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Извади"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Некои датотеки беа конвертирани"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Овозможете пристап на <xliff:g id="APPNAME"><b>^1</b></xliff:g> до директориумот <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> на <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Овозможете пристап на <xliff:g id="APPNAME"><b>^1</b></xliff:g> до директориумот <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Да се овозможи пристап на <xliff:g id="APPNAME"><b>^1</b></xliff:g> до вашите податоци, вклучувајќи фотографии и видеа, на <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Не прашувај повторно"</string>
-    <string name="allow" msgid="7225948811296386551">"Дозволи"</string>
-    <string name="deny" msgid="2081879885755434506">"Одбиј"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> е избрана</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> се избрани</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ставка</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ставки</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Да се избрише „<xliff:g id="NAME">%1$s</xliff:g>“?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Да се избрише папката „<xliff:g id="NAME">%1$s</xliff:g>“ и нејзините содржини?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one">Да се избрише <xliff:g id="COUNT_1">%1$d</xliff:g> датотека?</item>
-      <item quantity="other">Да се избришат <xliff:g id="COUNT_1">%1$d</xliff:g> датотеки?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one">Да се избрише <xliff:g id="COUNT_1">%1$d</xliff:g> папка и нивните содржини?</item>
-      <item quantity="other">Да се избришат <xliff:g id="COUNT_1">%1$d</xliff:g> папки и нивните содржини?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one">Да се избрише <xliff:g id="COUNT_1">%1$d</xliff:g> ставка?</item>
-      <item quantity="other">Да се избришат <xliff:g id="COUNT_1">%1$d</xliff:g> ставки?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-ml-rIN/strings.xml b/packages/DocumentsUI/res/values-ml-rIN/strings.xml
deleted file mode 100644
index 54d32a5..0000000
--- a/packages/DocumentsUI/res/values-ml-rIN/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"ഫയലുകൾ"</string>
-    <string name="downloads_label" msgid="959113951084633612">"ഡൗണ്‍ലോഡുകൾ"</string>
-    <string name="title_open" msgid="4353228937663917801">"ഇതിൽ നിന്നും തുറക്കുക"</string>
-    <string name="title_save" msgid="2433679664882857999">"ഇതില്‍‌ സംരക്ഷിക്കുക"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"പുതിയ ഫോൾഡർ"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"ഗ്രിഡ് കാഴ്‌ച"</string>
-    <string name="menu_list" msgid="7279285939892417279">"ലിസ്റ്റ് കാഴ്‌ച"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"ഇപ്രകാരം അടുക്കുക"</string>
-    <string name="menu_search" msgid="3816712084502856974">"തിരയൽ"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"സ്റ്റോറേജ് ക്രമീകരണം"</string>
-    <string name="menu_open" msgid="432922957274920903">"തുറക്കുക"</string>
-    <string name="menu_save" msgid="2394743337684426338">"സംരക്ഷിക്കുക"</string>
-    <string name="menu_share" msgid="3075149983979628146">"പങ്കിടുക"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"ഇല്ലാതാക്കുക"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"എല്ലാം തിരഞ്ഞെടുക്കുക"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"ഇതിൽ പകർത്തുക…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"ഇതിലേക്ക് നീക്കുക..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"പുതിയ വിന്‍‍ഡോ"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"മുറിക്കുക"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"പകര്‍ത്തുക"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"ഒട്ടിക്കുക"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"ആന്തരിക സ്റ്റോറേജ്  കാണിക്കുക"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"ആന്തരിക സ്റ്റോറേജ്  മറയ്‌ക്കുക"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"ഫയൽ വലുപ്പം കാണിക്കുക"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"ഫയൽ വലുപ്പം മറയ്‌ക്കുക"</string>
-    <string name="button_select" msgid="527196987259139214">"തിരഞ്ഞെടുക്കുക"</string>
-    <string name="button_copy" msgid="8706475544635021302">"പകര്‍ത്തുക"</string>
-    <string name="button_move" msgid="2202666023104202232">"നീക്കുക"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"ഡിസ്മിസ് ചെയ്യുക"</string>
-    <string name="button_retry" msgid="4392027584153752797">"വീണ്ടും ശ്രമിക്കുക"</string>
-    <string name="sort_name" msgid="9183560467917256779">"പേര് പ്രകാരം"</string>
-    <string name="sort_date" msgid="586080032956151448">"പരിഷ്‌ക്കരിച്ച തീയതി പ്രകാരം"</string>
-    <string name="sort_size" msgid="3350681319735474741">"വലുപ്പം പ്രകാരം"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"റൂട്ടുകൾ ദൃശ്യമാക്കുക"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"റൂട്ടുകൾ മറയ്‌ക്കുക"</string>
-    <string name="save_error" msgid="6167009778003223664">"പ്രമാണം സംരക്ഷിക്കുന്നതിൽ പരാജയപ്പെട്ടു"</string>
-    <string name="create_error" msgid="3735649141335444215">"ഫോൾഡർ സൃഷ്‌ടിക്കുന്നതിൽ പരാജയപ്പെട്ടു"</string>
-    <string name="query_error" msgid="5999895349602476581">"ഇപ്പോൾ ഉള്ളടക്കം ലോഡുചെയ്യാൻ കഴിയില്ല"</string>
-    <string name="root_recent" msgid="4470053704320518133">"അടുത്തിടെയുള്ളവ"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> ലഭ്യമാണ്"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"സംഭരണ സേവനങ്ങൾ"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"കുറുക്കുവഴികൾ"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"ഉപകരണങ്ങൾ"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"കൂടുതൽ അപ്ലിക്കേഷനുകൾ"</string>
-    <string name="empty" msgid="7858882803708117596">"ഇനങ്ങളൊന്നുമില്ല"</string>
-    <string name="no_results" msgid="6622510343880730446">"%1$s എന്നതിൽ പൊരുത്തങ്ങളില്ല"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"ഫയൽ തുറക്കാൻ കഴിയില്ല"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"ചില പ്രമാണങ്ങൾ ഇല്ലാതാക്കാനായില്ല"</string>
-    <string name="share_via" msgid="8966594246261344259">"ഇതുവഴി പങ്കിടുക"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"ഫയലുകൾ പകർത്തുന്നു"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"ഫയലുകൾ നീക്കുന്നു"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"ഫയലുകൾ ഇല്ലാതാക്കുന്നു"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> ശേഷിക്കുന്നു"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ഫയലുകൾ പകർത്തുന്നു.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ഫയൽ പകർത്തുന്നു.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ഫയലുകൾ നീക്കുന്നു.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ഫയൽ നീക്കുന്നു.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ഫയലുകൾ ഇല്ലാതാക്കുന്നു.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ഫയൽ ഇല്ലാതാക്കുന്നു.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"പഴയപടിയാക്കുക"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"പകർപ്പിനായി തയ്യാറെടുക്കുന്നു…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"നീക്കാനൊരുങ്ങുന്നു…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"ഇല്ലാതാക്കാൻ തയ്യാറെടുക്കുന്നു..."</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ഫയലുകൾ പകർത്താനായില്ല</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ഫയൽ പകർത്താനായില്ല</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ഫയലുകൾ നീക്കാനായില്ല</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ഫയൽ നീക്കാനായില്ല</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ഫയലുകൾ ഇല്ലാതാക്കാനായില്ല</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ഫയൽ ഇല്ലാതാക്കാനായില്ല</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"വിശദാംശങ്ങൾ കാണുന്നതിന് ടാപ്പുചെയ്യുക"</string>
-    <string name="close" msgid="3043722427445528732">"അടയ്‌ക്കുക"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"ഈ ഫയലുകൾ പകർത്തിയില്ല: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"ഈ ഫയലുകൾ നീക്കിയില്ല: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"ഈ ഫയലുകൾ ഇല്ലാതാക്കിയില്ല: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"ഈ ഫയലുകൾ മറ്റൊരു ഫോർമാറ്റിലേക്ക് പരിവർത്തനം ചെയ്യപ്പെട്ടു: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ഫയലുകൾ ക്ലിപ്പ്‌ബോർഡിലേക്ക് പകർത്തി.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ഫയൽ ക്ലിപ്പ്‌ബോർഡിലേക്ക് പകർത്തി.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"തിരഞ്ഞെടുത്ത ഫയലുകൾ ഈ ലൊക്കേഷനിൽ ഒട്ടിക്കാനാകുന്നില്ല."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"പേരുമാറ്റുക"</string>
-    <string name="rename_error" msgid="4203041674883412606">"ഡോക്യുമെന്റിന്റെ പേരുമാറ്റുന്നത് പരാജയപ്പെട്ടു"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"ഒഴിവാക്കുക"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"ചില ഫയലുകൾ പരിവർത്തനം ചെയ്യപ്പെട്ടു"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="STORAGE"><i>^3</i></xliff:g> സ്റ്റോറേജിലെ <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> എന്ന ഡയറക്റ്ററിയിലേക്ക് <xliff:g id="APPNAME"><b>^1</b></xliff:g> ആപ്പിന് ആക്സസ് അനുവദിക്കണോ?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="DIRECTORY"><i>^2</i></xliff:g> എന്ന ഡയറക്ടറിയിലേക്ക് <xliff:g id="APPNAME"><b>^1</b></xliff:g> ആപ്പിന് ആക്സസ് അനുവദിക്കണോ?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="STORAGE"><i>^2</i></xliff:g> സ്റ്റോറേജിലെ ഫോട്ടോകളും വീഡിയോകളും ഉൾപ്പെടെ, നിങ്ങളുടെ ഡാറ്റയിലേക്ക് <xliff:g id="APPNAME"><b>^1</b></xliff:g> ആപ്പിന് ആക്സസ്സ് അനുവദിക്കണോ?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"വീണ്ടും ആവശ്യപ്പെടരുത്"</string>
-    <string name="allow" msgid="7225948811296386551">"അനുവദിക്കുക"</string>
-    <string name="deny" msgid="2081879885755434506">"നിരസിക്കുക"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> തിരഞ്ഞെടുത്തു</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> തിരഞ്ഞെടുത്തു</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ഇനങ്ങൾ</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ഇനം</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"\"<xliff:g id="NAME">%1$s</xliff:g>\" ഇല്ലാതാക്കണോ?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"\"<xliff:g id="NAME">%1$s</xliff:g>\" എന്ന ഫോൾഡറും അതിലെ ഉള്ളടങ്ങളും ഇല്ലാതാക്കണോ?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ഫയലുകൾ ഇല്ലാതാക്കണോ?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ഫയൽ ഇല്ലാതാക്കണോ?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ഫോൾഡറുകളും അവയിലെ ഉള്ളടക്കങ്ങളും ഇല്ലാതാക്കണോ?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ഫോൾഡറും അതിലെ ഉള്ളടക്കങ്ങളും ഇല്ലാതാക്കണോ?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ഇനങ്ങൾ ഇല്ലാതാക്കണോ?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ഇനം ഇല്ലാതാക്കണോ?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-mn-rMN/strings.xml b/packages/DocumentsUI/res/values-mn-rMN/strings.xml
deleted file mode 100644
index 7b7f6c9..0000000
--- a/packages/DocumentsUI/res/values-mn-rMN/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Файл"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Таталт"</string>
-    <string name="title_open" msgid="4353228937663917801">"Нээх"</string>
-    <string name="title_save" msgid="2433679664882857999">"Хадгалах"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Шинэ фолдер"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Эгнүүлж харах"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Жагсааж харах"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Эрэмбэлэх"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Хайх"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Хадгалах сангийн тохиргоо"</string>
-    <string name="menu_open" msgid="432922957274920903">"Нээх"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Хадгалах"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Хуваалцах"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Устгах"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Бүгдийг сонгох"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"...руу хуулах"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Байршуулах газар"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Шинэ цонх"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Таслах"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Хуулах"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Буулгах"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Дотоод санг харуулах"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Дотоод санг нуух"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Файлын хэмжээг харуулах"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Файлын хэмжээг нуух"</string>
-    <string name="button_select" msgid="527196987259139214">"Сонгох"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Хуулах"</string>
-    <string name="button_move" msgid="2202666023104202232">"Зөөх"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Алгасах"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Дахин оролдоно уу"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Нэрээр"</string>
-    <string name="sort_date" msgid="586080032956151448">"Өөрчлөгдсөн огноогоор"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Хэмжээгээр"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Язгуурыг харуулах"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Язгуурыг нууцлах"</string>
-    <string name="save_error" msgid="6167009778003223664">"Документыг хадгалж чадсангүй"</string>
-    <string name="create_error" msgid="3735649141335444215">"Фолдер үүсгэж чадсангүй"</string>
-    <string name="query_error" msgid="5999895349602476581">"Одоогоор агуулгыг ачааллах боломжгүй байна"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Саяхны"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> чөлөөтэй"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Сангийн үйлчилгээ"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Товчлол"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Төхөөрөмжүүд"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Өөр апп-ууд"</string>
-    <string name="empty" msgid="7858882803708117596">"Хоосон"</string>
-    <string name="no_results" msgid="6622510343880730446">"%1$s-д тохирох зүйл байхгүй байна"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Файлыг нээх боломжгүй байна"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Зарим документуудыг устгах боломжгүй"</string>
-    <string name="share_via" msgid="8966594246261344259">"Дараахаар дамжуулан хуваалцах"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Файлуудыг хуулж байна"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Файлыг зөөвөрлөж байна"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Эдгээр файлыг устгаж байна"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> үлдсэн"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> файлуудыг хуулж байна.</item>
-      <item quantity="one"> <xliff:g id="COUNT_0">%1$d</xliff:g> файл хуулж байна.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> файл зөөж байна.</item>
-      <item quantity="one"> <xliff:g id="COUNT_0">%1$d</xliff:g> файл зөөж байна.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> файлыг устгаж байна.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> файлыг устгаж байна.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Буцаах"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Хуулбарлахад бэлтгэж байна..."</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Зөөвөрлөхөд бэлтгэж байна..."</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Устгах гэж байна..."</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> файлыг хуулж чадсангүй</item>
-      <item quantity="one"> <xliff:g id="COUNT_0">%1$d</xliff:g> файлыг хуулж чадахгүй байна</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> файлыг зөөх боломжгүй байна</item>
-      <item quantity="one"> <xliff:g id="COUNT_0">%1$d</xliff:g> файлыг зөөх боломжгүй байна</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> файлыг устгаж чадсангүй</item>
-      <item quantity="one"> <xliff:g id="COUNT_0">%1$d</xliff:g> файлыг устгаж чадсангүй</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Дэлгэрэнгүй мэдээллийг үзэхийн тулд дарна уу"</string>
-    <string name="close" msgid="3043722427445528732">"Хаах"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Эдгээр файлыг хуулж чадсангүй: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Эдгээр файлыг зөөж чадсангүй: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Эдгээр файл устсангүй: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Эдгээр файлыг өөр хэлбэршилтэд хөрвүүлсэн байна: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> материалыг түр санах ой руу хуулсан.</item>
-      <item quantity="one"> <xliff:g id="COUNT_0">%1$d</xliff:g> материалыг түр санах ой руу хуулсан.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Энэ байршилд сонгосон файлыг байршуулах боломжгүй байна."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Нэр өөрчлөх"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Баримт бичгийн нэрийн өөрчилж чадсангүй"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Салгах"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Зарим файлыг хөрвүүлсэн"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="STORAGE"><i>^3</i></xliff:g>-д байгаа <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> лавлагаанд хандахыг <xliff:g id="APPNAME"><b>^1</b></xliff:g>-д зөвшөөрөх үү?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="DIRECTORY"><i>^2</i></xliff:g> лавлагаанд хандах эрхийг <xliff:g id="APPNAME"><b>^1</b></xliff:g>-д олгох уу?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="STORAGE"><i>^2</i></xliff:g>-д байгаа зураг, видео гэх мэт таны өгөгдөлд <xliff:g id="APPNAME"><b>^1</b></xliff:g> хандахыг зөвшөөрөх үү?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Дахин бүү асуу"</string>
-    <string name="allow" msgid="7225948811296386551">"Зөвшөөрөх"</string>
-    <string name="deny" msgid="2081879885755434506">"Татгалзах"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> сонгосон</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> сонгосон</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> зүйл</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> зүйл</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"\"<xliff:g id="NAME">%1$s</xliff:g>\"-г устгах уу?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"\"<xliff:g id="NAME">%1$s</xliff:g>\" фолдер болон үүний агуулгыг устгах уу?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> файлыг устгах уу?</item>
-      <item quantity="one"> <xliff:g id="COUNT_0">%1$d</xliff:g> файлыг устгах уу?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> фолдер болон агуулгуудыг нь устгах уу?</item>
-      <item quantity="one"> <xliff:g id="COUNT_0">%1$d</xliff:g> фолдер болон агуулгыг нь устгах уу?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> зүйлийг устгах уу?</item>
-      <item quantity="one"> <xliff:g id="COUNT_0">%1$d</xliff:g> зүйлийг устгах уу?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-mr-rIN/strings.xml b/packages/DocumentsUI/res/values-mr-rIN/strings.xml
deleted file mode 100644
index a501a72..0000000
--- a/packages/DocumentsUI/res/values-mr-rIN/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"फायली"</string>
-    <string name="downloads_label" msgid="959113951084633612">"डाउनलोड"</string>
-    <string name="title_open" msgid="4353228937663917801">"वरून उघडा"</string>
-    <string name="title_save" msgid="2433679664882857999">"येथे जतन करा"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"नवीन फोल्डर"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"ग्रिड दृश्य"</string>
-    <string name="menu_list" msgid="7279285939892417279">"सूची"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"नुसार क्रमवारी लावा"</string>
-    <string name="menu_search" msgid="3816712084502856974">"शोध"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"संचयन सेटिंग्ज"</string>
-    <string name="menu_open" msgid="432922957274920903">"उघडा"</string>
-    <string name="menu_save" msgid="2394743337684426338">"जतन करा"</string>
-    <string name="menu_share" msgid="3075149983979628146">"सामायिक करा"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"हटवा"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"सर्व निवडा"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"यावर कॉपी करा…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"यावर हलवा…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"नवीन विंडो"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"कट करा"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"कॉपी करा"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"पेस्ट करा"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"अंतर्गत संचयन दर्शवा"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"अंतर्गत संचयन लपवा"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"फाईल आकार दर्शवा"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"फाईल आकार लपवा"</string>
-    <string name="button_select" msgid="527196987259139214">"निवडा"</string>
-    <string name="button_copy" msgid="8706475544635021302">"कॉपी करा"</string>
-    <string name="button_move" msgid="2202666023104202232">"हलवा"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"डिसमिस करा"</string>
-    <string name="button_retry" msgid="4392027584153752797">"पुन्‍हा प्रयत्न करा"</string>
-    <string name="sort_name" msgid="9183560467917256779">"नावानुसार"</string>
-    <string name="sort_date" msgid="586080032956151448">"सुधारित केलेल्‍या तारखेनुसार"</string>
-    <string name="sort_size" msgid="3350681319735474741">"आकारानुसार"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"रूट दर्शवा"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"रूट लपवा"</string>
-    <string name="save_error" msgid="6167009778003223664">"दस्तऐवज जतन करणे अयशस्वी झाले"</string>
-    <string name="create_error" msgid="3735649141335444215">"फोल्डर तयार करण्यात अयशस्वी"</string>
-    <string name="query_error" msgid="5999895349602476581">"याक्षणी सामग्री लोड करू शकत नाही"</string>
-    <string name="root_recent" msgid="4470053704320518133">"अलीकडील"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> विनामूल्‍य"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"संचयन सेवा"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"शॉर्टकट"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"डिव्हाइसेस"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"अधिक अ‍ॅप्‍स"</string>
-    <string name="empty" msgid="7858882803708117596">"कोणतेही आयटम नाहीत"</string>
-    <string name="no_results" msgid="6622510343880730446">"%1$s मध्‍ये कोणत्याही जुळण्‍या नाहीत"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"फाईल उघडू शकत नाही"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"काही दस्‍तऐवज हटविण्‍यात अक्षम"</string>
-    <string name="share_via" msgid="8966594246261344259">"द्वारे सामायिक करा"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"फायली कॉपी करीत आहे"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"फायली हलविणे"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"फायली हटवित आहे"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> शिल्लक"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> फाईल कॉपी करीत आहे.</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> फायली कॉपी करीत आहे.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> फाईल हलवित आहे.</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> फायली हलवित आहे.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> फाईल हटवित आहे.</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> फायली हटवित आहे.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"पूर्ववत करा"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"कॉपी करण्‍यासाठी तयार करीत आहे…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"हलविण्‍यास तयार होत आहे…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"हटविण्‍यासाठी तयार करीत आहे..."</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one"> <xliff:g id="COUNT_1">%1$d</xliff:g> फाईल कॉपी करणे शक्य झाले नाही</item>
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> फायली कॉपी करणे शक्य झाले नाही</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one"> <xliff:g id="COUNT_1">%1$d</xliff:g> फाईल हलविणे शक्य झाले नाही</item>
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> फायली हलविणे शक्य झाले नाही</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one"> <xliff:g id="COUNT_1">%1$d</xliff:g> फाईल हटविणे शक्य झाले नाही</item>
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> फायली हटविणे शक्य झाले नाही</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"तपशील पाहण्यासाठी टॅप करा"</string>
-    <string name="close" msgid="3043722427445528732">"बंद करा"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"या फायलींची कॉपी झाली नाही: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"या फायली हलविल्या नाहीत: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"या फायली हटविल्या नाहीत: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"या फायली दुसऱ्या स्वरूपनात रूपांतरित केल्या होत्या: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one">क्लिपबोर्डवर <xliff:g id="COUNT_1">%1$d</xliff:g> फाईल कॉपी केली.</item>
-      <item quantity="other">क्लिपबोर्डवर <xliff:g id="COUNT_1">%1$d</xliff:g> फायली कॉपी केल्या.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"या स्थानामध्‍ये निवडलेल्‍या फायली पेस्ट करू शकत नाही."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"पुनर्नामित करा"</string>
-    <string name="rename_error" msgid="4203041674883412606">"दस्तऐवज पुनर्नामित करण्‍यात अयशस्वी झाले"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"बाहेर काढा"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"काही फायली रूपांतरित केल्या होत्या"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="STORAGE"><i>^3</i></xliff:g> वर <xliff:g id="APPNAME"><b>^1</b></xliff:g> ला <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> निर्देशिकेवर प्रवेशाची मंजूरी द्यायची?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> ला <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> निर्देशिकमध्ये प्रवेश मंजूर करायचा?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> ला <xliff:g id="STORAGE"><i>^2</i></xliff:g> वर फोटो आणि व्हिडिओंसह, आपल्या डेटामध्ये प्रवेश करण्याची मंजूरी द्यायची?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"पुन्हा विचारू नका"</string>
-    <string name="allow" msgid="7225948811296386551">"अनुमती द्या"</string>
-    <string name="deny" msgid="2081879885755434506">"नकार द्या"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> निवडला</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> निवडले</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> आयटम</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> आयटम</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"\"<xliff:g id="NAME">%1$s</xliff:g>\" हटवायची?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"\"<xliff:g id="NAME">%1$s</xliff:g>\" फोल्डर आणि त्यामधील सामग्री हटवायची?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> फाईल हटवायची?</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> फायली हटवायच्या?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> फोल्डर आणि त्यामधील सामग्री हटवायची?</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> फोल्डर आणि त्यामधील सामग्री हटवायची?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> आयटम हटवायचा?</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> आयटम हटवायचे?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-ms-rMY/strings.xml b/packages/DocumentsUI/res/values-ms-rMY/strings.xml
deleted file mode 100644
index 139d021..0000000
--- a/packages/DocumentsUI/res/values-ms-rMY/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Fail"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Muat turun"</string>
-    <string name="title_open" msgid="4353228937663917801">"Buka dari"</string>
-    <string name="title_save" msgid="2433679664882857999">"Simpan ke"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Folder baharu"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Paparan grid"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Paparan senarai"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Isih mengikut"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Cari"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Tetapan storan"</string>
-    <string name="menu_open" msgid="432922957274920903">"Buka"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Simpan"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Kongsi"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Padam"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Pilih semua"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Salin ke..."</string>
-    <string name="menu_move" msgid="1828090633118079817">"Alihkan ke…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Tetingkap baharu"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Potong"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Salin"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Tampal"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Papar storan dalaman"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Sembunyikan storan dlmn"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Papar saiz fail"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Sembunyikan saiz fail"</string>
-    <string name="button_select" msgid="527196987259139214">"Pilih"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Salin"</string>
-    <string name="button_move" msgid="2202666023104202232">"Alihkan"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Tolak"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Cuba Lagi"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Mengikut nama"</string>
-    <string name="sort_date" msgid="586080032956151448">"Mengikut tarikh diubah"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Mengikut saiz"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Tunjukkan akar"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Sembunyikan akar"</string>
-    <string name="save_error" msgid="6167009778003223664">"Gagal menyimpan dokumen"</string>
-    <string name="create_error" msgid="3735649141335444215">"Gagal membuat folder"</string>
-    <string name="query_error" msgid="5999895349602476581">"Tidak dapat memuatkan kandungan pada masa ini"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Terbaharu"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> kosong"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Perkhidmatan storan"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Pintasan"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Peranti"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Lebih banyak apl"</string>
-    <string name="empty" msgid="7858882803708117596">"Tiada item"</string>
-    <string name="no_results" msgid="6622510343880730446">"Tiada padanan dalam %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Tidak dapat membuka fail"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Tidak dapat memadam beberapa dokumen"</string>
-    <string name="share_via" msgid="8966594246261344259">"Kongsi melalui"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Menyalin fail"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Mengalihkan fail"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Memadamkan fail"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> lagi"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">Menyalin <xliff:g id="COUNT_1">%1$d</xliff:g> fail.</item>
-      <item quantity="one">Menyalin <xliff:g id="COUNT_0">%1$d</xliff:g> fail.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">Mengalihkan <xliff:g id="COUNT_1">%1$d</xliff:g> fail.</item>
-      <item quantity="one">Mengalihkan <xliff:g id="COUNT_0">%1$d</xliff:g> fail.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">Memadam <xliff:g id="COUNT_1">%1$d</xliff:g> fail.</item>
-      <item quantity="one">Memadam <xliff:g id="COUNT_0">%1$d</xliff:g> fail.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Buat asal"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Bersedia untuk salin..."</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Bersedia untuk mengalih…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Bersedia untuk memadam…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">Tidak dapat menyalin <xliff:g id="COUNT_1">%1$d</xliff:g> fail</item>
-      <item quantity="one">Tidak dapat menyalin <xliff:g id="COUNT_0">%1$d</xliff:g> fail</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">Tidak dapat mengalihkan <xliff:g id="COUNT_1">%1$d</xliff:g> fail</item>
-      <item quantity="one">Tidak dapat mengalihkan <xliff:g id="COUNT_0">%1$d</xliff:g> fail</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">Tidak dapat memadamkan <xliff:g id="COUNT_1">%1$d</xliff:g> fail</item>
-      <item quantity="one">Tidak dapat memadamkan <xliff:g id="COUNT_0">%1$d</xliff:g> fail</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Ketik untuk melihat butiran"</string>
-    <string name="close" msgid="3043722427445528732">"Tutup"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Fail ini tidak disalin: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Fail ini tidak dialihkan: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Fail ini tidak dipadamkan: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Fail ini telah ditukarkan kepada format lain: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> fail disalin ke papan keratan.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> fail disalin ke papan keratan.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Tidak boleh menampalkan fail yang dipilih dalam lokasi ini."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Namakan semula"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Gagal menamakan semula dokumen"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Keluarkan"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Sesetengah fail telah ditukarkan"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Beri <xliff:g id="APPNAME"><b>^1</b></xliff:g> akses kepada direktori <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> di <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Beri <xliff:g id="APPNAME"><b>^1</b></xliff:g> akses kepada direktori <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Beri <xliff:g id="APPNAME"><b>^1</b></xliff:g> akses kepada data anda, termasuk foto dan video pada <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Jangan tanya lagi"</string>
-    <string name="allow" msgid="7225948811296386551">"Benarkan"</string>
-    <string name="deny" msgid="2081879885755434506">"Nafi"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> dipilih</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> dipilih</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> item</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> item</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Padamkan \"<xliff:g id="NAME">%1$s</xliff:g>\"?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Padamkan folder \"<xliff:g id="NAME">%1$s</xliff:g>\" dan kandungannya?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">Padamkan <xliff:g id="COUNT_1">%1$d</xliff:g> fail?</item>
-      <item quantity="one">Padamkan <xliff:g id="COUNT_0">%1$d</xliff:g> fail?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">Padamkan <xliff:g id="COUNT_1">%1$d</xliff:g> folder dan kandungannya?</item>
-      <item quantity="one">Padamkan <xliff:g id="COUNT_0">%1$d</xliff:g> folder dan kandungannya?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">Padamkan <xliff:g id="COUNT_1">%1$d</xliff:g> item?</item>
-      <item quantity="one">Padamkan <xliff:g id="COUNT_0">%1$d</xliff:g> item?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-my-rMM/strings.xml b/packages/DocumentsUI/res/values-my-rMM/strings.xml
deleted file mode 100644
index 366c484..0000000
--- a/packages/DocumentsUI/res/values-my-rMM/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"ဖိုင်များ"</string>
-    <string name="downloads_label" msgid="959113951084633612">"ဒေါင်းလုဒ်များ"</string>
-    <string name="title_open" msgid="4353228937663917801">"မှ ဖွင့်ပါ"</string>
-    <string name="title_save" msgid="2433679664882857999">"သို့ သိမ်းပါ"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"ဖိုလ်ဒါ အသစ်"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"ဖယားကွက်မြင်ကွင်း"</string>
-    <string name="menu_list" msgid="7279285939892417279">"အစဉ်လိုက်မြင်ကွင်း"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"အစဉ်အလိုက် စီခြင်း"</string>
-    <string name="menu_search" msgid="3816712084502856974">"ရှာဖွေရန်"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"သိုလှောင်မှု ဆက်တင်များ"</string>
-    <string name="menu_open" msgid="432922957274920903">"ဖွင့်ရန်"</string>
-    <string name="menu_save" msgid="2394743337684426338">"သိမ်းရန်"</string>
-    <string name="menu_share" msgid="3075149983979628146">"မျှဝေခြင်း"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"ဖျက်ရန်"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"အားလုံးကို ရွေးရန်"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"…သို့ကူးယူရန်"</string>
-    <string name="menu_move" msgid="1828090633118079817">"...သို့ ရွှေ့ရန်"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"ဝင်းဒိုးသစ်"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"ဖြတ်ယူရန်"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"ကူးယူရန်"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"ကပ်ရန်"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"စက်ရှိစတိုရုံ ပြပါ"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"စက်ရှိစတိုရုံ ဖျောက်ထားပါ"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"ဖိုင်အရွယ်အစား ပြပါ"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"ဖိုင်အရွယ်အစား ဝှက်ပါ"</string>
-    <string name="button_select" msgid="527196987259139214">"ရွေးရန်"</string>
-    <string name="button_copy" msgid="8706475544635021302">"ကူးယူရန်"</string>
-    <string name="button_move" msgid="2202666023104202232">"ရွေ့မည်"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"ပယ်ရန်"</string>
-    <string name="button_retry" msgid="4392027584153752797">"ထပ် စမ်းကြည့်ပါ"</string>
-    <string name="sort_name" msgid="9183560467917256779">"အမည်ဖြင့်"</string>
-    <string name="sort_date" msgid="586080032956151448">"ပြင်ဆင်မှု ရက်စွဲဖြင့်"</string>
-    <string name="sort_size" msgid="3350681319735474741">"အရွယ်အစားဖြင့်"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"ဖိုဒါကို ဖွင့်လိုက်ပါ"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"ဖိုဒါကို ပိတ်လိုက်ပါ"</string>
-    <string name="save_error" msgid="6167009778003223664">"စာရွက်စာတန်း သိမ်းဆည်းမှု မအောင်​မြင်ပါ"</string>
-    <string name="create_error" msgid="3735649141335444215">"အကန့်အသစ် ဖန်တီးခြင်း မအောင်မြင်ပါ"</string>
-    <string name="query_error" msgid="5999895349602476581">"အကြောင်းအရာများကို လောလောဆယ်တွင် တင်၍မရသေးပါ"</string>
-    <string name="root_recent" msgid="4470053704320518133">"လတ်တလော"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> အသုံးချနိုင်ပါသည်"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"သိုလှောင်ရန်ဆားဗစ်များ"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"အတိုကောက်များ"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"စက်ပစ္စည်းများ"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"နောက်ထပ်အပလီကေးရှင်းများ"</string>
-    <string name="empty" msgid="7858882803708117596">"ဘာမှ မရှိပါ"</string>
-    <string name="no_results" msgid="6622510343880730446">"%1$s တွင်ကိုက်ညီမှုမရှိပါ"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"ဖိုင်ကိုဖွင့်၍မရပါ"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"တချို့ စာရွက်စာတန်းများ မဖျက်စီးနိုင်ပါ"</string>
-    <string name="share_via" msgid="8966594246261344259">"မှ ဝေမျှပါ"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"ဖိုင်များကူယူနေသည်"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"ဖိုင်များ ရွှေ့နေသည်"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"ဖိုင်များကို ဖျက်နေသည်"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> ကျန်ရှိသည်"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ဖိုင်များကို ကူးယူနေသည်။</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ဖိုင် ကူးယူနေသည်။</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ဖိုင် ရွှေ့နေစဉ်</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ဖိုင် ရွှေ့နေစဉ်</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">ဖိုင် <xliff:g id="COUNT_1">%1$d</xliff:g> ခုကိုဖျက်နေသည်။</item>
-      <item quantity="one">ဖိုင် <xliff:g id="COUNT_0">%1$d</xliff:g> ခုကိုဖျက်နေသည်။</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"ပြန်ဖျက်ရန်"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"မိတ္တူကူးရန်ပြင်ဆင်နေ..."</string>
-    <string name="move_preparing" msgid="2772219441375531410">"ရွှေ့ရန် ပြင်ဆင်နေသည်…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"ဖျက်ရန်အတွက် ပြင်ဆင်နေသည်..."</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">ဖိုင်<xliff:g id="COUNT_1">%1$d</xliff:g> ခုကိုကူးယူ၍မရခဲ့ပါ</item>
-      <item quantity="one">ဖိုင်<xliff:g id="COUNT_0">%1$d</xliff:g> ခုကိုကူးယူ၍မရခဲ့ပါ</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">ဖိုင်<xliff:g id="COUNT_1">%1$d</xliff:g> ခုကိုရွှေ့၍မရခဲ့ပါ</item>
-      <item quantity="one">ဖိုင်<xliff:g id="COUNT_0">%1$d</xliff:g> ခုကိုရွှေ့၍မရခဲ့ပါ</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">ဖိုင်<xliff:g id="COUNT_1">%1$d</xliff:g> ခုကိုဖျက်၍မရခဲ့ပါ</item>
-      <item quantity="one">ဖိုင်<xliff:g id="COUNT_0">%1$d</xliff:g> ခုကိုဖျက်၍မရခဲ့ပါ</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"အသေးစိတ်ကြည့်ရန် တို့ပါ"</string>
-    <string name="close" msgid="3043722427445528732">"ပိတ်ပါ"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"ဤဖိုင်များကို မကူးယူခဲ့ပါ − <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"ဤဖိုင်များကို မရွှေ့ခဲ့ပါ − <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"ဤဖိုင်များကို ဖျက်၍မရခဲ့ပါ − <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"ဤဖိုင်များကို အခြားပုံစံစနစ်တစ်ခုသို့ ပြောင်းလဲခဲ့သည် − <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other"> ဖိုင် <xliff:g id="COUNT_1">%1$d</xliff:g> ဖိုင်ကိုအချက်အလက်သိမ်းတဲ့နေရာသို့ ကူးယူပါ။</item>
-      <item quantity="one"> ဖိုင် <xliff:g id="COUNT_0">%1$d</xliff:g> ဖိုင်ကိုအချက်အလက်သိမ်းတဲ့နေရာသို့ ကူးယူပါ။</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"ဤနေရာတွင် ရွေးချယ်ထားသည့် ဖိုင်များကို ကူးထည့်၍မရပါ။"</string>
-    <string name="menu_rename" msgid="7678802479104285353">"အမည်ပြောင်းရန်"</string>
-    <string name="rename_error" msgid="4203041674883412606">"စာရွက်စာတမ်းကို အမည်ပြောင်းခြင်း မအောင်မြင်ပါ"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"ထုတ်မည်"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"အချို့ဖိုင်များကို ပြောင်းလဲထားသည်"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> ကို <xliff:g id="STORAGE"><i>^3</i></xliff:g> ရှိ <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> လမ်းညွှန်အား အသုံးပြုခွင့်ပေးမလား။"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> အား <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> စာရင်းကို အသုံးပြုခွင့်ပေးမလား။"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="STORAGE"><i>^2</i></xliff:g> ရှိဓာတ်ပုံများနှင့် ဗီဒီယိုများအပါအဝင် သင့်ဒေတာများကို <xliff:g id="APPNAME"><b>^1</b></xliff:g> အားအသုံးပြုခွင့်ပေးမလား။"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"နောက်ထပ်မမေးပါနှင့်"</string>
-    <string name="allow" msgid="7225948811296386551">"ခွင့်ပြုသည်"</string>
-    <string name="deny" msgid="2081879885755434506">"ငြင်းပယ်သည်"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ခုရွေးချယ်ထားသည်</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ခုရွေးချယ်ထားသည်</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ခု</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ခု</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"\"<xliff:g id="NAME">%1$s</xliff:g>\" ကိုဖျက်မလား။"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"\"<xliff:g id="NAME">%1$s</xliff:g>\" ဖိုင်တွဲနှင့် ၎င်းတွင်ပါဝင်သည့် အကြောင်းအရာများကို ဖျက်မလား။"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">ဖိုင် <xliff:g id="COUNT_1">%1$d</xliff:g> ခုကိုဖျက်မလား။</item>
-      <item quantity="one">ဖိုင် <xliff:g id="COUNT_0">%1$d</xliff:g> ခုကိုဖျက်မလား။</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">ဖိုင်တွဲ <xliff:g id="COUNT_1">%1$d</xliff:g> ခုနှင့် ၎င်း၏အကြောင်းအရာများကို ဖျက်မလား။</item>
-      <item quantity="one">ဖိုင်တွဲ <xliff:g id="COUNT_0">%1$d</xliff:g> ခုနှင့် ၎င်း၏အကြောင်းအရာများကို ဖျက်မလား။</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">အကြောင်းအရာ <xliff:g id="COUNT_1">%1$d</xliff:g> ခုကိုဖျက်မလား။</item>
-      <item quantity="one">အကြောင်းအရာ <xliff:g id="COUNT_0">%1$d</xliff:g> ခုကိုဖျက်မလား။</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-nb/strings.xml b/packages/DocumentsUI/res/values-nb/strings.xml
deleted file mode 100644
index e7b057b..0000000
--- a/packages/DocumentsUI/res/values-nb/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Filer"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Nedlastinger"</string>
-    <string name="title_open" msgid="4353228937663917801">"Åpne fra"</string>
-    <string name="title_save" msgid="2433679664882857999">"Lagre i"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Ny mappe"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Rutenettvisning"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Listevisning"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Sortér etter"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Søk"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Lagringsinnstillinger"</string>
-    <string name="menu_open" msgid="432922957274920903">"Åpne"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Lagre"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Del"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Slett"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Markér alt"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Kopiér til …"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Flytt til"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Nytt vindu"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Klipp ut"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Kopiér"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Lim inn"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Vis den interne lagringen"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Skjul den interne lagringen"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Vis filstørrelsen"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Skjul filstørrelsen"</string>
-    <string name="button_select" msgid="527196987259139214">"Velg"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Kopiér"</string>
-    <string name="button_move" msgid="2202666023104202232">"Flytt"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Avvis"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Prøv på nytt"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Etter navn"</string>
-    <string name="sort_date" msgid="586080032956151448">"Etter endringsdato"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Etter størrelse"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Vis røtter"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Skjul røtter"</string>
-    <string name="save_error" msgid="6167009778003223664">"Kunne ikke lagre dokumentet"</string>
-    <string name="create_error" msgid="3735649141335444215">"Kunne ikke opprette mappen"</string>
-    <string name="query_error" msgid="5999895349602476581">"Kan ikke laste inn innholdet for øyeblikket"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Siste"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> ledig"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Lagringstjenester"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Snarveier"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Enheter"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Flere apper"</string>
-    <string name="empty" msgid="7858882803708117596">"Ingen elementer"</string>
-    <string name="no_results" msgid="6622510343880730446">"Ingen treff i %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Kan ikke åpne filen"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Enkelte dokumenter kunne ikke slettes"</string>
-    <string name="share_via" msgid="8966594246261344259">"Del via"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Kopierer filer"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Flytter filer"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Sletter filene"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> gjenstår"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">Kopierer <xliff:g id="COUNT_1">%1$d</xliff:g> filer.</item>
-      <item quantity="one">Kopierer <xliff:g id="COUNT_0">%1$d</xliff:g> fil.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">Flytter <xliff:g id="COUNT_1">%1$d</xliff:g> filer.</item>
-      <item quantity="one">Flytter <xliff:g id="COUNT_0">%1$d</xliff:g> fil.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">Sletter <xliff:g id="COUNT_1">%1$d</xliff:g> filer.</item>
-      <item quantity="one">Sletter <xliff:g id="COUNT_0">%1$d</xliff:g> fil.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Angre"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Forbereder kopiering …"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Forbereder flytting …"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Gjøres klar for sletting …"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">Kunne ikke kopiere <xliff:g id="COUNT_1">%1$d</xliff:g> filer</item>
-      <item quantity="one">Kunne ikke kopiere <xliff:g id="COUNT_0">%1$d</xliff:g> fil</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">Kunne ikke flytte <xliff:g id="COUNT_1">%1$d</xliff:g> filer</item>
-      <item quantity="one">Kunne ikke flytte <xliff:g id="COUNT_0">%1$d</xliff:g> fil</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">Kunne ikke slette <xliff:g id="COUNT_1">%1$d</xliff:g> filer</item>
-      <item quantity="one">Kunne ikke slette <xliff:g id="COUNT_0">%1$d</xliff:g> fil</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Trykk for å se detaljer"</string>
-    <string name="close" msgid="3043722427445528732">"Lukk"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Disse filene er ikke kopiert: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Disse filene er ikke flyttet: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Disse filene ble ikke slettet: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Disse filene er konvertert til et annet format: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">Kopierte <xliff:g id="COUNT_1">%1$d</xliff:g> filer til utklippstavlen.</item>
-      <item quantity="one">Kopierte <xliff:g id="COUNT_0">%1$d</xliff:g> fil til utklippstavlen.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Kan ikke lime inn de valgte filene her."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Gi nytt navn"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Kunne ikke gi dokumentet nytt navn"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Løs ut"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Noen filer er konvertert"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Vil du gi <xliff:g id="APPNAME"><b>^1</b></xliff:g> tilgang til <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>-katalogen på <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Vil du gi <xliff:g id="APPNAME"><b>^1</b></xliff:g> tilgang til <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>-katalogen?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Vil du gi <xliff:g id="APPNAME"><b>^1</b></xliff:g> tilgang til dataene dine – inkludert bilder og videoer – på <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Ikke spør igjen"</string>
-    <string name="allow" msgid="7225948811296386551">"Tillat"</string>
-    <string name="deny" msgid="2081879885755434506">"Avslå"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> er valgt</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> er valgt</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> varer</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> vare</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Vil du slette «<xliff:g id="NAME">%1$s</xliff:g>»?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Vil du slette «<xliff:g id="NAME">%1$s</xliff:g>»-mappen og innholdet i den?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">Vil du slette <xliff:g id="COUNT_1">%1$d</xliff:g> filer?</item>
-      <item quantity="one">Vil du slette <xliff:g id="COUNT_0">%1$d</xliff:g> fil?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">Vil du slette <xliff:g id="COUNT_1">%1$d</xliff:g> mapper og innholdet i dem?</item>
-      <item quantity="one">Vil du slette <xliff:g id="COUNT_0">%1$d</xliff:g> mappe og innholdet i den?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">Vil du slette <xliff:g id="COUNT_1">%1$d</xliff:g> elementer?</item>
-      <item quantity="one">Vil du slette <xliff:g id="COUNT_0">%1$d</xliff:g> element?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-ne-rNP/strings.xml b/packages/DocumentsUI/res/values-ne-rNP/strings.xml
deleted file mode 100644
index 62fbc1a..0000000
--- a/packages/DocumentsUI/res/values-ne-rNP/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"फाइलहरू"</string>
-    <string name="downloads_label" msgid="959113951084633612">"डाउनलोडहरू"</string>
-    <string name="title_open" msgid="4353228937663917801">"यसबाट खोल्नुहोस्"</string>
-    <string name="title_save" msgid="2433679664882857999">"यसमा सुरक्षित गर्नुहोस्"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"नयाँ फोल्डर"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"ग्रिड दृश्य"</string>
-    <string name="menu_list" msgid="7279285939892417279">"सूची दृश्य"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"यसद्वारा क्रमवद्घ गर्नुहोस्"</string>
-    <string name="menu_search" msgid="3816712084502856974">"खोज्नुहोस्"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"भण्डारण सेटिङहरू"</string>
-    <string name="menu_open" msgid="432922957274920903">"खोल्नुहोस्"</string>
-    <string name="menu_save" msgid="2394743337684426338">"सुरक्षित गर्नुहोस्"</string>
-    <string name="menu_share" msgid="3075149983979628146">"साझेदारी गर्नुहोस्"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"मेटाउनुहोस्"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"सबै चयन गर्नुहोस्"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"यसमा प्रतिलिपि गर्नुहोस् ..."</string>
-    <string name="menu_move" msgid="1828090633118079817">"…मा सार्नुहोस्"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"नयाँ विन्डो"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"काट्नुहोस्"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"प्रतिलिपि बनाउनुहोस्"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"टाँस्नुहोस्"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"आन्तरिक भण्डारण देखाउनुहोस्"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"आन्तरिक भण्डारण लुकाउनुहोस्"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"फाइल आकार देखाउनुहोस्"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"फाइल आकार लुकाउनुहोस्"</string>
-    <string name="button_select" msgid="527196987259139214">"चयन गर्नुहोस्"</string>
-    <string name="button_copy" msgid="8706475544635021302">"प्रतिलिपि बनाउनुहोस्"</string>
-    <string name="button_move" msgid="2202666023104202232">"सार्नुहोस्"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"खारेज गर्नुहोस्"</string>
-    <string name="button_retry" msgid="4392027584153752797">"पुन: प्रयास गर्नुहोस्"</string>
-    <string name="sort_name" msgid="9183560467917256779">"नाम अनुसार"</string>
-    <string name="sort_date" msgid="586080032956151448">"परिमार्जित मिति अनुसार"</string>
-    <string name="sort_size" msgid="3350681319735474741">"आकार अनुसार"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"मूलहरू देखाउनुहोस्"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"मूलहरू लुकाउनुहोस्"</string>
-    <string name="save_error" msgid="6167009778003223664">"कागजात सुरक्षित गर्न विफल भयो"</string>
-    <string name="create_error" msgid="3735649141335444215">"फोल्डर सिर्जना गर्न असफल भयो"</string>
-    <string name="query_error" msgid="5999895349602476581">"अहिले सामग्री लोड गर्न सक्दैन"</string>
-    <string name="root_recent" msgid="4470053704320518133">"हालैको"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> खाली"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"भण्डारण सेवाहरू"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"सर्टकटहरू"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"उपकरणहरू"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"थप अनुप्रयोगहरू"</string>
-    <string name="empty" msgid="7858882803708117596">"कुनै वस्तु छैन।"</string>
-    <string name="no_results" msgid="6622510343880730446">"%1$s मा कुनै पनि मेल खानेहरू छैन"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"फाइल खोल्न सक्दैन"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"केही कागजातहरू मेट्न असमर्थ छ"</string>
-    <string name="share_via" msgid="8966594246261344259">"माध्यमबाट साझेदारी गर्नुहोस्"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"फाइलहरू प्रतिलिपि गर्दै:"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"फाइलहरू सार्दै"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"फाइलहरूलाई मेट्दै"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g>बाँकी"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g>फाइलहरू प्रतिलिप गर्दै।</item>
-      <item quantity="one"> <xliff:g id="COUNT_0">%1$d</xliff:g> फाइल प्रतिलिपि गर्दै।</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> फाइलहरू सार्दै।</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> फाइलहरु सार्दै।</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> फाइलहरू मेट्दै।</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> फाइल मेट्दै।</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"अनडू गर्नुहोस्"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"प्रतिलिपिको लागि तयारी गर्दै ..."</string>
-    <string name="move_preparing" msgid="2772219441375531410">"सार्नको लागि तयारी गर्दै ..."</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"मेटाउन तयारी गर्दै..."</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> फाइलहरू प्रतिलिपि गर्न सकेन</item>
-      <item quantity="one"> <xliff:g id="COUNT_0">%1$d</xliff:g> फाइल प्रतिलिपि गर्न सकेन</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> फाइलहरू सार्न सकेन</item>
-      <item quantity="one"> <xliff:g id="COUNT_0">%1$d</xliff:g> फाइल सार्न सकेन</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> फाइलहरू मेटाउन सकेन</item>
-      <item quantity="one"> <xliff:g id="COUNT_0">%1$d</xliff:g> फाइल मेटाउन सकेन</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"विवरणहरू हेर्न ट्याप गर्नुहोस्"</string>
-    <string name="close" msgid="3043722427445528732">"बन्द गर्नुहोस्"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"यी फाइलहरू प्रतिलिपि गरिएको थिएनः <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"यी फाइलहरू सारिएको थिएन: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"यी फाइलहरूलाई मेटाइएको थिएन: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"यी फाइलहरू अर्को ढाँचामा परिणत गरिएका थिए: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other"> क्लिपबोर्डमा <xliff:g id="COUNT_1">%1$d</xliff:g> फाइलहरू प्रतिलिपि बनाइए।</item>
-      <item quantity="one"> क्लिपबोर्डमा <xliff:g id="COUNT_0">%1$d</xliff:g> फाइलहरूका प्रतिलिपि बनाइए।</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"यो स्थानमा चयन गरिएका फाइलहरू टाँस्न सकिँदैन।"</string>
-    <string name="menu_rename" msgid="7678802479104285353">"पुन: नामाकरण गर्नुहोस्"</string>
-    <string name="rename_error" msgid="4203041674883412606">"कागजात पुन: नामाकरण गर्न असफल भयो"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"निकाल्नुहोस्"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"केही फाइलहरू परिवर्तन गरिएका थिए"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> लाई <xliff:g id="STORAGE"><i>^3</i></xliff:g> मा भएको <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> निर्देशिकामा पहुँच गर्न अनुमति दिने हो?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> लाई <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> निर्देशिकामाथि पहुँच गर्न अनुमति प्रदान गर्ने हो?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> लाई <xliff:g id="STORAGE"><i>^2</i></xliff:g> मा भएका तस्बिर र भिडियोहरू लगायत तपाईँको डेटामा पहुँच गर्नका लागि अनुमति दिने हो?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"फेरि नसोध्नुहोस्"</string>
-    <string name="allow" msgid="7225948811296386551">"अनुमति दिनुहोस्"</string>
-    <string name="deny" msgid="2081879885755434506">"अस्वीकार गर्नुहोस्"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> लाई चयन गरियो</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> लाई चयन गरियो</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> वस्तुहरू</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> वस्तु</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"\"<xliff:g id="NAME">%1$s</xliff:g>\" लाई मेट्ने हो?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"फोल्डर \"<xliff:g id="NAME">%1$s</xliff:g>\" र यसका सामग्रीहरूलाई मेट्ने हो?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> फाइलहरूलाई मेट्ने हो?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> फाइललाई मेट्ने हो?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> फोल्डरहरू र तिनीहरूका सामग्रीहरूलाई मेट्ने हो?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> फोल्डर र यसका सामग्रीहरूलाई मेट्ने हो?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> वस्तुहरूलाई मेट्ने हो?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> वस्तुलाई मेट्ने हो?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-nl/strings.xml b/packages/DocumentsUI/res/values-nl/strings.xml
deleted file mode 100644
index 446e4b0..0000000
--- a/packages/DocumentsUI/res/values-nl/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Bestanden"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Downloads"</string>
-    <string name="title_open" msgid="4353228937663917801">"Openen vanuit"</string>
-    <string name="title_save" msgid="2433679664882857999">"Opslaan in"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Nieuwe map"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Rasterweergave"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Lijstweergave"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Sorteren op"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Zoeken"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Instellingen voor opslag"</string>
-    <string name="menu_open" msgid="432922957274920903">"Openen"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Opslaan"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Delen"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Verwijderen"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Alles selecteren"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Kopiëren naar…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Verplaatsen naar…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Nieuw venster"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Knippen"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Kopiëren"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Plakken"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Interne opslag weergeven"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Interne opslag verbergen"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Bestandsgrootte weergeven"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Bestandsgrootte verbergen"</string>
-    <string name="button_select" msgid="527196987259139214">"Selecteren"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Kopiëren"</string>
-    <string name="button_move" msgid="2202666023104202232">"Verplaatsen"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Sluiten"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Opnieuw proberen"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Op naam"</string>
-    <string name="sort_date" msgid="586080032956151448">"Op aanpassingsdatum"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Op grootte"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Roots weergeven"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Roots verbergen"</string>
-    <string name="save_error" msgid="6167009778003223664">"Kan document niet opslaan"</string>
-    <string name="create_error" msgid="3735649141335444215">"Kan map niet maken"</string>
-    <string name="query_error" msgid="5999895349602476581">"Kan content momenteel niet laden"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Recent"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> vrij"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Opslagservices"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Sneltoetsen"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Apparaten"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Meer apps"</string>
-    <string name="empty" msgid="7858882803708117596">"Geen items"</string>
-    <string name="no_results" msgid="6622510343880730446">"Geen overeenkomsten in %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Kan bestand niet openen"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Kan bepaalde documenten niet verwijderen"</string>
-    <string name="share_via" msgid="8966594246261344259">"Delen via"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Bestanden kopiëren"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Bestanden verplaatsen"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Bestanden verwijderen"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> resterend"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> bestanden kopiëren.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> bestand kopiëren.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> bestanden verplaatsen.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> bestand verplaatsen.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> bestanden verwijderen.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> bestand verwijderen.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Ongedaan maken"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Kopiëren voorbereiden…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Verplaatsen voorbereiden…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Verwijderen voorbereiden…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">Kan <xliff:g id="COUNT_1">%1$d</xliff:g> bestanden niet kopiëren</item>
-      <item quantity="one">Kan <xliff:g id="COUNT_0">%1$d</xliff:g> bestand niet kopiëren</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">Kan <xliff:g id="COUNT_1">%1$d</xliff:g> bestanden niet verplaatsen</item>
-      <item quantity="one">Kan <xliff:g id="COUNT_0">%1$d</xliff:g> bestand niet verplaatsen</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">Kan <xliff:g id="COUNT_1">%1$d</xliff:g> bestanden niet verwijderen</item>
-      <item quantity="one">Kan <xliff:g id="COUNT_0">%1$d</xliff:g> bestand niet verwijderen</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Tik om details te bekijken"</string>
-    <string name="close" msgid="3043722427445528732">"Sluiten"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Deze bestanden zijn niet gekopieerd: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Deze bestanden zijn niet verplaatst: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Deze bestanden zijn niet verwijderd: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Deze bestanden zijn geconverteerd vanuit een andere indeling: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> bestanden gekopieerd naar klembord.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> bestand gekopieerd naar klembord.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Kan de geselecteerde bestanden niet plakken op deze locatie."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Naam wijzigen"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Kan naam van document niet wijzigen"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Uitwerpen"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Sommige bestanden zijn geconverteerd"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> toegang verlenen tot de map <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> op <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> toegang verlenen tot de map <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> toegang verlenen tot je gegevens, waaronder foto\'s en video\'s, op <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Niet meer vragen"</string>
-    <string name="allow" msgid="7225948811296386551">"Toestaan"</string>
-    <string name="deny" msgid="2081879885755434506">"Weigeren"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> geselecteerd</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> geselecteerd</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> items</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> item</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"<xliff:g id="NAME">%1$s</xliff:g> verwijderen?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Map <xliff:g id="NAME">%1$s</xliff:g> en de bijbehorende inhoud verwijderen?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> bestanden verwijderen?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> bestand verwijderen?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> mappen en de bijbehorende inhoud verwijderen?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> map en de bijbehorende inhoud verwijderen?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> items verwijderen?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> item verwijderen?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-pa-rIN/strings.xml b/packages/DocumentsUI/res/values-pa-rIN/strings.xml
deleted file mode 100644
index db1bf33..0000000
--- a/packages/DocumentsUI/res/values-pa-rIN/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"ਫ਼ਾਈਲਾਂ"</string>
-    <string name="downloads_label" msgid="959113951084633612">"ਡਾਊਨਲੋਡ"</string>
-    <string name="title_open" msgid="4353228937663917801">"ਤੋਂ ਖੋਲ੍ਹੋ"</string>
-    <string name="title_save" msgid="2433679664882857999">"ਇਸ ਵਿੱਚ ਰੱਖਿਅਤ ਕਰੋ"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"ਨਵਾਂ ਫੋਲਡਰ"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"ਗ੍ਰਿਡ ਵਿਊ"</string>
-    <string name="menu_list" msgid="7279285939892417279">"ਸੂਚੀ ਦ੍ਰਿਸ਼"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"ਇਸ ਮੁਤਾਬਕ ਛਾਂਟੋ"</string>
-    <string name="menu_search" msgid="3816712084502856974">"ਖੋਜੋ"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"ਸਟੋਰੇਜ ਸੈਟਿੰਗਾਂ"</string>
-    <string name="menu_open" msgid="432922957274920903">"ਖੋਲ੍ਹੋ"</string>
-    <string name="menu_save" msgid="2394743337684426338">"ਰੱਖਿਅਤ ਕਰੋ"</string>
-    <string name="menu_share" msgid="3075149983979628146">"ਸਾਂਝਾ ਕਰੋ"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"ਮਿਟਾਓ"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"ਸਭ ਚੁਣੋ"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"ਇਸ ਵਿੱਚ ਕਾਪੀ ਕਰੋ…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"ਏਥੇ ਤਬਾਦਲਾ ਕਰੋ..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"ਨਵੀਂ ਵਿੰਡੋ"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"ਕੱਟੋ"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"ਕਾਪੀ ਕਰੋ"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"ਪੇਸਟ ਕਰੋ"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"ਅੰਦਰੂਨੀ ਸਟੋਰੇਜ ਦਿਖਾਓ"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"ਅੰਦਰੂਨੀ ਸਟੋਰੇਜ ਲੁਕਾਓ"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"ਫਾਈਲ ਆਕਾਰ ਦਿਖਾਓ"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"ਫਾਈਲ ਆਕਾਰ ਲੁਕਾਓ"</string>
-    <string name="button_select" msgid="527196987259139214">"ਚੁਣੋ"</string>
-    <string name="button_copy" msgid="8706475544635021302">"ਕਾਪੀ ਕਰੋ"</string>
-    <string name="button_move" msgid="2202666023104202232">"ਮੂਵ ਕਰੋ"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"ਖਾਰਜ ਕਰੋ"</string>
-    <string name="button_retry" msgid="4392027584153752797">"ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ"</string>
-    <string name="sort_name" msgid="9183560467917256779">"ਨਾਮ ਮੁਤਾਬਕ"</string>
-    <string name="sort_date" msgid="586080032956151448">"ਸੋਧੇ ਜਾਣ ਦੀ ਤਾਰੀਖ਼ ਮੁਤਾਬਕ"</string>
-    <string name="sort_size" msgid="3350681319735474741">"ਆਕਾਰ ਮੁਤਾਬਕ"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"ਰੂਟਸ ਦਿਖਾਓ"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"ਰੂਟਸ ਲੁਕਾਓ"</string>
-    <string name="save_error" msgid="6167009778003223664">"ਦਸਾਤਵੇਜ਼ ਸੁਰੱਖਿਅਤ ਕਰਨ ਵਿੱਚ ਅਸਫਲ"</string>
-    <string name="create_error" msgid="3735649141335444215">"ਫੋਲਡਰ ਬਣਾਉਣ ਲਈ ਅਸਫਲ"</string>
-    <string name="query_error" msgid="5999895349602476581">"ਇਸ ਵੇਲੇ ਸਮੱਗਰੀ ਨੂੰ ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
-    <string name="root_recent" msgid="4470053704320518133">"ਹਾਲੀਆ"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> ਖਾਲੀ"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"ਸਟੋਰੇਜ ਸੇਵਾਵਾਂ"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"ਸ਼ੌਰਟਕਟਸ"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"ਡਿਵਾਈਸਾਂ"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"ਹੋਰ ਐਪਸ"</string>
-    <string name="empty" msgid="7858882803708117596">"ਕੋਈ ਆਈਟਮਾਂ ਨਹੀਂ"</string>
-    <string name="no_results" msgid="6622510343880730446">"%1$s ਵਿੱਚ ਕੋਈ ਮੇਲ ਨਹੀਂ"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"ਫ਼ਾਈਲ ਨੂੰ ਖੋਲ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"ਕੁਝ ਦਸਤਾਵੇਜ਼ ਮਿਟਾਉਣ ਵਿੱਚ ਅਸਮਰੱਥ"</string>
-    <string name="share_via" msgid="8966594246261344259">"ਇਸ ਰਾਹੀਂ ਸਾਂਝਾ ਕਰੋ"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"ਫਾਈਲਾਂ ਕਾਪੀ ਕਰ ਰਿਹਾ ਹੈ"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"ਫ਼ਾਈਲਾਂ ਨੂੰ ਮੂਵ ਕਰ ਰਿਹਾ ਹੈ"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"ਫ਼ਾਈਲਾਂ ਨੂੰ ਮਿਟਾਇਆ ਜਾ ਰਿਹਾ ਹੈ"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> ਬਾਕੀ"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one"> <xliff:g id="COUNT_1">%1$d</xliff:g> ਫਾਈਲਾਂ ਕਾਪੀ ਕਰ ਰਿਹਾ ਹੈ।</item>
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> ਫਾਈਲਾਂ ਕਾਪੀ ਕਰ ਰਿਹਾ ਹੈ।</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ਫ਼ਾਈਲਾਂ ਨੂੰ ਮੂਵ ਕਰਨਾ।</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ਫ਼ਾਈਲਾਂ ਨੂੰ ਮੂਵ ਕਰਨਾ।</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ਫ਼ਾਈਲਾਂ ਮਿਟਾ ਰਿਹਾ ਹੈ।</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ਫ਼ਾਈਲਾਂ ਮਿਟਾ ਰਿਹਾ ਹੈ।</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"ਅਣਕੀਤਾ ਕਰੋ"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"ਕਾਪੀ ਲਈ ਤਿਆਰ ਕਰ ਰਿਹਾ ਹੈ…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"ਮੂਵ ਲਈ ਤਿਆਰ ਕਰ ਰਿਹਾ ਹੈ..."</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"ਮਿਟਾਉਣ ਦੀ ਤਿਆਰੀ ਹੋ ਰਹੀ ਹੈ…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ਫ਼ਾਈਲਾਂ ਨੂੰ ਕਾਪੀ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ਫ਼ਾਈਲਾਂ ਨੂੰ ਕਾਪੀ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ਫ਼ਾਈਲਾਂ ਨੂੰ ਤਬਦੀਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ਫ਼ਾਈਲਾਂ ਨੂੰ ਤਬਦੀਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ਫ਼ਾਈਲਾਂ ਨੂੰ ਮਿਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਿਆ</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ਫ਼ਾਈਲਾਂ ਨੂੰ ਮਿਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਿਆ</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"ਵੇਰਵਿਆਂ ਨੂੰ ਵੇਖਣ ਲਈ ਟੈਪ ਕਰੋ"</string>
-    <string name="close" msgid="3043722427445528732">"ਬੰਦ ਕਰੋ"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"ਇਹ ਫ਼ਾਈਲਾਂ ਕਾਪੀ ਨਹੀਂ ਹੋਈਆਂ ਸਨ: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"ਇਹ ਫ਼ਾਈਲਾਂ ਤਬਦੀਲ ਨਹੀਂ ਹੋਈਆਂ ਸਨ: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"ਇਹਨਾਂ ਫ਼ਾਈਲਾਂ ਨੂੰ ਮਿਟਾਇਆ ਨਹੀਂ ਗਿਆ ਸੀ: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"ਇਹ ਫ਼ਾਈਲਾਂ ਕਿਸੇ ਹੋਰ ਫੌਰਮੈਟ ਵਿੱਚ ਤਬਦੀਲ ਕੀਤੀਆਂ ਗਈਆਂ ਸਨ: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one">ਕਲਿੱਪਬੋਰਡ ਵਿੱਚ <xliff:g id="COUNT_1">%1$d</xliff:g> ਫ਼ਾਈਲਾਂ ਦੀ ਪ੍ਰਤੀਲਿਪੀ ਬਣਾਈ ਗਈ।</item>
-      <item quantity="other">ਕਲਿੱਪਬੋਰਡ ਵਿੱਚ <xliff:g id="COUNT_1">%1$d</xliff:g> ਫ਼ਾਈਲਾਂ ਦੀ ਪ੍ਰਤੀਲਿਪੀ ਬਣਾਈ ਗਈ।</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"ਇਸ ਸਥਾਨ ਵਿੱਚ ਚੁਣੀਆਂ ਗਈਆਂ ਫ਼ਾਈਲਾਂ ਨੂੰ ਪੇਸਟ ਨਹੀਂ ਕਰ ਸਕਦਾ ਹੈ।"</string>
-    <string name="menu_rename" msgid="7678802479104285353">"ਮੁੜ-ਨਾਮਕਰਨ ਕਰੋ"</string>
-    <string name="rename_error" msgid="4203041674883412606">"ਦਸਤਾਵੇਜ਼ ਦਾ ਮੁੜ-ਨਾਮਕਰਨ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"ਬਾਹਰ ਕੱਢੋ"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"ਕੁਝ ਫ਼ਾਈਲਾਂ ਤਬਦੀਲ ਕੀਤੀਆਂ ਗਈਆਂ ਸਨ"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"ਕੀ <xliff:g id="APPNAME"><b>^1</b></xliff:g> ਨੂੰ <xliff:g id="STORAGE"><i>^3</i></xliff:g> \'ਤੇ <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ਡਾਇਰੈਕਟਰੀ \'ਤੇ ਪਹੁੰਚ ਦੇਣੀ ਹੈ?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"ਕੀ <xliff:g id="APPNAME"><b>^1</b></xliff:g> ਨੂੰ <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ਡਾਇਰੈਕਟਰੀ \'ਤੇ ਪਹੁੰਚ ਦੇਣੀ ਹੈ?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"ਕੀ <xliff:g id="APPNAME"><b>^1</b></xliff:g> ਨੂੰ <xliff:g id="STORAGE"><i>^2</i></xliff:g> \'ਤੇ ਫੋਟੋਆਂ ਅਤੇ ਵੀਡੀਓ ਸਮੇਤ, ਤੁਹਾਡੇ ਡੈਟੇ \'ਤੇ ਪਹੁੰਚ ਦੇਣੀ ਹੈ?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"ਦੁਬਾਰਾ ਨਾ ਪੁੱਛੋ"</string>
-    <string name="allow" msgid="7225948811296386551">"ਆਗਿਆ ਦਿਓ"</string>
-    <string name="deny" msgid="2081879885755434506">"ਅਸਵੀਕਾਰ ਕਰੋ"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ਚੁਣੀ ਗਈ</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ਚੁਣੀਆਂ ਗਈਆਂ</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ਆਈਟਮਾਂ</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ਆਈਟਮਾਂ</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"ਕੀ \"<xliff:g id="NAME">%1$s</xliff:g>\" ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"ਫੋਲਡਰ \"<xliff:g id="NAME">%1$s</xliff:g>\" ਅਤੇ ਉਸ ਦੀਆਂ ਸਮੱਗਰੀਆਂ ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one">ਕੀ <xliff:g id="COUNT_1">%1$d</xliff:g> ਫ਼ਾਈਲਾਂ ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ?</item>
-      <item quantity="other">ਕੀ <xliff:g id="COUNT_1">%1$d</xliff:g> ਫ਼ਾਈਲਾਂ ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one">ਕੀ <xliff:g id="COUNT_1">%1$d</xliff:g> ਫੋਲਡਰਾਂ ਅਤੇ ਉਹਨਾਂ ਦੀਆਂ ਸਮੱਗਰੀਆਂ ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ?</item>
-      <item quantity="other">ਕੀ <xliff:g id="COUNT_1">%1$d</xliff:g> ਫੋਲਡਰਾਂ ਅਤੇ ਉਹਨਾਂ ਦੀਆਂ ਸਮੱਗਰੀਆਂ ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one">ਕੀ <xliff:g id="COUNT_1">%1$d</xliff:g> ਆਈਟਮਾਂ ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ?</item>
-      <item quantity="other">ਕੀ <xliff:g id="COUNT_1">%1$d</xliff:g> ਆਈਟਮਾਂ ਨੂੰ ਮਿਟਾਉਣਾ ਹੈ?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-pl/strings.xml b/packages/DocumentsUI/res/values-pl/strings.xml
deleted file mode 100644
index 835cbd3..0000000
--- a/packages/DocumentsUI/res/values-pl/strings.xml
+++ /dev/null
@@ -1,168 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Pliki"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Pobrane"</string>
-    <string name="title_open" msgid="4353228937663917801">"Otwórz z"</string>
-    <string name="title_save" msgid="2433679664882857999">"Zapisz w"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Nowy folder"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Widok siatki"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Widok listy"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Sortuj według"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Szukaj"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Ustawienia pamięci"</string>
-    <string name="menu_open" msgid="432922957274920903">"Otwórz"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Zapisz"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Udostępnij"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Usuń"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Zaznacz wszystko"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Kopiuj do…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Przenieś do…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Nowe okno"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Wytnij"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Kopiuj"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Wklej"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Pokaż pamięć wewnętrzną"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Ukryj pamięć wewnętrzną"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Pokaż rozmiar pliku"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Ukryj rozmiar pliku"</string>
-    <string name="button_select" msgid="527196987259139214">"Wybierz"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Kopiuj"</string>
-    <string name="button_move" msgid="2202666023104202232">"Przenieś"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Zamknij"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Spróbuj ponownie"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Według nazwy"</string>
-    <string name="sort_date" msgid="586080032956151448">"Według daty edycji"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Według rozmiaru"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Pokaż elementy główne"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Ukryj elementy główne"</string>
-    <string name="save_error" msgid="6167009778003223664">"Nie udało się zapisać dokumentu"</string>
-    <string name="create_error" msgid="3735649141335444215">"Nie udało się utworzyć folderu"</string>
-    <string name="query_error" msgid="5999895349602476581">"Teraz nie można załadować zawartości"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Ostatnie"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> wolne"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Usługi pamięci masowej"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Skróty"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Urządzenia"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Więcej aplikacji"</string>
-    <string name="empty" msgid="7858882803708117596">"Brak elementów"</string>
-    <string name="no_results" msgid="6622510343880730446">"Brak wyników w %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Nie można otworzyć pliku"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Nie można usunąć niektórych dokumentów"</string>
-    <string name="share_via" msgid="8966594246261344259">"Udostępnij przez:"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Kopiowanie plików"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Przenoszenie plików"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Usuwam pliki"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Pozostało: <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="few">Kopiowanie <xliff:g id="COUNT_1">%1$d</xliff:g> plików.</item>
-      <item quantity="many">Kopiowanie <xliff:g id="COUNT_1">%1$d</xliff:g> plików.</item>
-      <item quantity="other">Kopiowanie <xliff:g id="COUNT_1">%1$d</xliff:g> pliku.</item>
-      <item quantity="one">Kopiowanie <xliff:g id="COUNT_0">%1$d</xliff:g> pliku.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="few">Przenoszę <xliff:g id="COUNT_1">%1$d</xliff:g> pliki.</item>
-      <item quantity="many">Przenoszę <xliff:g id="COUNT_1">%1$d</xliff:g> plików.</item>
-      <item quantity="other">Przenoszę <xliff:g id="COUNT_1">%1$d</xliff:g> pliku.</item>
-      <item quantity="one">Przenoszę <xliff:g id="COUNT_0">%1$d</xliff:g> plik.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="few">Usuwam <xliff:g id="COUNT_1">%1$d</xliff:g> pliki.</item>
-      <item quantity="many">Usuwam <xliff:g id="COUNT_1">%1$d</xliff:g> plików.</item>
-      <item quantity="other">Usuwam <xliff:g id="COUNT_1">%1$d</xliff:g> pliku.</item>
-      <item quantity="one">Usuwam <xliff:g id="COUNT_0">%1$d</xliff:g> plik.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Cofnij"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Przygotowuję do kopiowania…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Przygotowuję przenoszenie…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Przygotowuję do usunięcia…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="few">Nie udało się skopiować <xliff:g id="COUNT_1">%1$d</xliff:g> plików</item>
-      <item quantity="many">Nie udało się skopiować <xliff:g id="COUNT_1">%1$d</xliff:g> plików</item>
-      <item quantity="other">Nie udało się skopiować <xliff:g id="COUNT_1">%1$d</xliff:g> pliku</item>
-      <item quantity="one">Nie udało się skopiować <xliff:g id="COUNT_0">%1$d</xliff:g> pliku</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="few">Nie udało się przenieść <xliff:g id="COUNT_1">%1$d</xliff:g> plików</item>
-      <item quantity="many">Nie udało się przenieść <xliff:g id="COUNT_1">%1$d</xliff:g> plików</item>
-      <item quantity="other">Nie udało się przenieść <xliff:g id="COUNT_1">%1$d</xliff:g> pliku</item>
-      <item quantity="one">Nie udało się przenieść <xliff:g id="COUNT_0">%1$d</xliff:g> pliku</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="few">Nie udało się usunąć <xliff:g id="COUNT_1">%1$d</xliff:g> plików</item>
-      <item quantity="many">Nie udało się usunąć <xliff:g id="COUNT_1">%1$d</xliff:g> plików</item>
-      <item quantity="other">Nie udało się usunąć <xliff:g id="COUNT_1">%1$d</xliff:g> pliku</item>
-      <item quantity="one">Nie udało się usunąć <xliff:g id="COUNT_0">%1$d</xliff:g> pliku</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Kliknij, by zobaczyć szczegóły"</string>
-    <string name="close" msgid="3043722427445528732">"Zamknij"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Te pliki nie zostały skopiowane: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Te pliki nie zostały przeniesione: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Te pliki nie zostały usunięte: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Te pliki zostały przekonwertowane na inny format: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="few">Skopiowano <xliff:g id="COUNT_1">%1$d</xliff:g> pliki do schowka.</item>
-      <item quantity="many">Skopiowano <xliff:g id="COUNT_1">%1$d</xliff:g> plików do schowka.</item>
-      <item quantity="other">Skopiowano <xliff:g id="COUNT_1">%1$d</xliff:g> pliku do schowka.</item>
-      <item quantity="one">Skopiowano <xliff:g id="COUNT_0">%1$d</xliff:g> plik do schowka.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Nie można wkleić wybranych plików w tej lokalizacji."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Zmień nazwę"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Nie udało się zmienić nazwy dokumentu"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Odłącz"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Niektóre pliki zostały przekonwertowane"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Zezwolić aplikacji <xliff:g id="APPNAME"><b>^1</b></xliff:g> na dostęp do katalogu <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> w pamięci masowej <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Przyznać aplikacji <xliff:g id="APPNAME"><b>^1</b></xliff:g> dostęp do katalogu <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Zezwolić aplikacji <xliff:g id="APPNAME"><b>^1</b></xliff:g> na dostęp do Twoich danych, w tym zdjęć i filmów, zapisanych w pamięci <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Nie pytaj ponownie"</string>
-    <string name="allow" msgid="7225948811296386551">"Zezwól"</string>
-    <string name="deny" msgid="2081879885755434506">"Odmów"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="few">Wybrano <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="many">Wybrano <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="other">Wybrano <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="one">Wybrano <xliff:g id="COUNT_0">%1$d</xliff:g></item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> elementy</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> elementów</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> elementu</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> element</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Usunąć „<xliff:g id="NAME">%1$s</xliff:g>”?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Usunąć folder „<xliff:g id="NAME">%1$s</xliff:g>” i jego zawartość?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="few">Usunąć <xliff:g id="COUNT_1">%1$d</xliff:g> pliki?</item>
-      <item quantity="many">Usunąć <xliff:g id="COUNT_1">%1$d</xliff:g> plików?</item>
-      <item quantity="other">Usunąć <xliff:g id="COUNT_1">%1$d</xliff:g> pliku?</item>
-      <item quantity="one">Usunąć <xliff:g id="COUNT_0">%1$d</xliff:g> plik?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="few">Usunąć <xliff:g id="COUNT_1">%1$d</xliff:g> foldery wraz z zawartością?</item>
-      <item quantity="many">Usunąć <xliff:g id="COUNT_1">%1$d</xliff:g> folderów wraz z zawartością?</item>
-      <item quantity="other">Usunąć <xliff:g id="COUNT_1">%1$d</xliff:g> folderu wraz z zawartością?</item>
-      <item quantity="one">Usunąć <xliff:g id="COUNT_0">%1$d</xliff:g> folder wraz z zawartością?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="few">Usunąć <xliff:g id="COUNT_1">%1$d</xliff:g> elementy?</item>
-      <item quantity="many">Usunąć <xliff:g id="COUNT_1">%1$d</xliff:g> elementów?</item>
-      <item quantity="other">Usunąć <xliff:g id="COUNT_1">%1$d</xliff:g> elementu?</item>
-      <item quantity="one">Usunąć <xliff:g id="COUNT_0">%1$d</xliff:g> element?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-pt-rBR/strings.xml b/packages/DocumentsUI/res/values-pt-rBR/strings.xml
deleted file mode 100644
index 2134499..0000000
--- a/packages/DocumentsUI/res/values-pt-rBR/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Arquivos"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Downloads"</string>
-    <string name="title_open" msgid="4353228937663917801">"Abrir de"</string>
-    <string name="title_save" msgid="2433679664882857999">"Salvar em"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Nova pasta"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Visualização em grade"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Visualização em lista"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Classificar por"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Pesquisar"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Configurações de armazenamento"</string>
-    <string name="menu_open" msgid="432922957274920903">"Abrir"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Salvar"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Compartilhar"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Excluir"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Selecionar tudo"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Copiar para..."</string>
-    <string name="menu_move" msgid="1828090633118079817">"Mover para..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Nova janela"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Cortar"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Copiar"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Colar"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Mostrar armaz. interno"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Ocultar armaz. interno"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Mostrar tam. do arquivo"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Ocultar tam. do arquivo"</string>
-    <string name="button_select" msgid="527196987259139214">"Selecionar"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Copiar"</string>
-    <string name="button_move" msgid="2202666023104202232">"Mover"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Dispensar"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Tentar novamente"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Por nome"</string>
-    <string name="sort_date" msgid="586080032956151448">"Por data de modificação"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Por tamanho"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Mostrar raízes"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Ocultar raízes"</string>
-    <string name="save_error" msgid="6167009778003223664">"Falha ao salvar o documento"</string>
-    <string name="create_error" msgid="3735649141335444215">"Falha ao criar a pasta"</string>
-    <string name="query_error" msgid="5999895349602476581">"Não é possível carregar o conteúdo no momento"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Recentes"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> livres"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Serviços de armazenamento"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Atalhos"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Dispositivos"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Mais apps"</string>
-    <string name="empty" msgid="7858882803708117596">"Nenhum item"</string>
-    <string name="no_results" msgid="6622510343880730446">"Nenhum resultado em %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Não é possível abrir o arquivo"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Não foi possível excluir alguns documentos"</string>
-    <string name="share_via" msgid="8966594246261344259">"Compartilhar via"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Copiando arquivos"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Movendo arquivos"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Excluindo arquivos"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> restantes"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one">Copiando <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos.</item>
-      <item quantity="other">Copiando <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one">Movendo <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos.</item>
-      <item quantity="other">Movendo <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one">Excluindo <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos.</item>
-      <item quantity="other">Excluindo <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Desfazer"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Preparando para copiar..."</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Preparando para mover..."</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Preparando-se para excluir..."</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one">Não foi possível copiar <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos</item>
-      <item quantity="other">Não foi possível copiar <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one">Não foi possível mover <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos</item>
-      <item quantity="other">Não foi possível mover <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one">Não foi possível excluir <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos</item>
-      <item quantity="other">Não foi possível excluir <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Tocar para ver detalhes"</string>
-    <string name="close" msgid="3043722427445528732">"Fechar"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Estes arquivos não foram copiados: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Estes arquivos não foram movidos: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Estes arquivos não foram excluídos: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Esses arquivos foram convertidos em outro formato: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> arquivos copiados para a área de transferência.</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> arquivos copiados para a área de transferência.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Não é possível colar os arquivos selecionados neste local."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Renomear"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Falha ao renomear documento"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Ejetar"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Alguns arquivos foram convertidos"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Conceder ao <xliff:g id="APPNAME"><b>^1</b></xliff:g> acesso ao diretório <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> no <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Conceder acesso ao diretório <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> para <xliff:g id="APPNAME"><b>^1</b></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Conceder a <xliff:g id="APPNAME"><b>^1</b></xliff:g> acesso aos seus dados, incluindo fotos e vídeos, no/na <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Não perguntar novamente"</string>
-    <string name="allow" msgid="7225948811296386551">"Permitir"</string>
-    <string name="deny" msgid="2081879885755434506">"Negar"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> selecionado</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> selecionados</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> itens</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> itens</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Excluir \" <xliff:g id="NAME">%1$s</xliff:g>\"?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Excluir pasta \"<xliff:g id="NAME">%1$s</xliff:g>\" e o respectivo conteúdo?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one">Excluir <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos?</item>
-      <item quantity="other">Excluir <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one">Excluir <xliff:g id="COUNT_1">%1$d</xliff:g> pastas e o respectivo conteúdo?</item>
-      <item quantity="other">Excluir <xliff:g id="COUNT_1">%1$d</xliff:g> pastas e o respectivo conteúdo?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one">Excluir <xliff:g id="COUNT_1">%1$d</xliff:g> itens?</item>
-      <item quantity="other">Excluir <xliff:g id="COUNT_1">%1$d</xliff:g> itens?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-pt-rPT/strings.xml b/packages/DocumentsUI/res/values-pt-rPT/strings.xml
deleted file mode 100644
index f8b54a4..0000000
--- a/packages/DocumentsUI/res/values-pt-rPT/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Ficheiros"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Transferências"</string>
-    <string name="title_open" msgid="4353228937663917801">"Abrir de"</string>
-    <string name="title_save" msgid="2433679664882857999">"Guardar em"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Nova pasta"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Vista de grelha"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Vista de lista"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Ordenar por"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Pesquisar"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Defin. de armazenamento"</string>
-    <string name="menu_open" msgid="432922957274920903">"Abrir"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Guardar"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Partilhar"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Eliminar"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Selecionar tudo"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Copiar para…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Mover para..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Nova janela"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Cortar"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Copiar"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Colar"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Mostrar mem. armaz. int."</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Ocultar mem. armaz. int."</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Mostrar tam. de fich."</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Ocultar tam. de fich."</string>
-    <string name="button_select" msgid="527196987259139214">"Selecionar"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Copiar"</string>
-    <string name="button_move" msgid="2202666023104202232">"Mover"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Ignorar"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Tentar novamente"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Por nome"</string>
-    <string name="sort_date" msgid="586080032956151448">"Por data de modificação"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Por tamanho"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Mostrar raízes"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Ocultar raízes"</string>
-    <string name="save_error" msgid="6167009778003223664">"Falha ao guardar o documento"</string>
-    <string name="create_error" msgid="3735649141335444215">"Falha ao criar a pasta"</string>
-    <string name="query_error" msgid="5999895349602476581">"Não é possível carregar o conteúdo neste momento"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Recentes"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> espaço livre"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Serv. de armazenamento"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Atalhos"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Dispositivos"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Mais aplicações"</string>
-    <string name="empty" msgid="7858882803708117596">"Sem itens"</string>
-    <string name="no_results" msgid="6622510343880730446">"Sem correspondências para %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Não é possível abrir o ficheiro"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Não é possível eliminar alguns documentos"</string>
-    <string name="share_via" msgid="8966594246261344259">"Partilhar através de"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"A copiar ficheiros"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"A mover ficheiros"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Eliminar ficheiros"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Faltam <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">A copiar <xliff:g id="COUNT_1">%1$d</xliff:g> ficheiros.</item>
-      <item quantity="one">A copiar <xliff:g id="COUNT_0">%1$d</xliff:g> ficheiro.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">A mover <xliff:g id="COUNT_1">%1$d</xliff:g> ficheiros.</item>
-      <item quantity="one">A mover <xliff:g id="COUNT_0">%1$d</xliff:g> ficheiro.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">A eliminar <xliff:g id="COUNT_1">%1$d</xliff:g> ficheiros.</item>
-      <item quantity="one">A eliminar <xliff:g id="COUNT_0">%1$d</xliff:g> ficheiro.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Anular"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"A preparar para copiar…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"A preparar para mover…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"A preparar para eliminar…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">Não foi possível copiar <xliff:g id="COUNT_1">%1$d</xliff:g> ficheiros</item>
-      <item quantity="one">Não foi possível copiar <xliff:g id="COUNT_0">%1$d</xliff:g> ficheiro</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">Não foi possível mover <xliff:g id="COUNT_1">%1$d</xliff:g> ficheiros</item>
-      <item quantity="one">Não foi possível mover <xliff:g id="COUNT_0">%1$d</xliff:g> ficheiro</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">Não foi possível eliminar <xliff:g id="COUNT_1">%1$d</xliff:g> ficheiros</item>
-      <item quantity="one">Não foi possível eliminar <xliff:g id="COUNT_0">%1$d</xliff:g> ficheiro</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Toque para ver detalhes"</string>
-    <string name="close" msgid="3043722427445528732">"Fechar"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Os seguintes ficheiros não foram copiados: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Os seguintes ficheiros não foram movidos: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Estes ficheiros não foram eliminados: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Estes ficheiros foram convertidos para outro formato: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">Copiou <xliff:g id="COUNT_1">%1$d</xliff:g> ficheiros para a área de transferência.</item>
-      <item quantity="one">Copiou <xliff:g id="COUNT_0">%1$d</xliff:g> ficheiro para a área de transferência.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Não é possível colar os ficheiros selecionados nesta localização."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Mudar o nome"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Falha ao mudar o nome do documento"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Ejetar"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Alguns ficheiros foram convertidos"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Pretende conceder a <xliff:g id="APPNAME"><b>^1</b></xliff:g> acesso ao diretório <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> no(a) <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Pretende conceder a <xliff:g id="APPNAME"><b>^1</b></xliff:g> acesso ao diretório <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Pretende conceder a <xliff:g id="APPNAME"><b>^1</b></xliff:g> acesso aos seus dados, incluindo fotos e vídeos, no(a) <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Não perguntar novamente"</string>
-    <string name="allow" msgid="7225948811296386551">"Permitir"</string>
-    <string name="deny" msgid="2081879885755434506">"Recusar"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> selecionados</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> selecionado</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> itens</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> item</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Pretende eliminar \"<xliff:g id="NAME">%1$s</xliff:g>\"?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Pretende eliminar a pasta \"<xliff:g id="NAME">%1$s</xliff:g>\" e os respetivos conteúdos?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">Pretende eliminar <xliff:g id="COUNT_1">%1$d</xliff:g> ficheiros?</item>
-      <item quantity="one">Pretende eliminar <xliff:g id="COUNT_0">%1$d</xliff:g> ficheiro?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">Pretende eliminar <xliff:g id="COUNT_1">%1$d</xliff:g> pastas e os respetivos conteúdos?</item>
-      <item quantity="one">Pretende eliminar <xliff:g id="COUNT_0">%1$d</xliff:g> pasta e os respetivos conteúdos?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">Pretende eliminar <xliff:g id="COUNT_1">%1$d</xliff:g> itens?</item>
-      <item quantity="one">Pretende eliminar <xliff:g id="COUNT_0">%1$d</xliff:g> item?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-pt/strings.xml b/packages/DocumentsUI/res/values-pt/strings.xml
deleted file mode 100644
index 2134499..0000000
--- a/packages/DocumentsUI/res/values-pt/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Arquivos"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Downloads"</string>
-    <string name="title_open" msgid="4353228937663917801">"Abrir de"</string>
-    <string name="title_save" msgid="2433679664882857999">"Salvar em"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Nova pasta"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Visualização em grade"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Visualização em lista"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Classificar por"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Pesquisar"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Configurações de armazenamento"</string>
-    <string name="menu_open" msgid="432922957274920903">"Abrir"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Salvar"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Compartilhar"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Excluir"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Selecionar tudo"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Copiar para..."</string>
-    <string name="menu_move" msgid="1828090633118079817">"Mover para..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Nova janela"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Cortar"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Copiar"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Colar"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Mostrar armaz. interno"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Ocultar armaz. interno"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Mostrar tam. do arquivo"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Ocultar tam. do arquivo"</string>
-    <string name="button_select" msgid="527196987259139214">"Selecionar"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Copiar"</string>
-    <string name="button_move" msgid="2202666023104202232">"Mover"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Dispensar"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Tentar novamente"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Por nome"</string>
-    <string name="sort_date" msgid="586080032956151448">"Por data de modificação"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Por tamanho"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Mostrar raízes"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Ocultar raízes"</string>
-    <string name="save_error" msgid="6167009778003223664">"Falha ao salvar o documento"</string>
-    <string name="create_error" msgid="3735649141335444215">"Falha ao criar a pasta"</string>
-    <string name="query_error" msgid="5999895349602476581">"Não é possível carregar o conteúdo no momento"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Recentes"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> livres"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Serviços de armazenamento"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Atalhos"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Dispositivos"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Mais apps"</string>
-    <string name="empty" msgid="7858882803708117596">"Nenhum item"</string>
-    <string name="no_results" msgid="6622510343880730446">"Nenhum resultado em %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Não é possível abrir o arquivo"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Não foi possível excluir alguns documentos"</string>
-    <string name="share_via" msgid="8966594246261344259">"Compartilhar via"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Copiando arquivos"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Movendo arquivos"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Excluindo arquivos"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> restantes"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one">Copiando <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos.</item>
-      <item quantity="other">Copiando <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one">Movendo <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos.</item>
-      <item quantity="other">Movendo <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one">Excluindo <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos.</item>
-      <item quantity="other">Excluindo <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Desfazer"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Preparando para copiar..."</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Preparando para mover..."</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Preparando-se para excluir..."</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one">Não foi possível copiar <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos</item>
-      <item quantity="other">Não foi possível copiar <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one">Não foi possível mover <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos</item>
-      <item quantity="other">Não foi possível mover <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one">Não foi possível excluir <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos</item>
-      <item quantity="other">Não foi possível excluir <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Tocar para ver detalhes"</string>
-    <string name="close" msgid="3043722427445528732">"Fechar"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Estes arquivos não foram copiados: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Estes arquivos não foram movidos: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Estes arquivos não foram excluídos: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Esses arquivos foram convertidos em outro formato: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> arquivos copiados para a área de transferência.</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> arquivos copiados para a área de transferência.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Não é possível colar os arquivos selecionados neste local."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Renomear"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Falha ao renomear documento"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Ejetar"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Alguns arquivos foram convertidos"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Conceder ao <xliff:g id="APPNAME"><b>^1</b></xliff:g> acesso ao diretório <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> no <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Conceder acesso ao diretório <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> para <xliff:g id="APPNAME"><b>^1</b></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Conceder a <xliff:g id="APPNAME"><b>^1</b></xliff:g> acesso aos seus dados, incluindo fotos e vídeos, no/na <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Não perguntar novamente"</string>
-    <string name="allow" msgid="7225948811296386551">"Permitir"</string>
-    <string name="deny" msgid="2081879885755434506">"Negar"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> selecionado</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> selecionados</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> itens</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> itens</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Excluir \" <xliff:g id="NAME">%1$s</xliff:g>\"?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Excluir pasta \"<xliff:g id="NAME">%1$s</xliff:g>\" e o respectivo conteúdo?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one">Excluir <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos?</item>
-      <item quantity="other">Excluir <xliff:g id="COUNT_1">%1$d</xliff:g> arquivos?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one">Excluir <xliff:g id="COUNT_1">%1$d</xliff:g> pastas e o respectivo conteúdo?</item>
-      <item quantity="other">Excluir <xliff:g id="COUNT_1">%1$d</xliff:g> pastas e o respectivo conteúdo?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one">Excluir <xliff:g id="COUNT_1">%1$d</xliff:g> itens?</item>
-      <item quantity="other">Excluir <xliff:g id="COUNT_1">%1$d</xliff:g> itens?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-ro/strings.xml b/packages/DocumentsUI/res/values-ro/strings.xml
deleted file mode 100644
index a10a1db..0000000
--- a/packages/DocumentsUI/res/values-ro/strings.xml
+++ /dev/null
@@ -1,156 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Fișiere"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Descărcări"</string>
-    <string name="title_open" msgid="4353228937663917801">"Deschideți din"</string>
-    <string name="title_save" msgid="2433679664882857999">"Salvați în"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Dosar nou"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Afișare tip grilă"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Afișare tip listă"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Sortați după"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Căutați"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Setări de stocare"</string>
-    <string name="menu_open" msgid="432922957274920903">"Deschideți"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Salvați"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Distribuiți"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Ștergeți"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Selectați tot"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Copiați în…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Mutați în…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Fereastră nouă"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Decupați"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Copiați"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Inserați"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Afișați stocarea internă"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Ascundeți stocarea internă"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Afișați dimensiunea"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Ascundeți dimensiunea"</string>
-    <string name="button_select" msgid="527196987259139214">"Selectați"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Copiați"</string>
-    <string name="button_move" msgid="2202666023104202232">"Mutați"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Închideți"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Încercați din nou"</string>
-    <string name="sort_name" msgid="9183560467917256779">"După nume"</string>
-    <string name="sort_date" msgid="586080032956151448">"După data modificării"</string>
-    <string name="sort_size" msgid="3350681319735474741">"După dimensiune"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Afișați directoarele rădăcină"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Ascundeți directoarele rădăcină"</string>
-    <string name="save_error" msgid="6167009778003223664">"Salvarea documentului nu a reușit"</string>
-    <string name="create_error" msgid="3735649141335444215">"Eroare la crearea dosarului"</string>
-    <string name="query_error" msgid="5999895349602476581">"Momentan, conținutul nu poate fi încărcat"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Recente"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> spațiu liber"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Servicii de stocare"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Comenzi rapide"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Dispozitive"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Alte aplicații"</string>
-    <string name="empty" msgid="7858882803708117596">"Niciun element"</string>
-    <string name="no_results" msgid="6622510343880730446">"Niciun rezultat în %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Fișierul nu poate fi deschis"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Unele documente nu au putut fi șterse"</string>
-    <string name="share_via" msgid="8966594246261344259">"Trimiteți prin"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Se copiază fișierele"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Se mută fișierele"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Se șterg fișierele"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Timp rămas: <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="few">Se copiază <xliff:g id="COUNT_1">%1$d</xliff:g> fișiere.</item>
-      <item quantity="other">Se copiază <xliff:g id="COUNT_1">%1$d</xliff:g> de fișiere.</item>
-      <item quantity="one">Se copiază <xliff:g id="COUNT_0">%1$d</xliff:g> fișier.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="few">Se mută <xliff:g id="COUNT_1">%1$d</xliff:g> fișiere.</item>
-      <item quantity="other">Se mută <xliff:g id="COUNT_1">%1$d</xliff:g> de fișiere.</item>
-      <item quantity="one">Se mută <xliff:g id="COUNT_0">%1$d</xliff:g> fișier.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="few">Se șterg <xliff:g id="COUNT_1">%1$d</xliff:g> fișiere.</item>
-      <item quantity="other">Se șterg <xliff:g id="COUNT_1">%1$d</xliff:g> de fișiere.</item>
-      <item quantity="one">Se șterge <xliff:g id="COUNT_0">%1$d</xliff:g> fișier.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Anulați"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Se pregătește copierea..."</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Se pregătește mutarea…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Se pregătește ștergerea…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="few">Nu s-au putut copia <xliff:g id="COUNT_1">%1$d</xliff:g> fișiere</item>
-      <item quantity="other">Nu s-au putut copia <xliff:g id="COUNT_1">%1$d</xliff:g> de fișiere</item>
-      <item quantity="one">Nu s-a putut copia <xliff:g id="COUNT_0">%1$d</xliff:g> fișier</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="few">Nu s-au putut muta <xliff:g id="COUNT_1">%1$d</xliff:g> fișiere</item>
-      <item quantity="other">Nu s-au putut muta <xliff:g id="COUNT_1">%1$d</xliff:g> de fișiere</item>
-      <item quantity="one">Nu s-a putut muta <xliff:g id="COUNT_0">%1$d</xliff:g> fișier</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="few">Nu s-au putut șterge <xliff:g id="COUNT_1">%1$d</xliff:g> fișiere</item>
-      <item quantity="other">Nu s-au putut șterge <xliff:g id="COUNT_1">%1$d</xliff:g> de fișiere</item>
-      <item quantity="one">Nu s-a putut șterge <xliff:g id="COUNT_0">%1$d</xliff:g> fișier</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Atingeți pentru a vedea detaliile"</string>
-    <string name="close" msgid="3043722427445528732">"Închideți"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Aceste fișiere nu au fost copiate: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Aceste fișiere nu au fost mutate: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Aceste fișiere nu au fost șterse: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Aceste fișiere au fost convertite în alt format: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="few">Au fost copiate <xliff:g id="COUNT_1">%1$d</xliff:g> fișiere în clipboard.</item>
-      <item quantity="other">Au fost copiate <xliff:g id="COUNT_1">%1$d</xliff:g> de fișiere în clipboard.</item>
-      <item quantity="one">A fost copiat <xliff:g id="COUNT_0">%1$d</xliff:g> fișier în clipboard.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Fișierele selectate nu au putut fi inserate în această locație."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Redenumiți"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Documentul nu a putut fi redenumit"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Scoateți"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Unele fișiere au fost convertite"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Permiteți aplicației <xliff:g id="APPNAME"><b>^1</b></xliff:g> accesul la directorul <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> de pe <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Permiteți aplicației <xliff:g id="APPNAME"><b>^1</b></xliff:g> să acceseze directorul <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Permiteți aplicației <xliff:g id="APPNAME"><b>^1</b></xliff:g> să vă acceseze datele, inclusiv fotografiile și videoclipurile, de pe <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Nu mai întreba"</string>
-    <string name="allow" msgid="7225948811296386551">"Permiteți"</string>
-    <string name="deny" msgid="2081879885755434506">"Refuzați"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> selectate</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> selectate</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> selectat</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> elemente</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> de elemente</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> element</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Ștergeți „<xliff:g id="NAME">%1$s</xliff:g>”?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Ștergeți dosarul „<xliff:g id="NAME">%1$s</xliff:g>” și conținutul acestuia?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="few">Ștergeți <xliff:g id="COUNT_1">%1$d</xliff:g> fișiere?</item>
-      <item quantity="other">Ștergeți <xliff:g id="COUNT_1">%1$d</xliff:g> de fișiere?</item>
-      <item quantity="one">Ștergeți <xliff:g id="COUNT_0">%1$d</xliff:g> fișier?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="few">Ștergeți <xliff:g id="COUNT_1">%1$d</xliff:g> dosare și conținutul acestora?</item>
-      <item quantity="other">Ștergeți <xliff:g id="COUNT_1">%1$d</xliff:g> de dosare și conținutul acestora?</item>
-      <item quantity="one">Ștergeți <xliff:g id="COUNT_0">%1$d</xliff:g> dosar și conținutul acestuia?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="few">Ștergeți <xliff:g id="COUNT_1">%1$d</xliff:g> elemente?</item>
-      <item quantity="other">Ștergeți <xliff:g id="COUNT_1">%1$d</xliff:g> de elemente?</item>
-      <item quantity="one">Ștergeți <xliff:g id="COUNT_0">%1$d</xliff:g> element?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-ru/strings.xml b/packages/DocumentsUI/res/values-ru/strings.xml
deleted file mode 100644
index d4a3365..0000000
--- a/packages/DocumentsUI/res/values-ru/strings.xml
+++ /dev/null
@@ -1,168 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Файлы"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Загрузки"</string>
-    <string name="title_open" msgid="4353228937663917801">"Открыть"</string>
-    <string name="title_save" msgid="2433679664882857999">"Сохранить"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Создать папку"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Сетка"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Список"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Сортировать"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Поиск"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Память"</string>
-    <string name="menu_open" msgid="432922957274920903">"Открыть"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Сохранить"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Поделиться"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Удалить"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Выбрать все"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Копировать в…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Переместить в…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Новое окно"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Вырезать"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Копировать"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Вставить"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Внутренняя память"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Скрыть внутреннюю память"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Показать размер файлов"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Скрыть размер файлов"</string>
-    <string name="button_select" msgid="527196987259139214">"Выбрать"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Копировать"</string>
-    <string name="button_move" msgid="2202666023104202232">"Переместить"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Скрыть"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Повторить"</string>
-    <string name="sort_name" msgid="9183560467917256779">"По названию"</string>
-    <string name="sort_date" msgid="586080032956151448">"По дате изменения"</string>
-    <string name="sort_size" msgid="3350681319735474741">"По размеру"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Показать"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Скрыть"</string>
-    <string name="save_error" msgid="6167009778003223664">"Не удалось сохранить документ"</string>
-    <string name="create_error" msgid="3735649141335444215">"Не удалось создать папку"</string>
-    <string name="query_error" msgid="5999895349602476581">"Не удалось загрузить контент"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Недавние"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"Свободно <xliff:g id="SIZE">%1$s</xliff:g>"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Службы хранения"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Ярлыки"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Устройства"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Другие приложения"</string>
-    <string name="empty" msgid="7858882803708117596">"Ничего нет"</string>
-    <string name="no_results" msgid="6622510343880730446">"В \"%1$s\" ничего не найдено"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Не удалось открыть файл"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Не удалось удалить некоторые документы"</string>
-    <string name="share_via" msgid="8966594246261344259">"Поделиться"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Копирование файлов"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Перемещение файлов"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Удаление файлов…"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Осталось <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one">Копируется <xliff:g id="COUNT_1">%1$d</xliff:g> файл...</item>
-      <item quantity="few">Копируется <xliff:g id="COUNT_1">%1$d</xliff:g> файла...</item>
-      <item quantity="many">Копируется <xliff:g id="COUNT_1">%1$d</xliff:g> файлов...</item>
-      <item quantity="other">Копируется <xliff:g id="COUNT_1">%1$d</xliff:g> файла...</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one">Перемещение <xliff:g id="COUNT_1">%1$d</xliff:g> файла...</item>
-      <item quantity="few">Перемещение <xliff:g id="COUNT_1">%1$d</xliff:g> файлов...</item>
-      <item quantity="many">Перемещение <xliff:g id="COUNT_1">%1$d</xliff:g> файлов...</item>
-      <item quantity="other">Перемещение <xliff:g id="COUNT_1">%1$d</xliff:g> файла...</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one">Удаление <xliff:g id="COUNT_1">%1$d</xliff:g> файла…</item>
-      <item quantity="few">Удаление <xliff:g id="COUNT_1">%1$d</xliff:g> файлов…</item>
-      <item quantity="many">Удаление <xliff:g id="COUNT_1">%1$d</xliff:g> файлов…</item>
-      <item quantity="other">Удаление <xliff:g id="COUNT_1">%1$d</xliff:g> файла…</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Отменить"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Подготовка к копированию…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Подготовка…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Подготовка к удалению…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> из <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one">Не удалось скопировать <xliff:g id="COUNT_1">%1$d</xliff:g> файл</item>
-      <item quantity="few">Не удалось скопировать <xliff:g id="COUNT_1">%1$d</xliff:g> файла</item>
-      <item quantity="many">Не удалось скопировать <xliff:g id="COUNT_1">%1$d</xliff:g> файлов</item>
-      <item quantity="other">Не удалось скопировать <xliff:g id="COUNT_1">%1$d</xliff:g> файла</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one">Не удалось переместить <xliff:g id="COUNT_1">%1$d</xliff:g> файл</item>
-      <item quantity="few">Не удалось переместить <xliff:g id="COUNT_1">%1$d</xliff:g> файла</item>
-      <item quantity="many">Не удалось переместить <xliff:g id="COUNT_1">%1$d</xliff:g> файлов</item>
-      <item quantity="other">Не удалось переместить <xliff:g id="COUNT_1">%1$d</xliff:g> файла</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one">Не удалось удалить <xliff:g id="COUNT_1">%1$d</xliff:g> файл</item>
-      <item quantity="few">Не удалось удалить <xliff:g id="COUNT_1">%1$d</xliff:g> файла</item>
-      <item quantity="many">Не удалось удалить <xliff:g id="COUNT_1">%1$d</xliff:g> файлов</item>
-      <item quantity="other">Не удалось удалить <xliff:g id="COUNT_1">%1$d</xliff:g> файла</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Нажмите, чтобы узнать подробности."</string>
-    <string name="close" msgid="3043722427445528732">"Закрыть"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Не удалось скопировать следующие файлы: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Не удалось переместить следующие файлы: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Следующие файлы не были удалены: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Формат этих файлов изменен: <xliff:g id="LIST">%1$s</xliff:g>."</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one">Скопирован <xliff:g id="COUNT_1">%1$d</xliff:g> файл</item>
-      <item quantity="few">Скопировано <xliff:g id="COUNT_1">%1$d</xliff:g> файла</item>
-      <item quantity="many">Скопировано <xliff:g id="COUNT_1">%1$d</xliff:g> файлов</item>
-      <item quantity="other">Скопированы <xliff:g id="COUNT_1">%1$d</xliff:g> файла</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Не удается вставить сюда выбранные файлы"</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Переименовать"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Не удалось переименовать документ"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Извлечь"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Формат некоторых файлов изменен"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Открыть приложению \"<xliff:g id="APPNAME"><b>^1</b></xliff:g>\" доступ к папке \"<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>\" на устройстве \"<xliff:g id="STORAGE"><i>^3</i></xliff:g>\"?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Открыть приложению \"<xliff:g id="APPNAME"><b>^1</b></xliff:g>\" доступ к папке \"<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>\"?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Открыть приложению \"<xliff:g id="APPNAME"><b>^1</b></xliff:g>\" доступ к вашим данным, включая фото и видео, на носителе: <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Больше не спрашивать"</string>
-    <string name="allow" msgid="7225948811296386551">"Разрешить"</string>
-    <string name="deny" msgid="2081879885755434506">"Отклонить"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one">Выбрано: <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="few">Выбрано: <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="many">Выбрано: <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="other">Выбрано: <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> объект</item>
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> объекта</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> объектов</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> объекта</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Удалить файл \"<xliff:g id="NAME">%1$s</xliff:g>\"?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Удалить папку \"<xliff:g id="NAME">%1$s</xliff:g>\" со всем содержимым?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one">Удалить <xliff:g id="COUNT_1">%1$d</xliff:g> файл?</item>
-      <item quantity="few">Удалить <xliff:g id="COUNT_1">%1$d</xliff:g> файла?</item>
-      <item quantity="many">Удалить <xliff:g id="COUNT_1">%1$d</xliff:g> файлов?</item>
-      <item quantity="other">Удалить <xliff:g id="COUNT_1">%1$d</xliff:g> файла?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one">Удалить <xliff:g id="COUNT_1">%1$d</xliff:g> папку со всем содержимым?</item>
-      <item quantity="few">Удалить <xliff:g id="COUNT_1">%1$d</xliff:g> папки со всем содержимым?</item>
-      <item quantity="many">Удалить <xliff:g id="COUNT_1">%1$d</xliff:g> папок со всем содержимым?</item>
-      <item quantity="other">Удалить <xliff:g id="COUNT_1">%1$d</xliff:g> папки со всем содержимым?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one">Удалить <xliff:g id="COUNT_1">%1$d</xliff:g> объект?</item>
-      <item quantity="few">Удалить <xliff:g id="COUNT_1">%1$d</xliff:g> объекта?</item>
-      <item quantity="many">Удалить <xliff:g id="COUNT_1">%1$d</xliff:g> объектов?</item>
-      <item quantity="other">Удалить <xliff:g id="COUNT_1">%1$d</xliff:g> объекта?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-si-rLK/strings.xml b/packages/DocumentsUI/res/values-si-rLK/strings.xml
deleted file mode 100644
index 9fd9be8..0000000
--- a/packages/DocumentsUI/res/values-si-rLK/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"ගොනු"</string>
-    <string name="downloads_label" msgid="959113951084633612">"බාගැනීම්"</string>
-    <string name="title_open" msgid="4353228937663917801">"විවෘත වන්නේ"</string>
-    <string name="title_save" msgid="2433679664882857999">"සුරකින්නේ"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"නව ෆෝල්ඩරය"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"ජාල පෙනුම"</string>
-    <string name="menu_list" msgid="7279285939892417279">"ලැයිස්තු පෙනුම"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"අනුපිළිවෙලට සකසා ඇත්තේ"</string>
-    <string name="menu_search" msgid="3816712084502856974">"සෙවීම"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"ගබඩා සැකසීම්"</string>
-    <string name="menu_open" msgid="432922957274920903">"විවෘත කරන්න"</string>
-    <string name="menu_save" msgid="2394743337684426338">"සුරකින්න"</string>
-    <string name="menu_share" msgid="3075149983979628146">"බෙදාගන්න"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"මකන්න"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"සියල්ල තෝරන්න"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"වෙත පිටපත් කරන්න..."</string>
-    <string name="menu_move" msgid="1828090633118079817">"වෙත ගෙනයන්න..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"නව කවුළුව"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"කපන්න"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"පිටපත් කරන්න"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"අලවන්න"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"අභ්‍යන්තර ආචයනය පෙන්වන්න"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"අභ්‍යන්තර ආචයනය සඟවන්න"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"ගොනු ප්‍රමණය පෙන්වන්න"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"ගොනු ප්‍රමණය සඟවන්න"</string>
-    <string name="button_select" msgid="527196987259139214">"තෝරන්න"</string>
-    <string name="button_copy" msgid="8706475544635021302">"පිටපත් කිරීම"</string>
-    <string name="button_move" msgid="2202666023104202232">"ගෙන යන්න"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"ඉවතලන්න"</string>
-    <string name="button_retry" msgid="4392027584153752797">"නැවත උත්සාහ කරන්න"</string>
-    <string name="sort_name" msgid="9183560467917256779">"නමින්"</string>
-    <string name="sort_date" msgid="586080032956151448">"වෙනස් කරන ලද දිනයෙන්"</string>
-    <string name="sort_size" msgid="3350681319735474741">"ප්‍රමාණය මගින්"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"මුල් පෙන්වන්න"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"මුල් සඟවන්න"</string>
-    <string name="save_error" msgid="6167009778003223664">"ලේඛනය සුරැකීමට අපොහොසත් විය"</string>
-    <string name="create_error" msgid="3735649141335444215">"ෆෝල්ඩරය සැදීම අසාර්ථක විය"</string>
-    <string name="query_error" msgid="5999895349602476581">"මේ මොහොතේ අන්තර්ගතය පූරණය කිරීමට නොහැකිය"</string>
-    <string name="root_recent" msgid="4470053704320518133">"මෑත"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> ඉතිරියි"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"ආචයන සේවා"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"කෙටිමං"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"උපාංග"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"තවත් යෙදුම්"</string>
-    <string name="empty" msgid="7858882803708117596">"අයිතම නැත"</string>
-    <string name="no_results" msgid="6622510343880730446">"%1$s හි තරඟ නැත"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"ගොනුව විවෘත කළ නොහැකිය"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"සමහර ලේඛන මැකීමට නොහැකි විය"</string>
-    <string name="share_via" msgid="8966594246261344259">"හරහා බෙදාගන්න"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"ගොනු පිටපත් කරමින්"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"ගොනු ගෙන යාම"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"ගොනු මකමින්"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> ඉතිරියි"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one">ගොනු <xliff:g id="COUNT_1">%1$d</xliff:g> ක් පිටපත් කරමින්.</item>
-      <item quantity="other">ගොනු <xliff:g id="COUNT_1">%1$d</xliff:g> ක් පිටපත් කරමින්.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one">ගොනු <xliff:g id="COUNT_1">%1$d</xliff:g> ක් ගෙන යමින්.</item>
-      <item quantity="other">ගොනු <xliff:g id="COUNT_1">%1$d</xliff:g> ක් ගෙන යමින්.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one">ගොනු <xliff:g id="COUNT_1">%1$d</xliff:g>ක් මකමින්.</item>
-      <item quantity="other">ගොනු <xliff:g id="COUNT_1">%1$d</xliff:g>ක් මකමින්.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"අස් කරන්න"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"පිටපතක් සඳහා සූදානම් කරමින්..."</string>
-    <string name="move_preparing" msgid="2772219441375531410">"ගෙන යාම සඳහා පිළියෙළ කරමින් ..."</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"මැකීම සඳහා සූදානම් කරමින්..."</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one">ගොනු <xliff:g id="COUNT_1">%1$d</xliff:g>ක් පිටපත් කළ නොහැකි විය</item>
-      <item quantity="other">ගොනු <xliff:g id="COUNT_1">%1$d</xliff:g>ක් පිටපත් කළ නොහැකි විය</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one">ගොනු <xliff:g id="COUNT_1">%1$d</xliff:g>ක් ගෙන යාමට නොහැකි විය</item>
-      <item quantity="other">ගොනු <xliff:g id="COUNT_1">%1$d</xliff:g>ක් ගෙන යාමට නොහැකි විය</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one">ගොනු <xliff:g id="COUNT_1">%1$d</xliff:g>ක් මැකීමට නොහැකි විය</item>
-      <item quantity="other">ගොනු <xliff:g id="COUNT_1">%1$d</xliff:g>ක් මැකීමට නොහැකි විය</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"විස්තර බැලීමට තට්ටු කරන්න"</string>
-    <string name="close" msgid="3043722427445528732">"වසන්න"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"මෙම ගොනු පිටපත් නොකරන ලදී: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"මෙම ගොනු ගෙන නොයන ලදී: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"මෙම ගොනු නොමකන ලදී: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"මෙම ගොනු වෙනත් ආකෘතියකට පරිවර්තනය කරන ලදී: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one">පසුරු පුවරුවට ගොනු <xliff:g id="COUNT_1">%1$d</xliff:g> ක් පිටපත් කරන ලදි.</item>
-      <item quantity="other">පසුරු පුවරුවට ගොනු <xliff:g id="COUNT_1">%1$d</xliff:g> ක් පිටපත් කරන ලදි.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"මෙම ස්ථානය තුළ තෝරාගත් ගොනු ඇලවිය නොහැක."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"යළි නම් කරන්න"</string>
-    <string name="rename_error" msgid="4203041674883412606">"ලේඛනය යළි නම් කිරීම අසාර්ථක විය"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"පිටතට ගන්න"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"සමහර ගොනු පරිවර්තනය කරන ලදී"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> හට <xliff:g id="STORAGE"><i>^3</i></xliff:g> මත <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> නාමාවලිය වෙත ප්‍රවේශය දෙන්නද?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> ප්‍රවේශය <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> නාමාවලිය වෙත ලබා දෙන්නද?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="STORAGE"><i>^2</i></xliff:g> හි, ඡායාරූප සහ වීඩියෝ ඇතුළුව, ඔබේ දත්තවලට <xliff:g id="APPNAME"><b>^1</b></xliff:g> හට ප්‍රවේශය ලබා දෙන්නද?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"නැවත අසන්න එපා"</string>
-    <string name="allow" msgid="7225948811296386551">"අවසර දෙන්න"</string>
-    <string name="deny" msgid="2081879885755434506">"ප්‍රතික්ෂේප කරන්න"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g>ක් තෝරන ලදී</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>ක් තෝරන ලදී</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one">අයිතම <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="other">අයිතම <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"\"<xliff:g id="NAME">%1$s</xliff:g>\" මකන්නද?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"\"<xliff:g id="NAME">%1$s</xliff:g>\" ෆෝල්ඩරය හා එහි අන්තර්ගත මකන්නද?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one">ගොනු <xliff:g id="COUNT_1">%1$d</xliff:g> ක් මකන්නද?</item>
-      <item quantity="other">ගොනු <xliff:g id="COUNT_1">%1$d</xliff:g> ක් මකන්නද?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one">ෆෝල්ඩර <xliff:g id="COUNT_1">%1$d</xliff:g> ක් හා එහි අන්තර්ගත මකන්නද?</item>
-      <item quantity="other">ෆෝල්ඩර <xliff:g id="COUNT_1">%1$d</xliff:g> ක් හා එහි අන්තර්ගත මකන්නද?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one">අයිතම <xliff:g id="COUNT_1">%1$d</xliff:g> ක් මකන්නද?</item>
-      <item quantity="other">අයිතම <xliff:g id="COUNT_1">%1$d</xliff:g> ක් මකන්නද?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-sk/strings.xml b/packages/DocumentsUI/res/values-sk/strings.xml
deleted file mode 100644
index 1336694..0000000
--- a/packages/DocumentsUI/res/values-sk/strings.xml
+++ /dev/null
@@ -1,168 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Súbory"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Stiahnuté súbory"</string>
-    <string name="title_open" msgid="4353228937663917801">"Otvoriť z"</string>
-    <string name="title_save" msgid="2433679664882857999">"Uložiť do"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Nový priečinok"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Zobrazenie mriežky"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Zobrazenie zoznamu"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Zoradiť podľa"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Hľadať"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Nastavenia úložiska"</string>
-    <string name="menu_open" msgid="432922957274920903">"Otvoriť"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Uložiť"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Zdieľať"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Odstrániť"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Vybrať všetko"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Kopírovať do…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Presunúť do…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Nové okno"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Vystrihnúť"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Kopírovať"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Prilepiť"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Zobraziť interné úložisko"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Skryť interné úložisko"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Zobraziť veľkosť súboru"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Skryť veľkosť súboru"</string>
-    <string name="button_select" msgid="527196987259139214">"Vybrať"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Kopírovať"</string>
-    <string name="button_move" msgid="2202666023104202232">"Presunúť"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Odmietnuť"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Skúsiť znova"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Podľa názvu"</string>
-    <string name="sort_date" msgid="586080032956151448">"Podľa dátumu zmeny"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Podľa veľkosti"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Zobraziť korene"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Skryť korene"</string>
-    <string name="save_error" msgid="6167009778003223664">"Dokument sa nepodarilo uložiť"</string>
-    <string name="create_error" msgid="3735649141335444215">"Priečinok sa nepodarilo vytvoriť"</string>
-    <string name="query_error" msgid="5999895349602476581">"Obsah momentálne nie je možné načítať"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Nedávne"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"Voľné <xliff:g id="SIZE">%1$s</xliff:g>"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Služby úložiska"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Skratky"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Zariadenia"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Ďalšie aplikácie"</string>
-    <string name="empty" msgid="7858882803708117596">"Žiadne položky"</string>
-    <string name="no_results" msgid="6622510343880730446">"Žiadne zhody – %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Súbor nie je možné otvoriť"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Niektoré dokumenty sa nepodarilo odstrániť"</string>
-    <string name="share_via" msgid="8966594246261344259">"Zdieľať"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Kopírovanie súborov"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Presúvajú sa súbory"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Odstraňujú sa súbory"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Zostáva: <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="few">Kopírujú sa <xliff:g id="COUNT_1">%1$d</xliff:g> súbory.</item>
-      <item quantity="many">Kopíruje sa <xliff:g id="COUNT_1">%1$d</xliff:g> súboru.</item>
-      <item quantity="other">Kopíruje sa <xliff:g id="COUNT_1">%1$d</xliff:g> súborov.</item>
-      <item quantity="one">Kopíruje sa <xliff:g id="COUNT_0">%1$d</xliff:g> súbor.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="few">Presúvajú sa <xliff:g id="COUNT_1">%1$d</xliff:g> súbory.</item>
-      <item quantity="many">Presúva sa <xliff:g id="COUNT_1">%1$d</xliff:g> súboru.</item>
-      <item quantity="other">Presúva sa <xliff:g id="COUNT_1">%1$d</xliff:g> súborov.</item>
-      <item quantity="one">Presúva sa <xliff:g id="COUNT_0">%1$d</xliff:g> súbor.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="few">Odstraňujú sa <xliff:g id="COUNT_1">%1$d</xliff:g> súbory.</item>
-      <item quantity="many">Odstraňuje sa <xliff:g id="COUNT_1">%1$d</xliff:g> súboru.</item>
-      <item quantity="other">Odstraňuje sa <xliff:g id="COUNT_1">%1$d</xliff:g> súborov.</item>
-      <item quantity="one">Odstraňuje sa <xliff:g id="COUNT_0">%1$d</xliff:g> súbor.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Späť"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Pripravuje sa na kopírovanie..."</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Prebieha príprava na presunutie…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Príprava na odstránenie…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="few">Nepodarilo sa skopírovať <xliff:g id="COUNT_1">%1$d</xliff:g> súbory</item>
-      <item quantity="many">Nepodarilo sa skopírovať <xliff:g id="COUNT_1">%1$d</xliff:g> súboru</item>
-      <item quantity="other">Nepodarilo sa skopírovať <xliff:g id="COUNT_1">%1$d</xliff:g> súborov</item>
-      <item quantity="one">Nepodarilo sa skopírovať <xliff:g id="COUNT_0">%1$d</xliff:g> súbor</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> súbory nie je možné presunúť</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> súboru nie je možné presunúť</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> súborov nie je možné presunúť</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> súbor nie je možné presunúť</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="few">Nepodarilo sa odstrániť <xliff:g id="COUNT_1">%1$d</xliff:g> súbory</item>
-      <item quantity="many">Nepodarilo sa odstrániť <xliff:g id="COUNT_1">%1$d</xliff:g> súboru</item>
-      <item quantity="other">Nepodarilo sa odstrániť <xliff:g id="COUNT_1">%1$d</xliff:g> súborov</item>
-      <item quantity="one">Nepodarilo sa odstrániť <xliff:g id="COUNT_0">%1$d</xliff:g> súbor</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Klepnutím zobrazíte podrobnosti"</string>
-    <string name="close" msgid="3043722427445528732">"Zavrieť"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Tieto súbory neboli skopírované: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Tieto súbory neboli presunuté: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Tieto súbory neboli odstránené: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Tieto súbory boli konvertované do iného formátu: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="few">Do schránky boli skopírované <xliff:g id="COUNT_1">%1$d</xliff:g> súbory.</item>
-      <item quantity="many">Do schránky bolo skopírovaného <xliff:g id="COUNT_1">%1$d</xliff:g> súboru.</item>
-      <item quantity="other">Do schránky bolo skopírovaných <xliff:g id="COUNT_1">%1$d</xliff:g> súborov.</item>
-      <item quantity="one">Do schránky bol skopírovaný <xliff:g id="COUNT_0">%1$d</xliff:g> súbor.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Do tohto umiestnenia nie je možné prilepiť vybrané súbory"</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Premenovať"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Premenovanie dokumentu zlyhalo"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Odpojiť"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Niektoré súbory boli konvertované"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Udeliť aplikácii <xliff:g id="APPNAME"><b>^1</b></xliff:g> prístup k adresáru <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> v úložisku <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Udeliť aplikácii <xliff:g id="APPNAME"><b>^1</b></xliff:g> prístup k adresáru <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Chcete aplikácii <xliff:g id="APPNAME"><b>^1</b></xliff:g> udeliť prístup k dátam (vrátane fotiek a videí) v úložisku <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Nabudúce sa nepýtať"</string>
-    <string name="allow" msgid="7225948811296386551">"Povoliť"</string>
-    <string name="deny" msgid="2081879885755434506">"Zamietnuť"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="few">Vybraté: <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="many">Vybraté: <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="other">Vybraté: <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="one">Vybraté: <xliff:g id="COUNT_0">%1$d</xliff:g></item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> položky</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> položky</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> položiek</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> položka</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Odstrániť <xliff:g id="NAME">%1$s</xliff:g>?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Odstrániť priečinok <xliff:g id="NAME">%1$s</xliff:g> a jeho obsah?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="few">Odstrániť <xliff:g id="COUNT_1">%1$d</xliff:g> súbory?</item>
-      <item quantity="many">Odstrániť <xliff:g id="COUNT_1">%1$d</xliff:g> súboru?</item>
-      <item quantity="other">Odstrániť <xliff:g id="COUNT_1">%1$d</xliff:g> súborov?</item>
-      <item quantity="one">Odstrániť <xliff:g id="COUNT_0">%1$d</xliff:g> súbor?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="few">Odstrániť <xliff:g id="COUNT_1">%1$d</xliff:g> priečinky a ich obsah?</item>
-      <item quantity="many">Odstrániť <xliff:g id="COUNT_1">%1$d</xliff:g> priečinka a jeho obsah?</item>
-      <item quantity="other">Odstrániť <xliff:g id="COUNT_1">%1$d</xliff:g> priečinkov a ich obsah?</item>
-      <item quantity="one">Odstrániť <xliff:g id="COUNT_0">%1$d</xliff:g> priečinok a jeho obsah?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="few">Odstrániť <xliff:g id="COUNT_1">%1$d</xliff:g> položky?</item>
-      <item quantity="many">Odstrániť <xliff:g id="COUNT_1">%1$d</xliff:g> položky?</item>
-      <item quantity="other">Odstrániť <xliff:g id="COUNT_1">%1$d</xliff:g> položiek?</item>
-      <item quantity="one">Odstrániť <xliff:g id="COUNT_0">%1$d</xliff:g> položku?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-sl/strings.xml b/packages/DocumentsUI/res/values-sl/strings.xml
deleted file mode 100644
index a6a5fa4..0000000
--- a/packages/DocumentsUI/res/values-sl/strings.xml
+++ /dev/null
@@ -1,168 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Datoteke"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Prenosi"</string>
-    <string name="title_open" msgid="4353228937663917801">"Odpri iz mape"</string>
-    <string name="title_save" msgid="2433679664882857999">"Shrani v"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Nova mapa"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Mrežni pogled"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Pogled seznama"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Razvrsti glede na"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Iskanje"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Nastavitve shrambe"</string>
-    <string name="menu_open" msgid="432922957274920903">"Odpri"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Shrani"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Skupna raba"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Izbriši"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Izberi vse"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Kopiraj v …"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Premakni v ..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Novo okno"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Izreži"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Kopiraj"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Prilepi"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Pokaži notranjo shrambo"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Skrij notranjo shrambo"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Pokaži velikost datoteke"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Skrij velikost datoteke"</string>
-    <string name="button_select" msgid="527196987259139214">"Izberi"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Kopiraj"</string>
-    <string name="button_move" msgid="2202666023104202232">"Premik"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Opusti"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Poskusite znova"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Po imenu"</string>
-    <string name="sort_date" msgid="586080032956151448">"Po datumu spremembe"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Po velikosti"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Pokaži korene"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Skrij korene"</string>
-    <string name="save_error" msgid="6167009778003223664">"Dokumenta ni bilo mogoče shraniti"</string>
-    <string name="create_error" msgid="3735649141335444215">"Mape ni bilo mogoče ustvariti"</string>
-    <string name="query_error" msgid="5999895349602476581">"Vsebine trenutno ni mogoče naložiti"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Nedavno"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"Prosto: <xliff:g id="SIZE">%1$s</xliff:g>"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Storitve shrambe"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Bližnjice"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Naprave"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Več aplikacij"</string>
-    <string name="empty" msgid="7858882803708117596">"Ni elementov"</string>
-    <string name="no_results" msgid="6622510343880730446">"Tukaj ni ujemanj: %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Datoteke ni mogoče odpreti"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Nekaterih dokumentov ni mogoče izbrisati"</string>
-    <string name="share_via" msgid="8966594246261344259">"Deli z drugimi prek"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Kopiranje datotek"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Premikanje datotek"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Brisanje datotek"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Še <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one">Kopiranje <xliff:g id="COUNT_1">%1$d</xliff:g> datoteke.</item>
-      <item quantity="two">Kopiranje <xliff:g id="COUNT_1">%1$d</xliff:g> datotek.</item>
-      <item quantity="few">Kopiranje <xliff:g id="COUNT_1">%1$d</xliff:g> datotek.</item>
-      <item quantity="other">Kopiranje <xliff:g id="COUNT_1">%1$d</xliff:g> datotek.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one">Premikanje <xliff:g id="COUNT_1">%1$d</xliff:g> datoteke.</item>
-      <item quantity="two">Premikanje <xliff:g id="COUNT_1">%1$d</xliff:g> datotek.</item>
-      <item quantity="few">Premikanje <xliff:g id="COUNT_1">%1$d</xliff:g> datotek.</item>
-      <item quantity="other">Premikanje <xliff:g id="COUNT_1">%1$d</xliff:g> datotek.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one">Izbris <xliff:g id="COUNT_1">%1$d</xliff:g> datoteke</item>
-      <item quantity="two">Izbris <xliff:g id="COUNT_1">%1$d</xliff:g> datotek</item>
-      <item quantity="few">Izbris <xliff:g id="COUNT_1">%1$d</xliff:g> datotek</item>
-      <item quantity="other">Izbris <xliff:g id="COUNT_1">%1$d</xliff:g> datotek</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Razveljavi"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Pripravljanje na kopiranje …"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Priprava na premikanje …"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Pripravljanje na izbris …"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> datoteke ni bilo mogoče kopirati</item>
-      <item quantity="two"><xliff:g id="COUNT_1">%1$d</xliff:g> datotek ni bilo mogoče kopirati</item>
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> datotek ni bilo mogoče kopirati</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> datotek ni bilo mogoče kopirati</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> datoteke ni bilo mogoče premakniti</item>
-      <item quantity="two"><xliff:g id="COUNT_1">%1$d</xliff:g> datotek ni bilo mogoče premakniti</item>
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> datotek ni bilo mogoče premakniti</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> datotek ni bilo mogoče premakniti</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> datoteke ni bilo mogoče izbrisati</item>
-      <item quantity="two"><xliff:g id="COUNT_1">%1$d</xliff:g> datotek ni bilo mogoče izbrisati</item>
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> datotek ni bilo mogoče izbrisati</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> datotek ni bilo mogoče izbrisati</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Dotaknite se za prikaz podrobnosti"</string>
-    <string name="close" msgid="3043722427445528732">"Zapri"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Te datoteke niso bile kopirane: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Te datoteke niso bile premaknjene: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Te datoteke niso bile izbrisane: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Te datoteke so bile spremenjene v drugo obliko zapisa: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one">V odložišče je bila kopirana <xliff:g id="COUNT_1">%1$d</xliff:g> datoteka.</item>
-      <item quantity="two">V odložišče sta bili kopirani <xliff:g id="COUNT_1">%1$d</xliff:g> datoteki.</item>
-      <item quantity="few">V odložišče so bile kopirane <xliff:g id="COUNT_1">%1$d</xliff:g> datoteke.</item>
-      <item quantity="other">V odložišče je bilo kopiranih <xliff:g id="COUNT_1">%1$d</xliff:g> datotek.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Izbranih datotek ni mogoče prilepiti sem."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Preimenuj"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Dokumenta ni bilo mogoče preimenovati"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Izvrzi"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Nekatere datoteke so bile pretvorjene"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Želite aplikaciji <xliff:g id="APPNAME"><b>^1</b></xliff:g> dovoliti dostop do imenika <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> v shrambi <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Želite aplikaciji <xliff:g id="APPNAME"><b>^1</b></xliff:g> dovoliti dostop do imenika <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Odobrite aplikaciji <xliff:g id="APPNAME"><b>^1</b></xliff:g> dostop do podatkov, vključno s fotografijami in videoposnetki, v shrambi <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Ne sprašuj več"</string>
-    <string name="allow" msgid="7225948811296386551">"Dovoli"</string>
-    <string name="deny" msgid="2081879885755434506">"Zavrni"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> izbran</item>
-      <item quantity="two"><xliff:g id="COUNT_1">%1$d</xliff:g> izbrana</item>
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> izbrani</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> izbranih</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> element</item>
-      <item quantity="two"><xliff:g id="COUNT_1">%1$d</xliff:g> elementa</item>
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> elementi</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> elementov</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Ali želite izbrisati »<xliff:g id="NAME">%1$s</xliff:g>«?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Ali želite izbrisati mapo »<xliff:g id="NAME">%1$s</xliff:g>« in njeno vsebino?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one">Ali želite izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> datoteko?</item>
-      <item quantity="two">Ali želite izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> datoteki?</item>
-      <item quantity="few">Ali želite izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> datoteke?</item>
-      <item quantity="other">Ali želite izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> datotek?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one">Ali želite izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> mapo in njihovo vsebino?</item>
-      <item quantity="two">Ali želite izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> mapi in njihovo vsebino?</item>
-      <item quantity="few">Ali želite izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> mape in njihovo vsebino?</item>
-      <item quantity="other">Ali želite izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> map in njihovo vsebino?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one">Ali želite izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> element?</item>
-      <item quantity="two">Ali želite izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> elementa?</item>
-      <item quantity="few">Ali želite izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> elemente?</item>
-      <item quantity="other">Ali želite izbrisati <xliff:g id="COUNT_1">%1$d</xliff:g> elementov?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-sq-rAL/strings.xml b/packages/DocumentsUI/res/values-sq-rAL/strings.xml
deleted file mode 100644
index 0f041a3..0000000
--- a/packages/DocumentsUI/res/values-sq-rAL/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Skedarët"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Shkarkimet"</string>
-    <string name="title_open" msgid="4353228937663917801">"Hap nga"</string>
-    <string name="title_save" msgid="2433679664882857999">"Ruaje te"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Dosje e re"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Pamje rrjete"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Pamje liste"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Rendit sipas"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Kërko"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Cilësimet e hapësirës ruajtëse"</string>
-    <string name="menu_open" msgid="432922957274920903">"Hap"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Ruaj"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Shpërnda"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Fshi"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Zgjidhi të gjitha"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Kopjo te..."</string>
-    <string name="menu_move" msgid="1828090633118079817">"Zhvendos te..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Dritare e re"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Prit"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Kopjo"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Ngjit"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Trego hapësirën e brendshme ruajtëse"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Fshih hapësirën ruajtëse të brendshme"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Shfaq madhësinë e skedarit"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Fshih madhësinë e skedarit"</string>
-    <string name="button_select" msgid="527196987259139214">"Zgjidh"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Kopjo"</string>
-    <string name="button_move" msgid="2202666023104202232">"Zhvendos"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Largoje"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Provo sërish"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Sipas emrit"</string>
-    <string name="sort_date" msgid="586080032956151448">"Sipas datës së modifikimit"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Sipas madhësisë"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Trego rrënjët"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Fshih rrënjët"</string>
-    <string name="save_error" msgid="6167009778003223664">"Ruajtja e dokumentit dështoi"</string>
-    <string name="create_error" msgid="3735649141335444215">"Krijimi i dosjes dështoi"</string>
-    <string name="query_error" msgid="5999895349602476581">"Përmbajtja nuk mund të ngarkohet për momentin"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Të kohëve të fundit"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"Të lirë: <xliff:g id="SIZE">%1$s</xliff:g>"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Shërbimet e hapësirës ruajtëse"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Shkurtore"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Pajisjet"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Aplikacione të tjera"</string>
-    <string name="empty" msgid="7858882803708117596">"Nuk ka artikuj"</string>
-    <string name="no_results" msgid="6622510343880730446">"Nuk ka asnjë përputhje në %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Skedari nuk mund të hapet"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"E pamundur të fshihen disa dokumente"</string>
-    <string name="share_via" msgid="8966594246261344259">"Shpërnda publikisht përmes"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Po kopjon skedarët"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Po zhvendos skedarët"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Po fshin skedarët"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> të mbetura"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">Po kopjon <xliff:g id="COUNT_1">%1$d</xliff:g> skedarë.</item>
-      <item quantity="one">Po kopjon <xliff:g id="COUNT_0">%1$d</xliff:g> skedar.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">Po zhvendos <xliff:g id="COUNT_1">%1$d</xliff:g> skedarë.</item>
-      <item quantity="one">Po zhvendos <xliff:g id="COUNT_0">%1$d</xliff:g> skedar.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">Po fshin <xliff:g id="COUNT_1">%1$d</xliff:g> skedarë.</item>
-      <item quantity="one">Po fshin <xliff:g id="COUNT_0">%1$d</xliff:g> skedar.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Zhbëj"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Po përgatitet për kopjimin…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Po përgatitet për zhvendosjen…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Po përgatitet për fshirje…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> skedarë nuk mund të kopjoheshin</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> skedar nuk mund të kopjohej</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> skedarë nuk mund të zhvendoseshin</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> skedar nuk mund të zhvendosej</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> skedarë nuk mund të fshiheshin</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> skedar nuk mund të fshihej</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Trokit për të parë detajet"</string>
-    <string name="close" msgid="3043722427445528732">"Mbyll"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Këta skedarë nuk u kopjuan: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Këta skedarë nuk u zhvendosën: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Këta skedarë nuk u fshinë: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Këta skedarë janë konvertuar në format tjetër: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">U kopjuan <xliff:g id="COUNT_1">%1$d</xliff:g> skedarë në kujtesën e fragmenteve.</item>
-      <item quantity="one">U kopjua <xliff:g id="COUNT_0">%1$d</xliff:g> skedar në kujtesën e fragmenteve.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Skedarët e zgjedhur nuk mund të ngjiten në këtë vendndodhje."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Riemërto"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Riemërtimi i dokumentit dështoi"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Nxirr"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Disa skedarë u konvertuan"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Jepi aplikacionit <xliff:g id="APPNAME"><b>^1</b></xliff:g> qasje te direktoria <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> në <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"T\'i jepet aplikacionit <xliff:g id="APPNAME"><b>^1</b></xliff:g> qasje te direktoria <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"T\'i jepet aplikacionit <xliff:g id="APPNAME"><b>^1</b></xliff:g> qasje te të dhënat, duke përfshirë fotografitë dhe videot, në <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Mos pyet përsëri"</string>
-    <string name="allow" msgid="7225948811296386551">"Lejo"</string>
-    <string name="deny" msgid="2081879885755434506">"Moho"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> të zgjedhur</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> i zgjedhur</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> artikuj</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> artikull</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Të fshihet \"<xliff:g id="NAME">%1$s</xliff:g>\"?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Të fshihet dosja \"<xliff:g id="NAME">%1$s</xliff:g>\" dhe përmbajtja e saj?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">Të fshihen <xliff:g id="COUNT_1">%1$d</xliff:g> skedarë?</item>
-      <item quantity="one">Të fshihet <xliff:g id="COUNT_0">%1$d</xliff:g> skedar?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">Të fshihen <xliff:g id="COUNT_1">%1$d</xliff:g> dosje dhe përmbajtjet e saj?</item>
-      <item quantity="one">Të fshihet <xliff:g id="COUNT_0">%1$d</xliff:g> dosje dhe përmbajtjet e saj?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">Të fshihen <xliff:g id="COUNT_1">%1$d</xliff:g> artikuj?</item>
-      <item quantity="one">Të fshihet <xliff:g id="COUNT_0">%1$d</xliff:g> artikull?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-sr/strings.xml b/packages/DocumentsUI/res/values-sr/strings.xml
deleted file mode 100644
index cd2e4df..0000000
--- a/packages/DocumentsUI/res/values-sr/strings.xml
+++ /dev/null
@@ -1,156 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Датотеке"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Преузимања"</string>
-    <string name="title_open" msgid="4353228937663917801">"Отвори са"</string>
-    <string name="title_save" msgid="2433679664882857999">"Сачувај у"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Нови директоријум"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Приказ мреже"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Приказ листе"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Сортирај према"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Претражи"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Подешавања меморије"</string>
-    <string name="menu_open" msgid="432922957274920903">"Отвори"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Сачувај"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Дели"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Избриши"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Изабери све"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Копирај на..."</string>
-    <string name="menu_move" msgid="1828090633118079817">"Премести у..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Нови прозор"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Исеци"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Копирај"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Налепи"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Прикажи интерну меморију"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Сакриј интерну меморију"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Прикажи величину датотеке"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Сакриј величину датотеке"</string>
-    <string name="button_select" msgid="527196987259139214">"Изабери"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Копирај"</string>
-    <string name="button_move" msgid="2202666023104202232">"Премести"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Одбаци"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Покушај поново"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Према имену"</string>
-    <string name="sort_date" msgid="586080032956151448">"Према датуму измене"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Према величини"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Прикажи основне елементе"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Сакриј основне елементе"</string>
-    <string name="save_error" msgid="6167009778003223664">"Чување документа није успело"</string>
-    <string name="create_error" msgid="3735649141335444215">"Директоријум није направљен"</string>
-    <string name="query_error" msgid="5999895349602476581">"Учитавање садржаја тренутно није могуће"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Недавно"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"Слободно је <xliff:g id="SIZE">%1$s</xliff:g>"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Услуге складиштења"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Пречице"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Уређаји"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Још апликација"</string>
-    <string name="empty" msgid="7858882803708117596">"Нема ставки"</string>
-    <string name="no_results" msgid="6622510343880730446">"Нема подударања у %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Отварање датотеке није успело"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Није могуће избрисати неке документе"</string>
-    <string name="share_via" msgid="8966594246261344259">"Делите преко"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Копирање датотека"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Датотеке се премештају"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Датотеке се бришу"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Још <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one">Копирање <xliff:g id="COUNT_1">%1$d</xliff:g> датотеке.</item>
-      <item quantity="few">Копирање <xliff:g id="COUNT_1">%1$d</xliff:g> датотеке.</item>
-      <item quantity="other">Копирање <xliff:g id="COUNT_1">%1$d</xliff:g> датотека.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one">Премешта се <xliff:g id="COUNT_1">%1$d</xliff:g> датотека.</item>
-      <item quantity="few">Премештају се <xliff:g id="COUNT_1">%1$d</xliff:g> датотеке.</item>
-      <item quantity="other">Премешта се <xliff:g id="COUNT_1">%1$d</xliff:g> датотека.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one">Брише се <xliff:g id="COUNT_1">%1$d</xliff:g> датотека.</item>
-      <item quantity="few">Бришу се <xliff:g id="COUNT_1">%1$d</xliff:g> датотеке.</item>
-      <item quantity="other">Брише се <xliff:g id="COUNT_1">%1$d</xliff:g> датотека.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Опозови"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Припрема се копирање…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Припрема се премештање..."</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Припрема се брисање…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one">Нисмо успели да копирамо <xliff:g id="COUNT_1">%1$d</xliff:g> датотеку</item>
-      <item quantity="few">Нисмо успели да копирамо <xliff:g id="COUNT_1">%1$d</xliff:g> датотеке</item>
-      <item quantity="other">Нисмо успели да копирамо <xliff:g id="COUNT_1">%1$d</xliff:g> датотека</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one">Премештање <xliff:g id="COUNT_1">%1$d</xliff:g> датотеке није успело</item>
-      <item quantity="few">Премештање <xliff:g id="COUNT_1">%1$d</xliff:g> датотеке није успело</item>
-      <item quantity="other">Премештање <xliff:g id="COUNT_1">%1$d</xliff:g> датотека није успело</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one">Брисање <xliff:g id="COUNT_1">%1$d</xliff:g> датотеке није успело</item>
-      <item quantity="few">Брисање <xliff:g id="COUNT_1">%1$d</xliff:g> датотеке није успело</item>
-      <item quantity="other">Брисање <xliff:g id="COUNT_1">%1$d</xliff:g> датотека није успело</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Додирните да бисте приказали детаље"</string>
-    <string name="close" msgid="3043722427445528732">"Затвори"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Следеће датотеке нису копиране: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Следеће датотеке нису премештене: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Следеће датотеке нису избрисане: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Ове датотеке су конвертоване у други формат: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one">Копирали сте <xliff:g id="COUNT_1">%1$d</xliff:g> датотеку у привремену меморију.</item>
-      <item quantity="few">Копирали сте <xliff:g id="COUNT_1">%1$d</xliff:g> датотеке у привремену меморију.</item>
-      <item quantity="other">Копирали сте <xliff:g id="COUNT_1">%1$d</xliff:g> датотека у привремену меморију.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Изабране датотеке не могу да се налепе на овој локацији."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Преименуј"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Преименовање документа није успело"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Избаци"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Неке датотеке су конвертоване"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Желите ли да апликацији <xliff:g id="APPNAME"><b>^1</b></xliff:g> одобрите приступ директоријуму <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> на меморијском простору <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Желите да дозволите да <xliff:g id="APPNAME"><b>^1</b></xliff:g> приступа директоријуму <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Желите да ли да дозволите да апликација <xliff:g id="APPNAME"><b>^1</b></xliff:g> приступа подацима, укључујући слике и видео снимке, на локацији <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Не питај поново"</string>
-    <string name="allow" msgid="7225948811296386551">"Дозволи"</string>
-    <string name="deny" msgid="2081879885755434506">"Одбиј"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one">Изабрана је <xliff:g id="COUNT_1">%1$d</xliff:g> ставка</item>
-      <item quantity="few">Изабране су <xliff:g id="COUNT_1">%1$d</xliff:g> ставке</item>
-      <item quantity="other">Изабрано је <xliff:g id="COUNT_1">%1$d</xliff:g> ставки</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ставка</item>
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> ставке</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ставки</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Желите ли да избришете „<xliff:g id="NAME">%1$s</xliff:g>“?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Желите ли да избришете директоријум „<xliff:g id="NAME">%1$s</xliff:g>“ и његов садржај?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one">Желите ли да избришете <xliff:g id="COUNT_1">%1$d</xliff:g> датотеку?</item>
-      <item quantity="few">Желите ли да избришете <xliff:g id="COUNT_1">%1$d</xliff:g> датотеке?</item>
-      <item quantity="other">Желите ли да избришете <xliff:g id="COUNT_1">%1$d</xliff:g> датотека?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one">Желите ли да избришете <xliff:g id="COUNT_1">%1$d</xliff:g> директоријум и њихов садржај?</item>
-      <item quantity="few">Желите ли да избришете <xliff:g id="COUNT_1">%1$d</xliff:g> директоријума и њихов садржај?</item>
-      <item quantity="other">Желите ли да избришете <xliff:g id="COUNT_1">%1$d</xliff:g> директоријума и њихов садржај?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one">Желите ли да избришете <xliff:g id="COUNT_1">%1$d</xliff:g> ставку?</item>
-      <item quantity="few">Желите ли да избришете <xliff:g id="COUNT_1">%1$d</xliff:g> ставке?</item>
-      <item quantity="other">Желите ли да избришете <xliff:g id="COUNT_1">%1$d</xliff:g> ставки?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-sv/strings.xml b/packages/DocumentsUI/res/values-sv/strings.xml
deleted file mode 100644
index 4f23527..0000000
--- a/packages/DocumentsUI/res/values-sv/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Filer"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Nedladdningar"</string>
-    <string name="title_open" msgid="4353228937663917801">"Öppna från"</string>
-    <string name="title_save" msgid="2433679664882857999">"Spara till"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Ny mapp"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Rutnätsvy"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Listvy"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Sortera efter"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Sök"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Lagringsinställningar"</string>
-    <string name="menu_open" msgid="432922957274920903">"Öppna"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Spara"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Dela"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Ta bort"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Markera allt"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Kopiera till …"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Flytta till ..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Nytt fönster"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Klipp ut"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Kopiera"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Klistra in"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Visa internminne"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Dölj internminne"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Visa filstorlek"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Dölj filstorlek"</string>
-    <string name="button_select" msgid="527196987259139214">"Välj"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Kopiera"</string>
-    <string name="button_move" msgid="2202666023104202232">"Flytta"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Ta bort permanent"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Försök igen"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Efter namn"</string>
-    <string name="sort_date" msgid="586080032956151448">"Efter ändringsdatum"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Efter storlek"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Visa rötter"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Dölj rötter"</string>
-    <string name="save_error" msgid="6167009778003223664">"Det gick inte att spara dokumentet"</string>
-    <string name="create_error" msgid="3735649141335444215">"Det gick inte att skapa mappen"</string>
-    <string name="query_error" msgid="5999895349602476581">"Det går inte att läsa in innehållet just nu"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Senaste"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> ledigt"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Lagringstjänster"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Genvägar"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Enheter"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Fler appar"</string>
-    <string name="empty" msgid="7858882803708117596">"Inga objekt"</string>
-    <string name="no_results" msgid="6622510343880730446">"Det finns inga träffar i %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Det går inte att öppna filen"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Det gick inte att ta bort vissa dokument"</string>
-    <string name="share_via" msgid="8966594246261344259">"Dela via"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Kopierar filer"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Filer flyttas"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Filerna tas bort"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> återstår"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">Kopierar <xliff:g id="COUNT_1">%1$d</xliff:g> filer.</item>
-      <item quantity="one">Kopierar <xliff:g id="COUNT_0">%1$d</xliff:g> fil.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">Flyttar <xliff:g id="COUNT_1">%1$d</xliff:g> filer.</item>
-      <item quantity="one">Flyttar <xliff:g id="COUNT_0">%1$d</xliff:g> fil.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">Raderar <xliff:g id="COUNT_1">%1$d</xliff:g> filer.</item>
-      <item quantity="one">Raderar <xliff:g id="COUNT_0">%1$d</xliff:g> fil.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Ångra"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Kopieringen förbereds …"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Förbereder för att flytta …"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Radering förbereds …"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">Det gick inte att kopiera <xliff:g id="COUNT_1">%1$d</xliff:g> filer</item>
-      <item quantity="one">Det gick inte att kopiera <xliff:g id="COUNT_0">%1$d</xliff:g> fil</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">Det gick inte att flytta <xliff:g id="COUNT_1">%1$d</xliff:g> filer</item>
-      <item quantity="one">Det gick inte att flytta <xliff:g id="COUNT_0">%1$d</xliff:g> fil</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">Det gick inte att radera <xliff:g id="COUNT_1">%1$d</xliff:g> filer</item>
-      <item quantity="one">Det gick inte att radera <xliff:g id="COUNT_0">%1$d</xliff:g> fil</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Tryck om du vill visa informationen"</string>
-    <string name="close" msgid="3043722427445528732">"Stäng"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Följande filer kopierades inte: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Följande filer flyttades inte: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Följande filer raderades inte: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Filerna konverterades till ett annat format: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> filer har kopierats till Urklipp.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> fil har kopierats till Urklipp.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Det går inte att klistra in den valda filen på den här platsen."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Byt namn"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Det gick inte att byta namn på dokumentet"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Mata ut"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Vissa filer konverterades"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Vill du ge <xliff:g id="APPNAME"><b>^1</b></xliff:g> åtkomst till katalogen <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> på <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Vill du ge <xliff:g id="APPNAME"><b>^1</b></xliff:g> åtkomst till katalogen <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Vill du ge <xliff:g id="APPNAME"><b>^1</b></xliff:g> åtkomst till din data (inklusive foton och videor) på <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Fråga inte igen"</string>
-    <string name="allow" msgid="7225948811296386551">"Tillåt"</string>
-    <string name="deny" msgid="2081879885755434506">"Neka"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> har valts</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> har valts</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> objekt</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> objekt</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Vill du radera <xliff:g id="NAME">%1$s</xliff:g>?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Vill du radera mappen <xliff:g id="NAME">%1$s</xliff:g> och dess innehåll?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">Vill du radera <xliff:g id="COUNT_1">%1$d</xliff:g> filer?</item>
-      <item quantity="one">Vill du radera <xliff:g id="COUNT_0">%1$d</xliff:g> fil?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">Vill du radera <xliff:g id="COUNT_1">%1$d</xliff:g>  mappar och deras innehåll?</item>
-      <item quantity="one">Vill du radera <xliff:g id="COUNT_0">%1$d</xliff:g> mapp och dess innehåll?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">Vill du radera <xliff:g id="COUNT_1">%1$d</xliff:g> objekt?</item>
-      <item quantity="one">Vill du radera <xliff:g id="COUNT_0">%1$d</xliff:g> objekt?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-sw/strings.xml b/packages/DocumentsUI/res/values-sw/strings.xml
deleted file mode 100644
index ac63582..0000000
--- a/packages/DocumentsUI/res/values-sw/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Faili"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Vipakuliwa"</string>
-    <string name="title_open" msgid="4353228937663917801">"Fungua kutoka"</string>
-    <string name="title_save" msgid="2433679664882857999">"Hifadhi kwenye"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Folda mpya"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Mwonekano gridi"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Mwonekano orodha"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Panga kwa"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Utafutaji"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Mipangilio ya hifadhi"</string>
-    <string name="menu_open" msgid="432922957274920903">"Fungua"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Hifadhi"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Shiriki"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Futa"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Chagua zote"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Nakili kwenda..."</string>
-    <string name="menu_move" msgid="1828090633118079817">"Hamisha hadi..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Dirisha jipya"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Kata"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Nakili"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Bandika"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Onyesha hifadhi ya ndani"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Ficha hifadhi ya ndani"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Onyesha ukubwa wa faili"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Ficha ukubwa wa faili"</string>
-    <string name="button_select" msgid="527196987259139214">"Teua"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Nakili"</string>
-    <string name="button_move" msgid="2202666023104202232">"Hamisha"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Ondoa"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Jaribu Tena"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Kwa jina"</string>
-    <string name="sort_date" msgid="586080032956151448">"Kwa tarehe viliporekebishwa"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Kwa ukubwa"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Onyesha usuli"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Ficha usuli"</string>
-    <string name="save_error" msgid="6167009778003223664">"Imeshindwa kuhifadhi hati"</string>
-    <string name="create_error" msgid="3735649141335444215">"Ilishindwa kuunda folda"</string>
-    <string name="query_error" msgid="5999895349602476581">"Haiwezi kupakia maudhui kwa sasa"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Za hivi karibuni"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> bila malipo"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Huduma za hifadhi"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Njia za mkato"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Vifaa"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Programu zaidi"</string>
-    <string name="empty" msgid="7858882803708117596">"Hakuna chochote"</string>
-    <string name="no_results" msgid="6622510343880730446">"Hakuna zinazolingana katika %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Haiwezi kufungua faili"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Imeshindwa kufuta baadhi ya hati"</string>
-    <string name="share_via" msgid="8966594246261344259">"Shiriki kupitia"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Inanakili faili"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Inahamisha faili"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Inafuta faili"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Zimesalia <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">Inanakili faili <xliff:g id="COUNT_1">%1$d</xliff:g>.</item>
-      <item quantity="one">Inanakili faili <xliff:g id="COUNT_0">%1$d</xliff:g>.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">Inahamisha faili <xliff:g id="COUNT_1">%1$d</xliff:g>.</item>
-      <item quantity="one">Inahamisha faili <xliff:g id="COUNT_0">%1$d</xliff:g>.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">Inafuta faili <xliff:g id="COUNT_1">%1$d</xliff:g>.</item>
-      <item quantity="one">Inafuta faili <xliff:g id="COUNT_0">%1$d</xliff:g>.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Tendua"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Inaanda kunakili..."</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Inatayarisha kuhamisha..."</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Inajitayarisha kufuta..."</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">Haikuweza kunakili faili <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="one">Haikuweza kunakili faili <xliff:g id="COUNT_0">%1$d</xliff:g></item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">Haikuweza kuhamisha faili <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="one">Haikuweza kuhamisha faili <xliff:g id="COUNT_0">%1$d</xliff:g></item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">Haikuweza kufuta faili <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="one">Haikuweza kufuta faili <xliff:g id="COUNT_0">%1$d</xliff:g></item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Gonga ili uangalie maelezo"</string>
-    <string name="close" msgid="3043722427445528732">"Funga"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Haikunakili faili zifuatazo: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Haikuhamisha faili zifuatazo: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Imeshindwa kufuta faili zifuatazo: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Faili hizi zimebadilishwa muundo. <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">Alinakili faili <xliff:g id="COUNT_1">%1$d</xliff:g> kwenye ubao wa kunakili.</item>
-      <item quantity="one">Alinakili faili <xliff:g id="COUNT_0">%1$d</xliff:g> kwenye ubao wa kunakili.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Haiwezi kubandika faili zilizochaguliwa katika eneo hili."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Badilisha jina"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Imeshindwa kubadilisha jina la hati"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Ondoa"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Baadhi ya faili zimebadilishwa muundo"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Ungependa kuruhusu <xliff:g id="APPNAME"><b>^1</b></xliff:g> ifikie saraka ya <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> kwenye <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Ungependa kuruhusu <xliff:g id="APPNAME"><b>^1</b></xliff:g> ifikie saraka ya <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Ungependa kuruhusu <xliff:g id="APPNAME"><b>^1</b></xliff:g> ifikie data yako, ikiwa ni pamoja na picha na video kwenye <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Usiniulize tena"</string>
-    <string name="allow" msgid="7225948811296386551">"Ruhusu"</string>
-    <string name="deny" msgid="2081879885755434506">"Kataza"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> zimechaguliwa</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> imechaguliwa</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other">Vipengee <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="one">Kipengee <xliff:g id="COUNT_0">%1$d</xliff:g></item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Ungependa kufuta \"<xliff:g id="NAME">%1$s</xliff:g>\"?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Ungependa kufuta folda ya \"<xliff:g id="NAME">%1$s</xliff:g>\" na maudhui yake?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">Ungependa kufuta faili <xliff:g id="COUNT_1">%1$d</xliff:g>?</item>
-      <item quantity="one">Ungependa kufuta faili <xliff:g id="COUNT_0">%1$d</xliff:g>?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">Ungependa kufuta folda <xliff:g id="COUNT_1">%1$d</xliff:g> na maudhui yaliyomo?</item>
-      <item quantity="one">Ungependa kufuta folda <xliff:g id="COUNT_0">%1$d</xliff:g> na maudhui yaliyomo?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">Ungependa kufuta vipengee <xliff:g id="COUNT_1">%1$d</xliff:g>?</item>
-      <item quantity="one">Ungependa kufuta kipengee <xliff:g id="COUNT_0">%1$d</xliff:g>?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-sw600dp/dimens.xml b/packages/DocumentsUI/res/values-sw600dp/dimens.xml
deleted file mode 100644
index 642ff7e..0000000
--- a/packages/DocumentsUI/res/values-sw600dp/dimens.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-    <dimen name="root_icon_margin">8dp</dimen>
-</resources>
diff --git a/packages/DocumentsUI/res/values-sw720dp-land/dimens.xml b/packages/DocumentsUI/res/values-sw720dp-land/dimens.xml
deleted file mode 100644
index 1b67ee5..0000000
--- a/packages/DocumentsUI/res/values-sw720dp-land/dimens.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-    <dimen name="list_item_height">64dp</dimen>
-    <dimen name="list_item_padding">24dp</dimen>
-
-    <dimen name="list_divider_inset">80dp</dimen>
-
-    <dimen name="max_drawer_width">320dp</dimen>
-</resources>
diff --git a/packages/DocumentsUI/res/values-sw720dp-land/layouts.xml b/packages/DocumentsUI/res/values-sw720dp-land/layouts.xml
deleted file mode 100644
index 0e1807c..0000000
--- a/packages/DocumentsUI/res/values-sw720dp-land/layouts.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-    <item name="files_activity" type="layout">@layout/fixed_layout</item>
-</resources>
diff --git a/packages/DocumentsUI/res/values-sw720dp/colors.xml b/packages/DocumentsUI/res/values-sw720dp/colors.xml
deleted file mode 100644
index 3ecafe2..0000000
--- a/packages/DocumentsUI/res/values-sw720dp/colors.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-    <color name="menu_search_background">#ff676f74</color>
-</resources>
diff --git a/packages/DocumentsUI/res/values-sw720dp/config.xml b/packages/DocumentsUI/res/values-sw720dp/config.xml
deleted file mode 100644
index 4898e74..0000000
--- a/packages/DocumentsUI/res/values-sw720dp/config.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-    <!-- Indicates if search view is taking the whole toolbar space -->
-    <bool name="full_bar_search_view">false</bool>
-</resources>
diff --git a/packages/DocumentsUI/res/values-sw720dp/dimens.xml b/packages/DocumentsUI/res/values-sw720dp/dimens.xml
deleted file mode 100644
index 982b204..0000000
--- a/packages/DocumentsUI/res/values-sw720dp/dimens.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-    <dimen name="grid_padding_horiz">16dp</dimen>
-    <dimen name="grid_padding_vert">16dp</dimen>
-
-    <dimen name="list_item_padding">24dp</dimen>
-
-    <dimen name="max_drawer_width">320dp</dimen>
-</resources>
diff --git a/packages/DocumentsUI/res/values-ta-rIN/strings.xml b/packages/DocumentsUI/res/values-ta-rIN/strings.xml
deleted file mode 100644
index f29370b..0000000
--- a/packages/DocumentsUI/res/values-ta-rIN/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"கோப்புகள்"</string>
-    <string name="downloads_label" msgid="959113951084633612">"இறக்கங்கள்"</string>
-    <string name="title_open" msgid="4353228937663917801">"இதில் திற"</string>
-    <string name="title_save" msgid="2433679664882857999">"இதில் சேமி"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"புதிய கோப்புறை"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"கட்டக் காட்சி"</string>
-    <string name="menu_list" msgid="7279285939892417279">"பட்டியல்"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"இதன்படி வரிசைப்படுத்து"</string>
-    <string name="menu_search" msgid="3816712084502856974">"தேடு"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"சேமிப்பிட அமைப்புகள்"</string>
-    <string name="menu_open" msgid="432922957274920903">"திற"</string>
-    <string name="menu_save" msgid="2394743337684426338">"சேமி"</string>
-    <string name="menu_share" msgid="3075149983979628146">"பகிர்"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"நீக்கு"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"எல்லாவற்றையும் தேர்ந்தெடு"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"இங்கு நகலெடு…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"இதற்கு நகர்த்து…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"புதிய சாளரம்"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"வெட்டு"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"நகலெடு"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"ஒட்டு"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"அகச் சேமிப்பகத்தைக் காட்டு"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"அகச் சேமிப்பகத்தை மறை"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"கோப்பு அளவைக் காட்டு"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"கோப்பு அளவை மறை"</string>
-    <string name="button_select" msgid="527196987259139214">"தேர்ந்தெடு"</string>
-    <string name="button_copy" msgid="8706475544635021302">"நகலெடு"</string>
-    <string name="button_move" msgid="2202666023104202232">"நகர்த்து"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"நிராகரி"</string>
-    <string name="button_retry" msgid="4392027584153752797">"மீண்டும் முயற்சிக்கவும்"</string>
-    <string name="sort_name" msgid="9183560467917256779">"பெயரின்படி"</string>
-    <string name="sort_date" msgid="586080032956151448">"திருத்தப்பட்ட தேதியின்படி"</string>
-    <string name="sort_size" msgid="3350681319735474741">"அளவின்படி"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"வழிகளைக் காட்டு"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"வழிகளை மறை"</string>
-    <string name="save_error" msgid="6167009778003223664">"ஆவணத்தைச் சேமிப்பதில் தோல்வி"</string>
-    <string name="create_error" msgid="3735649141335444215">"கோப்புறையை உருவாக்குவதில் தோல்வி"</string>
-    <string name="query_error" msgid="5999895349602476581">"தற்போது உள்ளடக்கத்தை ஏற்ற முடியாது"</string>
-    <string name="root_recent" msgid="4470053704320518133">"சமீபத்தியவை"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> இலவசம்"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"சேமிப்பிட சாதனங்கள்"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"குறுக்குவழிகள்"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"சாதனங்கள்"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"மேலும் பயன்பாடுகள்"</string>
-    <string name="empty" msgid="7858882803708117596">"எதுவும் இல்லை"</string>
-    <string name="no_results" msgid="6622510343880730446">"%1$s இல் பொருந்தும் முடிவு இல்லை"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"கோப்பைத் திறக்க முடியாது"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"சில ஆவணங்களை நீக்க முடியவில்லை"</string>
-    <string name="share_via" msgid="8966594246261344259">"இதன் வழியாகப் பகிர்"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"கோப்புகளை நகலெடுத்தல்"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"கோப்புகளை நகர்த்துதல்"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"கோப்புகளை நீக்குகிறது"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> மீதமுள்ளது"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> கோப்புகளை நகலெடுக்கிறது.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> கோப்பை நகலெடுக்கிறது.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> கோப்புகளை நகர்த்துகிறது.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> கோப்பை நகர்த்துகிறது.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> கோப்புகளை நீக்குகிறது.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> கோப்பை நீக்குகிறது.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"செயல்தவிர்"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"நகல் தயாராகிறது…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"நகர்த்துவதற்குத் தயார்படுத்துகிறது…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"நீக்கத் தயாராகிறது…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> கோப்புகளை நகலெடுக்க முடியவில்லை</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> கோப்பை நகலெடுக்க முடியவில்லை</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> கோப்புகளை நகர்த்த முடியவில்லை</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> கோப்பை நகர்த்த முடியவில்லை</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> கோப்புகளை நீக்க முடியவில்லை</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> கோப்பை நீக்க முடியவில்லை</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"விவரங்களைப் பார்க்க, தட்டவும்"</string>
-    <string name="close" msgid="3043722427445528732">"மூடு"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"பின்வரும் கோப்புகள் நகலெடுக்கப்படவில்லை: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"பின்வரும் கோப்புகள் நகர்த்தப்படவில்லை: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"பின்வரும் கோப்புகள் நீக்கப்படவில்லை: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"இந்தக் கோப்புகள் வேறொரு வடிவத்திற்கு மாற்றப்பட்டன: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">கிளிப்போர்டிற்கு <xliff:g id="COUNT_1">%1$d</xliff:g> கோப்புகள் நகலெடுக்கப்பட்டன.</item>
-      <item quantity="one">கிளிப்போர்டிற்கு <xliff:g id="COUNT_0">%1$d</xliff:g> கோப்பு நகலெடுக்கப்பட்டது.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"தேர்ந்தெடுத்த கோப்புகளை இங்கு ஒட்ட முடியாது."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"மறுபெயரிடு"</string>
-    <string name="rename_error" msgid="4203041674883412606">"ஆவணத்திற்கு மறுபெயரிடுவதில் தோல்வி"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"வெளியேற்று"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"சில கோப்புகள் மாற்றப்பட்டன"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="STORAGE"><i>^3</i></xliff:g> இல் உள்ள <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> கோப்பகத்தை அணுக <xliff:g id="APPNAME"><b>^1</b></xliff:g>ஐ அனுமதிக்கவா?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="DIRECTORY"><i>^2</i></xliff:g> கோப்பகத்தை அணுக, <xliff:g id="APPNAME"><b>^1</b></xliff:g>ஐ அனுமதிக்கவா?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="STORAGE"><i>^2</i></xliff:g> இல் உள்ள படங்கள், வீடியோக்கள் உட்பட எல்லா தரவையும் அணுக, <xliff:g id="APPNAME"><b>^1</b></xliff:g>ஐ அனுமதிக்கவா?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"மீண்டும் கேட்காதே"</string>
-    <string name="allow" msgid="7225948811296386551">"அனுமதி"</string>
-    <string name="deny" msgid="2081879885755434506">"நிராகரி"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> தேர்ந்தெடுக்கப்பட்டன</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> தேர்ந்தெடுக்கப்பட்டது</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> உருப்படிகள்</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> உருப்படி</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"\"<xliff:g id="NAME">%1$s</xliff:g>\"ஐ நீக்கவா?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"\"<xliff:g id="NAME">%1$s</xliff:g>\" கோப்புறையையும் அதன் உள்ளடக்கத்தையும் நீக்கவா?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> கோப்புகளை நீக்கவா?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> கோப்பை நீக்கவா?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> கோப்புறைகளையும் அவற்றின் உள்ளடக்கத்தையும் நீக்கவா?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> கோப்புறையையும் அதன் உள்ளடக்கத்தையும் நீக்கவா?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> உருப்படிகளை நீக்கவா?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> உருப்படியை நீக்கவா?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-te-rIN/strings.xml b/packages/DocumentsUI/res/values-te-rIN/strings.xml
deleted file mode 100644
index 38bb007..0000000
--- a/packages/DocumentsUI/res/values-te-rIN/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"ఫైల్‌లు"</string>
-    <string name="downloads_label" msgid="959113951084633612">"డౌన్‌లోడ్‌లు"</string>
-    <string name="title_open" msgid="4353228937663917801">"ఇక్కడి నుండి తెరువు"</string>
-    <string name="title_save" msgid="2433679664882857999">"ఇందులో సేవ్ చేయి"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"కొత్త ఫోల్డర్"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"గ్రిడ్ వీక్షణ"</string>
-    <string name="menu_list" msgid="7279285939892417279">"జాబితా వీక్షణ"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"ఇలా క్రమబద్ధీకరించు"</string>
-    <string name="menu_search" msgid="3816712084502856974">"శోధించు"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"నిల్వ సెట్టింగ్‌లు"</string>
-    <string name="menu_open" msgid="432922957274920903">"తెరువు"</string>
-    <string name="menu_save" msgid="2394743337684426338">"సేవ్ చేయి"</string>
-    <string name="menu_share" msgid="3075149983979628146">"భాగస్వామ్యం చేయి"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"తొలగించు"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"అన్నీ ఎంచుకోండి"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"ఇక్కడికి కాపీ చేయి…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"దీనికి తరలించు..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"కొత్త విండో"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"కత్తిరించు"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"కాపీ చేయి"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"అతికించు"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"అంతర్గత నిల్వను చూపు"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"అంతర్గత నిల్వను దాచు"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"ఫైల్ పరిమాణాన్ని చూపు"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"ఫైల్ పరిమాణాన్ని దాచు"</string>
-    <string name="button_select" msgid="527196987259139214">"ఎంచుకోండి"</string>
-    <string name="button_copy" msgid="8706475544635021302">"కాపీ చేయి"</string>
-    <string name="button_move" msgid="2202666023104202232">"తరలించు"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"తీసివేయి"</string>
-    <string name="button_retry" msgid="4392027584153752797">"మళ్లీ ప్రయత్నించు"</string>
-    <string name="sort_name" msgid="9183560467917256779">"పేరు ద్వారా"</string>
-    <string name="sort_date" msgid="586080032956151448">"సవరించిన తేదీ ద్వారా"</string>
-    <string name="sort_size" msgid="3350681319735474741">"పరిమాణం ద్వారా"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"మూలాలను చూపు"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"మూలాలను దాచు"</string>
-    <string name="save_error" msgid="6167009778003223664">"పత్రాన్ని సేవ్ చేయడంలో విఫలమైంది"</string>
-    <string name="create_error" msgid="3735649141335444215">"ఫోల్డర్‌ను సృష్టించడంలో విఫలమైంది"</string>
-    <string name="query_error" msgid="5999895349602476581">"ఈ సమయంలో కంటెంట్‌ను లోడ్ చేయడం సాధ్యపడదు"</string>
-    <string name="root_recent" msgid="4470053704320518133">"ఇటీవల"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> ఖాళీ"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"నిల్వ పరికరాలు"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"సత్వరమార్గాలు"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"పరికరాలు"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"మరిన్ని అనువర్తనాలు"</string>
-    <string name="empty" msgid="7858882803708117596">"అంశాలు లేవు"</string>
-    <string name="no_results" msgid="6622510343880730446">"%1$sలో సరిపోలినవి లేవు"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"ఫైల్‌ను తెరవడం సాధ్యపడదు"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"కొన్ని పత్రాలను తొలగించడం సాధ్యపడలేదు"</string>
-    <string name="share_via" msgid="8966594246261344259">"దీని ద్వారా భాగస్వామ్యం చేయండి"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"ఫైల్‌లు కాపీ అవుతున్నాయి"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"ఫైల్‌లను తరలిస్తోంది"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"ఫైల్‌లను తొలగిస్తోంది"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> మిగిలి ఉంది"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ఫైల్‌లను కాపీ చేస్తోంది.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ఫైల్‌ను కాపీ చేస్తోంది.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ఫైల్‌లను తరలిస్తోంది.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ఫైల్‌ను తరలిస్తోంది.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ఫైల్‌లను తొలగిస్తోంది.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ఫైల్‌ను తొలగిస్తోంది.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"చర్య రద్దు చేయి"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"కాపీ చేయడానికి సిద్ధం చేస్తోంది…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"తరలించడానికి సిద్ధమవుతోంది…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"తొలగించడానికి సిద్ధం చేస్తోంది…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ఫైల్‌లను కాపీ చేయడం సాధ్యపడలేదు</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ఫైల్‌ను కాపీ చేయడం సాధ్యపడలేదు</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ఫైల్‌లను తరలించడం సాధ్యపడలేదు</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ఫైల్‌ను తరలించడం సాధ్యపడలేదు</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ఫైల్‌లను తొలగించడం సాధ్యపడలేదు</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ఫైల్‌ను తొలగించడం సాధ్యపడలేదు</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"వివరాలను వీక్షించడానికి నొక్కండి"</string>
-    <string name="close" msgid="3043722427445528732">"మూసివేయి"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"ఈ ఫైల్‌లు కాపీ చేయబడలేదు: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"ఈ ఫైల్‌లు తరలించబడలేదు: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"ఈ ఫైల్‌లు తొలగించబడలేదు: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"ఈ ఫైల్‌లు మరొక ఆకృతికి మార్చబడ్డాయి: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">క్లిప్‌బోర్డ్‌కి <xliff:g id="COUNT_1">%1$d</xliff:g> ఫైల్‌లను కాపీ చేసారు.</item>
-      <item quantity="one">క్లిప్‌బోర్డ్‌కి <xliff:g id="COUNT_0">%1$d</xliff:g> ఫైల్‌ను కాపీ చేసారు.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"ఎంచుకున్న ఫైల్‌లను ఈ స్థానంలోకి తీసుకురావడం సాధ్యపడదు."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"పేరు మార్చు"</string>
-    <string name="rename_error" msgid="4203041674883412606">"పత్రం పేరు మార్చడంలో విఫలమైంది"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"తొలగించు"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"కొన్ని పైల్‌లు మార్చబడ్డాయి"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g>కి <xliff:g id="STORAGE"><i>^3</i></xliff:g>లో <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> డైరెక్టరీ ప్రాప్యతను మంజూరు చేయాలా?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g>కి <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> డైరెక్టరీ ప్రాప్యతను మంజూరు చేయాలా?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="STORAGE"><i>^2</i></xliff:g>లో ఫోటోలు మరియు వీడియోలతో సహా మీ డేటా ప్రాప్యతను <xliff:g id="APPNAME"><b>^1</b></xliff:g>కి మంజూరు చేయాలా?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"మళ్లీ అడగవద్దు"</string>
-    <string name="allow" msgid="7225948811296386551">"అనుమతించండి"</string>
-    <string name="deny" msgid="2081879885755434506">"తిరస్కరించండి"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ఎంచుకోబడ్డాయి</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ఎంచుకోబడింది</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> అంశాలు</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> అంశం</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"\"<xliff:g id="NAME">%1$s</xliff:g>\"ని తొలగించాలా?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"\"<xliff:g id="NAME">%1$s</xliff:g>\" ఫోల్డర్‌ని మరియు అందులోని కంటెంట్‌లను తొలగించాలా?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ఫైల్‌లను తొలగించాలా?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ఫైల్‌ను తొలగించాలా?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ఫోల్డర్‌లు మరియు వీటిలోని కంటెంట్‌లను తొలగించాలా?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ఫోల్డర్ మరియు దీనిలోని కంటెంట్‌లను తొలగించాలా?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> అంశాలను తొలగించాలా?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> అంశాన్ని తొలగించాలా?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-th/strings.xml b/packages/DocumentsUI/res/values-th/strings.xml
deleted file mode 100644
index f64be88..0000000
--- a/packages/DocumentsUI/res/values-th/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"ไฟล์"</string>
-    <string name="downloads_label" msgid="959113951084633612">"การดาวน์โหลด"</string>
-    <string name="title_open" msgid="4353228937663917801">"เปิดจาก"</string>
-    <string name="title_save" msgid="2433679664882857999">"บันทึกไปยัง"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"โฟลเดอร์ใหม่"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"มุมมองตาราง"</string>
-    <string name="menu_list" msgid="7279285939892417279">"มุมมองรายการ"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"จัดเรียงตาม"</string>
-    <string name="menu_search" msgid="3816712084502856974">"ค้นหา"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"การตั้งค่าที่เก็บข้อมูล"</string>
-    <string name="menu_open" msgid="432922957274920903">"เปิด"</string>
-    <string name="menu_save" msgid="2394743337684426338">"บันทึก"</string>
-    <string name="menu_share" msgid="3075149983979628146">"แชร์"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"ลบ"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"เลือกทั้งหมด"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"คัดลอกไปยัง…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"ย้ายไปที่…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"หน้าต่างใหม่"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"ตัด"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"คัดลอก"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"วาง"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"แสดงที่จัดเก็บภายใน"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"ซ่อนที่จัดเก็บภายใน"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"แสดงขนาดไฟล์"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"ซ่อนขนาดไฟล์"</string>
-    <string name="button_select" msgid="527196987259139214">"เลือก"</string>
-    <string name="button_copy" msgid="8706475544635021302">"คัดลอก"</string>
-    <string name="button_move" msgid="2202666023104202232">"ย้าย"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"ปิด"</string>
-    <string name="button_retry" msgid="4392027584153752797">"ลองอีกครั้ง"</string>
-    <string name="sort_name" msgid="9183560467917256779">"ตามชื่อ"</string>
-    <string name="sort_date" msgid="586080032956151448">"ตามวันที่ที่ปรับเปลี่ยน"</string>
-    <string name="sort_size" msgid="3350681319735474741">"ตามขนาด"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"แสดงราก"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"ซ่อนราก"</string>
-    <string name="save_error" msgid="6167009778003223664">"การบันทึกเอกสารล้มเหลว"</string>
-    <string name="create_error" msgid="3735649141335444215">"การสร้างโฟลเดอร์ล้มเหลว"</string>
-    <string name="query_error" msgid="5999895349602476581">"โหลดเนื้อหาไม่ได้ในขณะนี้"</string>
-    <string name="root_recent" msgid="4470053704320518133">"ล่าสุด"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"ว่าง <xliff:g id="SIZE">%1$s</xliff:g>"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"บริการที่เก็บข้อมูล"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"ทางลัด"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"อุปกรณ์"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"แอปเพิ่มเติม"</string>
-    <string name="empty" msgid="7858882803708117596">"ไม่มีรายการ"</string>
-    <string name="no_results" msgid="6622510343880730446">"ไม่พบข้อมูลที่ตรงกันใน %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"เปิดไฟล์ไม่ได้"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"ไม่สามารถลบเอกสารบางรายการ"</string>
-    <string name="share_via" msgid="8966594246261344259">"แชร์ผ่าน"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"กำลังคัดลอกไฟล์"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"กำลังย้ายไฟล์"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"กำลังลบไฟล์"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"เหลือ <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">กำลังคัดลอก <xliff:g id="COUNT_1">%1$d</xliff:g> ไฟล์</item>
-      <item quantity="one">กำลังคัดลอก <xliff:g id="COUNT_0">%1$d</xliff:g> ไฟล์</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">กำลังย้าย <xliff:g id="COUNT_1">%1$d</xliff:g> ไฟล์</item>
-      <item quantity="one">กำลังย้าย <xliff:g id="COUNT_0">%1$d</xliff:g> ไฟล์</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">กำลังลบ <xliff:g id="COUNT_1">%1$d</xliff:g> ไฟล์</item>
-      <item quantity="one">กำลังลบ <xliff:g id="COUNT_0">%1$d</xliff:g> ไฟล์</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"เลิกทำ"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"กำลังเตรียมการคัดลอก…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"กำลังเตรียมการย้าย…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"กำลังเตรียมลบ…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">คัดลอกไม่ได้ <xliff:g id="COUNT_1">%1$d</xliff:g> ไฟล์</item>
-      <item quantity="one">คัดลอกไม่ได้ <xliff:g id="COUNT_0">%1$d</xliff:g> ไฟล์</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">ย้ายไม่ได้ <xliff:g id="COUNT_1">%1$d</xliff:g> ไฟล์</item>
-      <item quantity="one">ย้ายไม่ได้ <xliff:g id="COUNT_0">%1$d</xliff:g> ไฟล์</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">ลบไม่ได้ <xliff:g id="COUNT_1">%1$d</xliff:g> ไฟล์</item>
-      <item quantity="one">ลบไม่ได้ <xliff:g id="COUNT_0">%1$d</xliff:g> ไฟล์</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"แตะเพื่อดูรายละเอียด"</string>
-    <string name="close" msgid="3043722427445528732">"ปิด"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"ไม่ได้คัดลอกไฟล์เหล่านี้: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"ไม่ได้ย้ายไฟล์เหล่านี้: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"ไม่ได้ลบไฟล์เหล่านี้: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"ไฟล์ต่อไปนี้แปลงเป็นอีกรูปแบบหนึ่งแล้ว: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">คัดลอก <xliff:g id="COUNT_1">%1$d</xliff:g> ไฟล์ไปยังคลิปบอร์ดแล้ว</item>
-      <item quantity="one">คัดลอก <xliff:g id="COUNT_0">%1$d</xliff:g> ไฟล์ไปยังคลิปบอร์ดแล้ว</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"ไม่สามารถวางไฟล์ที่เลือกในตำแหน่งนี้"</string>
-    <string name="menu_rename" msgid="7678802479104285353">"เปลี่ยนชื่อ"</string>
-    <string name="rename_error" msgid="4203041674883412606">"ไม่สามารถเปลี่ยนชื่อเอกสาร"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"นำอุปกรณ์ออก"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"แปลงบางไฟล์แล้ว"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"ให้สิทธิ์ <xliff:g id="APPNAME"><b>^1</b></xliff:g> ในการเข้าถึงไดเรกทอรี <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ใน <xliff:g id="STORAGE"><i>^3</i></xliff:g> ไหม"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"ให้สิทธิ์ <xliff:g id="APPNAME"><b>^1</b></xliff:g> เข้าถึงไดเรกทอรี <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ไหม"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"ให้สิทธิ์ <xliff:g id="APPNAME"><b>^1</b></xliff:g> เข้าถึงข้อมูลของคุณ รวมถึงรูปภาพและวิดีโอใน <xliff:g id="STORAGE"><i>^2</i></xliff:g> ไหม"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"ไม่ต้องถามอีก"</string>
-    <string name="allow" msgid="7225948811296386551">"อนุญาต"</string>
-    <string name="deny" msgid="2081879885755434506">"ปฏิเสธ"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other">เลือกไว้ <xliff:g id="COUNT_1">%1$d</xliff:g> รายการ</item>
-      <item quantity="one">เลือกไว้ <xliff:g id="COUNT_0">%1$d</xliff:g> รายการ</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> รายการ</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> รายการ</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"ลบ \"<xliff:g id="NAME">%1$s</xliff:g>\" ไหม"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"ลบโฟลเดอร์ \"<xliff:g id="NAME">%1$s</xliff:g>\" และเนื้อหาข้างในไหม"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">ลบ <xliff:g id="COUNT_1">%1$d</xliff:g> ไฟล์ใช่ไหม</item>
-      <item quantity="one">ลบ <xliff:g id="COUNT_0">%1$d</xliff:g> ไฟล์ใช่ไหม</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">ลบ <xliff:g id="COUNT_1">%1$d</xliff:g> โฟลเดอร์และเนื้อหาข้างในใช่ไหม</item>
-      <item quantity="one">ลบ <xliff:g id="COUNT_0">%1$d</xliff:g> โฟลเดอร์และเนื้อหาข้างในใช่ไหม</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">ลบ <xliff:g id="COUNT_1">%1$d</xliff:g> รายการใช่ไหม</item>
-      <item quantity="one">ลบ <xliff:g id="COUNT_0">%1$d</xliff:g> รายการใช่ไหม</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-tl/strings.xml b/packages/DocumentsUI/res/values-tl/strings.xml
deleted file mode 100644
index 2247446..0000000
--- a/packages/DocumentsUI/res/values-tl/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Mga File"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Mga Download"</string>
-    <string name="title_open" msgid="4353228937663917801">"Buksan mula sa"</string>
-    <string name="title_save" msgid="2433679664882857999">"I-save sa"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Bagong folder"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"View na grid"</string>
-    <string name="menu_list" msgid="7279285939892417279">"View na listahan"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Uriin ayon sa"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Maghanap"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Mga setting ng storage"</string>
-    <string name="menu_open" msgid="432922957274920903">"Buksan"</string>
-    <string name="menu_save" msgid="2394743337684426338">"I-save"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Ibahagi"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"I-delete"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Piliin lahat"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Kopyahin sa..."</string>
-    <string name="menu_move" msgid="1828090633118079817">"Ilipat sa…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Bagong window"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"I-cut"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Kopyahin"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"I-paste"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Ipakita internal storage"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Itago internal storage"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Ipakita ang laki ng file"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Itago ang laki ng file"</string>
-    <string name="button_select" msgid="527196987259139214">"Pumili"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Kopyahin"</string>
-    <string name="button_move" msgid="2202666023104202232">"Ilipat"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"I-dismiss"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Subukang Muli"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Ayon sa pangalan"</string>
-    <string name="sort_date" msgid="586080032956151448">"Ayon sa petsa ng pagbago"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Ayon sa laki"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Ipakita ang mga root"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Itago ang mga root"</string>
-    <string name="save_error" msgid="6167009778003223664">"Hindi na-save ang dokumento"</string>
-    <string name="create_error" msgid="3735649141335444215">"Hindi nagawa ang folder"</string>
-    <string name="query_error" msgid="5999895349602476581">"Hindi ma-load ang content sa ngayon"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Kamakailan"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> ang libre"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Mga serbisyo ng storage"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Mga Shortcut"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Mga Device"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Higit pang apps"</string>
-    <string name="empty" msgid="7858882803708117596">"Walang mga item"</string>
-    <string name="no_results" msgid="6622510343880730446">"Walang mga katugma sa %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Hindi mabuksan ang file"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Hindi matanggal ang ilang dokumento"</string>
-    <string name="share_via" msgid="8966594246261344259">"Ibahagi sa pamamagitan ng"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Kinokopya ang mga file"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Inililipat ang mga file"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Pagde-delete ng mga file"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> na lang ang natitira"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one">Kumokopya ng <xliff:g id="COUNT_1">%1$d</xliff:g> file.</item>
-      <item quantity="other">Kumokopya ng <xliff:g id="COUNT_1">%1$d</xliff:g> na file.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one">Inililipat ang <xliff:g id="COUNT_1">%1$d</xliff:g> file.</item>
-      <item quantity="other">Inililipat ang <xliff:g id="COUNT_1">%1$d</xliff:g> na file.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one">Dine-delete ang <xliff:g id="COUNT_1">%1$d</xliff:g> file.</item>
-      <item quantity="other">Dine-delete ang <xliff:g id="COUNT_1">%1$d</xliff:g> na file.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"I-undo"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Naghahanda para sa pagkopya…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Naghahanda para sa paglilipat…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Naghahanda para sa pag-delete…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one">Hindi makopya ang <xliff:g id="COUNT_1">%1$d</xliff:g> file</item>
-      <item quantity="other">Hindi makopya ang <xliff:g id="COUNT_1">%1$d</xliff:g> na file</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one">Hindi mailipat ang <xliff:g id="COUNT_1">%1$d</xliff:g> file</item>
-      <item quantity="other">Hindi mailipat ang <xliff:g id="COUNT_1">%1$d</xliff:g> na file</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one">Hindi ma-delete ang <xliff:g id="COUNT_1">%1$d</xliff:g> file</item>
-      <item quantity="other">Hindi ma-delete ang <xliff:g id="COUNT_1">%1$d</xliff:g> na file</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"I-tap upang tingnan ang mga detalye"</string>
-    <string name="close" msgid="3043722427445528732">"Isara"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Hindi nakopya ang mga file na ito: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Hindi nailipat ang mga file na ito: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Hindi na-delete ang mga file na ito: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Na-convert ang mga file na ito sa ibang format: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one">Nakopya ang <xliff:g id="COUNT_1">%1$d</xliff:g> file sa clipboard.</item>
-      <item quantity="other">Nakopya ang <xliff:g id="COUNT_1">%1$d</xliff:g> na file sa clipboard.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Hindi mai-paste sa lokasyong ito ang mga piniling file."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Palitan ang pangalan"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Hindi napalitan ang pangalan ng dokumento"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"I-eject"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Na-convert ang ilang file"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Bigyan ang <xliff:g id="APPNAME"><b>^1</b></xliff:g> ng access sa directory ng <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> sa <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Bibigyan ang <xliff:g id="APPNAME"><b>^1</b></xliff:g> ng access sa direktoryong <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Bigyan ang <xliff:g id="APPNAME"><b>^1</b></xliff:g> ng access sa iyong data, kabilang ang mga larawan at video, sa <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Huwag nang tatanunging muli"</string>
-    <string name="allow" msgid="7225948811296386551">"Payagan"</string>
-    <string name="deny" msgid="2081879885755434506">"Tanggihan"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ang napili</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ang napili</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> item</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> na item</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Gusto mo bang i-delete ang \"<xliff:g id="NAME">%1$s</xliff:g>?\""</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Gusto mo bang i-delete ang folder na \"<xliff:g id="NAME">%1$s</xliff:g>\" at ang mga content nito?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one">Gusto mo bang i-delete ang <xliff:g id="COUNT_1">%1$d</xliff:g> file?</item>
-      <item quantity="other">Gusto mo bang i-delete ang <xliff:g id="COUNT_1">%1$d</xliff:g> (na) file?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one">Gusto mo bang i-delete ang <xliff:g id="COUNT_1">%1$d</xliff:g> folder at mga content ng mga ito?</item>
-      <item quantity="other">Gusto mo bang i-delete ang <xliff:g id="COUNT_1">%1$d</xliff:g> na folder at mga content ng mga ito?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one">Gusto mo bang i-delete ang <xliff:g id="COUNT_1">%1$d</xliff:g> item?</item>
-      <item quantity="other">Gusto mo bang i-delete ang <xliff:g id="COUNT_1">%1$d</xliff:g> na item?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-tr/strings.xml b/packages/DocumentsUI/res/values-tr/strings.xml
deleted file mode 100644
index 9dcc0e1..0000000
--- a/packages/DocumentsUI/res/values-tr/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Dosyalar"</string>
-    <string name="downloads_label" msgid="959113951084633612">"İndirilenler"</string>
-    <string name="title_open" msgid="4353228937663917801">"Şuradan aç:"</string>
-    <string name="title_save" msgid="2433679664882857999">"Şuraya kaydet:"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Yeni klasör"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Tablo görünümü"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Liste görünümü"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Sıralama ölçütü"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Ara"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Depolama ayarları"</string>
-    <string name="menu_open" msgid="432922957274920903">"Aç"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Kaydet"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Paylaş"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Sil"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Tümünü seç"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Kopyala…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Taşı..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Yeni pencere"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Kes"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Kopyala"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Yapıştır"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Dahili depolamayı göster"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Dahili depolamayı gizle"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Dosya boyutunu göster"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Dosya boyutunu gizle"</string>
-    <string name="button_select" msgid="527196987259139214">"Seç"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Kopyala"</string>
-    <string name="button_move" msgid="2202666023104202232">"Taşı"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Kapat"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Tekrar Dene"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Ada göre"</string>
-    <string name="sort_date" msgid="586080032956151448">"Değişiklik tarihine göre"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Boyuta göre"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Kökleri göster"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Kökleri sakla"</string>
-    <string name="save_error" msgid="6167009778003223664">"Doküman kaydedilemedi"</string>
-    <string name="create_error" msgid="3735649141335444215">"Klasör oluşturulamadı"</string>
-    <string name="query_error" msgid="5999895349602476581">"İçerik şu anda yüklenemiyor"</string>
-    <string name="root_recent" msgid="4470053704320518133">"En son"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> boş"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Depolama hizmetleri"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Kısayollar"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Cihazlar"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Diğer uygulamalar"</string>
-    <string name="empty" msgid="7858882803708117596">"Öğe yok"</string>
-    <string name="no_results" msgid="6622510343880730446">"%1$s içinde eşleşme bulunamadı"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Dosya açılamıyor"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Bazı dokümanlar silinemiyor"</string>
-    <string name="share_via" msgid="8966594246261344259">"Şunu kullanarak paylaş:"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Dosyalar kopyalanıyor"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Dosyalar taşınıyor"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Dosyalar siliniyor"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> kaldı"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> dosya kopyalanıyor.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> dosya kopyalanıyor.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> dosya taşınıyor.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> dosya taşınıyor.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> dosya siliniyor.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> dosya siliniyor.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Geri al"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Kopyalanmak için hazırlanıyor…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Taşıma için hazırlanıyor…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Silmek için hazırlanıyor…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> dosya kopyalanamadı</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> dosya kopyalanamadı</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> dosya taşınamadı</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> dosya taşınamadı</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> dosya silinemedi</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> dosya silinemedi</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Ayrıntıları görmek için hafifçe dokunun"</string>
-    <string name="close" msgid="3043722427445528732">"Kapat"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Şu dosyalar kopyalanamadı: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Şu dosyalar taşınamadı: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Şu dosyalar silinemedi: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Bu dosyalar başka bir biçime dönüştürüldü: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> dosya panoya kopyalandı.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> dosya panoya kopyalandı.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Seçili dosyalar bu konuma yapıştırılamıyor."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Yeniden adlandır"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Dokümanın adı değiştirilemedi"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Çıkar"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Bazı dosyalar dönüştürüldü"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> uygulamasına <xliff:g id="STORAGE"><i>^3</i></xliff:g> depolama alanındaki <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> dizinine erişim izni verilsin mi?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="DIRECTORY"><i>^2</i></xliff:g> dizinine erişmek için <xliff:g id="APPNAME"><b>^1</b></xliff:g> uygulamasına izin verilsin mi?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> uygulamasının, fotoğraflar ve videolar dahil olmak üzere <xliff:g id="STORAGE"><i>^2</i></xliff:g> üzerindeki verilerinize erişmesine izin verilsin mi?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Tekrar sorma"</string>
-    <string name="allow" msgid="7225948811296386551">"İzin Ver"</string>
-    <string name="deny" msgid="2081879885755434506">"Reddet"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> öğe seçildi</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> öğe seçildi</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> öğe</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> öğe</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"\"<xliff:g id="NAME">%1$s</xliff:g>\" silinsin mi?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"\"<xliff:g id="NAME">%1$s</xliff:g>\" adlı klasör ve içindekiler silinsin mi?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> dosya silinsin mi?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> dosya silinsin mi?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> klasör ve içindekiler silinsin mi?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> klasör ve içindekiler silinsin mi?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> öğe silinsin mi?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> öğe silinsin mi?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-uk/strings.xml b/packages/DocumentsUI/res/values-uk/strings.xml
deleted file mode 100644
index 6d28f41..0000000
--- a/packages/DocumentsUI/res/values-uk/strings.xml
+++ /dev/null
@@ -1,168 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Файли"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Завантаження"</string>
-    <string name="title_open" msgid="4353228937663917801">"Відкрити"</string>
-    <string name="title_save" msgid="2433679664882857999">"Зберегти в"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Нова папка"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Режим таблиці"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Режим списку"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Параметри сортування"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Пошук"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Налаштування пам’яті"</string>
-    <string name="menu_open" msgid="432922957274920903">"Відкрити"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Зберегти"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Поділитися"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Видалити"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Вибрати все"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Копіювати в…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Перемістити в…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Нове вікно"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Вирізати"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Копіювати"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Вставити"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Показати внутр. пам’ять"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Сховати внутр. пам’ять"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Показати розмір файлу"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Сховати розмір файлу"</string>
-    <string name="button_select" msgid="527196987259139214">"Вибрати"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Копіювати"</string>
-    <string name="button_move" msgid="2202666023104202232">"Перемістити"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Закрити"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Повторити спробу"</string>
-    <string name="sort_name" msgid="9183560467917256779">"За назвою"</string>
-    <string name="sort_date" msgid="586080032956151448">"За датою змінення"</string>
-    <string name="sort_size" msgid="3350681319735474741">"За розміром"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Показати кореневі каталоги"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Сховати кореневі каталоги"</string>
-    <string name="save_error" msgid="6167009778003223664">"Не вдалося зберегти документ"</string>
-    <string name="create_error" msgid="3735649141335444215">"Помилка створення папки"</string>
-    <string name="query_error" msgid="5999895349602476581">"Зараз не вдається завантажити вміст"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Останні"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> вільного місця"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Онлайн-сховища"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Ярлики"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Пристрої"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Інші програми"</string>
-    <string name="empty" msgid="7858882803708117596">"Нічого немає"</string>
-    <string name="no_results" msgid="6622510343880730446">"Немає збігів для запиту \"%1$s\""</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Не вдалося відкрити файл"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Не вдалося видалити деякі документи"</string>
-    <string name="share_via" msgid="8966594246261344259">"Надіслати через"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Копіювання файлів"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Переміщення файлів"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Видалення файлів"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Залишилося <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one">Копіювання <xliff:g id="COUNT_1">%1$d</xliff:g> файлу.</item>
-      <item quantity="few">Копіювання <xliff:g id="COUNT_1">%1$d</xliff:g> файлів.</item>
-      <item quantity="many">Копіювання <xliff:g id="COUNT_1">%1$d</xliff:g> файлів.</item>
-      <item quantity="other">Копіювання <xliff:g id="COUNT_1">%1$d</xliff:g> файлу.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one">Переміщення <xliff:g id="COUNT_1">%1$d</xliff:g> файла.</item>
-      <item quantity="few">Переміщення <xliff:g id="COUNT_1">%1$d</xliff:g> файлів.</item>
-      <item quantity="many">Переміщення <xliff:g id="COUNT_1">%1$d</xliff:g> файлів.</item>
-      <item quantity="other">Переміщення <xliff:g id="COUNT_1">%1$d</xliff:g> файла.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one">Видалення <xliff:g id="COUNT_1">%1$d</xliff:g> файлу.</item>
-      <item quantity="few">Видалення <xliff:g id="COUNT_1">%1$d</xliff:g> файлів.</item>
-      <item quantity="many">Видалення <xliff:g id="COUNT_1">%1$d</xliff:g> файлів.</item>
-      <item quantity="other">Видалення <xliff:g id="COUNT_1">%1$d</xliff:g> файлу.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Відмінити"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Підготовка до копіювання…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Підготовка до переміщення…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Підготовка до видалення…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> з <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one">Не вдалося скопіювати <xliff:g id="COUNT_1">%1$d</xliff:g> файл</item>
-      <item quantity="few">Не вдалося скопіювати <xliff:g id="COUNT_1">%1$d</xliff:g> файли</item>
-      <item quantity="many">Не вдалося скопіювати <xliff:g id="COUNT_1">%1$d</xliff:g> файлів</item>
-      <item quantity="other">Не вдалося скопіювати <xliff:g id="COUNT_1">%1$d</xliff:g> файлу</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one">Не вдалося перемістити <xliff:g id="COUNT_1">%1$d</xliff:g> файл</item>
-      <item quantity="few">Не вдалося перемістити <xliff:g id="COUNT_1">%1$d</xliff:g> файли</item>
-      <item quantity="many">Не вдалося перемістити <xliff:g id="COUNT_1">%1$d</xliff:g> файлів</item>
-      <item quantity="other">Не вдалося перемістити <xliff:g id="COUNT_1">%1$d</xliff:g> файлу</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one">Не вдалося видалити <xliff:g id="COUNT_1">%1$d</xliff:g> файл</item>
-      <item quantity="few">Не вдалося видалити <xliff:g id="COUNT_1">%1$d</xliff:g> файли</item>
-      <item quantity="many">Не вдалося видалити <xliff:g id="COUNT_1">%1$d</xliff:g> файлів</item>
-      <item quantity="other">Не вдалося видалити <xliff:g id="COUNT_1">%1$d</xliff:g> файлу</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Торкніться, щоб переглянути деталі"</string>
-    <string name="close" msgid="3043722427445528732">"Закрити"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Ці файли не скопійовано: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Ці файли не переміщено: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Ці файли не видалено: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Ці файли конвертовано в інший формат: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one">У буфер обміну скопійовано <xliff:g id="COUNT_1">%1$d</xliff:g> файл.</item>
-      <item quantity="few">У буфер обміну скопійовано <xliff:g id="COUNT_1">%1$d</xliff:g> файли.</item>
-      <item quantity="many">У буфер обміну скопійовано <xliff:g id="COUNT_1">%1$d</xliff:g> файлів.</item>
-      <item quantity="other">У буфер обміну скопійовано <xliff:g id="COUNT_1">%1$d</xliff:g> файла.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Не вдається вставити вибрані файли в цю папку."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Перейменувати"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Не вдалося перейменувати документ"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Вийняти"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Деякі файли конвертовано"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Надати додатку <xliff:g id="APPNAME"><b>^1</b></xliff:g> доступ до каталогу <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> на пристрої пам’яті <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Надати додатку <xliff:g id="APPNAME"><b>^1</b></xliff:g> доступ до каталогу \"<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>\"?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Надати додатку <xliff:g id="APPNAME"><b>^1</b></xliff:g> доступ до ваших даних, зокрема до фотографій і відео, які містить <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Не запитувати знову"</string>
-    <string name="allow" msgid="7225948811296386551">"Дозвол."</string>
-    <string name="deny" msgid="2081879885755434506">"Забор."</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one">Вибрано <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="few">Вибрано <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="many">Вибрано <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="other">Вибрано <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> елемент</item>
-      <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> елементи</item>
-      <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> елементів</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> елемента</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Видалити файл <xliff:g id="NAME">%1$s</xliff:g>?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Видалити папку \"<xliff:g id="NAME">%1$s</xliff:g>\" та її вміст?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one">Видалити <xliff:g id="COUNT_1">%1$d</xliff:g> файл?</item>
-      <item quantity="few">Видалити <xliff:g id="COUNT_1">%1$d</xliff:g> файли?</item>
-      <item quantity="many">Видалити <xliff:g id="COUNT_1">%1$d</xliff:g> файлів?</item>
-      <item quantity="other">Видалити <xliff:g id="COUNT_1">%1$d</xliff:g> файлу?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one">Видалити <xliff:g id="COUNT_1">%1$d</xliff:g> папку та їх вміст?</item>
-      <item quantity="few">Видалити <xliff:g id="COUNT_1">%1$d</xliff:g> папки та їх вміст?</item>
-      <item quantity="many">Видалити <xliff:g id="COUNT_1">%1$d</xliff:g> папок та їх вміст?</item>
-      <item quantity="other">Видалити <xliff:g id="COUNT_1">%1$d</xliff:g> папки та їх вміст?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one">Видалити <xliff:g id="COUNT_1">%1$d</xliff:g> елемент?</item>
-      <item quantity="few">Видалити <xliff:g id="COUNT_1">%1$d</xliff:g> елементи?</item>
-      <item quantity="many">Видалити <xliff:g id="COUNT_1">%1$d</xliff:g> елементів?</item>
-      <item quantity="other">Видалити <xliff:g id="COUNT_1">%1$d</xliff:g> елемента?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-ur-rPK/strings.xml b/packages/DocumentsUI/res/values-ur-rPK/strings.xml
deleted file mode 100644
index 54289f8..0000000
--- a/packages/DocumentsUI/res/values-ur-rPK/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"فائلیں"</string>
-    <string name="downloads_label" msgid="959113951084633612">"ڈاؤن لوڈز"</string>
-    <string name="title_open" msgid="4353228937663917801">"کھولیں از"</string>
-    <string name="title_save" msgid="2433679664882857999">"اس میں محفوظ کریں"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"نیا فولڈر"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"گرڈ منظر"</string>
-    <string name="menu_list" msgid="7279285939892417279">"فہرست منظر"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"ترتیب دیں بلحاظ"</string>
-    <string name="menu_search" msgid="3816712084502856974">"تلاش کریں"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"اسٹوریج کی ترتیبات"</string>
-    <string name="menu_open" msgid="432922957274920903">"کھولیں"</string>
-    <string name="menu_save" msgid="2394743337684426338">"محفوظ کریں"</string>
-    <string name="menu_share" msgid="3075149983979628146">"اشتراک کریں"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"حذف کریں"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"سبھی کو منتخب کریں"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"اس میں کاپی کریں…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"اس میں منتقل کریں…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"نئی ونڈو"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"کٹ کریں"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"کاپی کریں"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"پیسٹ کریں"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"داخلی اسٹوریج دکھائیں"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"داخلی اسٹوریج چھپائیں"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"فائل سائز دکھائیں"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"فائل سائز چھپائیں"</string>
-    <string name="button_select" msgid="527196987259139214">"منتخب کریں"</string>
-    <string name="button_copy" msgid="8706475544635021302">"کاپی کریں"</string>
-    <string name="button_move" msgid="2202666023104202232">"منتقل کریں"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"برخاست کریں"</string>
-    <string name="button_retry" msgid="4392027584153752797">"دوبارہ کوشش کریں"</string>
-    <string name="sort_name" msgid="9183560467917256779">"نام کے لحاظ سے"</string>
-    <string name="sort_date" msgid="586080032956151448">"ترمیم کی تاریخ کے لحاظ سے"</string>
-    <string name="sort_size" msgid="3350681319735474741">"سائز کے لحاظ سے"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"روٹس دکھائیں"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"روٹس کو چھپائیں"</string>
-    <string name="save_error" msgid="6167009778003223664">"دستاویز کو محفوظ کرنے میں ناکام ہو گیا۔"</string>
-    <string name="create_error" msgid="3735649141335444215">"فولڈر بنانے میں ناکام ہو گیا"</string>
-    <string name="query_error" msgid="5999895349602476581">"اس وقت مواد لوڈ نہیں ہو سکتا"</string>
-    <string name="root_recent" msgid="4470053704320518133">"حالیہ"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> خالی"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"اسٹوریج سروسز"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"شارٹ کٹس"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"آلات"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"مزید ایپس"</string>
-    <string name="empty" msgid="7858882803708117596">"کوئی آئٹمز نہيں ہیں"</string>
-    <string name="no_results" msgid="6622510343880730446">"‏%1$s میں کوئی مماثل نہیں"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"فائل نہیں کھل سکتی"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"کچھ دستاویزات کو حذف کرنے سے قاصر"</string>
-    <string name="share_via" msgid="8966594246261344259">"اشتراک کریں بذریعہ"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"فائلیں کاپی ہو رہی ہیں"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"فائلیں منتقل ہو رہی ہیں"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"فائلیں حذف کی جا رہی ہیں"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> باقی ہے"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> فائلیں کاپی کی جا رہی ہیں۔</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> فائل کاپی کی جا رہی ہے۔</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> فائلز منتقل کی جا رہی ہیں۔</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> فائل منتقل کی جا رہی ہے۔</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> فائلیں حذف ہو رہی ہیں۔</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> فائل حذف ہو رہی ہے۔</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"کالعدم کریں"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"کاپی کیلئے تیار ہو رہا ہے…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"منتقلی کیلئے تیار ہو رہی ہیں…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"حذف کرنے کیلئے تیاری ہو رہی ہے…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> فائلیں کاپی نہیں ہو سکیں</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> فائل کاپی نہیں ہو سکی</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> فائلیں منتقل نہیں ہو سکیں</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> فائل منتقل نہیں ہو سکی</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> فائلیں حذف نہیں ہو سکیں</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> فائل حذف نہیں ہو سکی</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"تفصیلات دیکھنے کیلئے تھپتھپائیں"</string>
-    <string name="close" msgid="3043722427445528732">"بند کریں"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"یہ فائلیں کاپی نہیں ہوئیں: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"یہ فائلیں منتقل نہیں ہوئیں: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"یہ فائلیں حذف نہیں ہوئیں: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"ان فائلوں کو ایک دوسرے فارمیٹ میں تبدیل کیا گیا تھا: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> فائلز کلپ بورڈ پر کاپی کی گئیں۔</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> فائل کلپ بورڈ پر کاپی کی گئی۔</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"منتخب کردہ فائلز کو اس مقام پر پیسٹ نہیں کیا جا سکتا۔"</string>
-    <string name="menu_rename" msgid="7678802479104285353">"نام تبدیل کریں"</string>
-    <string name="rename_error" msgid="4203041674883412606">"دستاویز کا نام تبدیل کرنے میں ناکام"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"خارج کریں"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"کچھ فائلوں کو تبدیل کیا گیا تھا"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> کو <xliff:g id="STORAGE"><i>^3</i></xliff:g> پر <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ڈائرکٹری تک رسائی عطا کریں؟"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> کو <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ڈائرکٹری تک رسائی دیں؟"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> کو اپنے ڈیٹا بشمول <xliff:g id="STORAGE"><i>^2</i></xliff:g> پر موجود تصاویر اور ویڈیوز تک رسائی عطا کریں؟"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"دوبارہ نہ پوچھیں"</string>
-    <string name="allow" msgid="7225948811296386551">"اجازت دیں"</string>
-    <string name="deny" msgid="2081879885755434506">"مسترد کریں"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> منتخب کردہ</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> منتخب کردہ</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> آئٹمز</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> آئٹم</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"\"<xliff:g id="NAME">%1$s</xliff:g>\" حذف کریں؟"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"\"<xliff:g id="NAME">%1$s</xliff:g>\" فولڈر اور اس کی مشمولات حذف کریں؟"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> فائلیں حذف کریں؟</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> فائل حذف کریں؟</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> فولڈرز اور ان کے مشمولات حذف کریں؟</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> فولڈر اور اس کے مشمولات حذف کریں؟</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> آئٹمز حذف کریں؟</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> آئٹم حذف کریں؟</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-uz-rUZ/strings.xml b/packages/DocumentsUI/res/values-uz-rUZ/strings.xml
deleted file mode 100644
index de13d51..0000000
--- a/packages/DocumentsUI/res/values-uz-rUZ/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Fayllar"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Yuklanmalar"</string>
-    <string name="title_open" msgid="4353228937663917801">"Ochish"</string>
-    <string name="title_save" msgid="2433679664882857999">"Saqlash"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Yangi jild"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"To‘r ko‘rinishida"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Ro‘yxat ko‘rinishida"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Saralash"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Qidirish"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Xotira sozlamalari"</string>
-    <string name="menu_open" msgid="432922957274920903">"Ochish"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Saqlash"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Baham ko‘rish"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"O‘chirish"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Hammasini belgilash"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Nusxalash…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Ko‘chirib o‘tkazish…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Yangi oyna"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Kesish"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Nusxalash"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Joylash"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Ichki xotirani ko‘rsatish"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Ichki xotirani berkitish"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Fayllar hajmi ko‘rsatilsin"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Fayllar hajmi ko‘rsatilmasin"</string>
-    <string name="button_select" msgid="527196987259139214">"Tanlash"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Nusxalash"</string>
-    <string name="button_move" msgid="2202666023104202232">"Ko‘chirib o‘tkazish"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"O‘chirish"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Qayta urinish"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Nomi bo‘yicha"</string>
-    <string name="sort_date" msgid="586080032956151448">"Tahrir sanasi bo‘yicha"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Hajmi bo‘yicha"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Asosiy jildlarni ko‘rsatish"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Asosiy jildlarni yashirish"</string>
-    <string name="save_error" msgid="6167009778003223664">"Hujjat saqlanmadi"</string>
-    <string name="create_error" msgid="3735649141335444215">"Jild yaratilmadi"</string>
-    <string name="query_error" msgid="5999895349602476581">"Ayni paytda kontentni yuklab bo‘lmayapti"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Yaqinda"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> bo‘sh"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Xotira xizmatlari"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Yorliqlar"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Qurilmalar"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Ko‘proq dasturlar"</string>
-    <string name="empty" msgid="7858882803708117596">"Hech narsa yo‘q"</string>
-    <string name="no_results" msgid="6622510343880730446">"%1$s jildidan topilmadi"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Fayl ochilmadi"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Ba’zi hujjatlar o‘chirilmadi"</string>
-    <string name="share_via" msgid="8966594246261344259">"Baham ko‘rish"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Fayllar nusxalanmoqda"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Ko‘chirib o‘tkazilmoqda"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Fayllar o‘chirilmoqda"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> qoldi"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other"> <xliff:g id="COUNT_1">%1$d</xliff:g> ta fayl nusxalanmoqda</item>
-      <item quantity="one"> <xliff:g id="COUNT_0">%1$d</xliff:g> ta fayl nusxalanmoqda</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ta fayl ko‘chirib o‘tkazilmoqda.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ta fayl ko‘chirib o‘tkazilmoqda.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ta fayl o‘chirilmoqda.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ta fayl o‘chirilmoqda.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Bekor qilish"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Nuxsa olishga tayyorgarlik..."</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Ko‘chirishga tayyorgarlik…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"O‘chirishga tayyorlanmoqda…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ta fayldan nusxa olib bo‘lmadi</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ta fayldan nusxa olib bo‘lmadi</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ta faylni ko‘chirib bo‘lmadi</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ta faylni ko‘chirib bo‘lmadi</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ta faylni o‘chirib bo‘lmadi</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ta faylni o‘chirib bo‘lmadi</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Batafsil ma’lumot olish uchun bosing"</string>
-    <string name="close" msgid="3043722427445528732">"Yopish"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Quyidagi fayllardan nusxa olinmadi: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Quyidagi fayllar ko‘chirilmadi: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Quyidagi fayllar o‘chirib tashlanmadi: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Ushbu fayllar boshqa formatga o‘girildi: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ta fayldan vaqtinchalik xotiraga nusxa olindi.</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ta fayldan vaqtinchalik xotiraga nusxa olindi.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Tanlangan fayllarni bu yerga joylab bo‘lmadi."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Qayta nomlash"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Hujjatni qayta nomlab bo‘lmadi"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Chiqarish"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Bir nechta fayllar o‘girildi"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> ilovasiga <xliff:g id="STORAGE"><i>^3</i></xliff:g> xotirasidagi “<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>” jildidan foydalanishiga ruxsat berilsinmi?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> ilovasiga “<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>” jildidan foydalanishiga ruxsat berilsinmi?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"<xliff:g id="APPNAME"><b>^1</b></xliff:g> ilovasiga <xliff:g id="STORAGE"><i>^2</i></xliff:g> xotirasidagi ma’lumotlardan, jumladan, rasmlar va videolardan foydalanishiga ruxsat berilsinmi?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Boshqa so‘ralmasin"</string>
-    <string name="allow" msgid="7225948811296386551">"Ruxsat berish"</string>
-    <string name="deny" msgid="2081879885755434506">"Rad qilish"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ta belgilandi</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ta belgilandi</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ta element</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ta element</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"“<xliff:g id="NAME">%1$s</xliff:g>” o‘chirib tashlansinmi?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"“<xliff:g id="NAME">%1$s</xliff:g>” jildi ichidagi kontentlari bilan o‘chirib tashlansinmi?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ta fayl o‘chirilsinmi?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ta fayl o‘chirib tashlansinmi?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ta jild ichidagi kontentlari bilan o‘chirib tashlansinmi?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ta jild ichidagi kontentlari bilan o‘chirib tashlansinmi?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ta element o‘chirib tashlansinmi?</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ta element o‘chirib tashlansinmi?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-vi/strings.xml b/packages/DocumentsUI/res/values-vi/strings.xml
deleted file mode 100644
index 37f29a8..0000000
--- a/packages/DocumentsUI/res/values-vi/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Tệp"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Tải xuống"</string>
-    <string name="title_open" msgid="4353228937663917801">"Mở từ"</string>
-    <string name="title_save" msgid="2433679664882857999">"Lưu vào"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Thư mục mới"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Chế độ xem lưới"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Chế độ xem danh sách"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Sắp xếp theo"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Tìm kiếm"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Cài đặt bộ nhớ"</string>
-    <string name="menu_open" msgid="432922957274920903">"Mở"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Lưu"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Chia sẻ"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Xóa"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Chọn tất cả"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Sao chép vào…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Chuyển tới..."</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Cửa sổ mới"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Cắt"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Sao chép"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Dán"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Hiển thị bộ nhớ trong"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Ẩn bộ nhớ trong"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Hiển thị kích thước tệp"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Ẩn kích thước tệp"</string>
-    <string name="button_select" msgid="527196987259139214">"Chọn"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Sao chép"</string>
-    <string name="button_move" msgid="2202666023104202232">"Di chuyển"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Loại bỏ"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Thử lại"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Theo tên"</string>
-    <string name="sort_date" msgid="586080032956151448">"Theo ngày sửa đổi"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Theo kích thước"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Hiển thị gốc"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Ẩn gốc"</string>
-    <string name="save_error" msgid="6167009778003223664">"Không lưu tài liệu được"</string>
-    <string name="create_error" msgid="3735649141335444215">"Không thể tạo thư mục"</string>
-    <string name="query_error" msgid="5999895349602476581">"Không thể tải nội dung vào lúc này"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Gần đây"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> còn trống"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Dịch vụ lưu trữ"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Lối tắt"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Thiết bị"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Các ứng dụng khác"</string>
-    <string name="empty" msgid="7858882803708117596">"Không có mục nào"</string>
-    <string name="no_results" msgid="6622510343880730446">"Không có kết quả phù hợp trong %1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Không thể mở tệp"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Không thể xóa một số tài liệu"</string>
-    <string name="share_via" msgid="8966594246261344259">"Chia sẻ qua"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Đang sao chép tệp"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Đang di chuyển tệp"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Đang xóa tệp"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"Còn <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">Đang sao chép <xliff:g id="COUNT_1">%1$d</xliff:g> tệp.</item>
-      <item quantity="one">Đang sao chép <xliff:g id="COUNT_0">%1$d</xliff:g> tệp.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">Đang di chuyển <xliff:g id="COUNT_1">%1$d</xliff:g> tệp.</item>
-      <item quantity="one">Đang di chuyển <xliff:g id="COUNT_0">%1$d</xliff:g> tệp.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">Xóa <xliff:g id="COUNT_1">%1$d</xliff:g> tệp.</item>
-      <item quantity="one">Xóa <xliff:g id="COUNT_0">%1$d</xliff:g> tệp.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Hoàn tác"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Đang chuẩn bị sao chép…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Đang chuẩn bị di chuyển…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Đang chuẩn bị xóa…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">Không thể sao chép <xliff:g id="COUNT_1">%1$d</xliff:g> tệp</item>
-      <item quantity="one">Không thể sao chép <xliff:g id="COUNT_0">%1$d</xliff:g> tệp</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">Không thể di chuyển <xliff:g id="COUNT_1">%1$d</xliff:g> tệp</item>
-      <item quantity="one">Không thể di chuyển <xliff:g id="COUNT_0">%1$d</xliff:g> tệp</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">Không thể xóa <xliff:g id="COUNT_1">%1$d</xliff:g> tệp</item>
-      <item quantity="one">Không thể xóa <xliff:g id="COUNT_0">%1$d</xliff:g> tệp</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Nhấn để xem chi tiết"</string>
-    <string name="close" msgid="3043722427445528732">"Đóng"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Những tệp này chưa được sao chép: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Những tệp này chưa được di chuyển: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Những tệp này chưa được xóa: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Các tệp này đã được chuyển đổi sang định dạng khác: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">Đã sao chép <xliff:g id="COUNT_1">%1$d</xliff:g> tệp vào khay nhớ tạm.</item>
-      <item quantity="one">Đã sao chép <xliff:g id="COUNT_0">%1$d</xliff:g> tệp vào khay nhớ tạm.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Không thể dán các tệp đã chọn vào vị trí này."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Đổi tên"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Không đổi được tên tài liệu"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Đẩy ra"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Đã chuyển đổi một số tệp"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Cấp cho <xliff:g id="APPNAME"><b>^1</b></xliff:g> quyền truy cập vào thư mục <xliff:g id="DIRECTORY"><i>^2</i></xliff:g> trong <xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Cấp cho <xliff:g id="APPNAME"><b>^1</b></xliff:g> quyền truy cập thư mục <xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Cấp cho <xliff:g id="APPNAME"><b>^1</b></xliff:g> quyền truy cập vào dữ liệu của bạn, kể cả ảnh và video trên <xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Không hỏi lại"</string>
-    <string name="allow" msgid="7225948811296386551">"Cho phép"</string>
-    <string name="deny" msgid="2081879885755434506">"Từ chối"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other">Đã chọn <xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="one">Đã chọn <xliff:g id="COUNT_0">%1$d</xliff:g></item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> mục</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> mục</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Xóa \"<xliff:g id="NAME">%1$s</xliff:g>\"?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Xóa thư mục \"<xliff:g id="NAME">%1$s</xliff:g>\" và nội dung của thư mục?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">Xóa <xliff:g id="COUNT_1">%1$d</xliff:g> tệp?</item>
-      <item quantity="one">Xóa <xliff:g id="COUNT_0">%1$d</xliff:g> tệp?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">Xóa <xliff:g id="COUNT_1">%1$d</xliff:g> thư mục và nội dung trong đó?</item>
-      <item quantity="one">Xóa <xliff:g id="COUNT_0">%1$d</xliff:g> thư mục và nội dung trong đó?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">Xóa <xliff:g id="COUNT_1">%1$d</xliff:g> mục?</item>
-      <item quantity="one">Xóa <xliff:g id="COUNT_0">%1$d</xliff:g> mục?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-zh-rCN/strings.xml b/packages/DocumentsUI/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 61f125b..0000000
--- a/packages/DocumentsUI/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"文件"</string>
-    <string name="downloads_label" msgid="959113951084633612">"下载"</string>
-    <string name="title_open" msgid="4353228937663917801">"打开文件"</string>
-    <string name="title_save" msgid="2433679664882857999">"保存文件"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"新建文件夹"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"网格视图"</string>
-    <string name="menu_list" msgid="7279285939892417279">"列表视图"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"排序依据"</string>
-    <string name="menu_search" msgid="3816712084502856974">"搜索"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"存储设置"</string>
-    <string name="menu_open" msgid="432922957274920903">"打开"</string>
-    <string name="menu_save" msgid="2394743337684426338">"保存"</string>
-    <string name="menu_share" msgid="3075149983979628146">"分享"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"删除"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"全选"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"复制到…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"移动到…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"新建窗口"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"剪切"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"复制"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"粘贴"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"显示内部存储设备"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"隐藏内部存储设备"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"显示文件大小"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"隐藏文件大小"</string>
-    <string name="button_select" msgid="527196987259139214">"选择"</string>
-    <string name="button_copy" msgid="8706475544635021302">"复制"</string>
-    <string name="button_move" msgid="2202666023104202232">"移动"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"关闭"</string>
-    <string name="button_retry" msgid="4392027584153752797">"重试"</string>
-    <string name="sort_name" msgid="9183560467917256779">"按名称"</string>
-    <string name="sort_date" msgid="586080032956151448">"按修改日期"</string>
-    <string name="sort_size" msgid="3350681319735474741">"按大小"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"显示根目录"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"隐藏根目录"</string>
-    <string name="save_error" msgid="6167009778003223664">"无法保存文档"</string>
-    <string name="create_error" msgid="3735649141335444215">"无法创建文件夹"</string>
-    <string name="query_error" msgid="5999895349602476581">"暂时无法加载内容"</string>
-    <string name="root_recent" msgid="4470053704320518133">"最近"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"可用空间:<xliff:g id="SIZE">%1$s</xliff:g>"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"存储服务"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"捷径"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"设备"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"更多应用"</string>
-    <string name="empty" msgid="7858882803708117596">"无任何文件"</string>
-    <string name="no_results" msgid="6622510343880730446">"%1$s中没有任何相符项"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"无法打开文件"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"无法删除部分文档"</string>
-    <string name="share_via" msgid="8966594246261344259">"分享方式"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"正在复制文件"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"正在移动文件"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"正在删除文件"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"剩余时间:<xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">正在复制 <xliff:g id="COUNT_1">%1$d</xliff:g> 个文件。</item>
-      <item quantity="one">正在复制 <xliff:g id="COUNT_0">%1$d</xliff:g> 个文件。</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">正在移动 <xliff:g id="COUNT_1">%1$d</xliff:g> 个文件。</item>
-      <item quantity="one">正在移动 <xliff:g id="COUNT_0">%1$d</xliff:g> 个文件。</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">正在删除 <xliff:g id="COUNT_1">%1$d</xliff:g> 个文件。</item>
-      <item quantity="one">正在删除 <xliff:g id="COUNT_0">%1$d</xliff:g> 个文件。</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"撤消"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"正在准备复制…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"正在准备移动…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"正在准备删除…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">无法复制 <xliff:g id="COUNT_1">%1$d</xliff:g> 个文件</item>
-      <item quantity="one">无法复制 <xliff:g id="COUNT_0">%1$d</xliff:g> 个文件</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">无法移动 <xliff:g id="COUNT_1">%1$d</xliff:g> 个文件</item>
-      <item quantity="one">无法移动 <xliff:g id="COUNT_0">%1$d</xliff:g> 个文件</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">无法删除 <xliff:g id="COUNT_1">%1$d</xliff:g> 个文件</item>
-      <item quantity="one">无法删除 <xliff:g id="COUNT_0">%1$d</xliff:g> 个文件</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"点按即可查看详情"</string>
-    <string name="close" msgid="3043722427445528732">"关闭"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"无法复制以下文件:<xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"无法移动以下文件:<xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"未能删除以下文件:<xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"下列文件已转换成其他格式:<xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">已将 <xliff:g id="COUNT_1">%1$d</xliff:g> 个文件复制到剪贴板。</item>
-      <item quantity="one">已将 <xliff:g id="COUNT_0">%1$d</xliff:g> 个文件复制到剪贴板。</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"无法将所选文件粘贴到此位置。"</string>
-    <string name="menu_rename" msgid="7678802479104285353">"重命名"</string>
-    <string name="rename_error" msgid="4203041674883412606">"无法重命名文档"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"弹出"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"部分文件已转换成其他格式"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"要授权<xliff:g id="APPNAME"><b>^1</b></xliff:g>访问 <xliff:g id="STORAGE"><i>^3</i></xliff:g>上的“<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>”目录吗?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"要授权<xliff:g id="APPNAME"><b>^1</b></xliff:g>访问“<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>”目录吗?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"要授权<xliff:g id="APPNAME"><b>^1</b></xliff:g>访问您 <xliff:g id="STORAGE"><i>^2</i></xliff:g>上的数据(包括照片和视频)吗?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"不再询问"</string>
-    <string name="allow" msgid="7225948811296386551">"允许"</string>
-    <string name="deny" msgid="2081879885755434506">"拒绝"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other">已选择 <xliff:g id="COUNT_1">%1$d</xliff:g> 项</item>
-      <item quantity="one">已选择 <xliff:g id="COUNT_0">%1$d</xliff:g> 项</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> 项</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> 项</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"确定要删除“<xliff:g id="NAME">%1$s</xliff:g>”吗?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"要删除文件夹“<xliff:g id="NAME">%1$s</xliff:g>”及其中的内容吗?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">删除 <xliff:g id="COUNT_1">%1$d</xliff:g> 个文件?</item>
-      <item quantity="one">删除 <xliff:g id="COUNT_0">%1$d</xliff:g> 个文件?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">删除 <xliff:g id="COUNT_1">%1$d</xliff:g> 个文件夹及其中的内容?</item>
-      <item quantity="one">删除 <xliff:g id="COUNT_0">%1$d</xliff:g> 个文件夹及其中的内容?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">删除 <xliff:g id="COUNT_1">%1$d</xliff:g> 项?</item>
-      <item quantity="one">删除 <xliff:g id="COUNT_0">%1$d</xliff:g> 项?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-zh-rHK/strings.xml b/packages/DocumentsUI/res/values-zh-rHK/strings.xml
deleted file mode 100644
index 5fcf5af..0000000
--- a/packages/DocumentsUI/res/values-zh-rHK/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"檔案"</string>
-    <string name="downloads_label" msgid="959113951084633612">"下載"</string>
-    <string name="title_open" msgid="4353228937663917801">"開啟檔案"</string>
-    <string name="title_save" msgid="2433679664882857999">"儲存至"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"新增資料夾"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"格狀檢視"</string>
-    <string name="menu_list" msgid="7279285939892417279">"清單檢視"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"排序方式"</string>
-    <string name="menu_search" msgid="3816712084502856974">"搜尋"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"儲存空間設定"</string>
-    <string name="menu_open" msgid="432922957274920903">"開啟"</string>
-    <string name="menu_save" msgid="2394743337684426338">"儲存"</string>
-    <string name="menu_share" msgid="3075149983979628146">"分享"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"刪除"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"全部選取"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"複製到…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"移至…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"新視窗"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"剪下"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"複製"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"貼上"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"顯示內部儲存空間"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"隱藏內部儲存空間"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"顯示檔案大小"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"隱藏檔案大小"</string>
-    <string name="button_select" msgid="527196987259139214">"選取"</string>
-    <string name="button_copy" msgid="8706475544635021302">"複製"</string>
-    <string name="button_move" msgid="2202666023104202232">"移動"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"關閉"</string>
-    <string name="button_retry" msgid="4392027584153752797">"再試一次"</string>
-    <string name="sort_name" msgid="9183560467917256779">"按名稱"</string>
-    <string name="sort_date" msgid="586080032956151448">"按修改日期"</string>
-    <string name="sort_size" msgid="3350681319735474741">"按大小"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"顯示根目錄"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"隱藏根目錄"</string>
-    <string name="save_error" msgid="6167009778003223664">"無法儲存文件"</string>
-    <string name="create_error" msgid="3735649141335444215">"無法建立資料夾"</string>
-    <string name="query_error" msgid="5999895349602476581">"目前無法載入內容"</string>
-    <string name="root_recent" msgid="4470053704320518133">"最近"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"可用空間:<xliff:g id="SIZE">%1$s</xliff:g>"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"儲存空間服務"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"捷徑"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"裝置"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"更多應用程式"</string>
-    <string name="empty" msgid="7858882803708117596">"沒有項目"</string>
-    <string name="no_results" msgid="6622510343880730446">"「%1$s」中沒有相符結果"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"無法開啟檔案"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"無法刪除部分文件"</string>
-    <string name="share_via" msgid="8966594246261344259">"分享方式:"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"正在複製檔案"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"正在移動檔案"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"正在刪除檔案"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"剩餘 <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">正在複製 <xliff:g id="COUNT_1">%1$d</xliff:g> 個檔案。</item>
-      <item quantity="one">正在複製 <xliff:g id="COUNT_0">%1$d</xliff:g> 個檔案。</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">正在轉移 <xliff:g id="COUNT_1">%1$d</xliff:g> 個檔案。</item>
-      <item quantity="one">正在轉移 <xliff:g id="COUNT_0">%1$d</xliff:g> 個檔案。</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">正在刪除 <xliff:g id="COUNT_1">%1$d</xliff:g> 個檔案。</item>
-      <item quantity="one">正在刪除 <xliff:g id="COUNT_0">%1$d</xliff:g> 個檔案。</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"復原"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"正在準備複製…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"正在準備移動…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"正在準備刪除…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"第 <xliff:g id="COUNT_0">%1$d</xliff:g> 個,共 <xliff:g id="TOTALCOUNT">%2$d</xliff:g> 個"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">無法複製 <xliff:g id="COUNT_1">%1$d</xliff:g> 個檔案</item>
-      <item quantity="one">無法複製 <xliff:g id="COUNT_0">%1$d</xliff:g> 個檔案</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">無法移動 <xliff:g id="COUNT_1">%1$d</xliff:g> 個檔案</item>
-      <item quantity="one">無法移動 <xliff:g id="COUNT_0">%1$d</xliff:g> 個檔案</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">無法刪除 <xliff:g id="COUNT_1">%1$d</xliff:g> 個檔案</item>
-      <item quantity="one">無法刪除 <xliff:g id="COUNT_0">%1$d</xliff:g> 個檔案</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"輕按即可查看詳細資訊"</string>
-    <string name="close" msgid="3043722427445528732">"關閉"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"以下檔案未能複製:<xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"以下檔案未能移動:<xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"無法刪除以下檔案:<xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"這些檔案已轉換成其他格式:<xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">已複製 <xliff:g id="COUNT_1">%1$d</xliff:g> 個檔案到剪貼簿。</item>
-      <item quantity="one">已複製 <xliff:g id="COUNT_0">%1$d</xliff:g> 個檔案到剪貼簿。</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"無法在此位置貼上選取檔案。"</string>
-    <string name="menu_rename" msgid="7678802479104285353">"重新命名"</string>
-    <string name="rename_error" msgid="4203041674883412606">"無法重新命名文件"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"逐出"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"部分檔案已轉換成其他格式"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"要為「<xliff:g id="APPNAME"><b>^1</b></xliff:g>」開放 <xliff:g id="STORAGE"><i>^3</i></xliff:g>上的「<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>」目錄存取權嗎?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"要為「<xliff:g id="APPNAME"><b>^1</b></xliff:g>」開放「<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>」目錄的存取權嗎?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"要向「<xliff:g id="APPNAME"><b>^1</b></xliff:g>」開放 <xliff:g id="STORAGE"><i>^2</i></xliff:g>上的相片和影片等資料的存取權嗎?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"不要再詢問"</string>
-    <string name="allow" msgid="7225948811296386551">"允許"</string>
-    <string name="deny" msgid="2081879885755434506">"拒絕"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other">已選取 <xliff:g id="COUNT_1">%1$d</xliff:g> 個項目</item>
-      <item quantity="one">已選取 <xliff:g id="COUNT_0">%1$d</xliff:g> 個項目</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> 個項目</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> 個項目</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"要刪除「<xliff:g id="NAME">%1$s</xliff:g>」嗎?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"要刪除「<xliff:g id="NAME">%1$s</xliff:g>」資料夾及其內容嗎?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">要刪除 <xliff:g id="COUNT_1">%1$d</xliff:g> 個檔案嗎?</item>
-      <item quantity="one">要刪除 <xliff:g id="COUNT_0">%1$d</xliff:g> 個檔案嗎?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">要刪除 <xliff:g id="COUNT_1">%1$d</xliff:g> 個資料夾及其內容嗎?</item>
-      <item quantity="one">要刪除 <xliff:g id="COUNT_0">%1$d</xliff:g> 個資料夾及其內容嗎?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">要刪除 <xliff:g id="COUNT_1">%1$d</xliff:g> 個項目嗎?</item>
-      <item quantity="one">要刪除 <xliff:g id="COUNT_0">%1$d</xliff:g> 個項目嗎?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-zh-rTW/strings.xml b/packages/DocumentsUI/res/values-zh-rTW/strings.xml
deleted file mode 100644
index baa6df9..0000000
--- a/packages/DocumentsUI/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"檔案"</string>
-    <string name="downloads_label" msgid="959113951084633612">"下載"</string>
-    <string name="title_open" msgid="4353228937663917801">"開啟檔案"</string>
-    <string name="title_save" msgid="2433679664882857999">"儲存至"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"新增資料夾"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"格狀檢視"</string>
-    <string name="menu_list" msgid="7279285939892417279">"清單檢視"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"排序依據"</string>
-    <string name="menu_search" msgid="3816712084502856974">"搜尋"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Storage 設定"</string>
-    <string name="menu_open" msgid="432922957274920903">"開啟"</string>
-    <string name="menu_save" msgid="2394743337684426338">"儲存"</string>
-    <string name="menu_share" msgid="3075149983979628146">"共用"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"刪除"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"全選"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"複製到…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"移至…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"新增視窗"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"剪下"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"複製"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"貼上"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"顯示內部儲存空間"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"隱藏內部儲存空間"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"顯示檔案大小"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"隱藏檔案大小"</string>
-    <string name="button_select" msgid="527196987259139214">"選取"</string>
-    <string name="button_copy" msgid="8706475544635021302">"複製"</string>
-    <string name="button_move" msgid="2202666023104202232">"移動"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"關閉"</string>
-    <string name="button_retry" msgid="4392027584153752797">"再試一次"</string>
-    <string name="sort_name" msgid="9183560467917256779">"依名稱"</string>
-    <string name="sort_date" msgid="586080032956151448">"依修改日期"</string>
-    <string name="sort_size" msgid="3350681319735474741">"依大小"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"顯示根目錄"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"隱藏根目錄"</string>
-    <string name="save_error" msgid="6167009778003223664">"無法儲存文件"</string>
-    <string name="create_error" msgid="3735649141335444215">"無法建立資料夾"</string>
-    <string name="query_error" msgid="5999895349602476581">"目前無法載入內容"</string>
-    <string name="root_recent" msgid="4470053704320518133">"最近"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"可用空間:<xliff:g id="SIZE">%1$s</xliff:g>"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"儲存空間服務"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"捷徑"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"裝置"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"更多應用程式"</string>
-    <string name="empty" msgid="7858882803708117596">"沒有任何項目"</string>
-    <string name="no_results" msgid="6622510343880730446">"沒有與「%1$s」相符的結果"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"無法開啟檔案"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"無法刪除部分文件"</string>
-    <string name="share_via" msgid="8966594246261344259">"分享方式:"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"複製檔案"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"正在移動檔案"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"正在刪除檔案"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"剩餘 <xliff:g id="DURATION">%s</xliff:g>"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="other">正在複製 <xliff:g id="COUNT_1">%1$d</xliff:g> 個檔案。</item>
-      <item quantity="one">正在複製 <xliff:g id="COUNT_0">%1$d</xliff:g> 個檔案。</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="other">正在移動 <xliff:g id="COUNT_1">%1$d</xliff:g> 個檔案。</item>
-      <item quantity="one">正在移動 <xliff:g id="COUNT_0">%1$d</xliff:g> 個檔案。</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="other">正在刪除 <xliff:g id="COUNT_1">%1$d</xliff:g> 個檔案。</item>
-      <item quantity="one">正在刪除 <xliff:g id="COUNT_0">%1$d</xliff:g> 個檔案。</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"復原"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"正在準備複製…"</string>
-    <string name="move_preparing" msgid="2772219441375531410">"準備移動…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"正在準備刪除…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g>/<xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="other">無法複製 <xliff:g id="COUNT_1">%1$d</xliff:g> 個檔案</item>
-      <item quantity="one">無法複製 <xliff:g id="COUNT_0">%1$d</xliff:g> 個檔案</item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="other">無法移動 <xliff:g id="COUNT_1">%1$d</xliff:g> 個檔案</item>
-      <item quantity="one">無法移動 <xliff:g id="COUNT_0">%1$d</xliff:g> 個檔案</item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="other">無法刪除 <xliff:g id="COUNT_1">%1$d</xliff:g> 個檔案</item>
-      <item quantity="one">無法刪除 <xliff:g id="COUNT_0">%1$d</xliff:g> 個檔案</item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"輕觸即可查看詳細資訊"</string>
-    <string name="close" msgid="3043722427445528732">"關閉"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"未複製下列檔案:<xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"未移動下列檔案:<xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"未刪除下列檔案:<xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"下列檔案已轉換成其他格式:<xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="other">已將 <xliff:g id="COUNT_1">%1$d</xliff:g> 個檔案複製到剪貼簿。</item>
-      <item quantity="one">已將 <xliff:g id="COUNT_0">%1$d</xliff:g> 個檔案複製到剪貼簿。</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"無法將所選檔案貼到這個位置。"</string>
-    <string name="menu_rename" msgid="7678802479104285353">"重新命名"</string>
-    <string name="rename_error" msgid="4203041674883412606">"無法重新命名文件"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"退出"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"部分檔案已轉換成其他格式"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"要允許<xliff:g id="APPNAME"><b>^1</b></xliff:g>存取 <xliff:g id="STORAGE"><i>^3</i></xliff:g>上的「<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>」目錄嗎?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"要允許<xliff:g id="APPNAME"><b>^1</b></xliff:g>存取「<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>」目錄嗎?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"要允許「<xliff:g id="APPNAME"><b>^1</b></xliff:g>」存取 <xliff:g id="STORAGE"><i>^2</i></xliff:g>上的資料 (包括相片和影片) 嗎?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"不要再詢問"</string>
-    <string name="allow" msgid="7225948811296386551">"允許"</string>
-    <string name="deny" msgid="2081879885755434506">"拒絕"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="other">已選取 <xliff:g id="COUNT_1">%1$d</xliff:g> 個項目</item>
-      <item quantity="one">已選取 <xliff:g id="COUNT_0">%1$d</xliff:g> 個項目</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> 個項目</item>
-      <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> 個項目</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"要刪除「<xliff:g id="NAME">%1$s</xliff:g>」嗎?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"要刪除「<xliff:g id="NAME">%1$s</xliff:g>」資料夾和當中的內容嗎?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="other">要刪除 <xliff:g id="COUNT_1">%1$d</xliff:g> 個檔案嗎?</item>
-      <item quantity="one">要刪除 <xliff:g id="COUNT_0">%1$d</xliff:g> 個檔案嗎?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="other">要刪除 <xliff:g id="COUNT_1">%1$d</xliff:g> 個資料夾和當中的內容嗎?</item>
-      <item quantity="one">要刪除 <xliff:g id="COUNT_0">%1$d</xliff:g> 個資料夾和當中的內容嗎?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="other">要刪除 <xliff:g id="COUNT_1">%1$d</xliff:g> 個項目嗎?</item>
-      <item quantity="one">要刪除 <xliff:g id="COUNT_0">%1$d</xliff:g> 個項目嗎?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values-zu/strings.xml b/packages/DocumentsUI/res/values-zu/strings.xml
deleted file mode 100644
index 1177941..0000000
--- a/packages/DocumentsUI/res/values-zu/strings.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--  Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="1551050262492398204">"Amafayela"</string>
-    <string name="downloads_label" msgid="959113951084633612">"Okulandiwe"</string>
-    <string name="title_open" msgid="4353228937663917801">"Vula kusuka ku-"</string>
-    <string name="title_save" msgid="2433679664882857999">"Londoloza ku-"</string>
-    <string name="menu_create_dir" msgid="2547620241173881754">"Ifolda entsha"</string>
-    <string name="menu_grid" msgid="6878021334497835259">"Ukubuka kwegridi"</string>
-    <string name="menu_list" msgid="7279285939892417279">"Ukubuka uhlu"</string>
-    <string name="menu_sort" msgid="7677740407158414452">"Hlunga nge-"</string>
-    <string name="menu_search" msgid="3816712084502856974">"Sesha"</string>
-    <string name="menu_settings" msgid="8239065133341597825">"Izilungiselelo zesitoreji"</string>
-    <string name="menu_open" msgid="432922957274920903">"Vula"</string>
-    <string name="menu_save" msgid="2394743337684426338">"Londoloza"</string>
-    <string name="menu_share" msgid="3075149983979628146">"Yabelana"</string>
-    <string name="menu_delete" msgid="8138799623850614177">"Susa"</string>
-    <string name="menu_select_all" msgid="8323579667348729928">"Khetha konke"</string>
-    <string name="menu_copy" msgid="3612326052677229148">"Kopishela ku…"</string>
-    <string name="menu_move" msgid="1828090633118079817">"Hambisa ku…"</string>
-    <string name="menu_new_window" msgid="1226032889278727538">"Iwindi elisha"</string>
-    <string name="menu_cut_to_clipboard" msgid="2467149185452488383">"Sika"</string>
-    <string name="menu_copy_to_clipboard" msgid="489311381979634291">"Kopisha"</string>
-    <string name="menu_paste_from_clipboard" msgid="2071583031180257091">"Namathisela"</string>
-    <string name="menu_advanced_show" msgid="4693652895715631401">"Bonisa isitoreji sangaphakathi"</string>
-    <string name="menu_advanced_hide" msgid="4218809952721972589">"Fihla isitoreji sangaphakathi"</string>
-    <string name="menu_file_size_show" msgid="3240323619260823076">"Bonisa usayizi wefayela"</string>
-    <string name="menu_file_size_hide" msgid="8881975928502581042">"Fihla usayizi wefayela"</string>
-    <string name="button_select" msgid="527196987259139214">"Khetha"</string>
-    <string name="button_copy" msgid="8706475544635021302">"Kopisha"</string>
-    <string name="button_move" msgid="2202666023104202232">"Hambisa"</string>
-    <string name="button_dismiss" msgid="3714065566893946085">"Cashisa"</string>
-    <string name="button_retry" msgid="4392027584153752797">"Zama futhi"</string>
-    <string name="sort_name" msgid="9183560467917256779">"Ngegama"</string>
-    <string name="sort_date" msgid="586080032956151448">"Ngedethi yokuguqula"</string>
-    <string name="sort_size" msgid="3350681319735474741">"Ngosayizi"</string>
-    <string name="drawer_open" msgid="4545466532430226949">"Bonisa izimpande"</string>
-    <string name="drawer_close" msgid="7602734368552123318">"Fihla izimpande"</string>
-    <string name="save_error" msgid="6167009778003223664">"Yehlulekile ukulondoloza idokhumenti"</string>
-    <string name="create_error" msgid="3735649141335444215">"Yehlulekile ukudala ifolda"</string>
-    <string name="query_error" msgid="5999895349602476581">"Ayikwazanga ukulayisha okuqukethwe okwamanje"</string>
-    <string name="root_recent" msgid="4470053704320518133">"Okwakamuva"</string>
-    <string name="root_available_bytes" msgid="8568452858617033281">"<xliff:g id="SIZE">%1$s</xliff:g> okhululekile"</string>
-    <string name="root_type_service" msgid="2178854894416775409">"Amasevisi wesitoreji"</string>
-    <string name="root_type_shortcut" msgid="3318760609471618093">"Izinqamuleli"</string>
-    <string name="root_type_device" msgid="7121342474653483538">"Amadivayisi"</string>
-    <string name="root_type_apps" msgid="8838065367985945189">"Izinhlelo zokusebenza eziningi"</string>
-    <string name="empty" msgid="7858882803708117596">"Azikho izinto"</string>
-    <string name="no_results" msgid="6622510343880730446">"Akukho okufanayo ku-%1$s"</string>
-    <string name="toast_no_application" msgid="4632640357724698144">"Ayikwazanga ukuvula ifayela"</string>
-    <string name="toast_failed_delete" msgid="2180678019407244069">"Ayikwazi ukususa amanye amadokhumenti"</string>
-    <string name="share_via" msgid="8966594246261344259">"Yabelana nge-"</string>
-    <string name="copy_notification_title" msgid="6374299806748219777">"Ikopisha amafayela"</string>
-    <string name="move_notification_title" msgid="6193835179777284805">"Ihambisa amafayela"</string>
-    <string name="delete_notification_title" msgid="3329403967712437496">"Ukususa amafayela"</string>
-    <string name="copy_remaining" msgid="6283790937387975095">"<xliff:g id="DURATION">%s</xliff:g> okusele"</string>
-    <plurals name="copy_begin" formatted="false" msgid="9071199452634086365">
-      <item quantity="one">Ikopisha amafayela angu-<xliff:g id="COUNT_1">%1$d</xliff:g>.</item>
-      <item quantity="other">Ikopisha amafayela angu-<xliff:g id="COUNT_1">%1$d</xliff:g>.</item>
-    </plurals>
-    <plurals name="move_begin" formatted="false" msgid="8430330882138871643">
-      <item quantity="one">Ihambisa amafayela angu-<xliff:g id="COUNT_1">%1$d</xliff:g>.</item>
-      <item quantity="other">Ihambisa amafayela angu-<xliff:g id="COUNT_1">%1$d</xliff:g>.</item>
-    </plurals>
-    <plurals name="deleting" formatted="false" msgid="5054338566802559411">
-      <item quantity="one">Isusa amafayela angu-<xliff:g id="COUNT_1">%1$d</xliff:g>.</item>
-      <item quantity="other">Isusa amafayela angu-<xliff:g id="COUNT_1">%1$d</xliff:g>.</item>
-    </plurals>
-    <string name="undo" msgid="7905788502491742328">"Hlehlisa"</string>
-    <string name="copy_preparing" msgid="3896202461003039386">"Ilungiselela ukukopisha..."</string>
-    <string name="move_preparing" msgid="2772219441375531410">"Ilungiselela ukuhambisa…"</string>
-    <string name="delete_preparing" msgid="5655813182533491992">"Ilungiselela ukususa…"</string>
-    <string name="delete_progress" msgid="5399405983046157222">"<xliff:g id="COUNT_0">%1$d</xliff:g> / <xliff:g id="TOTALCOUNT">%2$d</xliff:g>"</string>
-    <plurals name="copy_error_notification_title" formatted="false" msgid="7160447124922897689">
-      <item quantity="one">Ayikwazanga ukukopisha amafayela angu-<xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="other">Ayikwazanga ukukopisha amafayela angu-<xliff:g id="COUNT_1">%1$d</xliff:g></item>
-    </plurals>
-    <plurals name="move_error_notification_title" formatted="false" msgid="2710901971014783012">
-      <item quantity="one">Ayikwazanga ukuhambisa amafayela angu-<xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="other">Ayikwazanga ukuhambisa amafayela angu-<xliff:g id="COUNT_1">%1$d</xliff:g></item>
-    </plurals>
-    <plurals name="delete_error_notification_title" formatted="false" msgid="7228393157786591199">
-      <item quantity="one">Ayikwazanga ukususa amafayela angu-<xliff:g id="COUNT_1">%1$d</xliff:g></item>
-      <item quantity="other">Ayikwazanga ukususa amafayela angu-<xliff:g id="COUNT_1">%1$d</xliff:g></item>
-    </plurals>
-    <string name="notification_touch_for_details" msgid="6268189413228855582">"Thepha ukuze ubuke imininingwane"</string>
-    <string name="close" msgid="3043722427445528732">"Vala"</string>
-    <string name="copy_failure_alert_content" msgid="4563147454522476183">"Lawo mafayela awakopishwanga: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="move_failure_alert_content" msgid="2635075788682922861">"Lawa mafayela awazange ahanjiswe: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="delete_failure_alert_content" msgid="892393767207938353">"Lawa mafayela awazange asuswe: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <string name="copy_converted_warning_content" msgid="5753861488218674361">"Lawo mafayela aguqulelwe kwenye ifomethi: <xliff:g id="LIST">%1$s</xliff:g>"</string>
-    <plurals name="clipboard_files_clipped" formatted="false" msgid="855459017537058539">
-      <item quantity="one">Kukopishwe amafayela angu-<xliff:g id="COUNT_1">%1$d</xliff:g> kubhodi lokunamathisela.</item>
-      <item quantity="other">Kukopishwe amafayela angu-<xliff:g id="COUNT_1">%1$d</xliff:g> kubhodi lokunamathisela.</item>
-    </plurals>
-    <string name="clipboard_files_cannot_paste" msgid="2878324825602325706">"Ayikwazi ukunamathisela amafayela akhethiwe kule ndawo."</string>
-    <string name="menu_rename" msgid="7678802479104285353">"Qamba kabusha"</string>
-    <string name="rename_error" msgid="4203041674883412606">"Yehlulekile ukuqamba kabusha idokhumenti"</string>
-    <string name="menu_eject_root" msgid="2768224615494227325">"Khipha"</string>
-    <string name="notification_copy_files_converted_title" msgid="3153573223054275181">"Amanye amafayela aguqulelwe"</string>
-    <string name="open_external_dialog_request" msgid="5789329484285817629">"Nika i-<xliff:g id="APPNAME"><b>^1</b></xliff:g> ukufinyelela ekuqondiseni kwe-<xliff:g id="DIRECTORY"><i>^2</i></xliff:g> ku-<xliff:g id="STORAGE"><i>^3</i></xliff:g>?"</string>
-    <string name="open_external_dialog_request_primary_volume" msgid="6635562535713428688">"Nika ukufinyelela kwe-<xliff:g id="APPNAME"><b>^1</b></xliff:g> kwinkomba ye-<xliff:g id="DIRECTORY"><i>^2</i></xliff:g>?"</string>
-    <string name="open_external_dialog_root_request" msgid="8899108702926347720">"Nikeza i-<xliff:g id="APPNAME"><b>^1</b></xliff:g> ukufinyelela kudatha yakho, okufaka izithombe namavidiyo, ku-<xliff:g id="STORAGE"><i>^2</i></xliff:g>?"</string>
-    <string name="never_ask_again" msgid="4295278542972859268">"Ungaphindi ubuze"</string>
-    <string name="allow" msgid="7225948811296386551">"Vumela"</string>
-    <string name="deny" msgid="2081879885755434506">"Yala"</string>
-    <plurals name="elements_selected" formatted="false" msgid="1376955402452875047">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> okukhethiwe</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> okukhethiwe</item>
-    </plurals>
-    <plurals name="elements_dragged" formatted="false" msgid="3727204615215602228">
-      <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> izinto</item>
-      <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> izinto</item>
-    </plurals>
-    <string name="delete_filename_confirmation_message" msgid="5312817725577537488">"Susa i-\"<xliff:g id="NAME">%1$s</xliff:g>\"?"</string>
-    <string name="delete_foldername_confirmation_message" msgid="5885501832257285329">"Susa ifolda engu-\"<xliff:g id="NAME">%1$s</xliff:g>\" nokuqukethwe kwalo?"</string>
-    <plurals name="delete_files_confirmation_message" formatted="false" msgid="8417505791395471802">
-      <item quantity="one">Susa amafayela angu-<xliff:g id="COUNT_1">%1$d</xliff:g>?</item>
-      <item quantity="other">Susa amafayela angu-<xliff:g id="COUNT_1">%1$d</xliff:g>?</item>
-    </plurals>
-    <plurals name="delete_folders_confirmation_message" formatted="false" msgid="9185648028213507769">
-      <item quantity="one">Susa amafolda angu-<xliff:g id="COUNT_1">%1$d</xliff:g> nokuqukethwe kwawo?</item>
-      <item quantity="other">Susa amafolda angu-<xliff:g id="COUNT_1">%1$d</xliff:g> nokuqukethwe kwawo?</item>
-    </plurals>
-    <plurals name="delete_items_confirmation_message" formatted="false" msgid="5376214433530243459">
-      <item quantity="one">Susa izinto ezingu-<xliff:g id="COUNT_1">%1$d</xliff:g>?</item>
-      <item quantity="other">Susa izinto ezingu-<xliff:g id="COUNT_1">%1$d</xliff:g>?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values/attrs.xml b/packages/DocumentsUI/res/values/attrs.xml
deleted file mode 100644
index 46ca582..0000000
--- a/packages/DocumentsUI/res/values/attrs.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-<resources>
-    <declare-styleable name="HighlightedItemView">
-        <attr name="state_highlighted" format="boolean"/>
-    </declare-styleable>
-</resources>
diff --git a/packages/DocumentsUI/res/values/colors.xml b/packages/DocumentsUI/res/values/colors.xml
deleted file mode 100644
index 9da7742..0000000
--- a/packages/DocumentsUI/res/values/colors.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-    <!-- This is the window background, but also the background for anything
-         else that needs to manually declare a background matching the "default"
-         app background (e.g. the drawer overlay). -->
-    <color name="window_background">#fff1f1f1</color>
-    <color name="drawer_background">#fff1f1f1</color>
-    <color name="directory_background">#fff7f7f7</color>
-    <color name="menu_search_background">@android:color/transparent</color>
-
-    <color name="primary_dark">@*android:color/primary_dark_device_default_settings</color>
-    <color name="primary">@*android:color/primary_device_default_settings</color>
-    <color name="accent">@*android:color/accent_device_default_light</color>
-    <color name="accent_dark">@*android:color/accent_device_default_dark</color>
-
-    <color name="band_select_background">#88ffffff</color>
-    <color name="band_select_border">#44000000</color>
-
-    <color name="root_activated_color">@*android:color/accent_device_default_700</color>
-
-    <!-- TODO: Would be nice to move this to a color-set, but not sure how to support animation -->
-    <color name="item_doc_background">#fffafafa</color>
-    <color name="item_doc_background_disabled">#fff4f4f4</color>
-    <color name="item_doc_background_selected">@*android:color/accent_device_default_50</color>
-    <color name="item_breadcrumb_background_hovered">#1affffff</color>
-
-</resources>
diff --git a/packages/DocumentsUI/res/values/config.xml b/packages/DocumentsUI/res/values/config.xml
deleted file mode 100644
index f883164..0000000
--- a/packages/DocumentsUI/res/values/config.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-    <!-- Allow Advanced Devices default value to be customised -->
-    <bool name="config_defaultAdvancedDevices">false</bool>
-
-    <!-- Intentionally unset. Vendors should set this in an overlay. -->
-    <string name="trusted_quick_viewer_package" translatable="false"></string>
-
-    <!-- Flags setup as productivity oriented in which case Downloads app will be presented
-             as Files app. Including showing of the Documents and "advanced" roots. -->
-    <bool name="productivity_device">false</bool>
-
-    <!-- Indicates if search view is taking the whole toolbar space -->
-    <bool name="full_bar_search_view">true</bool>
-
-</resources>
diff --git a/packages/DocumentsUI/res/values/dimens.xml b/packages/DocumentsUI/res/values/dimens.xml
deleted file mode 100644
index 7cda341..0000000
--- a/packages/DocumentsUI/res/values/dimens.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-    <dimen name="grid_container_padding">10dp</dimen>
-    <dimen name="list_container_padding">0dp</dimen>
-    <dimen name="icon_size">40dp</dimen>
-    <dimen name="root_icon_size">24dp</dimen>
-    <dimen name="root_icon_margin">0dp</dimen>
-    <dimen name="check_icon_size">30dp</dimen>
-    <dimen name="list_item_thumbnail_size">40dp</dimen>
-    <dimen name="grid_item_icon_size">30dp</dimen>
-    <dimen name="progress_bar_height">4dp</dimen>
-    <dimen name="grid_width">152dp</dimen>
-    <dimen name="grid_height">176dp</dimen>
-    <dimen name="grid_item_width">152dp</dimen>
-    <dimen name="grid_item_height">176dp</dimen>
-    <dimen name="grid_item_margin">4dp</dimen>
-    <dimen name="grid_padding_horiz">4dp</dimen>
-    <dimen name="grid_padding_vert">4dp</dimen>
-    <dimen name="list_item_height">72dp</dimen>
-    <dimen name="list_item_padding">16dp</dimen>
-    <dimen name="breadcrumb_item_padding">8dp</dimen>
-    <dimen name="breadcrumb_item_height">36dp</dimen>
-    <dimen name="list_divider_inset">72dp</dimen>
-    <dimen name="dir_elevation">8dp</dimen>
-    <dimen name="drag_shadow_size">120dp</dimen>
-    <dimen name="grid_item_elevation">2dp</dimen>
-    <dimen name="max_drawer_width">280dp</dimen>
-
-    <dimen name="drawer_edge_width">12dp</dimen>
-
-    <dimen name="drag_shadow_width">160dp</dimen>
-    <dimen name="drag_shadow_height">48dp</dimen>
-
-    <dimen name="autoscroll_edge_height">32dp</dimen>
-
-</resources>
diff --git a/packages/DocumentsUI/res/values/layouts.xml b/packages/DocumentsUI/res/values/layouts.xml
deleted file mode 100644
index a60ce87..0000000
--- a/packages/DocumentsUI/res/values/layouts.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2015 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-    <item name="documents_activity" type="layout">@layout/drawer_layout</item>
-    <item name="files_activity" type="layout">@layout/drawer_layout</item>
-</resources>
diff --git a/packages/DocumentsUI/res/values/strings.xml b/packages/DocumentsUI/res/values/strings.xml
deleted file mode 100644
index 416bb6f..0000000
--- a/packages/DocumentsUI/res/values/strings.xml
+++ /dev/null
@@ -1,256 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- Title of the documents application [CHAR LIMIT=32] -->
-    <string name="app_label">Files</string>
-
-    <!-- Title of the standalone downloads activity. [CHAR LIMIT=32] -->
-    <string name="downloads_label">Downloads</string>
-
-    <!-- Action bar title prompting user to choose a location to open a document from [CHAR LIMIT=32] -->
-    <string name="title_open">Open from</string>
-    <!-- Action bar title prompting user to choose a location to save a document to [CHAR LIMIT=32] -->
-    <string name="title_save">Save to</string>
-
-    <!-- Menu item that creates a new directory/folder at the current location [CHAR LIMIT=24] -->
-    <string name="menu_create_dir">New folder</string>
-    <!-- Menu item that switches view to show documents as a large-format grid of thumbnails [CHAR LIMIT=24] -->
-    <string name="menu_grid">Grid view</string>
-    <!-- Menu item that switches view to show documents as a list [CHAR LIMIT=24] -->
-    <string name="menu_list">List view</string>
-    <!-- Menu item that switches the criteria with which documents are sorted [CHAR LIMIT=24] -->
-    <string name="menu_sort">Sort by</string>
-    <!-- Menu item that enters a mode to search for documents [CHAR LIMIT=24] -->
-    <string name="menu_search">Search</string>
-    <!-- Menu item that enters activity to change settings for current root [CHAR LIMIT=24] -->
-    <string name="menu_settings">Storage settings</string>
-
-    <!-- Menu item title that opens the selected documents [CHAR LIMIT=24] -->
-    <string name="menu_open">Open</string>
-    <!-- Menu item title that saves the current document [CHAR LIMIT=24] -->
-    <string name="menu_save">Save</string>
-    <!-- Menu item title that shares the selected documents [CHAR LIMIT=24] -->
-    <string name="menu_share">Share</string>
-    <!-- Menu item title that deletes the selected documents [CHAR LIMIT=24] -->
-    <string name="menu_delete">Delete</string>
-    <!-- Menu item title that selects all documents in the current directory [CHAR LIMIT=24] -->
-    <string name="menu_select_all">Select all</string>
-    <!-- Menu item title that copies the selected documents [CHAR LIMIT=24] -->
-    <string name="menu_copy">Copy to\u2026</string>
-    <!-- Menu item title that moves the selected documents [CHAR LIMIT=24] -->
-    <string name="menu_move">Move to\u2026</string>
-
-    <!-- Menu item title that creates a new window in the activity [CHAR LIMIT=24] -->
-    <string name="menu_new_window">New window</string>
-    <!-- Menu item title that cuts the selected documents to clipboard [CHAR LIMIT=24] -->
-    <string name="menu_cut_to_clipboard">Cut</string>
-    <!-- Menu item title that copies the selected documents to clipboard [CHAR LIMIT=24] -->
-    <string name="menu_copy_to_clipboard">Copy</string>
-    <!-- Menu item title that pastes files from the clipboard [CHAR LIMIT=24] -->
-    <string name="menu_paste_from_clipboard">Paste</string>
-
-    <!-- Menu item that reveals internal storage built into the device [CHAR LIMIT=24] -->
-    <string name="menu_advanced_show">Show internal storage</string>
-    <!-- Menu item that hides internal storage built into the device [CHAR LIMIT=24] -->
-    <string name="menu_advanced_hide">Hide internal storage</string>
-
-    <!-- Menu item that reveals the sizes of displayed files [CHAR LIMIT=24] -->
-    <string name="menu_file_size_show">Show file size</string>
-    <!-- Menu item that hides the sizes of displayed files [CHAR LIMIT=24] -->
-    <string name="menu_file_size_hide">Hide file size</string>
-
-    <!-- Button label that select the current directory [CHAR LIMIT=24] -->
-    <string name="button_select">Select</string>
-    <!-- Button label that copies files to the current directory [CHAR LIMIT=24] -->
-    <string name="button_copy">Copy</string>
-    <!-- Button label that moves files to the current directory [CHAR LIMIT=24] -->
-    <string name="button_move">Move</string>
-    <!-- Button label that hides the error bar [CHAR LIMIT=24] -->
-    <string name="button_dismiss">Dismiss</string>
-    <string name="button_retry">Try Again</string>
-
-    <!-- Mode that sorts documents by their display name alphabetically [CHAR LIMIT=24] -->
-    <string name="sort_name">By name</string>
-    <!-- Mode that sorts documents by their last modified time in descending order; most recent first [CHAR LIMIT=24] -->
-    <string name="sort_date">By date modified</string>
-    <!-- Mode that sorts documents by their file size in descending order; largest first [CHAR LIMIT=24] -->
-    <string name="sort_size">By size</string>
-
-    <!-- Accessibility title to open the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
-    <string name="drawer_open">Show roots</string>
-    <!-- Accessibility title to close the drawer showing all roots where documents can be stored [CHAR LIMIT=32] -->
-    <string name="drawer_close">Hide roots</string>
-
-    <!-- Toast shown when saving a document failed with an error [CHAR LIMIT=48] -->
-    <string name="save_error">Failed to save document</string>
-    <!-- Toast shown when creating a folder failed with an error [CHAR LIMIT=48] -->
-    <string name="create_error">Failed to create folder</string>
-    <!-- Error message shown when querying for a list of documents failed [CHAR LIMIT=48] -->
-    <string name="query_error">Can\u2019t load content at the moment</string>
-
-    <!-- Title of storage root location that contains recently modified or used documents [CHAR LIMIT=24] -->
-    <string name="root_recent">Recent</string>
-    <!-- Subtitle of storage root indicating the total free space available, in bytes [CHAR LIMIT=24] -->
-    <string name="root_available_bytes"><xliff:g id="size" example="3GB">%1$s</xliff:g> free</string>
-
-    <!-- Header title for list of storage roots that contains cloud services [CHAR LIMIT=24] -->
-    <string name="root_type_service">Storage services</string>
-    <!-- Header title for list of storage roots that contains shortcuts to documents that may be available elsewhere [CHAR LIMIT=24] -->
-    <string name="root_type_shortcut">Shortcuts</string>
-    <!-- Header title for list of storage roots that contains physical devices [CHAR LIMIT=24] -->
-    <string name="root_type_device">Devices</string>
-    <!-- Header title for list of additional apps that can provide documents [CHAR LIMIT=24] -->
-    <string name="root_type_apps">More apps</string>
-
-    <!-- Text shown when a directory of documents is empty [CHAR LIMIT=24] -->
-    <string name="empty">No items</string>
-    <!-- Text shown when a file search returns no items [CHAR LIMIT=32] -->
-    <string name="no_results">No matches in %1$s</string>
-
-    <!-- Toast shown when no app can be found to open the selected document [CHAR LIMIT=48] -->
-    <string name="toast_no_application">Can\u2019t open file</string>
-    <!-- Toast shown when some of the selected documents failed to be deleted [CHAR LIMIT=48] -->
-    <string name="toast_failed_delete">Unable to delete some documents</string>
-
-    <!-- Title of dialog when prompting user to select an app to share documents with [CHAR LIMIT=32] -->
-    <string name="share_via">Share via</string>
-
-    <!-- Title of the copy notification [CHAR LIMIT=24] -->
-    <string name="copy_notification_title">Copying files</string>
-    <!-- Title of the move notification [CHAR LIMIT=24] -->
-    <string name="move_notification_title">Moving files</string>
-    <!-- Title of the move notification [CHAR LIMIT=24] -->
-    <string name="delete_notification_title">Deleting files</string>
-    <!-- Text shown on the copy notification to indicate remaining time, in minutes [CHAR LIMIT=24] -->
-    <string name="copy_remaining"><xliff:g id="duration" example="3 minutes">%s</xliff:g> left</string>
-    <!-- Toast shown when a file copy is kicked off -->
-    <plurals name="copy_begin">
-        <item quantity="one">Copying <xliff:g id="count" example="1">%1$d</xliff:g> file.</item>
-        <item quantity="other">Copying <xliff:g id="count" example="3">%1$d</xliff:g> files.</item>
-    </plurals>
-    <plurals name="move_begin">
-        <item quantity="one">Moving <xliff:g id="count" example="1">%1$d</xliff:g> file.</item>
-        <item quantity="other">Moving <xliff:g id="count" example="3">%1$d</xliff:g> files.</item>
-    </plurals>
-    <!-- Text shown when files are deleted -->
-    <plurals name="deleting">
-        <item quantity="one">Deleting <xliff:g id="count" example="1">%1$d</xliff:g> file.</item>
-        <item quantity="other">Deleting <xliff:g id="count" example="3">%1$d</xliff:g> files.</item>
-    </plurals>
-    <!-- Text shown for the undo button -->
-    <string name="undo">Undo</string>
-    <!-- Text shown on the notification while DocumentsUI performs setup in preparation for copying files [CHAR LIMIT=32] -->
-    <string name="copy_preparing">Preparing for copy\u2026</string>
-    <!-- Text shown on the notification while DocumentsUI performs setup in preparation for moving files [CHAR LIMIT=32] -->
-    <string name="move_preparing">Preparing for move\u2026</string>
-    <!-- Text shown on the notification while DocumentsUI performs setup in preparation for deleting files [CHAR LIMIT=32] -->
-    <string name="delete_preparing">Preparing for delete\u2026</string>
-    <!-- Text progress shown on the notification while DocumentsUI is deleting files. -->
-    <string name="delete_progress"><xliff:g id="count" example="3">%1$d</xliff:g> / <xliff:g id="totalCount" example="5">%2$d</xliff:g></string>
-    <!-- Title of the copy error notification [CHAR LIMIT=48] -->
-    <plurals name="copy_error_notification_title">
-        <item quantity="one">Couldn\u2019t copy <xliff:g id="count" example="1">%1$d</xliff:g> file</item>
-        <item quantity="other">Couldn\u2019t copy <xliff:g id="count" example="2">%1$d</xliff:g> files</item>
-    </plurals>
-    <!-- Title of the move error notification [CHAR LIMIT=48] -->
-    <plurals name="move_error_notification_title">
-        <item quantity="one">Couldn\u2019t move <xliff:g id="count" example="1">%1$d</xliff:g> file</item>
-        <item quantity="other">Couldn\u2019t move <xliff:g id="count" example="2">%1$d</xliff:g> files</item>
-    </plurals>
-    <!-- Title of the delete error notification [CHAR LIMIT=48] -->
-    <plurals name="delete_error_notification_title">
-        <item quantity="one">Couldn\u2019t delete <xliff:g id="count" example="1">%1$d</xliff:g> file</item>
-        <item quantity="other">Couldn\u2019t delete <xliff:g id="count" example="2">%1$d</xliff:g> files</item>
-    </plurals>
-    <!-- Second line for notifications saying that more information will be shown after touching [CHAR LIMIT=48] -->
-    <string name="notification_touch_for_details">Tap to view details</string>
-    <!-- Label of the close dialog button.[CHAR LIMIT=24] -->
-    <string name="close">Close</string>
-    <!-- Contents of the copying failure alert dialog. [CHAR LIMIT=48] -->
-    <string name="copy_failure_alert_content">These files weren\u2019t copied: <xliff:g id="list">%1$s</xliff:g></string>
-    <!-- Contents of the moving failure alert dialog. [CHAR LIMIT=48] -->
-    <string name="move_failure_alert_content">These files weren\u2019t moved: <xliff:g id="list">%1$s</xliff:g></string>
-    <!-- Message shown to users when an operation to delete one or more files has failed. Presented in a dialog. [CHAR LIMIT=48] -->
-    <string name="delete_failure_alert_content">These files weren\u2019t deleted: <xliff:g id="list">%1$s</xliff:g></string>
-    <!-- Contents of the copying warning dialog due to converted files. [CHAR LIMIT=64] -->
-    <string name="copy_converted_warning_content">These files were converted to another format: <xliff:g id="list" example="Document.pdf, Photo.jpg, Song.ogg">%1$s</xliff:g></string>
-    <!-- Toast shown when a user copies files to clipboard. -->
-    <plurals name="clipboard_files_clipped">
-        <item quantity="one">Copied <xliff:g id="count" example="1">%1$d</xliff:g> file to clipboard.</item>
-        <item quantity="other">Copied <xliff:g id="count" example="3">%1$d</xliff:g> files to clipboard.</item>
-    </plurals>
-    <!-- Toast shown when a user tries to paste files into an unsupported location. -->
-    <string name="clipboard_files_cannot_paste">Cannot paste the selected files in this location.</string>
-    <!-- Menu item that renames the selected document [CHAR LIMIT=24] -->
-    <string name="menu_rename">Rename</string>
-    <!-- Toast shown when renaming document failed with an error [CHAR LIMIT=48] -->
-    <string name="rename_error">Failed to rename document</string>
-    <!-- Context Menu item that ejects the root selected [CHAR LIMIT=24] -->
-    <string name="menu_eject_root">Eject</string>
-    <!-- First line for notifications saying that some files were converted to a different format
-         during a copy. [CHAR LIMIT=48] -->
-    <string name="notification_copy_files_converted_title">Some files were converted</string>
-
-    <!-- Text in an alert dialog asking user to grant app access to a given directory in an external storage volume -->
-    <string name="open_external_dialog_request">Grant <xliff:g id="appName" example="System Settings"><b>^1</b></xliff:g>
-        access to <xliff:g id="directory" example="Pictures"><i>^2</i></xliff:g> directory on
-        <xliff:g id="storage" example="SD Card"><i>^3</i></xliff:g>?</string>
-    <!-- Text in an alert dialog asking user to grant app access to a given directory in the internal storage -->
-    <string name="open_external_dialog_request_primary_volume">Grant <xliff:g id="appName" example="System Settings"><b>^1</b></xliff:g>
-        access to <xliff:g id="directory" example="Pictures"><i>^2</i></xliff:g> directory?</string>
-    <!-- Text in an alert dialog asking user to grant app access to all data in an external storage volume -->
-    <string name="open_external_dialog_root_request">Grant <xliff:g id="appName" example="System Settings"><b>^1</b></xliff:g>
-        access to your data, including photos and videos, on <xliff:g id="storage" example="SD Card"><i>^2</i></xliff:g>?</string>
-    <!-- Checkbox that allows user to not be questioned about the directory access request again -->
-    <string name="never_ask_again">Don\'t ask again</string>
-    <!-- Text in the button asking user to allow access to a given directory. -->
-    <string name="allow">Allow</string>
-    <!-- Text in the button asking user to deny access to a given directory. -->
-    <string name="deny">Deny</string>
-    <!-- Dialog text shown to users when asking if they want to delete files (a confirmation). -->
-    <!-- Label text showing user how many items are selected. Can be one or more elements. -->
-    <plurals name="elements_selected">
-        <item quantity="one"><xliff:g id="count" example="1">%1$d</xliff:g> selected</item>
-        <item quantity="other"><xliff:g id="count" example="3">%1$d</xliff:g> selected</item>
-    </plurals>
-
-    <!-- Label text showing user how many items are being dragged. Can be one or more elements. -->
-    <plurals name="elements_dragged">
-        <item quantity="one"><xliff:g id="count" example="1">%1$d</xliff:g> item</item>
-        <item quantity="other"><xliff:g id="count" example="3">%1$d</xliff:g> items</item>
-    </plurals>
-
-    <!-- Dialog text shown to users when asking if they want to delete a file (a confirmation) -->
-    <string name="delete_filename_confirmation_message">Delete \"<xliff:g id="name" example="cat.jpg">%1$s</xliff:g>\"?</string>
-    <!-- Dialog text shown to users when asking if they want to delete a folder (a confirmation) -->
-    <string name="delete_foldername_confirmation_message">Delete folder \"<xliff:g id="name" example="Photos">%1$s</xliff:g>\" and its contents?</string>
-    <!-- Dialog text shown to users when asking if they want to delete files (a confirmation). -->
-    <plurals name="delete_files_confirmation_message">
-        <item quantity="one">Delete <xliff:g id="count" example="1">%1$d</xliff:g> file?</item>
-        <item quantity="other">Delete <xliff:g id="count" example="3">%1$d</xliff:g> files?</item>
-    </plurals>
-    <!-- Dialog text shown to users when asking if they want to delete folders (a confirmation). -->
-    <plurals name="delete_folders_confirmation_message">
-        <item quantity="one">Delete <xliff:g id="count" example="1">%1$d</xliff:g> folder and its contents?</item>
-        <item quantity="other">Delete <xliff:g id="count" example="3">%1$d</xliff:g> folders and their contents?</item>
-    </plurals>
-    <!-- Dialog text shown to users when asking if they want to delete mixed type items: files and folders (a confirmation). -->
-    <plurals name="delete_items_confirmation_message">
-        <item quantity="one">Delete <xliff:g id="count" example="1">%1$d</xliff:g> item?</item>
-        <item quantity="other">Delete <xliff:g id="count" example="3">%1$d</xliff:g> items?</item>
-    </plurals>
-</resources>
diff --git a/packages/DocumentsUI/res/values/styles.xml b/packages/DocumentsUI/res/values/styles.xml
deleted file mode 100644
index b5e32d4..0000000
--- a/packages/DocumentsUI/res/values/styles.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <style name="ActionBarTheme" parent="@*android:style/ThemeOverlay.Material.Dark.ActionBar" />
-    <style name="ActionBarPopupTheme" parent="@*android:style/ThemeOverlay.Material.Light" />
-
-    <style name="DocumentsTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
-        <item name="actionBarWidgetTheme">@null</item>
-        <item name="actionBarTheme">@style/ActionBarTheme</item>
-        <item name="actionBarPopupTheme">@style/ActionBarPopupTheme</item>
-
-        <item name="android:windowBackground">@color/window_background</item>
-        <item name="android:colorPrimaryDark">@color/primary_dark</item>
-        <item name="android:colorPrimary">@color/primary</item>
-        <item name="android:colorAccent">@color/accent</item>
-        <item name="android:colorControlActivated">?android:attr/colorAccent</item>
-        <item name="android:queryBackground">@color/menu_search_background</item>
-
-        <item name="android:listDivider">@*android:drawable/list_divider_material</item>
-
-        <item name="android:windowActionBar">false</item>
-        <item name="android:windowActionModeOverlay">true</item>
-        <item name="android:windowNoTitle">true</item>
-
-        <item name="android:windowSoftInputMode">stateUnspecified|adjustUnspecified</item>
-    </style>
-
-    <style name="TrimmedHorizontalProgressBar" parent="android:Widget.Material.ProgressBar.Horizontal">
-        <item name="android:indeterminateDrawable">@drawable/progress_indeterminate_horizontal_material_trimmed</item>
-        <item name="android:minHeight">3dp</item>
-        <item name="android:maxHeight">3dp</item>
-    </style>
-
-</resources>
diff --git a/packages/DocumentsUI/res/values/tags.xml b/packages/DocumentsUI/res/values/tags.xml
deleted file mode 100644
index a7ff3d6..0000000
--- a/packages/DocumentsUI/res/values/tags.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<resources>
-    <item name="drag_hovering_tag" type="id" />
-    <item name="item_position_tag" type="id" />
-    <item name="layout_id_tag" type="id" />
-</resources>
\ No newline at end of file
diff --git a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
deleted file mode 100644
index d8d8d3e..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
+++ /dev/null
@@ -1,866 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.Shared.EXTRA_BENCHMARK;
-import static com.android.documentsui.State.ACTION_CREATE;
-import static com.android.documentsui.State.ACTION_GET_CONTENT;
-import static com.android.documentsui.State.ACTION_OPEN;
-import static com.android.documentsui.State.ACTION_OPEN_TREE;
-import static com.android.documentsui.State.ACTION_PICK_COPY_DESTINATION;
-import static com.android.documentsui.State.MODE_GRID;
-
-import android.app.Activity;
-import android.app.Fragment;
-import android.app.FragmentManager;
-import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.ProviderInfo;
-import android.database.ContentObserver;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.MessageQueue.IdleHandler;
-import android.provider.DocumentsContract;
-import android.provider.DocumentsContract.Root;
-import android.support.annotation.CallSuper;
-import android.support.annotation.LayoutRes;
-import android.support.annotation.Nullable;
-import android.util.Log;
-import android.view.KeyEvent;
-import android.view.Menu;
-import android.view.MenuItem;
-
-import com.android.documentsui.MenuManager.DirectoryDetails;
-import com.android.documentsui.NavigationViewManager.Breadcrumb;
-import com.android.documentsui.SearchViewManager.SearchManagerListener;
-import com.android.documentsui.State.ViewMode;
-import com.android.documentsui.dirlist.AnimationView;
-import com.android.documentsui.dirlist.DirectoryFragment;
-import com.android.documentsui.dirlist.FragmentTuner;
-import com.android.documentsui.dirlist.Model;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
-import com.android.documentsui.model.RootInfo;
-import com.android.documentsui.services.FileOperationService;
-import com.android.documentsui.services.FileOperations;
-
-import java.io.FileNotFoundException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
-import java.util.concurrent.Executor;
-
-public abstract class BaseActivity extends Activity
-        implements SearchManagerListener, NavigationViewManager.Environment {
-
-    public final FileOperations.Callback fileOpCallback = (status, opType, docCount) -> {
-        if (status == FileOperations.Callback.STATUS_REJECTED) {
-            Snackbars.showPasteFailed(this);
-            return;
-        }
-
-        if (docCount == 0) {
-            // Nothing has been pasted, so there is no need to show a snackbar.
-            return;
-        }
-
-        switch (opType) {
-            case FileOperationService.OPERATION_MOVE:
-                Snackbars.showMove(this, docCount);
-                break;
-            case FileOperationService.OPERATION_COPY:
-                Snackbars.showCopy(this, docCount);
-                break;
-            case FileOperationService.OPERATION_DELETE:
-                // We don't show anything for deletion.
-                break;
-            default:
-                throw new UnsupportedOperationException("Unsupported Operation: " + opType);
-        }
-    };
-
-    private static final String BENCHMARK_TESTING_PACKAGE = "com.android.documentsui.appperftests";
-
-    State mState;
-    @Nullable RetainedState mRetainedState;
-    RootsCache mRoots;
-    SearchViewManager mSearchManager;
-    DrawerController mDrawer;
-    NavigationViewManager mNavigator;
-    List<EventListener> mEventListeners = new ArrayList<>();
-
-    private final String mTag;
-    private final ContentObserver mRootsCacheObserver = new ContentObserver(new Handler()) {
-        @Override
-        public void onChange(boolean selfChange) {
-            new HandleRootsChangedTask(BaseActivity.this).execute(getCurrentRoot());
-        }
-    };
-
-    @LayoutRes
-    private int mLayoutId;
-
-    private boolean mNavDrawerHasFocus;
-    private long mStartTime;
-
-    public abstract void onDocumentPicked(DocumentInfo doc, Model model);
-    public abstract void onDocumentsPicked(List<DocumentInfo> docs);
-    public abstract FragmentTuner createFragmentTuner();
-    public abstract MenuManager getMenuManager();
-    public abstract DirectoryDetails getDirectoryDetails();
-
-    abstract void onTaskFinished(Uri... uris);
-    abstract void refreshDirectory(int anim);
-    /** Allows sub-classes to include information in a newly created State instance. */
-    abstract void includeState(State initialState);
-
-    public BaseActivity(@LayoutRes int layoutId, String tag) {
-        mLayoutId = layoutId;
-        mTag = tag;
-    }
-
-    @CallSuper
-    @Override
-    public void onCreate(Bundle icicle) {
-        // Record the time when onCreate is invoked for metric.
-        mStartTime = new Date().getTime();
-
-        super.onCreate(icicle);
-
-        final Intent intent = getIntent();
-
-        addListenerForLaunchCompletion();
-
-        setContentView(mLayoutId);
-
-        mDrawer = DrawerController.create(this);
-        mState = getState(icicle);
-        Metrics.logActivityLaunch(this, mState, intent);
-
-        // we're really interested in retainining state in our very complex
-        // DirectoryFragment. So we do a little code yoga to extend
-        // support to that fragment.
-        mRetainedState = (RetainedState) getLastNonConfigurationInstance();
-        mRoots = DocumentsApplication.getRootsCache(this);
-
-        getContentResolver().registerContentObserver(
-                RootsCache.sNotificationUri, false, mRootsCacheObserver);
-
-        mSearchManager = new SearchViewManager(this, icicle);
-
-        DocumentsToolbar toolbar = (DocumentsToolbar) findViewById(R.id.toolbar);
-        setActionBar(toolbar);
-
-        Breadcrumb breadcrumb =
-                Shared.findView(this, R.id.dropdown_breadcrumb, R.id.horizontal_breadcrumb);
-        assert(breadcrumb != null);
-
-        mNavigator = new NavigationViewManager(mDrawer, toolbar, mState, this, breadcrumb);
-
-        // Base classes must update result in their onCreate.
-        setResult(Activity.RESULT_CANCELED);
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        boolean showMenu = super.onCreateOptionsMenu(menu);
-
-        getMenuInflater().inflate(R.menu.activity, menu);
-        mNavigator.update();
-        boolean fullBarSearch = getResources().getBoolean(R.bool.full_bar_search_view);
-        mSearchManager.install((DocumentsToolbar) findViewById(R.id.toolbar), fullBarSearch);
-
-        return showMenu;
-    }
-
-    @Override
-    @CallSuper
-    public boolean onPrepareOptionsMenu(Menu menu) {
-        super.onPrepareOptionsMenu(menu);
-        mSearchManager.showMenu(canSearchRoot());
-        return true;
-    }
-
-    @Override
-    protected void onDestroy() {
-        getContentResolver().unregisterContentObserver(mRootsCacheObserver);
-        super.onDestroy();
-    }
-
-    private State getState(@Nullable Bundle icicle) {
-        if (icicle != null) {
-            State state = icicle.<State>getParcelable(Shared.EXTRA_STATE);
-            if (DEBUG) Log.d(mTag, "Recovered existing state object: " + state);
-            return state;
-        }
-
-        State state = new State();
-
-        final Intent intent = getIntent();
-
-        state.localOnly = intent.getBooleanExtra(Intent.EXTRA_LOCAL_ONLY, false);
-        state.forceSize = intent.getBooleanExtra(DocumentsContract.EXTRA_SHOW_FILESIZE, false);
-        state.showSize = state.forceSize || LocalPreferences.getDisplayFileSize(this);
-        state.initAcceptMimes(intent);
-        state.excludedAuthorities = getExcludedAuthorities();
-
-        includeState(state);
-
-        // Advanced roots are shown by default without menu option if forced by config or intent.
-        boolean forceAdvanced = Shared.shouldShowDeviceRoot(this, intent);
-        boolean chosenAdvanced = LocalPreferences.getShowDeviceRoot(this, state.action);
-        state.showAdvanced = forceAdvanced || chosenAdvanced;
-
-        // Menu option is shown for whitelisted intents if advanced roots are not shown by default.
-        state.showAdvancedOption = !forceAdvanced && (
-                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;
-    }
-
-    public void setRootsDrawerOpen(boolean open) {
-        mNavigator.revealRootsDrawer(open);
-    }
-
-    void onRootPicked(RootInfo root) {
-        // Clicking on the current root removes search
-        mSearchManager.cancelSearch();
-
-        // Skip refreshing if root nor directory didn't change
-        if (root.equals(getCurrentRoot()) && mState.stack.size() == 1) {
-            return;
-        }
-
-        mState.derivedMode = LocalPreferences.getViewMode(this, root, MODE_GRID);
-
-        // Clear entire backstack and start in new root
-        mState.onRootChanged(root);
-
-        // Recents is always in memory, so we just load it directly.
-        // Otherwise we delegate loading data from disk to a task
-        // to ensure a responsive ui.
-        if (mRoots.isRecentsRoot(root)) {
-            refreshCurrentRootAndDirectory(AnimationView.ANIM_NONE);
-        } else {
-            new PickRootTask(this, root).executeOnExecutor(getExecutorForCurrentDirectory());
-        }
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-
-        switch (item.getItemId()) {
-            case android.R.id.home:
-                onBackPressed();
-                return true;
-
-            case R.id.menu_create_dir:
-                showCreateDirectoryDialog();
-                return true;
-
-            case R.id.menu_search:
-                // SearchViewManager listens for this directly.
-                return false;
-
-            case R.id.menu_sort_name:
-                setUserSortOrder(State.SORT_ORDER_DISPLAY_NAME);
-                return true;
-
-            case R.id.menu_sort_date:
-                setUserSortOrder(State.SORT_ORDER_LAST_MODIFIED);
-                return true;
-
-            case R.id.menu_sort_size:
-                setUserSortOrder(State.SORT_ORDER_SIZE);
-                return true;
-
-            case R.id.menu_grid:
-                setViewMode(State.MODE_GRID);
-                return true;
-
-            case R.id.menu_list:
-                setViewMode(State.MODE_LIST);
-                return true;
-
-            case R.id.menu_advanced:
-                setDisplayAdvancedDevices(!mState.showAdvanced);
-                return true;
-
-            case R.id.menu_file_size:
-                setDisplayFileSize(!LocalPreferences.getDisplayFileSize(this));
-                return true;
-
-            default:
-                return super.onOptionsItemSelected(item);
-        }
-    }
-
-    final @Nullable DirectoryFragment getDirectoryFragment() {
-        return DirectoryFragment.get(getFragmentManager());
-    }
-
-    void showCreateDirectoryDialog() {
-        Metrics.logUserAction(this, Metrics.USER_ACTION_CREATE_DIR);
-
-        CreateDirectoryFragment.show(getFragmentManager());
-    }
-
-    void onDirectoryCreated(DocumentInfo doc) {
-        // By default we do nothing, just let the new directory appear.
-        // DocumentsActivity auto-opens directories after creating them
-        // As that is more attuned to the "picker" use cases it supports.
-    }
-
-    /**
-     * Returns true if a directory can be created in the current location.
-     * @return
-     */
-    boolean canCreateDirectory() {
-        final RootInfo root = getCurrentRoot();
-        final DocumentInfo cwd = getCurrentDirectory();
-        return cwd != null
-                && cwd.isCreateSupported()
-                && !mSearchManager.isSearching()
-                && !root.isRecents()
-                && !root.isDownloads();
-    }
-
-    void openContainerDocument(DocumentInfo doc) {
-        assert(doc.isContainer());
-
-        notifyDirectoryNavigated(doc.derivedUri);
-
-        mState.pushDocument(doc);
-        // Show an opening animation only if pressing "back" would get us back to the
-        // previous directory. Especially after opening a root document, pressing
-        // back, wouldn't go to the previous root, but close the activity.
-        final int anim = (mState.hasLocationChanged() && mState.stack.size() > 1)
-                ? AnimationView.ANIM_ENTER : AnimationView.ANIM_NONE;
-        refreshCurrentRootAndDirectory(anim);
-    }
-
-    /**
-     * Refreshes the content of the director and the menu/action bar.
-     * The current directory name and selection will get updated.
-     * @param anim
-     */
-    @Override
-    public final void refreshCurrentRootAndDirectory(int anim) {
-        mSearchManager.cancelSearch();
-
-        refreshDirectory(anim);
-
-        final RootsFragment roots = RootsFragment.get(getFragmentManager());
-        if (roots != null) {
-            roots.onCurrentRootChanged();
-        }
-
-        mNavigator.update();
-        invalidateOptionsMenu();
-    }
-
-    final void loadRoot(final Uri uri) {
-        new LoadRootTask(this, uri).executeOnExecutor(
-                ProviderExecutor.forAuthority(uri.getAuthority()));
-    }
-
-    /**
-     * This is called when user hovers over a doc for enough time during a drag n' drop, to open a
-     * folder that accepts drop. We should only open a container that's not an archive.
-     */
-    public void springOpenDirectory(DocumentInfo doc) {
-    }
-
-    /**
-     * Called when search results changed.
-     * Refreshes the content of the directory. It doesn't refresh elements on the action bar.
-     * e.g. The current directory name displayed on the action bar won't get updated.
-     */
-    @Override
-    public void onSearchChanged(@Nullable String query) {
-        // We should not get here if root is not searchable
-        assert(canSearchRoot());
-        reloadSearch(query);
-    }
-
-    @Override
-    public void onSearchFinished() {
-        // Restores menu icons state
-        invalidateOptionsMenu();
-    }
-
-    private void reloadSearch(String query) {
-        FragmentManager fm = getFragmentManager();
-        RootInfo root = getCurrentRoot();
-        DocumentInfo cwd = getCurrentDirectory();
-
-        DirectoryFragment.reloadSearch(fm, root, cwd, query);
-    }
-
-    final List<String> getExcludedAuthorities() {
-        List<String> authorities = new ArrayList<>();
-        if (getIntent().getBooleanExtra(DocumentsContract.EXTRA_EXCLUDE_SELF, false)) {
-            // Exclude roots provided by the calling package.
-            String packageName = getCallingPackageMaybeExtra();
-            try {
-                PackageInfo pkgInfo = getPackageManager().getPackageInfo(packageName,
-                        PackageManager.GET_PROVIDERS);
-                for (ProviderInfo provider: pkgInfo.providers) {
-                    authorities.add(provider.authority);
-                }
-            } catch (PackageManager.NameNotFoundException e) {
-                Log.e(mTag, "Calling package name does not resolve: " + packageName);
-            }
-        }
-        return authorities;
-    }
-
-    boolean canSearchRoot() {
-        final RootInfo root = getCurrentRoot();
-        return (root.flags & Root.FLAG_SUPPORTS_SEARCH) != 0;
-    }
-
-    final String getCallingPackageMaybeExtra() {
-        String callingPackage = getCallingPackage();
-        // System apps can set the calling package name using an extra.
-        try {
-            ApplicationInfo info = getPackageManager().getApplicationInfo(callingPackage, 0);
-            if (info.isSystemApp() || info.isUpdatedSystemApp()) {
-                final String extra = getIntent().getStringExtra(DocumentsContract.EXTRA_PACKAGE_NAME);
-                if (extra != null) {
-                    callingPackage = extra;
-                }
-            }
-        } finally {
-            return callingPackage;
-        }
-    }
-
-    public static BaseActivity get(Fragment fragment) {
-        return (BaseActivity) fragment.getActivity();
-    }
-
-    public State getDisplayState() {
-        return mState;
-    }
-
-    /*
-     * Get the default directory to be presented after starting the activity.
-     * Method can be overridden if the change of the behavior of the the child activity is needed.
-     */
-    public Uri getDefaultRoot() {
-        return Shared.shouldShowDocumentsRoot(this, getIntent())
-                ? DocumentsContract.buildHomeUri()
-                : DocumentsContract.buildRootUri(
-                        "com.android.providers.downloads.documents", "downloads");
-    }
-
-    /**
-     * Set internal storage visible based on explicit user action.
-     */
-    void setDisplayAdvancedDevices(boolean display) {
-        Metrics.logUserAction(this,
-                display ? Metrics.USER_ACTION_SHOW_ADVANCED : Metrics.USER_ACTION_HIDE_ADVANCED);
-
-        LocalPreferences.setShowDeviceRoot(this, mState.action, display);
-        mState.showAdvanced = display;
-        RootsFragment.get(getFragmentManager()).onDisplayStateChanged();
-        invalidateOptionsMenu();
-    }
-
-    /**
-     * Set file size visible based on explicit user action.
-     */
-    void setDisplayFileSize(boolean display) {
-        Metrics.logUserAction(this,
-                display ? Metrics.USER_ACTION_SHOW_SIZE : Metrics.USER_ACTION_HIDE_SIZE);
-
-        LocalPreferences.setDisplayFileSize(this, display);
-        mState.showSize = display;
-        DirectoryFragment dir = getDirectoryFragment();
-        if (dir != null) {
-            dir.onDisplayStateChanged();
-        }
-        invalidateOptionsMenu();
-    }
-
-    /**
-     * Set state sort order based on explicit user action.
-     */
-    void setUserSortOrder(int sortOrder) {
-        switch(sortOrder) {
-            case State.SORT_ORDER_DISPLAY_NAME:
-                Metrics.logUserAction(this, Metrics.USER_ACTION_SORT_NAME);
-                break;
-            case State.SORT_ORDER_LAST_MODIFIED:
-                Metrics.logUserAction(this, Metrics.USER_ACTION_SORT_DATE);
-                break;
-            case State.SORT_ORDER_SIZE:
-                Metrics.logUserAction(this, Metrics.USER_ACTION_SORT_SIZE);
-                break;
-        }
-
-        mState.userSortOrder = sortOrder;
-        DirectoryFragment dir = getDirectoryFragment();
-        if (dir != null) {
-            dir.onSortOrderChanged();
-        }
-    }
-
-    /**
-     * Set mode based on explicit user action.
-     */
-    void setViewMode(@ViewMode int mode) {
-        if (mode == State.MODE_GRID) {
-            Metrics.logUserAction(this, Metrics.USER_ACTION_GRID);
-        } else if (mode == State.MODE_LIST) {
-            Metrics.logUserAction(this, Metrics.USER_ACTION_LIST);
-        }
-
-        LocalPreferences.setViewMode(this, getCurrentRoot(), mode);
-        mState.derivedMode = mode;
-
-        // view icon needs to be updated, but we *could* do it
-        // in onOptionsItemSelected, and not do the full invalidation
-        // But! That's a larger refactoring we'll save for another day.
-        invalidateOptionsMenu();
-        DirectoryFragment dir = getDirectoryFragment();
-        if (dir != null) {
-            dir.onViewModeChanged();
-        }
-    }
-
-    public void setPending(boolean pending) {
-        final SaveFragment save = SaveFragment.get(getFragmentManager());
-        if (save != null) {
-            save.setPending(pending);
-        }
-    }
-
-    @Override
-    protected void onSaveInstanceState(Bundle state) {
-        super.onSaveInstanceState(state);
-        state.putParcelable(Shared.EXTRA_STATE, mState);
-        mSearchManager.onSaveInstanceState(state);
-    }
-
-    @Override
-    protected void onRestoreInstanceState(Bundle state) {
-        super.onRestoreInstanceState(state);
-    }
-
-    /**
-     * Delegate ths call to the current fragment so it can save selection.
-     * Feel free to expand on this with other useful state.
-     */
-    @Override
-    public RetainedState onRetainNonConfigurationInstance() {
-        RetainedState retained = new RetainedState();
-        DirectoryFragment fragment = DirectoryFragment.get(getFragmentManager());
-        if (fragment != null) {
-            fragment.retainState(retained);
-        }
-        return retained;
-    }
-
-    public @Nullable RetainedState getRetainedState() {
-        return mRetainedState;
-    }
-
-    @Override
-    public boolean isSearchExpanded() {
-        return mSearchManager.isExpanded();
-    }
-
-    @Override
-    public RootInfo getCurrentRoot() {
-        if (mState.stack.root != null) {
-            return mState.stack.root;
-        } else {
-            return mRoots.getRecentsRoot();
-        }
-    }
-
-    public DocumentInfo getCurrentDirectory() {
-        return mState.stack.peek();
-    }
-
-    public Executor getExecutorForCurrentDirectory() {
-        final DocumentInfo cwd = getCurrentDirectory();
-        if (cwd != null && cwd.authority != null) {
-            return ProviderExecutor.forAuthority(cwd.authority);
-        } else {
-            return AsyncTask.THREAD_POOL_EXECUTOR;
-        }
-    }
-
-    @Override
-    public void onBackPressed() {
-        // While action bar is expanded, the state stack UI is hidden.
-        if (mSearchManager.cancelSearch()) {
-            return;
-        }
-
-        DirectoryFragment dir = getDirectoryFragment();
-        if (dir != null && dir.onBackPressed()) {
-            return;
-        }
-
-        if (!mState.hasLocationChanged()) {
-            super.onBackPressed();
-            return;
-        }
-
-        if (onBeforePopDir() || popDir()) {
-            return;
-        }
-
-        super.onBackPressed();
-    }
-
-    boolean onBeforePopDir() {
-        // Files app overrides this with some fancy logic.
-        return false;
-    }
-
-    public void onStackPicked(DocumentStack stack) {
-        try {
-            // Update the restored stack to ensure we have freshest data
-            stack.updateDocuments(getContentResolver());
-            mState.setStack(stack);
-            refreshCurrentRootAndDirectory(AnimationView.ANIM_SIDE);
-
-        } catch (FileNotFoundException e) {
-            Log.w(mTag, "Failed to restore stack: " + e);
-        }
-    }
-
-    /**
-     * Declare a global key handler to route key events when there isn't a specific focus view. This
-     * covers the scenario where a user opens DocumentsUI and just starts typing.
-     *
-     * @param keyCode
-     * @param event
-     * @return
-     */
-    @CallSuper
-    @Override
-    public boolean onKeyDown(int keyCode, KeyEvent event) {
-        if (Events.isNavigationKeyCode(keyCode)) {
-            // Forward all unclaimed navigation keystrokes to the DirectoryFragment. This causes any
-            // stray navigation keystrokes focus the content pane, which is probably what the user
-            // is trying to do.
-            DirectoryFragment df = DirectoryFragment.get(getFragmentManager());
-            if (df != null) {
-                df.requestFocus();
-                return true;
-            }
-        } else if (keyCode == KeyEvent.KEYCODE_TAB) {
-            // Tab toggles focus on the navigation drawer.
-            toggleNavDrawerFocus();
-            return true;
-        } else if (keyCode == KeyEvent.KEYCODE_DEL) {
-            popDir();
-            return true;
-        }
-        return super.onKeyDown(keyCode, event);
-    }
-
-    public void addEventListener(EventListener listener) {
-        mEventListeners.add(listener);
-    }
-
-    public void removeEventListener(EventListener listener) {
-        mEventListeners.remove(listener);
-    }
-
-    public void notifyDirectoryLoaded(Uri uri) {
-        for (EventListener listener : mEventListeners) {
-            listener.onDirectoryLoaded(uri);
-        }
-    }
-
-    void notifyDirectoryNavigated(Uri uri) {
-        for (EventListener listener : mEventListeners) {
-            listener.onDirectoryNavigated(uri);
-        }
-    }
-
-    /**
-     * Toggles focus between the navigation drawer and the directory listing. If the drawer isn't
-     * locked, open/close it as appropriate.
-     */
-    void toggleNavDrawerFocus() {
-        if (mNavDrawerHasFocus) {
-            mDrawer.setOpen(false);
-            DirectoryFragment df = DirectoryFragment.get(getFragmentManager());
-            if (df != null) {
-                df.requestFocus();
-            }
-        } else {
-            mDrawer.setOpen(true);
-            RootsFragment rf = RootsFragment.get(getFragmentManager());
-            if (rf != null) {
-                rf.requestFocus();
-            }
-        }
-        mNavDrawerHasFocus = !mNavDrawerHasFocus;
-    }
-
-    /**
-     * Pops the top entry off the directory stack, and returns the user to the previous directory.
-     * If the directory stack only contains one item, this method does nothing.
-     *
-     * @return Whether the stack was popped.
-     */
-    private boolean popDir() {
-        if (mState.stack.size() > 1) {
-            mState.stack.pop();
-            refreshCurrentRootAndDirectory(AnimationView.ANIM_LEAVE);
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Closes the activity when it's idle.
-     */
-    private void addListenerForLaunchCompletion() {
-        addEventListener(new EventListener() {
-            @Override
-            public void onDirectoryNavigated(Uri uri) {
-            }
-
-            @Override
-            public void onDirectoryLoaded(Uri uri) {
-                removeEventListener(this);
-                getMainLooper().getQueue().addIdleHandler(new IdleHandler() {
-                    @Override
-                    public boolean queueIdle() {
-                        // If startup benchmark is requested by a whitelisted testing package, then
-                        // close the activity once idle, and notify the testing activity.
-                        if (getIntent().getBooleanExtra(EXTRA_BENCHMARK, false) &&
-                                BENCHMARK_TESTING_PACKAGE.equals(getCallingPackage())) {
-                            setResult(RESULT_OK);
-                            finish();
-                        }
-
-                        Metrics.logStartupMs(
-                                BaseActivity.this, (int) (new Date().getTime() - mStartTime));
-
-                        // Remove the idle handler.
-                        return false;
-                    }
-                });
-                new Handler().post(new Runnable() {
-                    @Override public void run() {
-                    }
-                });
-            }
-        });
-    }
-
-    private static final class PickRootTask extends PairedTask<BaseActivity, Void, DocumentInfo> {
-        private RootInfo mRoot;
-
-        public PickRootTask(BaseActivity activity, RootInfo root) {
-            super(activity);
-            mRoot = root;
-        }
-
-        @Override
-        protected DocumentInfo run(Void... params) {
-            return mRoot.getRootDocumentBlocking(mOwner);
-        }
-
-        @Override
-        protected void finish(DocumentInfo result) {
-            if (result != null) {
-                mOwner.openContainerDocument(result);
-            }
-        }
-    }
-
-    private static final class HandleRootsChangedTask
-            extends PairedTask<BaseActivity, RootInfo, RootInfo> {
-        RootInfo mCurrentRoot;
-        DocumentInfo mDefaultRootDocument;
-
-        public HandleRootsChangedTask(BaseActivity activity) {
-            super(activity);
-        }
-
-        @Override
-        protected RootInfo run(RootInfo... roots) {
-            assert(roots.length == 1);
-            mCurrentRoot = roots[0];
-            final Collection<RootInfo> cachedRoots = mOwner.mRoots.getRootsBlocking();
-            for (final RootInfo root : cachedRoots) {
-                if (root.getUri().equals(mCurrentRoot.getUri())) {
-                    // We don't need to change the current root as the current root was not removed.
-                    return null;
-                }
-            }
-
-            // Choose the default root.
-            final RootInfo defaultRoot = mOwner.mRoots.getDefaultRootBlocking(mOwner.mState);
-            assert(defaultRoot != null);
-            if (!defaultRoot.isRecents()) {
-                mDefaultRootDocument = defaultRoot.getRootDocumentBlocking(mOwner);
-            }
-            return defaultRoot;
-        }
-
-        @Override
-        protected void finish(RootInfo defaultRoot) {
-            if (defaultRoot == null) {
-                return;
-            }
-
-            // If the activity has been launched for the specific root and it is removed, finish the
-            // activity.
-            final Uri uri = mOwner.getIntent().getData();
-            if (uri != null && uri.equals(mCurrentRoot.getUri())) {
-                mOwner.finish();
-                return;
-            }
-
-            // Clear entire backstack and start in new root.
-            mOwner.mState.onRootChanged(defaultRoot);
-            mOwner.mSearchManager.update(defaultRoot);
-
-            if (defaultRoot.isRecents()) {
-                mOwner.refreshCurrentRootAndDirectory(AnimationView.ANIM_NONE);
-            } else {
-                mOwner.openContainerDocument(mDefaultRootDocument);
-            }
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/BootReceiver.java b/packages/DocumentsUI/src/com/android/documentsui/BootReceiver.java
deleted file mode 100644
index cdea9d7..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/BootReceiver.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-
-/**
- * Prime {@link RootsCache} when the system is booted.
- */
-public class BootReceiver extends BroadcastReceiver {
-    @Override
-    public void onReceive(Context context, Intent intent) {
-        // We already spun up our application object before getting here, which
-        // kicked off a task to load roots, so this broadcast is finished once
-        // that first pass is done.
-        DocumentsApplication.getRootsCache(context).setBootCompletedResult(goAsync());
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/CheckedTask.java b/packages/DocumentsUI/src/com/android/documentsui/CheckedTask.java
deleted file mode 100644
index 747eb9c..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/CheckedTask.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.os.AsyncTask;
-
-/**
- * An {@link AsyncTask} that guards work with checks that a paired {@link Check}
- * has not yet given signals to stop progress.
- *
- * <p>Use this type of task for greater safety when executing tasks that might complete
- * after the owner of the task has explicitly given a signal to stop progress.
- *
- * <p>Also useful as tasks can be static, limiting scope, but still have access to
- * signal from the owning class.
- *
- * @template Input input type
- * @template Output output type
- */
-abstract class CheckedTask<Input, Output>
-        extends AsyncTask<Input, Void, Output> {
-
-    private Check mCheck;
-
-    public CheckedTask(Check check) {
-        mCheck = check;
-    }
-
-    /** Called prior to run being executed. Analogous to {@link AsyncTask#onPreExecute} */
-    void prepare() {}
-
-    /** Analogous to {@link AsyncTask#doInBackground} */
-    abstract Output run(Input... input);
-
-    /** Analogous to {@link AsyncTask#onPostExecute} */
-    abstract void finish(Output output);
-
-    @Override
-    final protected void onPreExecute() {
-        if (mCheck.stop()) {
-            return;
-        }
-        prepare();
-    }
-
-    @Override
-    final protected Output doInBackground(Input... input) {
-        if (mCheck.stop()) {
-            return null;
-        }
-        return run(input);
-    }
-
-    @Override
-    final protected void onPostExecute(Output result) {
-        if (mCheck.stop()) {
-            return;
-        }
-        finish(result);
-    }
-
-    @FunctionalInterface
-    interface Check {
-        boolean stop();
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/CreateDirectoryFragment.java b/packages/DocumentsUI/src/com/android/documentsui/CreateDirectoryFragment.java
deleted file mode 100644
index 5b5a96e..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/CreateDirectoryFragment.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.Shared.TAG;
-
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.FragmentManager;
-import android.content.ContentProviderClient;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnClickListener;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.provider.DocumentsContract;
-import android.provider.DocumentsContract.Document;
-import android.support.annotation.Nullable;
-import android.support.design.widget.Snackbar;
-import android.util.Log;
-import android.view.KeyEvent;
-import android.view.inputmethod.EditorInfo;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.EditText;
-import android.widget.TextView;
-import android.widget.TextView.OnEditorActionListener;
-
-import com.android.documentsui.model.DocumentInfo;
-
-/**
- * Dialog to create a new directory.
- */
-public class CreateDirectoryFragment extends DialogFragment {
-    private static final String TAG_CREATE_DIRECTORY = "create_directory";
-
-    public static void show(FragmentManager fm) {
-        final CreateDirectoryFragment dialog = new CreateDirectoryFragment();
-        dialog.show(fm, TAG_CREATE_DIRECTORY);
-    }
-
-    @Override
-    public Dialog onCreateDialog(Bundle savedInstanceState) {
-        final Context context = getActivity();
-        final ContentResolver resolver = context.getContentResolver();
-
-        final AlertDialog.Builder builder = new AlertDialog.Builder(context);
-        final LayoutInflater dialogInflater = LayoutInflater.from(builder.getContext());
-
-        final View view = dialogInflater.inflate(R.layout.dialog_file_name, null, false);
-        final EditText editText = (EditText) view.findViewById(android.R.id.text1);
-
-        builder.setTitle(R.string.menu_create_dir);
-        builder.setView(view);
-
-        builder.setPositiveButton(
-                android.R.string.ok,
-                new OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int which) {
-                        createDirectory(editText.getText().toString());
-                    }
-                });
-
-        builder.setNegativeButton(android.R.string.cancel, null);
-        final AlertDialog dialog = builder.create();
-
-        // Workaround for the problem - virtual keyboard doesn't show on the phone.
-        Shared.ensureKeyboardPresent(context, dialog);
-
-        editText.setOnEditorActionListener(
-                new OnEditorActionListener() {
-                    @Override
-                    public boolean onEditorAction(
-                            TextView view, int actionId, @Nullable KeyEvent event) {
-                        if ((actionId == EditorInfo.IME_ACTION_DONE) || (event != null
-                                && event.getKeyCode() == KeyEvent.KEYCODE_ENTER
-                                && event.hasNoModifiers())) {
-                            createDirectory(editText.getText().toString());
-                            dialog.dismiss();
-                            return true;
-                        }
-                        return false;
-                    }
-                });
-
-
-        return dialog;
-    }
-
-    private void createDirectory(String name) {
-        final BaseActivity activity = (BaseActivity) getActivity();
-        final DocumentInfo cwd = activity.getCurrentDirectory();
-
-        new CreateDirectoryTask(activity, cwd, name).executeOnExecutor(
-                ProviderExecutor.forAuthority(cwd.authority));
-    }
-
-    private class CreateDirectoryTask extends AsyncTask<Void, Void, DocumentInfo> {
-        private final BaseActivity mActivity;
-        private final DocumentInfo mCwd;
-        private final String mDisplayName;
-
-        public CreateDirectoryTask(
-                BaseActivity activity, DocumentInfo cwd, String displayName) {
-            mActivity = activity;
-            mCwd = cwd;
-            mDisplayName = displayName;
-        }
-
-        @Override
-        protected void onPreExecute() {
-            mActivity.setPending(true);
-        }
-
-        @Override
-        protected DocumentInfo doInBackground(Void... params) {
-            final ContentResolver resolver = mActivity.getContentResolver();
-            ContentProviderClient client = null;
-            try {
-                client = DocumentsApplication.acquireUnstableProviderOrThrow(
-                        resolver, mCwd.derivedUri.getAuthority());
-                final Uri childUri = DocumentsContract.createDocument(
-                        client, mCwd.derivedUri, Document.MIME_TYPE_DIR, mDisplayName);
-                return DocumentInfo.fromUri(resolver, childUri);
-            } catch (Exception e) {
-                Log.w(TAG, "Failed to create directory", e);
-                return null;
-            } finally {
-                ContentProviderClient.releaseQuietly(client);
-            }
-        }
-
-        @Override
-        protected void onPostExecute(DocumentInfo result) {
-            if (result != null) {
-                // Navigate into newly created child
-                mActivity.onDirectoryCreated(result);
-                Metrics.logCreateDirOperation(getContext());
-            } else {
-                Snackbars.makeSnackbar(mActivity, R.string.create_error, Snackbar.LENGTH_SHORT)
-                        .show();
-                Metrics.logCreateDirError(getContext());
-            }
-            mActivity.setPending(false);
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DirectoryLoader.java b/packages/DocumentsUI/src/com/android/documentsui/DirectoryLoader.java
deleted file mode 100644
index d2e918c..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/DirectoryLoader.java
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.Shared.TAG;
-import static com.android.documentsui.State.SORT_ORDER_DISPLAY_NAME;
-import static com.android.documentsui.State.SORT_ORDER_LAST_MODIFIED;
-import static com.android.documentsui.State.SORT_ORDER_SIZE;
-
-import android.content.AsyncTaskLoader;
-import android.content.ContentProviderClient;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.CancellationSignal;
-import android.os.OperationCanceledException;
-import android.os.RemoteException;
-import android.provider.DocumentsContract;
-import android.provider.DocumentsContract.Document;
-import android.util.Log;
-
-import com.android.documentsui.dirlist.DirectoryFragment;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.RootInfo;
-
-import libcore.io.IoUtils;
-
-import java.io.FileNotFoundException;
-
-public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> {
-
-    private static final String[] SEARCH_REJECT_MIMES = new String[] { Document.MIME_TYPE_DIR };
-
-    private final ForceLoadContentObserver mObserver = new ForceLoadContentObserver();
-
-    private final int mType;
-    private final RootInfo mRoot;
-    private final Uri mUri;
-    private final int mUserSortOrder;
-    private final boolean mSearchMode;
-
-    private DocumentInfo mDoc;
-    private CancellationSignal mSignal;
-    private DirectoryResult mResult;
-
-    public DirectoryLoader(Context context, int type, RootInfo root, DocumentInfo doc, Uri uri,
-            int userSortOrder, boolean inSearchMode) {
-        super(context, ProviderExecutor.forAuthority(root.authority));
-        mType = type;
-        mRoot = root;
-        mUri = uri;
-        mUserSortOrder = userSortOrder;
-        mDoc = doc;
-        mSearchMode = inSearchMode;
-    }
-
-    @Override
-    public final DirectoryResult loadInBackground() {
-        synchronized (this) {
-            if (isLoadInBackgroundCanceled()) {
-                throw new OperationCanceledException();
-            }
-            mSignal = new CancellationSignal();
-        }
-
-        final ContentResolver resolver = getContext().getContentResolver();
-        final String authority = mUri.getAuthority();
-
-        final DirectoryResult result = new DirectoryResult();
-        result.doc = mDoc;
-
-        // Use default document when searching
-        if (mSearchMode) {
-            final Uri docUri = DocumentsContract.buildDocumentUri(
-                    mRoot.authority, mRoot.documentId);
-            try {
-                mDoc = DocumentInfo.fromUri(resolver, docUri);
-            } catch (FileNotFoundException e) {
-                Log.w(TAG, "Failed to query", e);
-                result.exception = e;
-                return result;
-            }
-        }
-
-        if (mUserSortOrder != State.SORT_ORDER_UNKNOWN) {
-            result.sortOrder = mUserSortOrder;
-        } else {
-            if ((mDoc.flags & Document.FLAG_DIR_PREFERS_LAST_MODIFIED) != 0) {
-                result.sortOrder = State.SORT_ORDER_LAST_MODIFIED;
-            } else {
-                result.sortOrder = State.SORT_ORDER_DISPLAY_NAME;
-            }
-        }
-
-        // Search always uses ranking from provider
-        if (mSearchMode) {
-            result.sortOrder = State.SORT_ORDER_UNKNOWN;
-        }
-
-        if (DEBUG)
-                Log.d(TAG, "userSortOrder=" + mUserSortOrder + ", sortOrder=" + result.sortOrder);
-
-        ContentProviderClient client = null;
-        Cursor cursor = null;
-        try {
-            client = DocumentsApplication.acquireUnstableProviderOrThrow(resolver, authority);
-            cursor = client.query(
-                    mUri, null, null, null, getQuerySortOrder(result.sortOrder), mSignal);
-            if (cursor == null) {
-                throw new RemoteException("Provider returned null");
-            }
-
-            cursor.registerContentObserver(mObserver);
-
-            cursor = new RootCursorWrapper(mUri.getAuthority(), mRoot.rootId, cursor, -1);
-
-            if (mSearchMode) {
-                // Filter directories out of search results, for now
-                cursor = new FilteringCursorWrapper(cursor, null, SEARCH_REJECT_MIMES);
-            }
-
-            result.client = client;
-            result.cursor = cursor;
-        } catch (Exception e) {
-            Log.w(TAG, "Failed to query", e);
-            result.exception = e;
-            ContentProviderClient.releaseQuietly(client);
-        } finally {
-            synchronized (this) {
-                mSignal = null;
-            }
-        }
-
-        return result;
-    }
-
-    @Override
-    public void cancelLoadInBackground() {
-        super.cancelLoadInBackground();
-
-        synchronized (this) {
-            if (mSignal != null) {
-                mSignal.cancel();
-            }
-        }
-    }
-
-    @Override
-    public void deliverResult(DirectoryResult result) {
-        if (isReset()) {
-            IoUtils.closeQuietly(result);
-            return;
-        }
-        DirectoryResult oldResult = mResult;
-        mResult = result;
-
-        if (isStarted()) {
-            super.deliverResult(result);
-        }
-
-        if (oldResult != null && oldResult != result) {
-            IoUtils.closeQuietly(oldResult);
-        }
-    }
-
-    @Override
-    protected void onStartLoading() {
-        if (mResult != null) {
-            deliverResult(mResult);
-        }
-        if (takeContentChanged() || mResult == null) {
-            forceLoad();
-        }
-    }
-
-    @Override
-    protected void onStopLoading() {
-        cancelLoad();
-    }
-
-    @Override
-    public void onCanceled(DirectoryResult result) {
-        IoUtils.closeQuietly(result);
-    }
-
-    @Override
-    protected void onReset() {
-        super.onReset();
-
-        // Ensure the loader is stopped
-        onStopLoading();
-
-        IoUtils.closeQuietly(mResult);
-        mResult = null;
-
-        getContext().getContentResolver().unregisterContentObserver(mObserver);
-    }
-
-    public static String getQuerySortOrder(int sortOrder) {
-        switch (sortOrder) {
-            case SORT_ORDER_DISPLAY_NAME:
-                return Document.COLUMN_DISPLAY_NAME + " ASC";
-            case SORT_ORDER_LAST_MODIFIED:
-                return Document.COLUMN_LAST_MODIFIED + " DESC";
-            case SORT_ORDER_SIZE:
-                return Document.COLUMN_SIZE + " DESC";
-            default:
-                return null;
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DirectoryResult.java b/packages/DocumentsUI/src/com/android/documentsui/DirectoryResult.java
deleted file mode 100644
index 6268643..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/DirectoryResult.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.State.MODE_UNKNOWN;
-import static com.android.documentsui.State.SORT_ORDER_UNKNOWN;
-
-import android.content.ContentProviderClient;
-import android.database.Cursor;
-
-import com.android.documentsui.model.DocumentInfo;
-
-import libcore.io.IoUtils;
-
-public class DirectoryResult implements AutoCloseable {
-    ContentProviderClient client;
-    public Cursor cursor;
-    public Exception exception;
-    public DocumentInfo doc;
-
-    public int sortOrder = SORT_ORDER_UNKNOWN;
-
-    @Override
-    public void close() {
-        IoUtils.closeQuietly(cursor);
-        ContentProviderClient.releaseQuietly(client);
-        cursor = null;
-        client = null;
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/Display.java b/packages/DocumentsUI/src/com/android/documentsui/Display.java
deleted file mode 100644
index 8b13222..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/Display.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.app.Activity;
-import android.content.Context;
-import android.graphics.Point;
-import android.util.TypedValue;
-
-/*
- * Convenience class for getting display related attributes
- */
-public final class Display {
-    /*
-     * Returns the screen width in raw pixels.
-     */
-    public static float screenWidth(Activity activity) {
-        Point size = new Point();
-        activity.getWindowManager().getDefaultDisplay().getSize(size);
-        return size.x;
-    }
-
-    /*
-     * Returns logical density of the display.
-     */
-    public static float density(Context context) {
-        return context.getResources().getDisplayMetrics().density;
-    }
-
-    /*
-     * Returns action bar height in raw pixels.
-     */
-    public static float actionBarHeight(Context context) {
-        int actionBarHeight = 0;
-        TypedValue tv = new TypedValue();
-        if (context.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) {
-            actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,
-                    context.getResources().getDisplayMetrics());
-        }
-        return actionBarHeight;
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
deleted file mode 100644
index 05f36e8..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
+++ /dev/null
@@ -1,583 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.State.ACTION_CREATE;
-import static com.android.documentsui.State.ACTION_GET_CONTENT;
-import static com.android.documentsui.State.ACTION_OPEN;
-import static com.android.documentsui.State.ACTION_OPEN_TREE;
-import static com.android.documentsui.State.ACTION_PICK_COPY_DESTINATION;
-
-import android.app.Activity;
-import android.app.Fragment;
-import android.app.FragmentManager;
-import android.content.ClipData;
-import android.content.ComponentName;
-import android.content.ContentProviderClient;
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.content.Intent;
-import android.content.pm.ResolveInfo;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Parcelable;
-import android.provider.DocumentsContract;
-import android.support.design.widget.Snackbar;
-import android.util.Log;
-import android.view.Menu;
-
-import com.android.documentsui.MenuManager.DirectoryDetails;
-import com.android.documentsui.RecentsProvider.RecentColumns;
-import com.android.documentsui.RecentsProvider.ResumeColumns;
-import com.android.documentsui.dirlist.AnimationView;
-import com.android.documentsui.dirlist.DirectoryFragment;
-import com.android.documentsui.dirlist.FragmentTuner;
-import com.android.documentsui.dirlist.FragmentTuner.DocumentsTuner;
-import com.android.documentsui.dirlist.Model;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.DurableUtils;
-import com.android.documentsui.model.RootInfo;
-import com.android.documentsui.services.FileOperationService;
-
-import libcore.io.IoUtils;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
-public class DocumentsActivity extends BaseActivity {
-    private static final int CODE_FORWARD = 42;
-    private static final String TAG = "DocumentsActivity";
-    private DocumentsMenuManager mMenuManager;
-    private DirectoryDetails mDetails;
-
-    public DocumentsActivity() {
-        super(R.layout.documents_activity, TAG);
-    }
-
-    @Override
-    public void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-        mMenuManager = new DocumentsMenuManager(mSearchManager, getDisplayState());
-        mDetails = new DirectoryDetails(this);
-
-        if (mState.action == ACTION_CREATE) {
-            final String mimeType = getIntent().getType();
-            final String title = getIntent().getStringExtra(Intent.EXTRA_TITLE);
-            SaveFragment.show(getFragmentManager(), mimeType, title);
-        } else if (mState.action == ACTION_OPEN_TREE ||
-                   mState.action == ACTION_PICK_COPY_DESTINATION) {
-            PickFragment.show(getFragmentManager());
-        }
-
-        if (mState.action == ACTION_GET_CONTENT) {
-            final Intent moreApps = new Intent(getIntent());
-            moreApps.setComponent(null);
-            moreApps.setPackage(null);
-            RootsFragment.show(getFragmentManager(), moreApps);
-        } else if (mState.action == ACTION_OPEN ||
-                   mState.action == ACTION_CREATE ||
-                   mState.action == ACTION_OPEN_TREE ||
-                   mState.action == ACTION_PICK_COPY_DESTINATION) {
-            RootsFragment.show(getFragmentManager(), (Intent) null);
-        }
-
-        if (mState.restored) {
-            if (DEBUG) Log.d(TAG, "Stack already resolved");
-        } else {
-            // We set the activity title in AsyncTask.onPostExecute().
-            // To prevent talkback from reading aloud the default title, we clear it here.
-            setTitle("");
-
-            // As a matter of policy we don't load the last used stack for the copy
-            // destination picker (user is already in Files app).
-            // Concensus was that the experice was too confusing.
-            // In all other cases, where the user is visiting us from another app
-            // we restore the stack as last used from that app.
-            if (mState.action == ACTION_PICK_COPY_DESTINATION) {
-                if (DEBUG) Log.d(TAG, "Launching directly into Home directory.");
-                loadRoot(getDefaultRoot());
-            } else {
-                if (DEBUG) Log.d(TAG, "Attempting to load last used stack for calling package.");
-                new LoadLastUsedStackTask(this).execute();
-            }
-        }
-    }
-
-    @Override
-    void includeState(State state) {
-        final Intent intent = getIntent();
-        final String action = intent.getAction();
-        if (Intent.ACTION_OPEN_DOCUMENT.equals(action)) {
-            state.action = ACTION_OPEN;
-        } else if (Intent.ACTION_CREATE_DOCUMENT.equals(action)) {
-            state.action = ACTION_CREATE;
-        } else if (Intent.ACTION_GET_CONTENT.equals(action)) {
-            state.action = ACTION_GET_CONTENT;
-        } else if (Intent.ACTION_OPEN_DOCUMENT_TREE.equals(action)) {
-            state.action = ACTION_OPEN_TREE;
-        } else if (Shared.ACTION_PICK_COPY_DESTINATION.equals(action)) {
-            state.action = ACTION_PICK_COPY_DESTINATION;
-        }
-
-        if (state.action == ACTION_OPEN || state.action == ACTION_GET_CONTENT) {
-            state.allowMultiple = intent.getBooleanExtra(
-                    Intent.EXTRA_ALLOW_MULTIPLE, false);
-        }
-
-        if (state.action == ACTION_OPEN || state.action == ACTION_GET_CONTENT
-                || state.action == ACTION_CREATE) {
-            state.openableOnly = intent.hasCategory(Intent.CATEGORY_OPENABLE);
-        }
-
-        if (state.action == ACTION_PICK_COPY_DESTINATION) {
-            // Indicates that a copy operation (or move) includes a directory.
-            // Why? Directory creation isn't supported by some roots (like Downloads).
-            // This allows us to restrict available roots to just those with support.
-            state.directoryCopy = intent.getBooleanExtra(
-                    Shared.EXTRA_DIRECTORY_COPY, false);
-            state.copyOperationSubType = intent.getIntExtra(
-                    FileOperationService.EXTRA_OPERATION_TYPE,
-                    FileOperationService.OPERATION_COPY);
-        }
-    }
-
-    public void onAppPicked(ResolveInfo info) {
-        final Intent intent = new Intent(getIntent());
-        intent.setFlags(intent.getFlags() & ~Intent.FLAG_ACTIVITY_FORWARD_RESULT);
-        intent.setComponent(new ComponentName(
-                info.activityInfo.applicationInfo.packageName, info.activityInfo.name));
-        startActivityForResult(intent, CODE_FORWARD);
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        if (DEBUG) Log.d(TAG, "onActivityResult() code=" + resultCode);
-
-        // Only relay back results when not canceled; otherwise stick around to
-        // let the user pick another app/backend.
-        if (requestCode == CODE_FORWARD && resultCode != RESULT_CANCELED) {
-
-            // Remember that we last picked via external app
-            final String packageName = getCallingPackageMaybeExtra();
-            final ContentValues values = new ContentValues();
-            values.put(ResumeColumns.EXTERNAL, 1);
-            getContentResolver().insert(RecentsProvider.buildResume(packageName), values);
-
-            // Pass back result to original caller
-            setResult(resultCode, data);
-            finish();
-        } else {
-            super.onActivityResult(requestCode, resultCode, data);
-        }
-    }
-
-    @Override
-    protected void onPostCreate(Bundle savedInstanceState) {
-        super.onPostCreate(savedInstanceState);
-        mDrawer.update();
-        mNavigator.update();
-    }
-
-    @Override
-    public String getDrawerTitle() {
-        String title = getIntent().getStringExtra(DocumentsContract.EXTRA_PROMPT);
-        if (title == null) {
-            if (mState.action == ACTION_OPEN ||
-                mState.action == ACTION_GET_CONTENT ||
-                mState.action == ACTION_OPEN_TREE) {
-                title = getResources().getString(R.string.title_open);
-            } else if (mState.action == ACTION_CREATE ||
-                       mState.action == ACTION_PICK_COPY_DESTINATION) {
-                title = getResources().getString(R.string.title_save);
-            } else {
-                // If all else fails, just call it "Documents".
-                title = getResources().getString(R.string.app_label);
-            }
-        }
-
-        return title;
-    }
-
-    @Override
-    public boolean onPrepareOptionsMenu(Menu menu) {
-        super.onPrepareOptionsMenu(menu);
-        mMenuManager.updateOptionMenu(menu, mDetails);
-
-        final DocumentInfo cwd = getCurrentDirectory();
-
-        if (mState.action == ACTION_CREATE) {
-            final FragmentManager fm = getFragmentManager();
-            SaveFragment.get(fm).prepareForDirectory(cwd);
-        }
-
-        return true;
-    }
-
-    @Override
-    void refreshDirectory(int anim) {
-        final FragmentManager fm = getFragmentManager();
-        final RootInfo root = getCurrentRoot();
-        final DocumentInfo cwd = getCurrentDirectory();
-
-        if (cwd == null) {
-            // No directory means recents
-            if (mState.action == ACTION_CREATE ||
-                mState.action == ACTION_OPEN_TREE ||
-                mState.action == ACTION_PICK_COPY_DESTINATION) {
-                RecentsCreateFragment.show(fm);
-            } else {
-                DirectoryFragment.showRecentsOpen(fm, anim);
-
-                // In recents we pick layout mode based on the mimetype,
-                // picking GRID for visual types. We intentionally don't
-                // consult a user's saved preferences here since they are
-                // set per root (not per root and per mimetype).
-                boolean visualMimes = MimePredicate.mimeMatches(
-                        MimePredicate.VISUAL_MIMES, mState.acceptMimes);
-                mState.derivedMode = visualMimes ? State.MODE_GRID : State.MODE_LIST;
-            }
-        } else {
-                // Normal boring directory
-                DirectoryFragment.showDirectory(fm, root, cwd, anim);
-        }
-
-        // Forget any replacement target
-        if (mState.action == ACTION_CREATE) {
-            final SaveFragment save = SaveFragment.get(fm);
-            if (save != null) {
-                save.setReplaceTarget(null);
-            }
-        }
-
-        if (mState.action == ACTION_OPEN_TREE ||
-            mState.action == ACTION_PICK_COPY_DESTINATION) {
-            final PickFragment pick = PickFragment.get(fm);
-            if (pick != null) {
-                pick.setPickTarget(mState.action, mState.copyOperationSubType, cwd);
-            }
-        }
-    }
-
-    void onSaveRequested(DocumentInfo replaceTarget) {
-        new ExistingFinishTask(this, replaceTarget.derivedUri)
-                .executeOnExecutor(getExecutorForCurrentDirectory());
-    }
-
-    @Override
-    void onDirectoryCreated(DocumentInfo doc) {
-        assert(doc.isDirectory());
-        openContainerDocument(doc);
-    }
-
-    void onSaveRequested(String mimeType, String displayName) {
-        new CreateFinishTask(this, mimeType, displayName)
-                .executeOnExecutor(getExecutorForCurrentDirectory());
-    }
-
-    @Override
-    public void onDocumentPicked(DocumentInfo doc, Model model) {
-        final FragmentManager fm = getFragmentManager();
-        if (doc.isContainer()) {
-            openContainerDocument(doc);
-        } else if (mState.action == ACTION_OPEN || mState.action == ACTION_GET_CONTENT) {
-            // Explicit file picked, return
-            new ExistingFinishTask(this, doc.derivedUri)
-                    .executeOnExecutor(getExecutorForCurrentDirectory());
-        } else if (mState.action == ACTION_CREATE) {
-            // Replace selected file
-            SaveFragment.get(fm).setReplaceTarget(doc);
-        }
-    }
-
-    @Override
-    public void onDocumentsPicked(List<DocumentInfo> docs) {
-        if (mState.action == ACTION_OPEN || mState.action == ACTION_GET_CONTENT) {
-            final int size = docs.size();
-            final Uri[] uris = new Uri[size];
-            for (int i = 0; i < size; i++) {
-                uris[i] = docs.get(i).derivedUri;
-            }
-            new ExistingFinishTask(this, uris)
-                    .executeOnExecutor(getExecutorForCurrentDirectory());
-        }
-    }
-
-    public void onPickRequested(DocumentInfo pickTarget) {
-        Uri result;
-        if (mState.action == ACTION_OPEN_TREE) {
-            result = DocumentsContract.buildTreeDocumentUri(
-                    pickTarget.authority, pickTarget.documentId);
-        } else if (mState.action == ACTION_PICK_COPY_DESTINATION) {
-            result = pickTarget.derivedUri;
-        } else {
-            // Should not be reached.
-            throw new IllegalStateException("Invalid mState.action.");
-        }
-        new PickFinishTask(this, result).executeOnExecutor(getExecutorForCurrentDirectory());
-    }
-
-    void writeStackToRecentsBlocking() {
-        final ContentResolver resolver = getContentResolver();
-        final ContentValues values = new ContentValues();
-
-        final byte[] rawStack = DurableUtils.writeToArrayOrNull(mState.stack);
-        if (mState.action == ACTION_CREATE ||
-            mState.action == ACTION_OPEN_TREE ||
-            mState.action == ACTION_PICK_COPY_DESTINATION) {
-            // Remember stack for last create
-            values.clear();
-            values.put(RecentColumns.KEY, mState.stack.buildKey());
-            values.put(RecentColumns.STACK, rawStack);
-            resolver.insert(RecentsProvider.buildRecent(), values);
-        }
-
-        // Remember location for next app launch
-        final String packageName = getCallingPackageMaybeExtra();
-        values.clear();
-        values.put(ResumeColumns.STACK, rawStack);
-        values.put(ResumeColumns.EXTERNAL, 0);
-        resolver.insert(RecentsProvider.buildResume(packageName), values);
-    }
-
-    @Override
-    void onTaskFinished(Uri... uris) {
-        if (DEBUG) Log.d(TAG, "onFinished() " + Arrays.toString(uris));
-
-        final Intent intent = new Intent();
-        if (uris.length == 1) {
-            intent.setData(uris[0]);
-        } else if (uris.length > 1) {
-            final ClipData clipData = new ClipData(
-                    null, mState.acceptMimes, new ClipData.Item(uris[0]));
-            for (int i = 1; i < uris.length; i++) {
-                clipData.addItem(new ClipData.Item(uris[i]));
-            }
-            intent.setClipData(clipData);
-        }
-
-        if (mState.action == ACTION_GET_CONTENT) {
-            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
-        } else if (mState.action == ACTION_OPEN_TREE) {
-            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION
-                    | Intent.FLAG_GRANT_WRITE_URI_PERMISSION
-                    | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION
-                    | Intent.FLAG_GRANT_PREFIX_URI_PERMISSION);
-        } else if (mState.action == ACTION_PICK_COPY_DESTINATION) {
-            // Picking a copy destination is only used internally by us, so we
-            // don't need to extend permissions to the caller.
-            intent.putExtra(Shared.EXTRA_STACK, (Parcelable) mState.stack);
-            intent.putExtra(FileOperationService.EXTRA_OPERATION_TYPE, mState.copyOperationSubType);
-        } else {
-            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION
-                    | Intent.FLAG_GRANT_WRITE_URI_PERMISSION
-                    | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
-        }
-
-        setResult(Activity.RESULT_OK, intent);
-        finish();
-    }
-
-
-    public static DocumentsActivity get(Fragment fragment) {
-        return (DocumentsActivity) fragment.getActivity();
-    }
-
-    @Override
-    public FragmentTuner createFragmentTuner() {
-        // Currently DocumentsTuner maintains a state specific to the fragment instance. Because of
-        // that, we create a new instance everytime it is needed
-        return new DocumentsTuner(this, getDisplayState());
-    }
-
-    @Override
-    public MenuManager getMenuManager() {
-        return mMenuManager;
-    }
-
-    @Override
-    public DirectoryDetails getDirectoryDetails() {
-        return mDetails;
-    }
-
-    /**
-     * Loads the last used path (stack) from Recents (history).
-     * The path selected is based on the calling package name. So the last
-     * path for an app like Gmail can be different than the last path
-     * for an app like DropBox.
-     */
-    private static final class LoadLastUsedStackTask
-            extends PairedTask<DocumentsActivity, Void, Void> {
-
-        private volatile boolean mRestoredStack;
-        private volatile boolean mExternal;
-        private State mState;
-
-        public LoadLastUsedStackTask(DocumentsActivity activity) {
-            super(activity);
-            mState = activity.mState;
-        }
-
-        @Override
-        protected Void run(Void... params) {
-            if (DEBUG && !mState.stack.isEmpty()) {
-                Log.w(TAG, "Overwriting existing stack.");
-            }
-            RootsCache roots = DocumentsApplication.getRootsCache(mOwner);
-
-            String packageName = mOwner.getCallingPackageMaybeExtra();
-            Uri resumeUri = RecentsProvider.buildResume(packageName);
-            Cursor cursor = mOwner.getContentResolver().query(resumeUri, null, null, null, null);
-            try {
-                if (cursor.moveToFirst()) {
-                    mExternal = cursor.getInt(cursor.getColumnIndex(ResumeColumns.EXTERNAL)) != 0;
-                    final byte[] rawStack = cursor.getBlob(
-                            cursor.getColumnIndex(ResumeColumns.STACK));
-                    DurableUtils.readFromArray(rawStack, mState.stack);
-                    mRestoredStack = true;
-                }
-            } catch (IOException e) {
-                Log.w(TAG, "Failed to resume: " + e);
-            } finally {
-                IoUtils.closeQuietly(cursor);
-            }
-
-            if (mRestoredStack) {
-                // Update the restored stack to ensure we have freshest data
-                final Collection<RootInfo> matchingRoots = roots.getMatchingRootsBlocking(mState);
-                try {
-                    mState.stack.updateRoot(matchingRoots);
-                    mState.stack.updateDocuments(mOwner.getContentResolver());
-                } catch (FileNotFoundException e) {
-                    Log.w(TAG, "Failed to restore stack for package: " + packageName
-                            + " because of error: "+ e);
-                    mState.stack.reset();
-                    mRestoredStack = false;
-                }
-            }
-
-            return null;
-        }
-
-        @Override
-        protected void finish(Void result) {
-            mState.restored = true;
-            mState.external = mExternal;
-            mOwner.refreshCurrentRootAndDirectory(AnimationView.ANIM_NONE);
-        }
-    }
-
-    private static final class PickFinishTask extends PairedTask<DocumentsActivity, Void, Void> {
-        private final Uri mUri;
-
-        public PickFinishTask(DocumentsActivity activity, Uri uri) {
-            super(activity);
-            mUri = uri;
-        }
-
-        @Override
-        protected Void run(Void... params) {
-            mOwner.writeStackToRecentsBlocking();
-            return null;
-        }
-
-        @Override
-        protected void finish(Void result) {
-            mOwner.onTaskFinished(mUri);
-        }
-    }
-
-    private static final class ExistingFinishTask extends PairedTask<DocumentsActivity, Void, Void> {
-        private final Uri[] mUris;
-
-        public ExistingFinishTask(DocumentsActivity activity, Uri... uris) {
-            super(activity);
-            mUris = uris;
-        }
-
-        @Override
-        protected Void run(Void... params) {
-            mOwner.writeStackToRecentsBlocking();
-            return null;
-        }
-
-        @Override
-        protected void finish(Void result) {
-            mOwner.onTaskFinished(mUris);
-        }
-    }
-
-    /**
-     * Task that creates a new document in the background.
-     */
-    private static final class CreateFinishTask extends PairedTask<DocumentsActivity, Void, Uri> {
-        private final String mMimeType;
-        private final String mDisplayName;
-
-        public CreateFinishTask(DocumentsActivity activity, String mimeType, String displayName) {
-            super(activity);
-            mMimeType = mimeType;
-            mDisplayName = displayName;
-        }
-
-        @Override
-        protected void prepare() {
-            mOwner.setPending(true);
-        }
-
-        @Override
-        protected Uri run(Void... params) {
-            final ContentResolver resolver = mOwner.getContentResolver();
-            final DocumentInfo cwd = mOwner.getCurrentDirectory();
-
-            ContentProviderClient client = null;
-            Uri childUri = null;
-            try {
-                client = DocumentsApplication.acquireUnstableProviderOrThrow(
-                        resolver, cwd.derivedUri.getAuthority());
-                childUri = DocumentsContract.createDocument(
-                        client, cwd.derivedUri, mMimeType, mDisplayName);
-            } catch (Exception e) {
-                Log.w(TAG, "Failed to create document", e);
-            } finally {
-                ContentProviderClient.releaseQuietly(client);
-            }
-
-            if (childUri != null) {
-                mOwner.writeStackToRecentsBlocking();
-            }
-
-            return childUri;
-        }
-
-        @Override
-        protected void finish(Uri result) {
-            if (result != null) {
-                mOwner.onTaskFinished(result);
-            } else {
-                Snackbars.makeSnackbar(
-                        mOwner, R.string.save_error, Snackbar.LENGTH_SHORT).show();
-            }
-
-            mOwner.setPending(false);
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentsApplication.java b/packages/DocumentsUI/src/com/android/documentsui/DocumentsApplication.java
deleted file mode 100644
index 3b2529f..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/DocumentsApplication.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.app.ActivityManager;
-import android.app.Application;
-import android.content.BroadcastReceiver;
-import android.content.ContentProviderClient;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.net.Uri;
-import android.os.RemoteException;
-import android.text.format.DateUtils;
-
-import com.android.documentsui.clipping.ClipStorage;
-import com.android.documentsui.clipping.DocumentClipper;
-
-public class DocumentsApplication extends Application {
-    private static final long PROVIDER_ANR_TIMEOUT = 20 * DateUtils.SECOND_IN_MILLIS;
-
-    private RootsCache mRoots;
-
-    private ThumbnailCache mThumbnailCache;
-    private ClipStorage mClipStorage;
-    private DocumentClipper mClipper;
-
-    public static RootsCache getRootsCache(Context context) {
-        return ((DocumentsApplication) context.getApplicationContext()).mRoots;
-    }
-
-    public static ThumbnailCache getThumbnailCache(Context context) {
-        final DocumentsApplication app = (DocumentsApplication) context.getApplicationContext();
-        return app.mThumbnailCache;
-    }
-
-    public static ContentProviderClient acquireUnstableProviderOrThrow(
-            ContentResolver resolver, String authority) throws RemoteException {
-        final ContentProviderClient client = resolver.acquireUnstableContentProviderClient(
-                authority);
-        if (client == null) {
-            throw new RemoteException("Failed to acquire provider for " + authority);
-        }
-        client.setDetectNotResponding(PROVIDER_ANR_TIMEOUT);
-        return client;
-    }
-
-    public static DocumentClipper getDocumentClipper(Context context) {
-        return ((DocumentsApplication) context.getApplicationContext()).mClipper;
-    }
-
-    public static ClipStorage getClipStorage(Context context) {
-        return ((DocumentsApplication) context.getApplicationContext()).mClipStorage;
-    }
-
-    @Override
-    public void onCreate() {
-        super.onCreate();
-
-        final ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
-        final int memoryClassBytes = am.getMemoryClass() * 1024 * 1024;
-
-        mRoots = new RootsCache(this);
-        mRoots.updateAsync(false);
-
-        mThumbnailCache = new ThumbnailCache(memoryClassBytes / 4);
-
-        mClipStorage = new ClipStorage(
-                ClipStorage.prepareStorage(getCacheDir()),
-                getSharedPreferences(ClipStorage.PREF_NAME, 0));
-        mClipper = new DocumentClipper(this, mClipStorage);
-
-        final IntentFilter packageFilter = new IntentFilter();
-        packageFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
-        packageFilter.addAction(Intent.ACTION_PACKAGE_CHANGED);
-        packageFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
-        packageFilter.addAction(Intent.ACTION_PACKAGE_DATA_CLEARED);
-        packageFilter.addDataScheme("package");
-        registerReceiver(mCacheReceiver, packageFilter);
-
-        final IntentFilter localeFilter = new IntentFilter();
-        localeFilter.addAction(Intent.ACTION_LOCALE_CHANGED);
-        registerReceiver(mCacheReceiver, localeFilter);
-    }
-
-    @Override
-    public void onTrimMemory(int level) {
-        super.onTrimMemory(level);
-
-        mThumbnailCache.onTrimMemory(level);
-    }
-
-    private BroadcastReceiver mCacheReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            final Uri data = intent.getData();
-            if (data != null) {
-                final String packageName = data.getSchemeSpecificPart();
-                mRoots.updatePackageAsync(packageName);
-            } else {
-                mRoots.updateAsync(true);
-            }
-        }
-    };
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentsMenuManager.java b/packages/DocumentsUI/src/com/android/documentsui/DocumentsMenuManager.java
deleted file mode 100644
index 9b07b49..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/DocumentsMenuManager.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.State.ACTION_CREATE;
-import static com.android.documentsui.State.ACTION_GET_CONTENT;
-import static com.android.documentsui.State.ACTION_OPEN;
-import static com.android.documentsui.State.ACTION_OPEN_TREE;
-import static com.android.documentsui.State.ACTION_PICK_COPY_DESTINATION;
-
-import android.view.Menu;
-import android.view.MenuItem;
-
-import com.android.documentsui.MenuManager.DirectoryDetails;
-
-final class DocumentsMenuManager extends MenuManager {
-
-    private boolean mPicking;
-
-    public DocumentsMenuManager(SearchViewManager searchManager, State displayState) {
-        super(searchManager, displayState);
-
-        mPicking = mState.action == ACTION_CREATE
-                || mState.action == ACTION_OPEN_TREE
-                || mState.action == ACTION_PICK_COPY_DESTINATION;
-    }
-
-    @Override
-    public void updateOptionMenu(Menu menu, DirectoryDetails details) {
-        super.updateOptionMenu(menu, details);
-        if (mPicking) {
-            // May already be hidden because the root
-            // doesn't support search.
-            mSearchManager.showMenu(false);
-        }
-    }
-
-    @Override
-    void updateModePicker(MenuItem grid, MenuItem list, DirectoryDetails directoryDetails) {
-        // No display options in recent directories
-        if (mPicking && directoryDetails.isInRecents()) {
-            grid.setVisible(false);
-            list.setVisible(false);
-        } else {
-            super.updateModePicker(grid, list, directoryDetails);
-        }
-    }
-
-    @Override
-    void updateFileSize(MenuItem fileSize, DirectoryDetails directoryDetails) {
-        super.updateFileSize(fileSize, directoryDetails);
-        fileSize.setVisible(fileSize.isVisible() && !mPicking);
-    }
-
-    @Override
-    void updateSelectAll(MenuItem selectAll, SelectionDetails selectionDetails) {
-        selectAll.setVisible(mState.allowMultiple);
-    }
-
-    @Override
-    void updateCreateDir(MenuItem createDir, DirectoryDetails directoryDetails) {
-        createDir.setVisible(mPicking);
-        createDir.setEnabled(mPicking && directoryDetails.canCreateDirectory());
-    }
-
-    @Override
-    void updateOpen(MenuItem open, SelectionDetails selectionDetails) {
-        open.setVisible(mState.action == ACTION_GET_CONTENT
-                || mState.action == ACTION_OPEN);
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentsToolbar.java b/packages/DocumentsUI/src/com/android/documentsui/DocumentsToolbar.java
deleted file mode 100644
index 7742cbf..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/DocumentsToolbar.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.MenuItem;
-import android.widget.Toolbar;
-
-/**
- * ToolBar of Documents UI.
- */
-public class DocumentsToolbar extends Toolbar {
-    interface OnActionViewCollapsedListener {
-        void onActionViewCollapsed();
-    }
-
-    private OnActionViewCollapsedListener mOnActionViewCollapsedListener;
-
-    public DocumentsToolbar(Context context, AttributeSet attrs,
-            int defStyleAttr, int defStyleRes) {
-        super(context, attrs, defStyleAttr, defStyleRes);
-    }
-
-    public DocumentsToolbar(Context context, AttributeSet attrs,
-            int defStyleAttr) {
-        super(context, attrs, defStyleAttr);
-    }
-
-    public DocumentsToolbar(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    public DocumentsToolbar(Context context) {
-        super(context);
-    }
-
-    @Override
-    public void collapseActionView() {
-        super.collapseActionView();
-        if (mOnActionViewCollapsedListener != null) {
-            mOnActionViewCollapsedListener.onActionViewCollapsed();
-        }
-    }
-
-    /**
-     * Adds a listener that is invoked after collapsing the action view.
-     * @param listener
-     */
-    public void setOnActionViewCollapsedListener(
-            OnActionViewCollapsedListener listener) {
-        mOnActionViewCollapsedListener = listener;
-    }
-
-    public MenuItem getSearchMenu() {
-        return getMenu().findItem(R.id.menu_search);
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DragOverTextView.java b/packages/DocumentsUI/src/com/android/documentsui/DragOverTextView.java
deleted file mode 100644
index e9fc2a0..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/DragOverTextView.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.View.OnDragListener;
-import android.widget.TextView;
-
-/**
- * An {@link TextView} that uses drawable states to distinct between normal and highlighted states.
- */
-
-public final class DragOverTextView extends TextView {
-    private static final int[] STATE_HIGHLIGHTED = {R.attr.state_highlighted};
-
-    private boolean mHighlighted = false;
-
-    public DragOverTextView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    @Override
-    protected int[] onCreateDrawableState(int extraSpace) {
-        final int[] drawableState = super.onCreateDrawableState(extraSpace + 1);
-
-        if (mHighlighted) {
-            mergeDrawableStates(drawableState, STATE_HIGHLIGHTED);
-        }
-
-        return drawableState;
-    }
-
-    public void setHighlight(boolean highlight) {
-        mHighlighted = highlight;
-        refreshDrawableState();
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DrawerController.java b/packages/DocumentsUI/src/com/android/documentsui/DrawerController.java
deleted file mode 100644
index 97d459b..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/DrawerController.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.Shared.DEBUG;
-
-import android.annotation.IntDef;
-import android.app.Activity;
-import android.support.annotation.ColorRes;
-import android.support.v4.app.ActionBarDrawerToggle;
-import android.support.v4.widget.DrawerLayout;
-import android.support.v4.widget.DrawerLayout.DrawerListener;
-import android.util.Log;
-import android.view.View;
-import android.widget.Toolbar;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/**
- * A facade over the various pieces comprising "roots fragment in a Drawer".
- *
- * @see DrawerController#create(DrawerLayout)
- */
-abstract class DrawerController implements DrawerListener {
-    public static final String TAG = "DrawerController";
-
-    // Drawer opening triggered by tapping the navigation icon
-    public static final int OPENED_HAMBURGER = 0;
-    // Drawer opening triggered by swiping right from the edge of the screen
-    public static final int OPENED_SWIPE = 1;
-    // Mostly programmatically forced drawer opening
-    public static final int OPENED_OTHER = 2;
-
-    @IntDef(flag = true, value = {
-            OPENED_HAMBURGER,
-            OPENED_SWIPE,
-            OPENED_OTHER
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface Trigger {}
-
-    /**
-     * Toggles the drawer and sets the OPENED_OTHER as the action that causes opening the drawer.
-     * @param open
-     */
-    abstract void setOpen(boolean open);
-
-    /**
-     * Toggles the drawer.
-     * @param open
-     * @param trigger Indicates what action caused opening the drawer. It is ignored for closing.
-     */
-    abstract void setOpen(boolean open, @Trigger int trigger);
-    abstract boolean isPresent();
-    abstract boolean isOpen();
-    abstract void setTitle(String title);
-    abstract void update();
-
-    /**
-     * Returns a controller suitable for {@code Layout}.
-     */
-    static DrawerController create(Activity activity) {
-
-        DrawerLayout layout = (DrawerLayout) activity.findViewById(R.id.drawer_layout);
-
-        if (layout == null) {
-            return new DummyDrawerController();
-        }
-
-        View drawer = activity.findViewById(R.id.drawer_roots);
-        Toolbar toolbar = (Toolbar) activity.findViewById(R.id.roots_toolbar);
-
-        drawer.getLayoutParams().width = calculateDrawerWidth(activity);
-
-        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
-                activity,
-                layout,
-                R.drawable.ic_hamburger,
-                R.string.drawer_open,
-                R.string.drawer_close);
-
-        return new RuntimeDrawerController(layout, drawer, toggle, toolbar);
-    }
-
-    /**
-     * Returns a controller suitable for {@code Layout}.
-     */
-    static DrawerController createDummy() {
-        return new DummyDrawerController();
-    }
-
-    private static int calculateDrawerWidth(Activity activity) {
-        // Material design specification for navigation drawer:
-        // https://www.google.com/design/spec/patterns/navigation-drawer.html
-        float width = Display.screenWidth(activity) - Display.actionBarHeight(activity);
-        float maxWidth = activity.getResources().getDimension(R.dimen.max_drawer_width);
-        int finalWidth = (int) ((width > maxWidth ? maxWidth : width));
-
-        if (DEBUG)
-            Log.d(TAG, "Calculated drawer width:" + (finalWidth / Display.density(activity)));
-
-        return finalWidth;
-    }
-
-    /**
-     * Runtime controller that manages a real drawer.
-     */
-    private static final class RuntimeDrawerController extends DrawerController
-            implements ItemDragListener.DragHost {
-        private final ActionBarDrawerToggle mToggle;
-        private DrawerLayout mLayout;
-        private View mDrawer;
-        private Toolbar mToolbar;
-        private @Trigger int mTrigger = OPENED_OTHER;
-
-        public RuntimeDrawerController(
-                DrawerLayout layout, View drawer, ActionBarDrawerToggle toggle,
-                Toolbar drawerToolbar) {
-            mToolbar = drawerToolbar;
-            assert(layout != null);
-
-            mLayout = layout;
-            mDrawer = drawer;
-            mToggle = toggle;
-
-            mLayout.setDrawerListener(this);
-
-            View edge = layout.findViewById(R.id.drawer_edge);
-            edge.setOnDragListener(new ItemDragListener<>(this));
-        }
-
-        @Override
-        public void runOnUiThread(Runnable runnable) {
-            mDrawer.post(runnable);
-        }
-
-        @Override
-        public void setDropTargetHighlight(View v, boolean highlight) {
-            assert (v.getId() == R.id.drawer_edge);
-
-            @ColorRes int id = highlight ? R.color.item_doc_background_selected :
-                android.R.color.transparent;
-            v.setBackgroundColor(id);
-        }
-
-        @Override
-        public void onViewHovered(View v) {
-            assert (v.getId() == R.id.drawer_edge);
-
-            setOpen(true);
-        }
-
-        @Override
-        void setOpen(boolean open) {
-            setOpen(open, OPENED_OTHER);
-        }
-
-        @Override
-        void setOpen(boolean open, @Trigger int trigger) {
-            if (open) {
-                mLayout.openDrawer(mDrawer);
-                mTrigger = trigger;
-            } else {
-                mLayout.closeDrawer(mDrawer);
-            }
-        }
-
-        @Override
-        boolean isOpen() {
-            return mLayout.isDrawerOpen(mDrawer);
-        }
-
-        @Override
-        boolean isPresent() {
-            return true;
-        }
-
-        @Override
-        void setTitle(String title) {
-            mToolbar.setTitle(title);
-        }
-
-        @Override
-        void update() {
-            mToggle.syncState();
-        }
-
-        @Override
-        public void onDrawerSlide(View drawerView, float slideOffset) {
-            mToggle.onDrawerSlide(drawerView, slideOffset);
-        }
-
-        @Override
-        public void onDrawerOpened(View drawerView) {
-            mToggle.onDrawerOpened(drawerView);
-            Metrics.logDrawerOpened(mToolbar.getContext(), mTrigger);
-        }
-
-        @Override
-        public void onDrawerClosed(View drawerView) {
-            mToggle.onDrawerClosed(drawerView);
-            mTrigger = OPENED_OTHER;
-        }
-
-        @Override
-        public void onDrawerStateChanged(int newState) {
-            mToggle.onDrawerStateChanged(newState);
-            if (newState == DrawerLayout.STATE_DRAGGING) {
-                mTrigger = OPENED_SWIPE;
-            }
-        }
-    }
-
-    /*
-     * Dummy controller useful with clients that don't host a real drawer.
-     */
-    private static final class DummyDrawerController extends DrawerController {
-
-        @Override
-        void setOpen(boolean open) {}
-
-        @Override
-        void setOpen(boolean open, @Trigger int trigger) {}
-
-        @Override
-        boolean isOpen() {
-            return false;
-        }
-
-        @Override
-        boolean isPresent() {
-            return false;
-        }
-
-        @Override
-        void setTitle(String title) {}
-
-        @Override
-        void update() {}
-
-        @Override
-        public void onDrawerSlide(View drawerView, float slideOffset) {}
-
-        @Override
-        public void onDrawerOpened(View drawerView) {}
-
-        @Override
-        public void onDrawerClosed(View drawerView) {}
-
-        @Override
-        public void onDrawerStateChanged(int newState) {}
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DropdownBreadcrumb.java b/packages/DocumentsUI/src/com/android/documentsui/DropdownBreadcrumb.java
deleted file mode 100644
index 71d7334..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/DropdownBreadcrumb.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.BaseAdapter;
-import android.widget.Spinner;
-import android.widget.TextView;
-
-import com.android.documentsui.NavigationViewManager.Breadcrumb;
-import com.android.documentsui.NavigationViewManager.Environment;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.RootInfo;
-
-import java.util.function.Consumer;
-
-/**
- * Dropdown implementation of breadcrumb used for phone device layouts
- */
-
-public final class DropdownBreadcrumb extends Spinner implements Breadcrumb {
-
-    private DropdownAdapter mAdapter;
-
-    public DropdownBreadcrumb(
-            Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
-        super(context, attrs, defStyleAttr, defStyleRes);
-    }
-
-    public DropdownBreadcrumb(Context context, AttributeSet attrs, int defStyleAttr) {
-        super(context, attrs, defStyleAttr);
-    }
-
-    public DropdownBreadcrumb(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    public DropdownBreadcrumb(Context context) {
-        super(context);
-    }
-
-    @Override
-    public void setup(Environment env, State state, Consumer<Integer> listener) {
-        mAdapter = new DropdownAdapter(state, env);
-        setOnItemSelectedListener(
-                new OnItemSelectedListener() {
-                    @Override
-                    public void onItemSelected(
-                            AdapterView<?> parent, View view, int position, long id) {
-                        listener.accept(position);
-                    }
-
-                    @Override
-                    public void onNothingSelected(AdapterView<?> parent) {}
-                });
-    }
-
-    @Override
-    public void show(boolean visibility) {
-        if (visibility) {
-            setVisibility(VISIBLE);
-            setAdapter(mAdapter);
-        } else {
-            setVisibility(GONE);
-            setAdapter(null);
-        }
-    }
-
-    @Override
-    public void postUpdate() {
-        setSelection(mAdapter.getCount() - 1, false);
-    }
-
-    private static final class DropdownAdapter extends BaseAdapter {
-        private Environment mEnv;
-        private State mState;
-
-        public DropdownAdapter(State state, Environment env) {
-            mState = state;
-            mEnv = env;
-        }
-
-        @Override
-        public int getCount() {
-            return mState.stack.size();
-        }
-
-        @Override
-        public DocumentInfo getItem(int position) {
-            return mState.stack.get(mState.stack.size() - position - 1);
-        }
-
-        @Override
-        public long getItemId(int position) {
-            return position;
-        }
-
-        @Override
-        public View getView(int position, View convertView, ViewGroup parent) {
-            if (convertView == null) {
-                convertView = LayoutInflater.from(parent.getContext())
-                        .inflate(R.layout.item_subdir_title, parent, false);
-            }
-
-            final TextView title = (TextView) convertView.findViewById(android.R.id.title);
-            final DocumentInfo doc = getItem(position);
-
-            if (position == 0) {
-                final RootInfo root = mEnv.getCurrentRoot();
-                title.setText(root.title);
-            } else {
-                title.setText(doc.displayName);
-            }
-
-            return convertView;
-        }
-
-        @Override
-        public View getDropDownView(int position, View convertView, ViewGroup parent) {
-            if (convertView == null) {
-                convertView = LayoutInflater.from(parent.getContext())
-                        .inflate(R.layout.item_subdir, parent, false);
-            }
-
-            final TextView title = (TextView) convertView.findViewById(android.R.id.title);
-            final DocumentInfo doc = getItem(position);
-
-            if (position == 0) {
-                final RootInfo root = mEnv.getCurrentRoot();
-                title.setText(root.title);
-            } else {
-                title.setText(doc.displayName);
-            }
-
-            return convertView;
-        }
-    }
-
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/EjectRootTask.java b/packages/DocumentsUI/src/com/android/documentsui/EjectRootTask.java
deleted file mode 100644
index e47a262..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/EjectRootTask.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.content.ContentProviderClient;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.net.Uri;
-import android.provider.DocumentsContract;
-import android.util.Log;
-
-import java.util.function.BooleanSupplier;
-import java.util.function.Consumer;
-
-final class EjectRootTask extends CheckedTask<Void, Boolean> {
-    private final String mAuthority;
-    private final String mRootId;
-    private final Consumer<Boolean> mCallback;
-    private Context mContext;
-
-    /**
-     * @param ejectCanceledCheck The method reference we use to see whether eject should be stopped
-     * at any point
-     * @param finishCallback The end callback necessary when the eject task finishes
-     */
-    public EjectRootTask(Context context,
-            String authority,
-            String rootId,
-            BooleanSupplier ejectCanceledCheck,
-            Consumer<Boolean> finishCallback) {
-        super(ejectCanceledCheck::getAsBoolean);
-        mAuthority = authority;
-        mRootId = rootId;
-        mContext = context;
-        mCallback = finishCallback;
-    }
-
-    @Override
-    protected Boolean run(Void... params) {
-        final ContentResolver resolver = mContext.getContentResolver();
-
-        Uri rootUri = DocumentsContract.buildRootUri(mAuthority, mRootId);
-        ContentProviderClient client = null;
-        try {
-            client = DocumentsApplication.acquireUnstableProviderOrThrow(
-                    resolver, mAuthority);
-            return DocumentsContract.ejectRoot(client, rootUri);
-        } catch (Exception e) {
-            Log.w(Shared.TAG, "Failed to eject root", e);
-        } finally {
-            ContentProviderClient.releaseQuietly(client);
-        }
-
-        return false;
-    }
-
-    @Override
-    protected void finish(Boolean ejected) {
-        mCallback.accept(ejected);
-    }
-}
\ No newline at end of file
diff --git a/packages/DocumentsUI/src/com/android/documentsui/EventListener.java b/packages/DocumentsUI/src/com/android/documentsui/EventListener.java
deleted file mode 100644
index c15e9a6..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/EventListener.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.net.Uri;
-import android.support.annotation.Nullable;
-
-public interface EventListener {
-    /**
-     * @param uri Uri navigated to. If recents, then null.
-     */
-    void onDirectoryNavigated(@Nullable Uri uri);
-
-    /**
-     * @param uri Uri of the loaded directory. If recents, then null.
-     */
-    void onDirectoryLoaded(@Nullable Uri uri);
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/Events.java b/packages/DocumentsUI/src/com/android/documentsui/Events.java
deleted file mode 100644
index 95934c3f..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/Events.java
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.Shared.DEBUG;
-
-import android.graphics.Point;
-import android.support.v7.widget.RecyclerView;
-import android.util.Log;
-import android.util.Pools;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-import android.view.View;
-
-/**
- * Utility code for dealing with MotionEvents.
- */
-public final class Events {
-
-    /**
-     * Returns true if event was triggered by a mouse.
-     */
-    public static boolean isMouseEvent(MotionEvent e) {
-        int toolType = e.getToolType(0);
-        return toolType == MotionEvent.TOOL_TYPE_MOUSE;
-    }
-
-    /**
-     * Returns true if event was triggered by a finger or stylus touch.
-     */
-    public static boolean isActionDown(MotionEvent e) {
-        return e.getActionMasked() == MotionEvent.ACTION_DOWN;
-    }
-
-    /**
-     * Returns true if event was triggered by a finger or stylus touch.
-     */
-    public static boolean isActionUp(MotionEvent e) {
-        return e.getActionMasked() == MotionEvent.ACTION_UP;
-    }
-
-    /**
-     * Returns true if the shift is pressed.
-     */
-    public boolean isShiftPressed(MotionEvent e) {
-        return hasShiftBit(e.getMetaState());
-    }
-
-    /**
-     * Whether or not the given keyCode represents a navigation keystroke (e.g. up, down, home).
-     *
-     * @param keyCode
-     * @return
-     */
-    public static boolean isNavigationKeyCode(int keyCode) {
-        switch (keyCode) {
-            case KeyEvent.KEYCODE_DPAD_UP:
-            case KeyEvent.KEYCODE_DPAD_DOWN:
-            case KeyEvent.KEYCODE_DPAD_LEFT:
-            case KeyEvent.KEYCODE_DPAD_RIGHT:
-            case KeyEvent.KEYCODE_MOVE_HOME:
-            case KeyEvent.KEYCODE_MOVE_END:
-            case KeyEvent.KEYCODE_PAGE_UP:
-            case KeyEvent.KEYCODE_PAGE_DOWN:
-                return true;
-            default:
-                return false;
-        }
-    }
-
-
-    /**
-     * Returns true if the "SHIFT" bit is set.
-     */
-    public static boolean hasShiftBit(int metaState) {
-        return (metaState & KeyEvent.META_SHIFT_ON) != 0;
-    }
-
-    /**
-     * A facade over MotionEvent primarily designed to permit for unit testing
-     * of related code.
-     */
-    public interface InputEvent extends AutoCloseable {
-        boolean isMouseEvent();
-        boolean isPrimaryButtonPressed();
-        boolean isSecondaryButtonPressed();
-        boolean isShiftKeyDown();
-
-        /** Returns true if the action is the initial press of a mouse or touch. */
-        boolean isActionDown();
-
-        /** Returns true if the action is the final release of a mouse or touch. */
-        boolean isActionUp();
-
-        // Eliminate the checked Exception from Autoclosable.
-        @Override
-        public void close();
-
-        Point getOrigin();
-        float getX();
-        float getY();
-        float getRawX();
-        float getRawY();
-
-        /** Returns true if the there is an item under the finger/cursor. */
-        boolean isOverItem();
-
-        /** Returns the adapter position of the item under the finger/cursor. */
-        int getItemPosition();
-    }
-
-    public static final class MotionInputEvent implements InputEvent {
-        private static final String TAG = "MotionInputEvent";
-
-        private static final Pools.SimplePool<MotionInputEvent> sPool = new Pools.SimplePool<>(1);
-
-        private MotionEvent mEvent;
-        interface PositionProvider {
-            int get(MotionEvent e);
-        }
-
-        private int mPosition;
-
-        private MotionInputEvent() {
-            if (DEBUG) Log.i(TAG, "Created a new instance.");
-        }
-
-        public static MotionInputEvent obtain(MotionEvent event, RecyclerView view) {
-            Shared.checkMainLoop();
-
-            MotionInputEvent instance = sPool.acquire();
-            instance = (instance != null ? instance : new MotionInputEvent());
-
-            instance.mEvent = event;
-
-            // Consider determining position lazily as an optimization.
-            View child = view.findChildViewUnder(event.getX(), event.getY());
-            instance.mPosition = (child != null)
-                    ? view.getChildAdapterPosition(child)
-                    : RecyclerView.NO_POSITION;
-
-            return instance;
-        }
-
-        public static MotionInputEvent obtain(
-                MotionEvent event, PositionProvider positionProvider) {
-            Shared.checkMainLoop();
-
-            MotionInputEvent instance = sPool.acquire();
-            instance = (instance != null ? instance : new MotionInputEvent());
-
-            instance.mEvent = event;
-            instance.mPosition = positionProvider.get(event);
-
-            return instance;
-        }
-
-        public void recycle() {
-            Shared.checkMainLoop();
-
-            mEvent = null;
-            mPosition = -1;
-
-            boolean released = sPool.release(this);
-            // This assert is used to guarantee we won't generate too many instances that can't be
-            // held in the pool, which indicates our pool size is too small.
-            //
-            // Right now one instance is enough because we expect all instances are only used in
-            // main thread.
-            assert(released);
-        }
-
-        @Override
-        public void close() {
-            recycle();
-        }
-
-        @Override
-        public boolean isMouseEvent() {
-            return Events.isMouseEvent(mEvent);
-        }
-
-        @Override
-        public boolean isPrimaryButtonPressed() {
-            return mEvent.isButtonPressed(MotionEvent.BUTTON_PRIMARY);
-        }
-
-        @Override
-        public boolean isSecondaryButtonPressed() {
-            return mEvent.isButtonPressed(MotionEvent.BUTTON_SECONDARY);
-        }
-
-        @Override
-        public boolean isShiftKeyDown() {
-            return Events.hasShiftBit(mEvent.getMetaState());
-        }
-
-        @Override
-        public boolean isActionDown() {
-            return mEvent.getActionMasked() == MotionEvent.ACTION_DOWN;
-        }
-
-        @Override
-        public boolean isActionUp() {
-            return mEvent.getActionMasked() == MotionEvent.ACTION_UP;
-        }
-
-        @Override
-        public Point getOrigin() {
-            return new Point((int) mEvent.getX(), (int) mEvent.getY());
-        }
-
-        @Override
-        public float getX() {
-            return mEvent.getX();
-        }
-
-        @Override
-        public float getY() {
-            return mEvent.getY();
-        }
-
-        @Override
-        public float getRawX() {
-            return mEvent.getRawX();
-        }
-
-        @Override
-        public float getRawY() {
-            return mEvent.getRawY();
-        }
-
-        @Override
-        public boolean isOverItem() {
-            return getItemPosition() != RecyclerView.NO_POSITION;
-        }
-
-        @Override
-        public int getItemPosition() {
-            return mPosition;
-        }
-
-        @Override
-        public String toString() {
-            return new StringBuilder()
-                    .append("MotionInputEvent {")
-                    .append("isMouseEvent=").append(isMouseEvent())
-                    .append(" isPrimaryButtonPressed=").append(isPrimaryButtonPressed())
-                    .append(" isSecondaryButtonPressed=").append(isSecondaryButtonPressed())
-                    .append(" isShiftKeyDown=").append(isShiftKeyDown())
-                    .append(" isActionDown=").append(isActionDown())
-                    .append(" isActionUp=").append(isActionUp())
-                    .append(" getOrigin=").append(getOrigin())
-                    .append(" isOverItem=").append(isOverItem())
-                    .append(" getItemPosition=").append(getItemPosition())
-                    .append("}")
-                    .toString();
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/Files.java b/packages/DocumentsUI/src/com/android/documentsui/Files.java
deleted file mode 100644
index 009fecb4..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/Files.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import java.io.File;
-
-/**
- * Utility class for working with {@link File} instances.
- */
-public final class Files {
-
-    private Files() {}  // no initialization for utility classes.
-
-    public static void deleteRecursively(File file) {
-        if (file.isDirectory()) {
-            for (File child : file.listFiles()) {
-                deleteRecursively(child);
-            }
-        }
-        file.delete();
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java b/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java
deleted file mode 100644
index 54f3e61..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java
+++ /dev/null
@@ -1,531 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.OperationDialogFragment.DIALOG_TYPE_UNKNOWN;
-import static com.android.documentsui.Shared.DEBUG;
-
-import android.app.Activity;
-import android.app.FragmentManager;
-import android.content.ActivityNotFoundException;
-import android.content.ClipData;
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Parcelable;
-import android.provider.DocumentsContract;
-import android.support.design.widget.Snackbar;
-import android.util.Log;
-import android.view.KeyEvent;
-import android.view.Menu;
-import android.view.MenuItem;
-
-import com.android.documentsui.MenuManager.DirectoryDetails;
-import com.android.documentsui.OperationDialogFragment.DialogType;
-import com.android.documentsui.RecentsProvider.ResumeColumns;
-import com.android.documentsui.clipping.DocumentClipper;
-import com.android.documentsui.dirlist.AnimationView;
-import com.android.documentsui.dirlist.DirectoryFragment;
-import com.android.documentsui.dirlist.FragmentTuner;
-import com.android.documentsui.dirlist.FragmentTuner.FilesTuner;
-import com.android.documentsui.dirlist.Model;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
-import com.android.documentsui.model.DurableUtils;
-import com.android.documentsui.model.RootInfo;
-import com.android.documentsui.services.FileOperationService;
-
-import java.io.FileNotFoundException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * Standalone file management activity.
- */
-public class FilesActivity extends BaseActivity {
-
-    public static final String TAG = "FilesActivity";
-
-    // See comments where this const is referenced for details.
-    private static final int DRAWER_NO_FIDDLE_DELAY = 1500;
-
-    // Track the time we opened the drawer in response to back being pressed.
-    // We use the time gap to figure out whether to close app or reopen the drawer.
-    private long mDrawerLastFiddled;
-    private DocumentClipper mClipper;
-    private FilesMenuManager mMenuManager;
-    private DirectoryDetails mDetails;
-
-    public FilesActivity() {
-        super(R.layout.files_activity, TAG);
-    }
-
-    @Override
-    public void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-
-        mClipper = DocumentsApplication.getDocumentClipper(this);
-        mMenuManager = new FilesMenuManager(mSearchManager, getDisplayState());
-        mDetails = new DirectoryDetails(this) {
-            @Override
-            public boolean hasItemsToPaste() {
-                return mClipper.hasItemsToPaste();
-            }
-        };
-
-        RootsFragment.show(getFragmentManager(), this::openRootSettings);
-
-        final Intent intent = getIntent();
-        final Uri uri = intent.getData();
-
-        if (mState.restored) {
-            if (DEBUG) Log.d(TAG, "Stack already resolved for uri: " + intent.getData());
-        } else if (!mState.stack.isEmpty()) {
-            // If a non-empty stack is present in our state, it was read (presumably)
-            // from EXTRA_STACK intent extra. In this case, we'll skip other means of
-            // loading or restoring the stack (like URI).
-            //
-            // When restoring from a stack, if a URI is present, it should only ever be:
-            // -- a launch URI: Launch URIs support sensible activity management,
-            //    but don't specify a real content target)
-            // -- a fake Uri from notifications. These URIs have no authority (TODO: details).
-            //
-            // Any other URI is *sorta* unexpected...except when browsing an archive
-            // in downloads.
-            if(uri != null
-                    && uri.getAuthority() != null
-                    && !uri.equals(mState.stack.peek())
-                    && !LauncherActivity.isLaunchUri(uri)) {
-                if (DEBUG) Log.w(TAG,
-                        "Launching with non-empty stack. Ignoring unexpected uri: " + uri);
-            } else {
-                if (DEBUG) Log.d(TAG, "Launching with non-empty stack.");
-            }
-            refreshCurrentRootAndDirectory(AnimationView.ANIM_NONE);
-        } else if (Intent.ACTION_VIEW.equals(intent.getAction())) {
-            assert(uri != null);
-            new OpenUriForViewTask(this).executeOnExecutor(
-                    ProviderExecutor.forAuthority(uri.getAuthority()), uri);
-        } else if (DocumentsContract.isRootUri(this, uri)) {
-            if (DEBUG) Log.d(TAG, "Launching with root URI.");
-            // If we've got a specific root to display, restore that root using a dedicated
-            // authority. That way a misbehaving provider won't result in an ANR.
-            loadRoot(uri);
-        } else {
-            if (DEBUG) Log.d(TAG, "All other means skipped. Launching into default directory.");
-            loadRoot(getDefaultRoot());
-        }
-
-        final @DialogType int dialogType = intent.getIntExtra(
-                FileOperationService.EXTRA_DIALOG_TYPE, DIALOG_TYPE_UNKNOWN);
-        // DialogFragment takes care of restoring the dialog on configuration change.
-        // Only show it manually for the first time (icicle is null).
-        if (icicle == null && dialogType != DIALOG_TYPE_UNKNOWN) {
-            final int opType = intent.getIntExtra(
-                    FileOperationService.EXTRA_OPERATION_TYPE,
-                    FileOperationService.OPERATION_COPY);
-            final ArrayList<DocumentInfo> srcList =
-                    intent.getParcelableArrayListExtra(FileOperationService.EXTRA_SRC_LIST);
-            OperationDialogFragment.show(
-                    getFragmentManager(),
-                    dialogType,
-                    srcList,
-                    mState.stack,
-                    opType);
-        }
-    }
-
-    @Override
-    void includeState(State state) {
-        final Intent intent = getIntent();
-
-        state.action = State.ACTION_BROWSE;
-        state.allowMultiple = true;
-
-        // Options specific to the DocumentsActivity.
-        assert(!intent.hasExtra(Intent.EXTRA_LOCAL_ONLY));
-
-        final DocumentStack stack = intent.getParcelableExtra(Shared.EXTRA_STACK);
-        if (stack != null) {
-            state.stack = stack;
-        }
-    }
-
-    @Override
-    protected void onPostCreate(Bundle savedInstanceState) {
-        super.onPostCreate(savedInstanceState);
-        // This check avoids a flicker from "Recents" to "Home".
-        // Only update action bar at this point if there is an active
-        // serach. Why? Because this avoid an early (undesired) load of
-        // the recents root...which is the default root in other activities.
-        // In Files app "Home" is the default, but it is loaded async.
-        // update will be called once Home root is loaded.
-        // Except while searching we need this call to ensure the
-        // search bits get layed out correctly.
-        if (mSearchManager.isSearching()) {
-            mNavigator.update();
-        }
-    }
-
-    @Override
-    public void onResume() {
-        super.onResume();
-
-        final RootInfo root = getCurrentRoot();
-
-        // If we're browsing a specific root, and that root went away, then we
-        // have no reason to hang around.
-        // TODO: Rather than just disappearing, maybe we should inform
-        // the user what has happened, let them close us. Less surprising.
-        if (mRoots.getRootBlocking(root.authority, root.rootId) == null) {
-            finish();
-        }
-    }
-
-    @Override
-    public String getDrawerTitle() {
-        Intent intent = getIntent();
-        return (intent != null && intent.hasExtra(Intent.EXTRA_TITLE))
-                ? intent.getStringExtra(Intent.EXTRA_TITLE)
-                : getTitle().toString();
-    }
-
-    @Override
-    public boolean onPrepareOptionsMenu(Menu menu) {
-        super.onPrepareOptionsMenu(menu);
-        mMenuManager.updateOptionMenu(menu, mDetails);
-        return true;
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case R.id.menu_create_dir:
-                assert(canCreateDirectory());
-                showCreateDirectoryDialog();
-                break;
-            case R.id.menu_new_window:
-                createNewWindow();
-                break;
-            case R.id.menu_paste_from_clipboard:
-                DirectoryFragment dir = getDirectoryFragment();
-                if (dir != null) {
-                    dir.pasteFromClipboard();
-                }
-                break;
-            case R.id.menu_settings:
-                final RootInfo root = getCurrentRoot();
-                openRootSettings(root);
-                break;
-            default:
-                return super.onOptionsItemSelected(item);
-        }
-        return true;
-    }
-
-    void openRootSettings(RootInfo root) {
-        Metrics.logUserAction(this, Metrics.USER_ACTION_SETTINGS);
-        final Intent intent = new Intent(DocumentsContract.ACTION_DOCUMENT_ROOT_SETTINGS);
-        intent.setDataAndType(root.getUri(), DocumentsContract.Root.MIME_TYPE_ITEM);
-        startActivity(intent);
-    }
-
-    private void createNewWindow() {
-        Metrics.logUserAction(this, Metrics.USER_ACTION_NEW_WINDOW);
-
-        Intent intent = LauncherActivity.createLaunchIntent(this);
-        intent.putExtra(Shared.EXTRA_STACK, (Parcelable) mState.stack);
-
-        // With new multi-window mode we have to pick how we are launched.
-        // By default we'd be launched in-place above the existing app.
-        // By setting launch-to-side ActivityManager will open us to side.
-        if (isInMultiWindowMode()) {
-            intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT);
-        }
-
-        startActivity(intent);
-    }
-
-    @Override
-    void refreshDirectory(int anim) {
-        final FragmentManager fm = getFragmentManager();
-        final RootInfo root = getCurrentRoot();
-        final DocumentInfo cwd = getCurrentDirectory();
-
-        assert(!mSearchManager.isSearching());
-
-        if (cwd == null) {
-            DirectoryFragment.showRecentsOpen(fm, anim);
-        } else {
-            // Normal boring directory
-            DirectoryFragment.showDirectory(fm, root, cwd, anim);
-        }
-    }
-
-    @Override
-    public void onDocumentsPicked(List<DocumentInfo> docs) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void onDocumentPicked(DocumentInfo doc, Model model) {
-        // Anything on downloads goes through the back through downloads manager
-        // (that's the MANAGE_DOCUMENT bit).
-        // This is done for two reasons:
-        // 1) The file in question might be a failed/queued or otherwise have some
-        //    specialized download handling.
-        // 2) For APKs, the download manager will add on some important security stuff
-        //    like origin URL.
-        // All other files not on downloads, event APKs, would get no benefit from this
-        // treatment, thusly the "isDownloads" check.
-
-        // Launch MANAGE_DOCUMENTS only for the root level files, so it's not called for
-        // files in archives. Also, if the activity is already browsing a ZIP from downloads,
-        // then skip MANAGE_DOCUMENTS.
-        final boolean isViewing = Intent.ACTION_VIEW.equals(getIntent().getAction());
-        final boolean isInArchive = mState.stack.size() > 1;
-        if (getCurrentRoot().isDownloads() && !isInArchive && !isViewing) {
-            // First try managing the document; we expect manager to filter
-            // based on authority, so we don't grant.
-            final Intent manage = new Intent(DocumentsContract.ACTION_MANAGE_DOCUMENT);
-            manage.setData(doc.derivedUri);
-
-            try {
-                startActivity(manage);
-                return;
-            } catch (ActivityNotFoundException ex) {
-                // fall back to regular handling below.
-            }
-        }
-
-        if (doc.isContainer()) {
-            openContainerDocument(doc);
-        } else {
-            openDocument(doc, model);
-        }
-    }
-
-    @Override
-    public void springOpenDirectory(DocumentInfo doc) {
-        assert(doc.isContainer());
-        assert(!doc.isArchive());
-        openContainerDocument(doc);
-    }
-
-    /**
-     * Launches an intent to view the specified document.
-     */
-    private void openDocument(DocumentInfo doc, Model model) {
-        Intent intent = new QuickViewIntentBuilder(
-                getPackageManager(), getResources(), doc, model).build();
-
-        if (intent != null) {
-            // TODO: un-work around issue b/24963914. Should be fixed soon.
-            try {
-                startActivity(intent);
-                return;
-            } catch (SecurityException e) {
-                // Carry on to regular view mode.
-                Log.e(TAG, "Caught security error: " + e.getLocalizedMessage());
-            }
-        }
-
-        // Fall back to traditional VIEW action...
-        intent = new Intent(Intent.ACTION_VIEW);
-        intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
-        intent.setData(doc.derivedUri);
-
-        if (DEBUG && intent.getClipData() != null) {
-            Log.d(TAG, "Starting intent w/ clip data: " + intent.getClipData());
-        }
-
-        try {
-            startActivity(intent);
-        } catch (ActivityNotFoundException e) {
-            Snackbars.makeSnackbar(
-                    this, R.string.toast_no_application, Snackbar.LENGTH_SHORT).show();
-        }
-    }
-
-    @Override
-    public boolean onKeyShortcut(int keyCode, KeyEvent event) {
-        DirectoryFragment dir;
-        // TODO: All key events should be statically bound using alphabeticShortcut.
-        // But not working.
-        switch (keyCode) {
-            case KeyEvent.KEYCODE_A:
-                dir = getDirectoryFragment();
-                if (dir != null) {
-                    dir.selectAllFiles();
-                }
-                return true;
-            case KeyEvent.KEYCODE_X:
-                dir = getDirectoryFragment();
-                if (dir != null) {
-                    dir.cutSelectedToClipboard();
-                }
-                return true;
-            case KeyEvent.KEYCODE_C:
-                dir = getDirectoryFragment();
-                if (dir != null) {
-                    dir.copySelectedToClipboard();
-                }
-                return true;
-            case KeyEvent.KEYCODE_V:
-                dir = getDirectoryFragment();
-                if (dir != null) {
-                    dir.pasteFromClipboard();
-                }
-                return true;
-            default:
-                return super.onKeyShortcut(keyCode, event);
-        }
-    }
-
-    // Do some "do what a I want" drawer fiddling, but don't
-    // do it if user already hit back recently and we recently
-    // did some fiddling.
-    @Override
-    boolean onBeforePopDir() {
-        int size = mState.stack.size();
-
-        if (mDrawer.isPresent()
-                && (System.currentTimeMillis() - mDrawerLastFiddled) > DRAWER_NO_FIDDLE_DELAY) {
-            // Close drawer if it is open.
-            if (mDrawer.isOpen()) {
-                mDrawer.setOpen(false);
-                mDrawerLastFiddled = System.currentTimeMillis();
-                return true;
-            }
-
-            // Open the Close drawer if it is closed and we're at the top of a root.
-            if (size <= 1) {
-                mDrawer.setOpen(true);
-                // Remember so we don't just close it again if back is pressed again.
-                mDrawerLastFiddled = System.currentTimeMillis();
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    // Turns out only DocumentsActivity was ever calling saveStackBlocking.
-    // There may be a  case where we want to contribute entries from
-    // Behavior here in FilesActivity, but it isn't yet obvious.
-    // TODO: Contribute to recents, or remove this.
-    void writeStackToRecentsBlocking() {
-        final ContentResolver resolver = getContentResolver();
-        final ContentValues values = new ContentValues();
-
-        final byte[] rawStack = DurableUtils.writeToArrayOrNull(mState.stack);
-
-        // Remember location for next app launch
-        final String packageName = getCallingPackageMaybeExtra();
-        values.clear();
-        values.put(ResumeColumns.STACK, rawStack);
-        values.put(ResumeColumns.EXTERNAL, 0);
-        resolver.insert(RecentsProvider.buildResume(packageName), values);
-    }
-
-    @Override
-    void onTaskFinished(Uri... uris) {
-        if (DEBUG) Log.d(TAG, "onFinished() " + Arrays.toString(uris));
-
-        final Intent intent = new Intent();
-        if (uris.length == 1) {
-            intent.setData(uris[0]);
-        } else if (uris.length > 1) {
-            final ClipData clipData = new ClipData(
-                    null, mState.acceptMimes, new ClipData.Item(uris[0]));
-            for (int i = 1; i < uris.length; i++) {
-                clipData.addItem(new ClipData.Item(uris[i]));
-            }
-            intent.setClipData(clipData);
-        }
-
-        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION
-                | Intent.FLAG_GRANT_WRITE_URI_PERMISSION
-                | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
-
-        setResult(Activity.RESULT_OK, intent);
-        finish();
-    }
-
-    @Override
-    public FragmentTuner createFragmentTuner() {
-      return new FilesTuner(this, getDisplayState());
-    }
-
-    @Override
-    public MenuManager getMenuManager() {
-      return mMenuManager;
-    }
-
-    @Override
-    public DirectoryDetails getDirectoryDetails() {
-        return mDetails;
-    }
-
-    /**
-     * Builds a stack for the specific Uris. Multi roots are not supported, as it's impossible
-     * to know which root to select. Also, the stack doesn't contain intermediate directories.
-     * It's primarly used for opening ZIP archives from Downloads app.
-     */
-    private static final class OpenUriForViewTask extends PairedTask<FilesActivity, Uri, Void> {
-
-        private final State mState;
-        public OpenUriForViewTask(FilesActivity activity) {
-            super(activity);
-            mState = activity.mState;
-        }
-
-        @Override
-        public Void run(Uri... params) {
-            final Uri uri = params[0];
-
-            final RootsCache rootsCache = DocumentsApplication.getRootsCache(mOwner);
-            final String authority = uri.getAuthority();
-
-            final Collection<RootInfo> roots =
-                    rootsCache.getRootsForAuthorityBlocking(authority);
-            if (roots.isEmpty()) {
-                Log.e(TAG, "Failed to find root for the requested Uri: " + uri);
-                return null;
-            }
-
-            final RootInfo root = roots.iterator().next();
-            mState.stack.root = root;
-            try {
-                mState.stack.add(DocumentInfo.fromUri(mOwner.getContentResolver(), uri));
-            } catch (FileNotFoundException e) {
-                Log.e(TAG, "Failed to resolve DocumentInfo from Uri: " + uri);
-            }
-            mState.stack.add(root.getRootDocumentBlocking(mOwner));
-            return null;
-        }
-
-        @Override
-        public void finish(Void result) {
-            mOwner.refreshCurrentRootAndDirectory(AnimationView.ANIM_NONE);
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/FilesMenuManager.java b/packages/DocumentsUI/src/com/android/documentsui/FilesMenuManager.java
deleted file mode 100644
index a7e4905..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/FilesMenuManager.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.view.Menu;
-import android.view.MenuItem;
-
-import com.android.documentsui.model.RootInfo;
-
-final class FilesMenuManager extends MenuManager {
-
-    public FilesMenuManager(SearchViewManager searchManager, State displayState) {
-        super(searchManager, displayState);
-    }
-
-    @Override
-    public void updateOptionMenu(Menu menu, DirectoryDetails details) {
-        super.updateOptionMenu(menu, details);
-
-        // It hides icon if searching in progress
-        mSearchManager.updateMenu();
-    }
-
-    @Override
-    void updateSettings(MenuItem settings, RootInfo root) {
-        settings.setVisible(true);
-        settings.setEnabled(root.hasSettings());
-    }
-
-    @Override
-    void updateEject(MenuItem eject, RootInfo root) {
-        eject.setVisible(true);
-        eject.setEnabled(root.supportsEject() && !root.ejecting);
-    }
-
-    @Override
-    void updateSettings(MenuItem settings, DirectoryDetails directoryDetails) {
-        settings.setVisible(directoryDetails.hasRootSettings());
-    }
-
-    @Override
-    void updateNewWindow(MenuItem newWindow, DirectoryDetails directoryDetails) {
-        newWindow.setVisible(directoryDetails.shouldShowFancyFeatures());
-    }
-
-    @Override
-    void updateMoveTo(MenuItem moveTo, SelectionDetails selectionDetails) {
-        moveTo.setVisible(true);
-        moveTo.setEnabled(!selectionDetails.containsPartialFiles() && selectionDetails.canDelete());
-    }
-
-    @Override
-    void updateCopyTo(MenuItem copyTo, SelectionDetails selectionDetails) {
-        copyTo.setVisible(true);
-        copyTo.setEnabled(!selectionDetails.containsPartialFiles());
-    }
-
-    @Override
-    void updateSelectAll(MenuItem selectAll, SelectionDetails selectionDetails) {
-        selectAll.setVisible(true);
-    }
-
-    @Override
-    void updateCreateDir(MenuItem createDir, DirectoryDetails directoryDetails) {
-        createDir.setVisible(true);
-        createDir.setEnabled(directoryDetails.canCreateDirectory());
-    }
-
-    @Override
-    void updateShare(MenuItem share, SelectionDetails selectionDetails) {
-        share.setVisible(!selectionDetails.containsDirectories()
-                && !selectionDetails.containsPartialFiles());
-    }
-
-    @Override
-    void updateDelete(MenuItem delete, SelectionDetails selectionDetails) {
-        delete.setVisible(selectionDetails.canDelete());
-    }
-
-    @Override
-    void updateRename(MenuItem rename, SelectionDetails selectionDetails) {
-        rename.setVisible(true);
-        rename.setEnabled(!selectionDetails.containsPartialFiles() && selectionDetails.canRename());
-    }
-}
\ No newline at end of file
diff --git a/packages/DocumentsUI/src/com/android/documentsui/FilteringCursorWrapper.java b/packages/DocumentsUI/src/com/android/documentsui/FilteringCursorWrapper.java
deleted file mode 100644
index 7426af5..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/FilteringCursorWrapper.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.Shared.TAG;
-import static com.android.documentsui.model.DocumentInfo.getCursorLong;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
-
-import android.database.AbstractCursor;
-import android.database.Cursor;
-import android.os.Bundle;
-import android.provider.DocumentsContract.Document;
-import android.util.Log;
-
-/**
- * Cursor wrapper that filters MIME types not matching given list.
- */
-public class FilteringCursorWrapper extends AbstractCursor {
-    private final Cursor mCursor;
-
-    private final int[] mPosition;
-    private int mCount;
-
-    public FilteringCursorWrapper(Cursor cursor, String[] acceptMimes) {
-        this(cursor, acceptMimes, null, Long.MIN_VALUE);
-    }
-
-    public FilteringCursorWrapper(Cursor cursor, String[] acceptMimes, String[] rejectMimes) {
-        this(cursor, acceptMimes, rejectMimes, Long.MIN_VALUE);
-    }
-
-    public FilteringCursorWrapper(
-            Cursor cursor, String[] acceptMimes, String[] rejectMimes, long rejectBefore) {
-        mCursor = cursor;
-
-        final int count = cursor.getCount();
-        mPosition = new int[count];
-
-        cursor.moveToPosition(-1);
-        while (cursor.moveToNext() && mCount < count) {
-            final String mimeType = getCursorString(cursor, Document.COLUMN_MIME_TYPE);
-            final long lastModified = getCursorLong(cursor, Document.COLUMN_LAST_MODIFIED);
-            if (rejectMimes != null && MimePredicate.mimeMatches(rejectMimes, mimeType)) {
-                continue;
-            }
-            if (lastModified < rejectBefore) {
-                continue;
-            }
-            if (MimePredicate.mimeMatches(acceptMimes, mimeType)) {
-                mPosition[mCount++] = cursor.getPosition();
-            }
-        }
-
-        if (DEBUG && mCount != cursor.getCount()) {
-            Log.d(TAG, "Before filtering " + cursor.getCount() + ", after " + mCount);
-        }
-    }
-
-    @Override
-    public Bundle getExtras() {
-        return mCursor.getExtras();
-    }
-
-    @Override
-    public void close() {
-        super.close();
-        mCursor.close();
-    }
-
-    @Override
-    public boolean onMove(int oldPosition, int newPosition) {
-        return mCursor.moveToPosition(mPosition[newPosition]);
-    }
-
-    @Override
-    public String[] getColumnNames() {
-        return mCursor.getColumnNames();
-    }
-
-    @Override
-    public int getCount() {
-        return mCount;
-    }
-
-    @Override
-    public double getDouble(int column) {
-        return mCursor.getDouble(column);
-    }
-
-    @Override
-    public float getFloat(int column) {
-        return mCursor.getFloat(column);
-    }
-
-    @Override
-    public int getInt(int column) {
-        return mCursor.getInt(column);
-    }
-
-    @Override
-    public long getLong(int column) {
-        return mCursor.getLong(column);
-    }
-
-    @Override
-    public short getShort(int column) {
-        return mCursor.getShort(column);
-    }
-
-    @Override
-    public String getString(int column) {
-        return mCursor.getString(column);
-    }
-
-    @Override
-    public int getType(int column) {
-        return mCursor.getType(column);
-    }
-
-    @Override
-    public boolean isNull(int column) {
-        return mCursor.isNull(column);
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/GridItemThumbnail.java b/packages/DocumentsUI/src/com/android/documentsui/GridItemThumbnail.java
deleted file mode 100644
index 38d6d72..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/GridItemThumbnail.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.widget.ImageView;
-
-/**
- * Ensures that grid thumbnails are always square.
- */
-public class GridItemThumbnail extends ImageView {
-    public GridItemThumbnail(Context context) {
-        super(context);
-    }
-
-    public GridItemThumbnail(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    public GridItemThumbnail(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-    }
-
-    @Override
-    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-        // Grid layout uses item width to figure out the number of columns, then dynamically fits
-        // rows into the view. The upshot of this is that changing the item width will mess up the
-        // grid layout - so to make the items square, throw out the height and use the width for
-        // both dimensions. The grid layout will correctly adjust the row height.
-        //
-        // Note that this code will need to be changed if the layout manager's orientation is
-        // changed from VERTICAL to HORIZONTAL.
-        super.onMeasure(widthMeasureSpec, widthMeasureSpec);
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/HorizontalBreadcrumb.java b/packages/DocumentsUI/src/com/android/documentsui/HorizontalBreadcrumb.java
deleted file mode 100644
index 7a08071..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/HorizontalBreadcrumb.java
+++ /dev/null
@@ -1,258 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.content.Context;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.util.AttributeSet;
-import android.view.GestureDetector;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-
-import com.android.documentsui.NavigationViewManager.Breadcrumb;
-import com.android.documentsui.NavigationViewManager.Environment;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.RootInfo;
-
-import java.util.function.Consumer;
-
-/**
- * Horizontal implementation of breadcrumb used for tablet / desktop device layouts
- */
-public final class HorizontalBreadcrumb extends RecyclerView
-        implements Breadcrumb, ItemDragListener.DragHost {
-
-    private static final int USER_NO_SCROLL_OFFSET_THRESHOLD = 5;
-
-    private LinearLayoutManager mLayoutManager;
-    private BreadcrumbAdapter mAdapter;
-    private Consumer<Integer> mListener;
-
-    public HorizontalBreadcrumb(Context context, AttributeSet attrs, int defStyleAttr) {
-        super(context, attrs, defStyleAttr);
-    }
-
-    public HorizontalBreadcrumb(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    public HorizontalBreadcrumb(Context context) {
-        super(context);
-    }
-
-    @Override
-    public void setup(Environment env,
-            com.android.documentsui.State state,
-            Consumer<Integer> listener) {
-
-        mListener = listener;
-        mLayoutManager = new LinearLayoutManager(
-                getContext(), LinearLayoutManager.HORIZONTAL, false);
-        mAdapter = new BreadcrumbAdapter(
-                state, env, new ItemDragListener<>(this));
-
-        setLayoutManager(mLayoutManager);
-        addOnItemTouchListener(new ClickListener(getContext(), this::onSingleTapUp));
-    }
-
-    @Override
-    public void show(boolean visibility) {
-        if (visibility) {
-            setVisibility(VISIBLE);
-            boolean shouldScroll = !hasUserDefineScrollOffset();
-            if (getAdapter() == null) {
-                setAdapter(mAdapter);
-            } else {
-                int currentItemCount = mAdapter.getItemCount();
-                int lastItemCount = mAdapter.getLastItemSize();
-                if (currentItemCount > lastItemCount) {
-                    mAdapter.notifyItemRangeInserted(lastItemCount,
-                            currentItemCount - lastItemCount);
-                    mAdapter.notifyItemChanged(lastItemCount - 1);
-                } else if (currentItemCount < lastItemCount) {
-                    mAdapter.notifyItemRangeRemoved(currentItemCount,
-                            lastItemCount - currentItemCount);
-                    mAdapter.notifyItemChanged(currentItemCount - 1);
-                }
-            }
-            if (shouldScroll) {
-                mLayoutManager.scrollToPosition(mAdapter.getItemCount() - 1);
-            }
-        } else {
-            setVisibility(GONE);
-            setAdapter(null);
-        }
-        mAdapter.updateLastItemSize();
-    }
-
-    private boolean hasUserDefineScrollOffset() {
-        final int maxOffset = computeHorizontalScrollRange() - computeHorizontalScrollExtent();
-        return (maxOffset - computeHorizontalScrollOffset() > USER_NO_SCROLL_OFFSET_THRESHOLD);
-    }
-
-    @Override
-    public void postUpdate() {
-    }
-
-    @Override
-    public void runOnUiThread(Runnable runnable) {
-        post(runnable);
-    }
-
-    @Override
-    public void setDropTargetHighlight(View v, boolean highlight) {
-        RecyclerView.ViewHolder vh = getChildViewHolder(v);
-        if (vh instanceof BreadcrumbHolder) {
-            ((BreadcrumbHolder) vh).setHighlighted(highlight);
-        }
-    }
-
-    @Override
-    public void onViewHovered(View v) {
-        int pos = getChildAdapterPosition(v);
-        if (pos != mAdapter.getItemCount() - 1) {
-            mListener.accept(pos);
-        }
-    }
-
-    private void onSingleTapUp(MotionEvent e) {
-        View itemView = findChildViewUnder(e.getX(), e.getY());
-        int pos = getChildAdapterPosition(itemView);
-        if (pos != mAdapter.getItemCount() - 1) {
-            mListener.accept(pos);
-        }
-    }
-
-    private static final class BreadcrumbAdapter
-            extends RecyclerView.Adapter<BreadcrumbHolder> {
-
-        private final Environment mEnv;
-        private final com.android.documentsui.State mState;
-        private final OnDragListener mDragListener;
-        // We keep the old item size so the breadcrumb will only re-render views that are necessary
-        private int mLastItemSize;
-
-        public BreadcrumbAdapter(com.android.documentsui.State state,
-                Environment env,
-                OnDragListener dragListener) {
-            mState = state;
-            mEnv = env;
-            mDragListener = dragListener;
-            mLastItemSize = mState.stack.size();
-        }
-
-        @Override
-        public BreadcrumbHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-            View v = LayoutInflater.from(parent.getContext())
-                    .inflate(R.layout.navigation_breadcrumb_item, null);
-            return new BreadcrumbHolder(v);
-        }
-
-        @Override
-        public void onBindViewHolder(BreadcrumbHolder holder, int position) {
-            final DocumentInfo doc = getItem(position);
-            final int horizontalPadding = (int) holder.itemView.getResources()
-                    .getDimension(R.dimen.breadcrumb_item_padding);
-
-            if (position == 0) {
-                final RootInfo root = mEnv.getCurrentRoot();
-                holder.title.setText(root.title);
-                holder.title.setPadding(0, 0, horizontalPadding, 0);
-            } else {
-                holder.title.setText(doc.displayName);
-                holder.title.setPadding(horizontalPadding, 0, horizontalPadding, 0);
-            }
-
-            if (position == getItemCount() - 1) {
-                holder.arrow.setVisibility(View.GONE);
-            } else {
-                holder.arrow.setVisibility(View.VISIBLE);
-            }
-            holder.itemView.setOnDragListener(mDragListener);
-        }
-
-        private DocumentInfo getItem(int position) {
-            return mState.stack.get(mState.stack.size() - position - 1);
-        }
-
-        @Override
-        public int getItemCount() {
-            return mState.stack.size();
-        }
-
-        public int getLastItemSize() {
-            return mLastItemSize;
-        }
-
-        public void updateLastItemSize() {
-            mLastItemSize = mState.stack.size();
-        }
-    }
-
-    private static class BreadcrumbHolder extends RecyclerView.ViewHolder {
-
-        protected DragOverTextView title;
-        protected ImageView arrow;
-
-        public BreadcrumbHolder(View itemView) {
-            super(itemView);
-            title = (DragOverTextView) itemView.findViewById(R.id.breadcrumb_text);
-            arrow = (ImageView) itemView.findViewById(R.id.breadcrumb_arrow);
-        }
-
-        /**
-         * Highlights the associated item view.
-         * @param highlighted
-         */
-        public void setHighlighted(boolean highlighted) {
-            title.setHighlight(highlighted);
-        }
-    }
-
-    private static final class ClickListener extends GestureDetector
-            implements OnItemTouchListener {
-
-        public ClickListener(Context context, Consumer<MotionEvent> listener) {
-            super(context, new SimpleOnGestureListener() {
-                @Override
-                public boolean onSingleTapUp(MotionEvent e) {
-                    listener.accept(e);
-                    return true;
-                }
-            });
-        }
-
-        @Override
-        public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
-            onTouchEvent(e);
-            return false;
-        }
-
-        @Override
-        public void onTouchEvent(RecyclerView rv, MotionEvent e) {
-            onTouchEvent(e);
-        }
-
-        @Override
-        public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/IconUtils.java b/packages/DocumentsUI/src/com/android/documentsui/IconUtils.java
deleted file mode 100644
index 177ba0d..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/IconUtils.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.content.pm.ProviderInfo;
-import android.graphics.drawable.Drawable;
-import android.provider.DocumentsContract.Document;
-import android.util.TypedValue;
-
-public class IconUtils {
-    public static Drawable loadPackageIcon(Context context, String authority, int icon) {
-        if (icon != 0) {
-            if (authority != null) {
-                final PackageManager pm = context.getPackageManager();
-                final ProviderInfo info = pm.resolveContentProvider(authority, 0);
-                if (info != null) {
-                    return pm.getDrawable(info.packageName, icon, info.applicationInfo);
-                }
-            } else {
-                return context.getDrawable(icon);
-            }
-        }
-        return null;
-    }
-
-    public static Drawable loadMimeIcon(
-            Context context, String mimeType, String authority, String docId, int mode) {
-        if (Document.MIME_TYPE_DIR.equals(mimeType)) {
-            // TODO: eventually move these hacky assets into that package
-            if ("com.android.providers.media.documents".equals(authority)
-                    && docId.startsWith("album")) {
-                return context.getDrawable(R.drawable.ic_doc_album);
-            }
-
-            if (mode == State.MODE_GRID) {
-                return context.getDrawable(R.drawable.ic_grid_folder);
-            } else {
-                return context.getDrawable(com.android.internal.R.drawable.ic_doc_folder);
-            }
-        }
-
-        return loadMimeIcon(context, mimeType);
-    }
-
-    public static Drawable loadMimeIcon(Context context, String mimeType) {
-        return context.getContentResolver().getTypeDrawable(mimeType);
-    }
-
-    public static Drawable applyTintColor(Context context, int drawableId, int tintColorId) {
-        final Drawable icon = context.getDrawable(drawableId);
-        icon.mutate();
-        icon.setTintList(context.getColorStateList(tintColorId));
-        return icon;
-    }
-
-    public static Drawable applyTintAttr(Context context, int drawableId, int tintAttrId) {
-        final TypedValue outValue = new TypedValue();
-        context.getTheme().resolveAttribute(tintAttrId, outValue, true);
-        return applyTintColor(context, drawableId, outValue.resourceId);
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/ItemDragListener.java b/packages/DocumentsUI/src/com/android/documentsui/ItemDragListener.java
deleted file mode 100644
index 152d3a0..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/ItemDragListener.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.content.ClipData;
-import android.graphics.drawable.Drawable;
-import android.util.Log;
-import android.view.DragEvent;
-import android.view.View;
-import android.view.View.OnDragListener;
-
-import com.android.documentsui.ItemDragListener.DragHost;
-import com.android.internal.annotations.VisibleForTesting;
-
-import java.util.Timer;
-import java.util.TimerTask;
-
-/**
- * An {@link OnDragListener} that adds support for "spring loading views". Use this when you want
- * items to pop-open when user hovers on them during a drag n drop.
- */
-public class ItemDragListener<H extends DragHost> implements OnDragListener {
-
-    private static final String TAG = "ItemDragListener";
-
-    @VisibleForTesting
-    static final int SPRING_TIMEOUT = 1000;
-
-    protected final H mDragHost;
-    private final Timer mHoverTimer;
-
-    public ItemDragListener(H dragHost) {
-        this(dragHost, new Timer());
-    }
-
-    @VisibleForTesting
-    protected ItemDragListener(H dragHost, Timer timer) {
-        mDragHost = dragHost;
-        mHoverTimer = timer;
-    }
-
-    @Override
-    public boolean onDrag(final View v, DragEvent event) {
-        switch (event.getAction()) {
-            case DragEvent.ACTION_DRAG_STARTED:
-                return true;
-            case DragEvent.ACTION_DRAG_ENTERED:
-                handleEnteredEvent(v);
-                return true;
-            case DragEvent.ACTION_DRAG_LOCATION:
-                handleLocationEvent(v, event.getX(), event.getY());
-                return true;
-            case DragEvent.ACTION_DRAG_EXITED:
-            case DragEvent.ACTION_DRAG_ENDED:
-                handleExitedEndedEvent(v);
-                return true;
-            case DragEvent.ACTION_DROP:
-                return handleDropEvent(v, event);
-        }
-
-        return false;
-    }
-
-    private void handleEnteredEvent(View v) {
-        mDragHost.setDropTargetHighlight(v, true);
-
-        TimerTask task = createOpenTask(v);
-        assert (task != null);
-        v.setTag(R.id.drag_hovering_tag, task);
-        mHoverTimer.schedule(task, SPRING_TIMEOUT);
-    }
-
-    private void handleLocationEvent(View v, float x, float y) {
-        Drawable background = v.getBackground();
-        if (background != null) {
-            background.setHotspot(x, y);
-        }
-    }
-
-    private void handleExitedEndedEvent(View v) {
-        mDragHost.setDropTargetHighlight(v, false);
-
-        TimerTask task = (TimerTask) v.getTag(R.id.drag_hovering_tag);
-        if (task != null) {
-            task.cancel();
-        }
-    }
-
-    private boolean handleDropEvent(View v, DragEvent event) {
-        ClipData clipData = event.getClipData();
-        if (clipData == null) {
-            Log.w(TAG, "Received invalid drop event with null clipdata. Ignoring.");
-            return false;
-        }
-
-        return handleDropEventChecked(v, event);
-    }
-
-    @VisibleForTesting
-    TimerTask createOpenTask(final View v) {
-        TimerTask task = new TimerTask() {
-            @Override
-            public void run() {
-                mDragHost.runOnUiThread(() -> {
-                    mDragHost.onViewHovered(v);
-                });
-            }
-        };
-        return task;
-    }
-
-    /**
-     * Handles a drop event. Override it if you want to do something on drop event. It's called when
-     * {@link DragEvent#ACTION_DROP} happens. ClipData in DragEvent is guaranteed not null.
-     *
-     * @param v The view where user drops.
-     * @param event the drag event.
-     * @return true if this event is consumed; false otherwise
-     */
-    public boolean handleDropEventChecked(View v, DragEvent event) {
-        return false; // we didn't handle the drop
-    }
-
-    /**
-     * An interface {@link ItemDragListener} uses to make some callbacks.
-     */
-    public interface DragHost {
-
-        /**
-         * Runs this runnable in main thread.
-         */
-        void runOnUiThread(Runnable runnable);
-
-        /**
-         * Highlights/unhighlights the view to visually indicate this view is being hovered.
-         * @param v the view being hovered
-         * @param highlight true if highlight the view; false if unhighlight it
-         */
-        void setDropTargetHighlight(View v, boolean highlight);
-
-        /**
-         * Notifies hovering timeout has elapsed
-         * @param v the view being hovered
-         */
-        void onViewHovered(View v);
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/LauncherActivity.java b/packages/DocumentsUI/src/com/android/documentsui/LauncherActivity.java
deleted file mode 100644
index 5e27e78..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/LauncherActivity.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.Shared.DEBUG;
-
-import android.app.Activity;
-import android.app.ActivityManager;
-import android.app.ActivityManager.AppTask;
-import android.content.Context;
-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;
-
-import java.util.List;
-
-/**
- * Provides FilesActivity task grouping support. This allows multiple FilesActivities to be
- * launched (a behavior imparted by way of {@code documentLaunchMode="intoExisting"} and
- * our use of pseudo document {@link Uri}s. This also lets us move an existing task
- * to the foreground when a suitable task exists.
- *
- * Requires that {@code documentLaunchMode="intoExisting"} be set on target activity.
- *
- */
-public class LauncherActivity extends Activity {
-
-    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);
-
-        ActivityManager activities = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
-
-        Intent intent = findTask(activities);
-        if (intent != null) {
-            restoreTask(intent);
-        } else {
-            startTask();
-        }
-
-        finish();
-    }
-
-    private @Nullable Intent findTask(ActivityManager activities) {
-        List<AppTask> tasks = activities.getAppTasks();
-        for (AppTask task : tasks) {
-            Intent intent = task.getTaskInfo().baseIntent;
-            Uri uri = intent.getData();
-            if (isLaunchUri(uri)) {
-                return intent;
-            }
-        }
-        return null;
-    }
-
-    private void startTask() {
-        Intent intent = createLaunchIntent(this);
-
-        // Forward any flags from the original intent.
-        intent.setFlags(getIntent().getFlags());
-        if (DEBUG) Log.d(TAG, "Starting new task > " + intent.getData());
-        startActivity(intent);
-    }
-
-    private void restoreTask(Intent intent) {
-        if (DEBUG) Log.d(TAG, "Restoring existing task > " + intent.getData());
-        // TODO: This doesn't appear to restore a task once it has stopped running.
-        startActivity(intent);
-    }
-
-    static final Intent createLaunchIntent(Activity activity) {
-        Intent intent = new Intent(activity, FilesActivity.class);
-        intent.setData(buildLaunchUri());
-
-        // Relay any config overrides bits present in the original intent.
-        Intent original = activity.getIntent();
-        if (original != null) {
-            copyExtras(original, intent);
-            if (original.hasExtra(Intent.EXTRA_TITLE)) {
-                intent.putExtra(
-                        Intent.EXTRA_TITLE,
-                        original.getStringExtra(Intent.EXTRA_TITLE));
-            }
-        }
-        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)
-                .fragment(String.valueOf(System.currentTimeMillis()))
-                .build();
-    }
-
-    static boolean isLaunchUri(@Nullable Uri uri) {
-        boolean result = uri != null && LAUNCH_CONTROL_AUTHORITY.equals(uri.getAuthority());
-        return result;
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/ListItem.java b/packages/DocumentsUI/src/com/android/documentsui/ListItem.java
deleted file mode 100644
index 6d6f21e..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/ListItem.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.content.Context;
-import android.graphics.Rect;
-import android.util.AttributeSet;
-import android.util.TypedValue;
-import android.widget.LinearLayout;
-
-/**
- * Layout for a single item in List mode.  This class overrides the default focus listener in order
- * to light up a focus indicator when it is focused.
- */
-public class ListItem extends LinearLayout
-{
-    public ListItem(Context context) {
-        super(context);
-    }
-
-    public ListItem(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    @Override
-    protected void onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect) {
-        TypedValue color = new TypedValue();
-        int colorId = gainFocus ? android.R.attr.colorAccent : android.R.color.transparent;
-        getContext().getTheme().resolveAttribute(colorId, color, true);
-
-        findViewById(R.id.focus_indicator).setBackgroundColor(color.data);
-        super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/LoadRootTask.java b/packages/DocumentsUI/src/com/android/documentsui/LoadRootTask.java
deleted file mode 100644
index c5d359b..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/LoadRootTask.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.net.Uri;
-import android.provider.DocumentsContract;
-import android.util.Log;
-
-import com.android.documentsui.model.RootInfo;
-
-final class LoadRootTask extends PairedTask<BaseActivity, Void, RootInfo> {
-    private static final String TAG = "RestoreRootTask";
-
-    private final Uri mRootUri;
-
-    public LoadRootTask(BaseActivity activity, Uri rootUri) {
-        super(activity);
-        mRootUri = rootUri;
-    }
-
-    @Override
-    protected RootInfo run(Void... params) {
-        String rootId = DocumentsContract.getRootId(mRootUri);
-        return mOwner.mRoots.getRootOneshot(mRootUri.getAuthority(), rootId);
-    }
-
-    @Override
-    protected void finish(RootInfo root) {
-        mOwner.mState.restored = true;
-
-        if (root != null) {
-            mOwner.onRootPicked(root);
-        } else {
-            Log.w(TAG, "Failed to find root: " + mRootUri);
-            mOwner.finish();
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/LocalPreferences.java b/packages/DocumentsUI/src/com/android/documentsui/LocalPreferences.java
deleted file mode 100644
index d2e9885..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/LocalPreferences.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.State.MODE_UNKNOWN;
-
-import android.annotation.IntDef;
-import android.annotation.Nullable;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.os.UserHandle;
-import android.preference.PreferenceManager;
-
-import com.android.documentsui.State.ActionType;
-import com.android.documentsui.State.ViewMode;
-import com.android.documentsui.model.RootInfo;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-public class LocalPreferences {
-    private static final String KEY_FILE_SIZE = "fileSize";
-    private static final String INCLUDE_DEVICE_ROOT = "includeDeviceRoot-";
-    private static final String ROOT_VIEW_MODE_PREFIX = "rootViewMode-";
-
-    public static boolean getDisplayFileSize(Context context) {
-        return getPrefs(context).getBoolean(KEY_FILE_SIZE, false);
-    }
-
-    public static @ViewMode int getViewMode(Context context, RootInfo root,
-            @ViewMode int fallback) {
-        return getPrefs(context).getInt(createKey(root), fallback);
-    }
-
-    public static void setDisplayFileSize(Context context, boolean display) {
-        getPrefs(context).edit().putBoolean(KEY_FILE_SIZE, display).apply();
-    }
-
-    public static boolean getShowDeviceRoot(Context context, @ActionType int action) {
-        return getPrefs(context).getBoolean(INCLUDE_DEVICE_ROOT + action, false);
-    }
-
-    public static void setShowDeviceRoot(
-            Context context, @ActionType int action, boolean display) {
-        getPrefs(context).edit().putBoolean(INCLUDE_DEVICE_ROOT + action, display).apply();
-    }
-
-    public static void setViewMode(Context context, RootInfo root, @ViewMode int viewMode) {
-        assert(viewMode != MODE_UNKNOWN);
-        getPrefs(context).edit().putInt(createKey(root), viewMode).apply();
-    }
-
-    private static SharedPreferences getPrefs(Context context) {
-        return PreferenceManager.getDefaultSharedPreferences(context);
-    }
-
-    private static String createKey(RootInfo root) {
-        return ROOT_VIEW_MODE_PREFIX + root.authority + root.rootId;
-    }
-
-    public static final int PERMISSION_ASK = 0;
-    public static final int PERMISSION_ASK_AGAIN = 1;
-    public static final int PERMISSION_NEVER_ASK = -1;
-
-    @IntDef(flag = true, value = {
-            PERMISSION_ASK,
-            PERMISSION_ASK_AGAIN,
-            PERMISSION_NEVER_ASK,
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface PermissionStatus {}
-
-    /**
-     * Methods below are used to keep track of denied user requests on scoped directory access so
-     * the dialog is not offered when user checked the 'Do not ask again' box
-     *
-     * <p>It uses a shared preferences, whose key is:
-     * <ol>
-     * <li>{@code USER_ID|PACKAGE_NAME|VOLUME_UUID|DIRECTORY} for storage volumes that have a UUID
-     * (typically physical volumes like SD cards).
-     * <li>{@code USER_ID|PACKAGE_NAME||DIRECTORY} for storage volumes that do not have a UUID
-     * (typically the emulated volume used for primary storage
-     * </ol>
-     */
-    static @PermissionStatus int getScopedAccessPermissionStatus(Context context,
-            String packageName, @Nullable String uuid, String directory) {
-        final String key = getScopedAccessDenialsKey(packageName, uuid, directory);
-        return getPrefs(context).getInt(key, PERMISSION_ASK);
-    }
-
-    static void setScopedAccessPermissionStatus(Context context, String packageName,
-            @Nullable String uuid, String directory, @PermissionStatus int status) {
-      final String key = getScopedAccessDenialsKey(packageName, uuid, directory);
-      getPrefs(context).edit().putInt(key, status).apply();
-    }
-
-    private static String getScopedAccessDenialsKey(String packageName, String uuid,
-            String directory) {
-        final int userId = UserHandle.myUserId();
-        return uuid == null
-                ? userId + "|" + packageName + "||" + directory
-                : userId + "|" + packageName + "|" + uuid + "|" + directory;
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/MenuManager.java b/packages/DocumentsUI/src/com/android/documentsui/MenuManager.java
deleted file mode 100644
index a23203b..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/MenuManager.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.annotation.Nullable;
-import android.provider.DocumentsContract.Root;
-import android.view.Menu;
-import android.view.MenuItem;
-
-import com.android.documentsui.model.RootInfo;
-
-public abstract class MenuManager {
-
-    final State mState;
-    final SearchViewManager mSearchManager;
-
-    public MenuManager(SearchViewManager searchManager, State displayState) {
-        mSearchManager = searchManager;
-        mState = displayState;
-    }
-
-    /** @See DirectoryFragment.SelectionModeListener#updateActionMenu */
-    public void updateActionMenu(Menu menu, SelectionDetails selection) {
-        updateOpen(menu.findItem(R.id.menu_open), selection);
-        updateDelete(menu.findItem(R.id.menu_delete), selection);
-        updateShare(menu.findItem(R.id.menu_share), selection);
-        updateRename(menu.findItem(R.id.menu_rename), selection);
-        updateSelectAll(menu.findItem(R.id.menu_select_all), selection);
-        updateMoveTo(menu.findItem(R.id.menu_move_to), selection);
-        updateCopyTo(menu.findItem(R.id.menu_copy_to), selection);
-
-        Menus.disableHiddenItems(menu);
-    }
-
-    /** @See Activity#onPrepareOptionsMenu */
-    public void updateOptionMenu(Menu menu, DirectoryDetails directoryDetails) {
-        updateCreateDir(menu.findItem(R.id.menu_create_dir), directoryDetails);
-        updateSettings(menu.findItem(R.id.menu_settings), directoryDetails);
-        updateNewWindow(menu.findItem(R.id.menu_new_window), directoryDetails);
-        updateFileSize(menu.findItem(R.id.menu_file_size), directoryDetails);
-        updateModePicker(menu.findItem(
-                R.id.menu_grid), menu.findItem(R.id.menu_list), directoryDetails);
-        updateSort(menu.findItem(R.id.menu_sort),
-                menu.findItem(R.id.menu_sort_size),
-                directoryDetails);
-        updateAdvanced(menu.findItem(R.id.menu_advanced), directoryDetails);
-
-        Menus.disableHiddenItems(menu);
-    }
-
-    /** @See DirectoryFragment.onCreateContextMenu */
-    public void updateContextMenu(Menu menu,
-            @Nullable SelectionDetails selectionDetails,
-            DirectoryDetails directoryDetails) {
-
-        MenuItem cut = menu.findItem(R.id.menu_cut_to_clipboard);
-        MenuItem copy = menu.findItem(R.id.menu_copy_to_clipboard);
-        MenuItem paste = menu.findItem(R.id.menu_paste_from_clipboard);
-        MenuItem delete = menu.findItem(R.id.menu_delete);
-        MenuItem rename = menu.findItem(R.id.menu_rename);
-        MenuItem createDir = menu.findItem(R.id.menu_create_dir);
-
-        if (selectionDetails == null) {
-            cut.setEnabled(false);
-            copy.setEnabled(false);
-            rename.setEnabled(false);
-            delete.setEnabled(false);
-        } else {
-            copy.setEnabled(!selectionDetails.containsPartialFiles());
-            cut.setEnabled(
-                    !selectionDetails.containsPartialFiles() && selectionDetails.canDelete());
-            updateRename(rename, selectionDetails);
-            updateDelete(delete, selectionDetails);
-        }
-        menu.findItem(R.id.menu_paste_from_clipboard)
-                .setEnabled(directoryDetails.hasItemsToPaste());
-        updateCreateDir(createDir, directoryDetails);
-
-        //Cut, Copy, Paste and Delete should always be visible
-        cut.setVisible(true);
-        copy.setVisible(true);
-        paste.setVisible(true);
-        delete.setVisible(true);
-    }
-
-    public void updateRootContextMenu(Menu menu, RootInfo root) {
-        MenuItem settings = menu.findItem(R.id.menu_settings);
-        MenuItem eject = menu.findItem(R.id.menu_eject_root);
-
-        updateSettings(settings, root);
-        updateEject(eject, root);
-    }
-
-    void updateModePicker(MenuItem grid, MenuItem list, DirectoryDetails directoryDetails) {
-        grid.setVisible(mState.derivedMode != State.MODE_GRID);
-        list.setVisible(mState.derivedMode != State.MODE_LIST);
-    }
-
-    void updateFileSize(MenuItem fileSize, DirectoryDetails directoryDetails) {
-        fileSize.setVisible(!mState.forceSize);
-        fileSize.setTitle(directoryDetails.getDisplayFileSize()
-                ? R.string.menu_file_size_hide : R.string.menu_file_size_show);
-    }
-
-    void updateSort(MenuItem sort, MenuItem sortSize, DirectoryDetails directoryDetails) {
-        // Search uses backend ranking; no sorting, recents doesn't support sort.
-        sort.setEnabled(!directoryDetails.isInRecents() && !mSearchManager.isSearching());
-        sort.setVisible(true);
-        sortSize.setVisible(mState.showSize); // Only sort by size when file sizes are visible
-    }
-
-    void updateAdvanced(MenuItem advanced, DirectoryDetails directoryDetails) {
-        advanced.setVisible(mState.showAdvancedOption);
-        advanced.setTitle(mState.showAdvancedOption && mState.showAdvanced
-                ? R.string.menu_advanced_hide : R.string.menu_advanced_show);
-    }
-
-    void updateSettings(MenuItem settings, DirectoryDetails directoryDetails) {
-        settings.setVisible(false);
-    }
-
-    void updateSettings(MenuItem settings, RootInfo root) {
-        settings.setVisible(false);
-    }
-
-    void updateEject(MenuItem eject, RootInfo root) {
-        eject.setVisible(false);
-    }
-
-    void updateNewWindow(MenuItem newWindow, DirectoryDetails directoryDetails) {
-        newWindow.setVisible(false);
-    }
-
-    void updateOpen(MenuItem open, SelectionDetails selectionDetails) {
-        open.setVisible(false);
-    }
-
-    void updateShare(MenuItem share, SelectionDetails selectionDetails) {
-        share.setVisible(false);
-    }
-
-    void updateDelete(MenuItem delete, SelectionDetails selectionDetails) {
-        delete.setVisible(false);
-    }
-
-    void updateRename(MenuItem rename, SelectionDetails selectionDetails) {
-        rename.setVisible(false);
-    }
-
-    void updateMoveTo(MenuItem moveTo, SelectionDetails selectionDetails) {
-        moveTo.setVisible(false);
-    }
-
-    void updateCopyTo(MenuItem copyTo, SelectionDetails selectionDetails) {
-        copyTo.setVisible(false);
-    }
-
-    abstract void updateSelectAll(MenuItem selectAll, SelectionDetails selectionDetails);
-    abstract void updateCreateDir(MenuItem createDir, DirectoryDetails directoryDetails);
-
-    /**
-     * Access to meta data about the selection.
-     */
-    public interface SelectionDetails {
-        boolean containsDirectories();
-
-        boolean containsPartialFiles();
-
-        // TODO: Update these to express characteristics instead of answering concrete questions,
-        // since the answer to those questions is (or can be) activity specific.
-        boolean canDelete();
-
-        boolean canRename();
-    }
-
-    public static class DirectoryDetails {
-        private final BaseActivity mActivity;
-
-        public DirectoryDetails(BaseActivity activity) {
-            mActivity = activity;
-        }
-
-        public boolean shouldShowFancyFeatures() {
-            return Shared.shouldShowFancyFeatures(mActivity);
-        }
-
-        public boolean hasRootSettings() {
-            return mActivity.getCurrentRoot().hasSettings();
-        }
-
-        public boolean hasItemsToPaste() {
-            return false;
-        }
-
-        public boolean isInRecents() {
-            return mActivity.getCurrentDirectory() == null;
-        }
-
-        public boolean canCreateDirectory() {
-            return mActivity.canCreateDirectory();
-        }
-
-        public boolean getDisplayFileSize() {
-            return LocalPreferences.getDisplayFileSize(mActivity);
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/Menus.java b/packages/DocumentsUI/src/com/android/documentsui/Menus.java
deleted file mode 100644
index 5277d2b..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/Menus.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.view.Menu;
-import android.view.MenuItem;
-
-public final class Menus {
-
-    private Menus() {}
-
-    /**
-     * Disables hidden menu items so that they are not invokable via command shortcuts
-     */
-    public static void disableHiddenItems(Menu menu, MenuItem... exclusions) {
-        for (int i = 0; i < menu.size(); i++) {
-            MenuItem item = menu.getItem(i);
-            if (item.isVisible()) {
-              continue;
-            }
-            if (contains(exclusions, item)) {
-                continue;
-            }
-            item.setEnabled(false);
-        }
-    }
-
-    private static boolean contains(MenuItem[] exclusions, MenuItem item) {
-        for (int x = 0; x < exclusions.length; x++) {
-            if (exclusions[x] == item) {
-                return true;
-            }
-        }
-        return false;
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/MessageBar.java b/packages/DocumentsUI/src/com/android/documentsui/MessageBar.java
deleted file mode 100644
index 5c6213f..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/MessageBar.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.annotation.Nullable;
-import android.app.Fragment;
-import android.app.FragmentManager;
-import android.app.FragmentTransaction;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-/**
- * A message bar displaying some info/error messages and a Dismiss button.
- */
-public class MessageBar extends Fragment {
-    private View mView;
-    private ViewGroup mContainer;
-
-    /**
-     * Creates an instance of a MessageBar. Note that the new MessagBar is not visible by default,
-     * and has to be shown by calling MessageBar.show.
-     */
-    public static MessageBar create(FragmentManager fm) {
-        final MessageBar fragment = new MessageBar();
-
-        final FragmentTransaction ft = fm.beginTransaction();
-        ft.replace(R.id.container_message_bar, fragment);
-        ft.commitAllowingStateLoss();
-
-        return fragment;
-    }
-
-    /**
-     * Sets the info message. Can be null, in which case no info message will be displayed. The
-     * message bar layout will be adjusted accordingly.
-     */
-    public void setInfo(@Nullable String info) {
-        View infoContainer = mView.findViewById(R.id.container_info);
-        if (info != null) {
-            TextView infoText = (TextView) mView.findViewById(R.id.textview_info);
-            infoText.setText(info);
-            infoContainer.setVisibility(View.VISIBLE);
-        } else {
-            infoContainer.setVisibility(View.GONE);
-        }
-    }
-
-    /**
-     * Sets the error message. Can be null, in which case no error message will be displayed. The
-     * message bar layout will be adjusted accordingly.
-     */
-    public void setError(@Nullable String error) {
-        View errorView = mView.findViewById(R.id.container_error);
-        if (error != null) {
-            TextView errorText = (TextView) mView.findViewById(R.id.textview_error);
-            errorText.setText(error);
-            errorView.setVisibility(View.VISIBLE);
-        } else {
-            errorView.setVisibility(View.GONE);
-        }
-    }
-
-    @Override
-    public View onCreateView(
-            LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-
-        mView = inflater.inflate(R.layout.fragment_message_bar, container, false);
-
-        ImageView infoIcon = (ImageView) mView.findViewById(R.id.icon_info);
-        infoIcon.setImageResource(R.drawable.ic_dialog_info);
-
-        ImageView errorIcon = (ImageView) mView.findViewById(R.id.icon_error);
-        errorIcon.setImageResource(R.drawable.ic_dialog_alert);
-
-        Button dismiss = (Button) mView.findViewById(R.id.button_dismiss);
-        dismiss.setOnClickListener(
-                new View.OnClickListener() {
-                    @Override
-                    public void onClick(View v) {
-                        hide();
-                    }
-                });
-
-        mContainer = container;
-
-        return mView;
-    }
-
-    public void hide() {
-        // The container view is used to show/hide the error bar. If a container is not provided,
-        // fall back to showing/hiding the error bar View, which also works, but does not provide
-        // the same animated transition.
-        if (mContainer != null) {
-            mContainer.setVisibility(View.GONE);
-        } else {
-            mView.setVisibility(View.GONE);
-        }
-    }
-
-    public void show() {
-        // The container view is used to show/hide the error bar. If a container is not provided,
-        // fall back to showing/hiding the error bar View, which also works, but does not provide
-        // the same animated transition.
-        if (mContainer != null) {
-            mContainer.setVisibility(View.VISIBLE);
-        } else {
-            mView.setVisibility(View.VISIBLE);
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/Metrics.java b/packages/DocumentsUI/src/com/android/documentsui/Metrics.java
deleted file mode 100644
index 3c45a93..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/Metrics.java
+++ /dev/null
@@ -1,853 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static android.os.Environment.STANDARD_DIRECTORIES;
-import static com.android.documentsui.Shared.DEBUG;
-
-import android.annotation.IntDef;
-import android.annotation.Nullable;
-import android.annotation.StringDef;
-import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ResolveInfo;
-import android.net.Uri;
-import android.provider.DocumentsContract;
-import android.util.Log;
-
-import com.android.documentsui.State.ActionType;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.RootInfo;
-import com.android.documentsui.services.FileOperationService;
-import com.android.documentsui.services.FileOperationService.OpType;
-import com.android.internal.logging.MetricsLogger;
-import com.android.internal.logging.MetricsProto.MetricsEvent;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.List;
-
-/** @hide */
-public final class Metrics {
-    private static final String TAG = "Metrics";
-
-    // These are the native provider authorities that the metrics code is capable of recognizing and
-    // explicitly counting.
-    private static final String AUTHORITY_MEDIA = "com.android.providers.media.documents";
-    private static final String AUTHORITY_STORAGE = "com.android.externalstorage.documents";
-    private static final String AUTHORITY_DOWNLOADS = "com.android.providers.downloads.documents";
-    private static final String AUTHORITY_MTP = "com.android.mtp.documents";
-
-    // These strings have to be whitelisted in tron. Do not change them.
-    private static final String COUNT_LAUNCH_ACTION = "docsui_launch_action";
-    private static final String COUNT_ROOT_VISITED = "docsui_root_visited";
-    private static final String COUNT_OPEN_MIME = "docsui_open_mime";
-    private static final String COUNT_CREATE_MIME = "docsui_create_mime";
-    private static final String COUNT_GET_CONTENT_MIME = "docsui_get_content_mime";
-    private static final String COUNT_BROWSE_ROOT = "docsui_browse_root";
-    @Deprecated private static final String COUNT_MANAGE_ROOT = "docsui_manage_root";
-    @Deprecated private static final String COUNT_MULTI_WINDOW = "docsui_multi_window";
-    private static final String COUNT_FILEOP_SYSTEM = "docsui_fileop_system";
-    private static final String COUNT_FILEOP_EXTERNAL = "docsui_fileop_external";
-    private static final String COUNT_FILEOP_CANCELED = "docsui_fileop_canceled";
-    private static final String COUNT_STARTUP_MS = "docsui_startup_ms";
-    private static final String COUNT_DRAWER_OPENED = "docsui_drawer_opened";
-    private static final String COUNT_USER_ACTION = "docsui_menu_action";
-
-    // Indices for bucketing roots in the roots histogram. "Other" is the catch-all index for any
-    // root that is not explicitly recognized by the Metrics code (see {@link
-    // #getSanitizedRootIndex}). Apps are also bucketed in this histogram.
-    // Do not change or rearrange these values, that will break historical data. Only add to the end
-    // of the list.
-    // Do not use negative numbers or zero; clearcut only handles positive integers.
-    private static final int ROOT_NONE = 1;
-    private static final int ROOT_OTHER = 2;
-    private static final int ROOT_AUDIO = 3;
-    private static final int ROOT_DEVICE_STORAGE = 4;
-    private static final int ROOT_DOWNLOADS = 5;
-    private static final int ROOT_HOME = 6;
-    private static final int ROOT_IMAGES = 7;
-    private static final int ROOT_RECENTS = 8;
-    private static final int ROOT_VIDEOS = 9;
-    private static final int ROOT_MTP = 10;
-    // Apps aren't really "roots", but they are treated as such in the roots fragment UI and so they
-    // are logged analogously to roots.
-    private static final int ROOT_THIRD_PARTY_APP = 100;
-
-    @IntDef(flag = true, value = {
-            ROOT_NONE,
-            ROOT_OTHER,
-            ROOT_AUDIO,
-            ROOT_DEVICE_STORAGE,
-            ROOT_DOWNLOADS,
-            ROOT_HOME,
-            ROOT_IMAGES,
-            ROOT_RECENTS,
-            ROOT_VIDEOS,
-            ROOT_MTP,
-            ROOT_THIRD_PARTY_APP
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface Root {}
-
-    // Indices for bucketing mime types.
-    // Do not change or rearrange these values, that will break historical data. Only add to the end
-    // of the list.
-    // Do not use negative numbers or zero; clearcut only handles positive integers.
-    private static final int MIME_NONE = 1; // null mime
-    private static final int MIME_ANY = 2; // */*
-    private static final int MIME_APPLICATION = 3; // application/*
-    private static final int MIME_AUDIO = 4; // audio/*
-    private static final int MIME_IMAGE = 5; // image/*
-    private static final int MIME_MESSAGE = 6; // message/*
-    private static final int MIME_MULTIPART = 7; // multipart/*
-    private static final int MIME_TEXT = 8; // text/*
-    private static final int MIME_VIDEO = 9; // video/*
-    private static final int MIME_OTHER = 10; // anything not enumerated below
-
-    @IntDef(flag = true, value = {
-            MIME_NONE,
-            MIME_ANY,
-            MIME_APPLICATION,
-            MIME_AUDIO,
-            MIME_IMAGE,
-            MIME_MESSAGE,
-            MIME_MULTIPART,
-            MIME_TEXT,
-            MIME_VIDEO,
-            MIME_OTHER
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface Mime {}
-
-    // Codes representing different kinds of file operations. These are used for bucketing
-    // operations in the COUNT_FILEOP_{SYSTEM|EXTERNAL} histograms.
-    // Do not change or rearrange these values, that will break historical data. Only add to the
-    // list.
-    // Do not use negative numbers or zero; clearcut only handles positive integers.
-    private static final int FILEOP_OTHER = 1; // any file operation not listed below
-    private static final int FILEOP_COPY_INTRA_PROVIDER = 2; // Copy within a provider
-    private static final int FILEOP_COPY_SYSTEM_PROVIDER = 3; // Copy to a system provider.
-    private static final int FILEOP_COPY_EXTERNAL_PROVIDER = 4; // Copy to a 3rd-party provider.
-    private static final int FILEOP_MOVE_INTRA_PROVIDER = 5; // Move within a provider.
-    private static final int FILEOP_MOVE_SYSTEM_PROVIDER = 6; // Move to a system provider.
-    private static final int FILEOP_MOVE_EXTERNAL_PROVIDER = 7; // Move to a 3rd-party provider.
-    private static final int FILEOP_DELETE = 8;
-    private static final int FILEOP_RENAME = 9;
-    private static final int FILEOP_CREATE_DIR = 10;
-    private static final int FILEOP_OTHER_ERROR = 100;
-    private static final int FILEOP_DELETE_ERROR = 101;
-    private static final int FILEOP_MOVE_ERROR = 102;
-    private static final int FILEOP_COPY_ERROR = 103;
-    private static final int FILEOP_RENAME_ERROR = 104;
-    private static final int FILEOP_CREATE_DIR_ERROR = 105;
-
-    @IntDef(flag = true, value = {
-            FILEOP_OTHER,
-            FILEOP_COPY_INTRA_PROVIDER,
-            FILEOP_COPY_SYSTEM_PROVIDER,
-            FILEOP_COPY_EXTERNAL_PROVIDER,
-            FILEOP_MOVE_INTRA_PROVIDER,
-            FILEOP_MOVE_SYSTEM_PROVIDER,
-            FILEOP_MOVE_EXTERNAL_PROVIDER,
-            FILEOP_DELETE,
-            FILEOP_RENAME,
-            FILEOP_CREATE_DIR,
-            FILEOP_OTHER_ERROR,
-            FILEOP_COPY_ERROR,
-            FILEOP_MOVE_ERROR,
-            FILEOP_DELETE_ERROR,
-            FILEOP_RENAME_ERROR,
-            FILEOP_CREATE_DIR_ERROR
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface FileOp {}
-
-    // Codes representing different kinds of file operations. These are used for bucketing
-    // operations in the COUNT_FILEOP_CANCELED histogram.
-    // Do not change or rearrange these values, that will break historical data. Only add to the
-    // list.
-    // Do not use negative numbers or zero; clearcut only handles positive integers.
-    private static final int OPERATION_UNKNOWN = 1;
-    private static final int OPERATION_COPY = 2;
-    private static final int OPERATION_MOVE = 3;
-    private static final int OPERATION_DELETE= 4;
-
-    @IntDef(flag = true, value = {
-            OPERATION_UNKNOWN,
-            OPERATION_COPY,
-            OPERATION_MOVE,
-            OPERATION_DELETE
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface MetricsOpType {}
-
-    // Codes representing different provider types.  Used for sorting file operations when logging.
-    private static final int PROVIDER_INTRA = 0;
-    private static final int PROVIDER_SYSTEM = 1;
-    private static final int PROVIDER_EXTERNAL = 2;
-
-    @IntDef(flag = false, value = {
-            PROVIDER_INTRA,
-            PROVIDER_SYSTEM,
-            PROVIDER_EXTERNAL
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface Provider {}
-
-
-    // Codes representing different user actions. These are used for bucketing stats in the
-    // COUNT_USER_ACTION histogram.
-    // The historgram includes action triggered from menu or invoked by keyboard shortcut.
-    // Do not change or rearrange these values, that will break historical data. Only add to the
-    // list.
-    // Do not use negative numbers or zero; clearcut only handles positive integers.
-    public static final int USER_ACTION_OTHER = 1;
-    public static final int USER_ACTION_GRID = 2;
-    public static final int USER_ACTION_LIST = 3;
-    public static final int USER_ACTION_SORT_NAME = 4;
-    public static final int USER_ACTION_SORT_DATE = 5;
-    public static final int USER_ACTION_SORT_SIZE = 6;
-    public static final int USER_ACTION_SEARCH = 7;
-    public static final int USER_ACTION_SHOW_SIZE = 8;
-    public static final int USER_ACTION_HIDE_SIZE = 9;
-    public static final int USER_ACTION_SETTINGS = 10;
-    public static final int USER_ACTION_COPY_TO = 11;
-    public static final int USER_ACTION_MOVE_TO = 12;
-    public static final int USER_ACTION_DELETE = 13;
-    public static final int USER_ACTION_RENAME = 14;
-    public static final int USER_ACTION_CREATE_DIR = 15;
-    public static final int USER_ACTION_SELECT_ALL = 16;
-    public static final int USER_ACTION_SHARE = 17;
-    public static final int USER_ACTION_OPEN = 18;
-    public static final int USER_ACTION_SHOW_ADVANCED = 19;
-    public static final int USER_ACTION_HIDE_ADVANCED = 20;
-    public static final int USER_ACTION_NEW_WINDOW = 21;
-    public static final int USER_ACTION_PASTE_CLIPBOARD = 22;
-    public static final int USER_ACTION_COPY_CLIPBOARD = 23;
-    public static final int USER_ACTION_DRAG_N_DROP = 24;
-    public static final int USER_ACTION_DRAG_N_DROP_MULTI_WINDOW = 25;
-    public static final int USER_ACTION_CUT_CLIPBOARD = 26;
-
-    @IntDef(flag = false, value = {
-            USER_ACTION_OTHER,
-            USER_ACTION_GRID,
-            USER_ACTION_LIST,
-            USER_ACTION_SORT_NAME,
-            USER_ACTION_SORT_DATE,
-            USER_ACTION_SORT_SIZE,
-            USER_ACTION_SEARCH,
-            USER_ACTION_SHOW_SIZE,
-            USER_ACTION_HIDE_SIZE,
-            USER_ACTION_SETTINGS,
-            USER_ACTION_COPY_TO,
-            USER_ACTION_MOVE_TO,
-            USER_ACTION_DELETE,
-            USER_ACTION_RENAME,
-            USER_ACTION_CREATE_DIR,
-            USER_ACTION_SELECT_ALL,
-            USER_ACTION_SHARE,
-            USER_ACTION_OPEN,
-            USER_ACTION_SHOW_ADVANCED,
-            USER_ACTION_HIDE_ADVANCED,
-            USER_ACTION_NEW_WINDOW,
-            USER_ACTION_PASTE_CLIPBOARD,
-            USER_ACTION_COPY_CLIPBOARD,
-            USER_ACTION_DRAG_N_DROP,
-            USER_ACTION_DRAG_N_DROP_MULTI_WINDOW,
-            USER_ACTION_CUT_CLIPBOARD
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface UserAction {}
-
-    // Codes representing different menu actions. These are used for bucketing stats in the
-    // COUNT_MENU_ACTION histogram.
-    // Do not change or rearrange these values, that will break historical data. Only add to the
-    // list.
-    // Do not use negative numbers or zero; clearcut only handles positive integers.
-    private static final int ACTION_OTHER = 1;
-    private static final int ACTION_OPEN = 2;
-    private static final int ACTION_CREATE = 3;
-    private static final int ACTION_GET_CONTENT = 4;
-    private static final int ACTION_OPEN_TREE = 5;
-    @Deprecated private static final int ACTION_MANAGE = 6;
-    private static final int ACTION_BROWSE = 7;
-    private static final int ACTION_PICK_COPY_DESTINATION = 8;
-
-    @IntDef(flag = true, value = {
-            ACTION_OTHER,
-            ACTION_OPEN,
-            ACTION_CREATE,
-            ACTION_GET_CONTENT,
-            ACTION_OPEN_TREE,
-            ACTION_MANAGE,
-            ACTION_BROWSE,
-            ACTION_PICK_COPY_DESTINATION
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface MetricsAction {}
-
-    // Codes representing different actions to open the drawer. They are used for bucketing stats in
-    // the COUNT_DRAWER_OPENED histogram.
-    // Do not change or rearrange these values, that will break historical data. Only add to the
-    // list.
-    // Do not use negative numbers or zero; clearcut only handles positive integers.
-    private static final int DRAWER_OPENED_HAMBURGER = 1;
-    private static final int DRAWER_OPENED_SWIPE = 2;
-
-    @IntDef(flag = true, value = {
-            DRAWER_OPENED_HAMBURGER,
-            DRAWER_OPENED_SWIPE
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface DrawerTrigger {}
-
-    /**
-     * Logs when DocumentsUI is started, and how. Call this when DocumentsUI first starts up.
-     *
-     * @param context
-     * @param state
-     * @param intent
-     */
-    public static void logActivityLaunch(Context context, State state, Intent intent) {
-        // Log the launch action.
-        logHistogram(context, COUNT_LAUNCH_ACTION, toMetricsAction(state.action));
-        // Then log auxiliary data (roots/mime types) associated with some actions.
-        Uri uri = intent.getData();
-        switch (state.action) {
-            case State.ACTION_OPEN:
-                logHistogram(context, COUNT_OPEN_MIME, sanitizeMime(intent.getType()));
-                break;
-            case State.ACTION_CREATE:
-                logHistogram(context, COUNT_CREATE_MIME, sanitizeMime(intent.getType()));
-                break;
-            case State.ACTION_GET_CONTENT:
-                logHistogram(context, COUNT_GET_CONTENT_MIME, sanitizeMime(intent.getType()));
-                break;
-            case State.ACTION_BROWSE:
-                logHistogram(context, COUNT_BROWSE_ROOT, sanitizeRoot(uri));
-                break;
-            default:
-                break;
-        }
-    }
-
-    /**
-     * Logs a root visited event. Call this when the user visits on a root in the RootsFragment.
-     *
-     * @param context
-     * @param info
-     */
-    public static void logRootVisited(Context context, RootInfo info) {
-        logHistogram(context, COUNT_ROOT_VISITED, sanitizeRoot(info));
-    }
-
-    /**
-     * Logs an app visited event. Call this when the user visits on an app in the RootsFragment.
-     *
-     * @param context
-     * @param info
-     */
-    public static void logAppVisited(Context context, ResolveInfo info) {
-        logHistogram(context, COUNT_ROOT_VISITED, sanitizeRoot(info));
-    }
-
-    /**
-     * Logs a drawer opened event. Call this when the user opens drawer by swipe or by clicking the
-     * hamburger icon.
-     * @param context
-     * @param trigger type of action that opened the drawer
-     */
-    public static void logDrawerOpened(Context context, @DrawerController.Trigger int trigger) {
-        if (trigger == DrawerController.OPENED_HAMBURGER) {
-            logHistogram(context, COUNT_DRAWER_OPENED, DRAWER_OPENED_HAMBURGER);
-        } else if (trigger == DrawerController.OPENED_SWIPE) {
-            logHistogram(context, COUNT_DRAWER_OPENED, DRAWER_OPENED_SWIPE);
-        }
-    }
-
-    /**
-     * Logs file operation stats. Call this when a file operation has completed. The given
-     * DocumentInfo is only used to distinguish broad categories of actions (e.g. copying from one
-     * provider to another vs copying within a given provider).  No PII is logged.
-     *
-     * @param context
-     * @param operationType
-     * @param srcs
-     * @param dst
-     */
-    public static void logFileOperation(
-            Context context,
-            @OpType int operationType,
-            List<DocumentInfo> srcs,
-            @Nullable DocumentInfo dst) {
-        ProviderCounts counts = countProviders(srcs, dst);
-
-        if (counts.intraProvider > 0) {
-            logIntraProviderFileOps(context, dst.authority, operationType);
-        }
-        if (counts.systemProvider > 0) {
-            // Log file operations on system providers.
-            logInterProviderFileOps(context, COUNT_FILEOP_SYSTEM, dst, operationType);
-        }
-        if (counts.externalProvider > 0) {
-            // Log file operations on external providers.
-            logInterProviderFileOps(context, COUNT_FILEOP_EXTERNAL, dst, operationType);
-        }
-    }
-
-    /**
-     * Logs create directory operation. It is a part of file operation stats. We do not
-     * differentiate between internal and external locations, all create directory operations are
-     * logged under COUNT_FILEOP_SYSTEM. Call this when a create directory operation has completed.
-     *
-     * @param context
-     */
-    public static void logCreateDirOperation(Context context) {
-        logHistogram(context, COUNT_FILEOP_SYSTEM, FILEOP_CREATE_DIR);
-    }
-
-    /**
-     * Logs rename file operation. It is a part of file operation stats. We do not differentiate
-     * between internal and external locations, all rename operations are logged under
-     * COUNT_FILEOP_SYSTEM. Call this when a rename file operation has completed.
-     *
-     * @param context
-     */
-    public static void logRenameFileOperation(Context context) {
-        logHistogram(context, COUNT_FILEOP_SYSTEM, FILEOP_RENAME);
-    }
-
-    /**
-     * Logs some kind of file operation error. Call this when a file operation (e.g. copy, delete)
-     * fails.
-     *
-     * @param context
-     * @param operationType
-     * @param failedFiles
-     */
-    public static void logFileOperationErrors(Context context, @OpType int operationType,
-            List<DocumentInfo> failedFiles) {
-        ProviderCounts counts = countProviders(failedFiles, null);
-
-        @FileOp int opCode = FILEOP_OTHER_ERROR;
-        switch (operationType) {
-            case FileOperationService.OPERATION_COPY:
-                opCode = FILEOP_COPY_ERROR;
-                break;
-            case FileOperationService.OPERATION_DELETE:
-                opCode = FILEOP_DELETE_ERROR;
-                break;
-            case FileOperationService.OPERATION_MOVE:
-                opCode = FILEOP_MOVE_ERROR;
-                break;
-        }
-        if (counts.systemProvider > 0) {
-            logHistogram(context, COUNT_FILEOP_SYSTEM, opCode);
-        }
-        if (counts.externalProvider > 0) {
-            logHistogram(context, COUNT_FILEOP_EXTERNAL, opCode);
-        }
-    }
-
-    /**
-     * Logs create directory operation error. We do not differentiate between internal and external
-     * locations, all create directory errors are logged under COUNT_FILEOP_SYSTEM. Call this when a
-     * create directory operation fails.
-     *
-     * @param context
-     */
-    public static void logCreateDirError(Context context) {
-        logHistogram(context, COUNT_FILEOP_SYSTEM, FILEOP_CREATE_DIR_ERROR);
-    }
-
-    /**
-     * Logs rename file operation error. We do not differentiate between internal and external
-     * locations, all rename errors are logged under COUNT_FILEOP_SYSTEM. Call this
-     * when a rename file operation fails.
-     *
-     * @param context
-     */
-    public static void logRenameFileError(Context context) {
-        logHistogram(context, COUNT_FILEOP_SYSTEM, FILEOP_RENAME_ERROR);
-    }
-
-    /**
-     * Logs the cancellation of a file operation.  Call this when a Job is canceled.
-     * @param context
-     * @param operationType
-     */
-    public static void logFileOperationCancelled(Context context, @OpType int operationType) {
-        logHistogram(context, COUNT_FILEOP_CANCELED, toMetricsOpType(operationType));
-    }
-
-    /**
-     * Logs startup time in milliseconds.
-     * @param context
-     * @param startupMs Startup time in milliseconds.
-     */
-    public static void logStartupMs(Context context, int startupMs) {
-        logHistogram(context, COUNT_STARTUP_MS, startupMs);
-    }
-
-    private static void logInterProviderFileOps(
-            Context context,
-            String histogram,
-            DocumentInfo dst,
-            @OpType int operationType) {
-        if (operationType == FileOperationService.OPERATION_DELETE) {
-            logHistogram(context, histogram, FILEOP_DELETE);
-        } else {
-            assert(dst != null);
-            @Provider int providerType =
-                    isSystemProvider(dst.authority) ? PROVIDER_SYSTEM : PROVIDER_EXTERNAL;
-            logHistogram(context, histogram, getOpCode(operationType, providerType));
-        }
-    }
-
-    private static void logIntraProviderFileOps(
-            Context context, String authority, @OpType int operationType) {
-        // Find the right histogram to log to, then log the operation.
-        String histogram = isSystemProvider(authority) ? COUNT_FILEOP_SYSTEM : COUNT_FILEOP_EXTERNAL;
-        logHistogram(context, histogram, getOpCode(operationType, PROVIDER_INTRA));
-    }
-
-    // Types for logInvalidScopedAccessRequest
-    public static final String SCOPED_DIRECTORY_ACCESS_INVALID_ARGUMENTS =
-            "docsui_scoped_directory_access_invalid_args";
-    public static final String SCOPED_DIRECTORY_ACCESS_INVALID_DIRECTORY =
-            "docsui_scoped_directory_access_invalid_dir";
-    public static final String SCOPED_DIRECTORY_ACCESS_ERROR =
-            "docsui_scoped_directory_access_error";
-
-    @StringDef(value = {
-            SCOPED_DIRECTORY_ACCESS_INVALID_ARGUMENTS,
-            SCOPED_DIRECTORY_ACCESS_INVALID_DIRECTORY,
-            SCOPED_DIRECTORY_ACCESS_ERROR
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface InvalidScopedAccess{}
-
-    public static void logInvalidScopedAccessRequest(Context context,
-            @InvalidScopedAccess String type) {
-        switch (type) {
-            case SCOPED_DIRECTORY_ACCESS_INVALID_ARGUMENTS:
-            case SCOPED_DIRECTORY_ACCESS_INVALID_DIRECTORY:
-            case SCOPED_DIRECTORY_ACCESS_ERROR:
-                logCount(context, type);
-                break;
-            default:
-                Log.wtf(TAG, "invalid InvalidScopedAccess: " + type);
-        }
-    }
-
-    // Types for logValidScopedAccessRequest
-    public static final int SCOPED_DIRECTORY_ACCESS_ALREADY_GRANTED = 0;
-    public static final int SCOPED_DIRECTORY_ACCESS_GRANTED = 1;
-    public static final int SCOPED_DIRECTORY_ACCESS_DENIED = 2;
-    public static final int SCOPED_DIRECTORY_ACCESS_DENIED_AND_PERSIST = 3;
-    public static final int SCOPED_DIRECTORY_ACCESS_ALREADY_DENIED = 4;
-
-    @IntDef(flag = true, value = {
-            SCOPED_DIRECTORY_ACCESS_ALREADY_GRANTED,
-            SCOPED_DIRECTORY_ACCESS_GRANTED,
-            SCOPED_DIRECTORY_ACCESS_DENIED,
-            SCOPED_DIRECTORY_ACCESS_DENIED_AND_PERSIST,
-            SCOPED_DIRECTORY_ACCESS_ALREADY_DENIED
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface ScopedAccessGrant {}
-
-    public static void logValidScopedAccessRequest(Activity activity, String directory,
-            @ScopedAccessGrant int type) {
-        int index = -1;
-        if (OpenExternalDirectoryActivity.DIRECTORY_ROOT.equals(directory)) {
-            index = -2;
-        } else {
-            for (int i = 0; i < STANDARD_DIRECTORIES.length; i++) {
-                if (STANDARD_DIRECTORIES[i].equals(directory)) {
-                    index = i;
-                    break;
-                }
-            }
-        }
-        final String packageName = activity.getCallingPackage();
-        switch (type) {
-            case SCOPED_DIRECTORY_ACCESS_ALREADY_GRANTED:
-                MetricsLogger.action(activity, MetricsEvent
-                        .ACTION_SCOPED_DIRECTORY_ACCESS_ALREADY_GRANTED_BY_PACKAGE, packageName);
-                MetricsLogger.action(activity, MetricsEvent
-                        .ACTION_SCOPED_DIRECTORY_ACCESS_ALREADY_GRANTED_BY_FOLDER, index);
-                break;
-            case SCOPED_DIRECTORY_ACCESS_GRANTED:
-                MetricsLogger.action(activity, MetricsEvent
-                        .ACTION_SCOPED_DIRECTORY_ACCESS_GRANTED_BY_PACKAGE, packageName);
-                MetricsLogger.action(activity, MetricsEvent
-                        .ACTION_SCOPED_DIRECTORY_ACCESS_GRANTED_BY_FOLDER, index);
-                break;
-            case SCOPED_DIRECTORY_ACCESS_DENIED:
-                MetricsLogger.action(activity, MetricsEvent
-                        .ACTION_SCOPED_DIRECTORY_ACCESS_DENIED_BY_PACKAGE, packageName);
-                MetricsLogger.action(activity, MetricsEvent
-                        .ACTION_SCOPED_DIRECTORY_ACCESS_DENIED_BY_FOLDER, index);
-                break;
-            case SCOPED_DIRECTORY_ACCESS_DENIED_AND_PERSIST:
-                MetricsLogger.action(activity, MetricsEvent
-                        .ACTION_SCOPED_DIRECTORY_ACCESS_DENIED_AND_PERSIST_BY_PACKAGE, packageName);
-                MetricsLogger.action(activity, MetricsEvent
-                        .ACTION_SCOPED_DIRECTORY_ACCESS_DENIED_AND_PERSIST_BY_FOLDER, index);
-                break;
-            case SCOPED_DIRECTORY_ACCESS_ALREADY_DENIED:
-                MetricsLogger.action(activity, MetricsEvent
-                        .ACTION_SCOPED_DIRECTORY_ACCESS_ALREADY_DENIED_BY_PACKAGE, packageName);
-                MetricsLogger.action(activity, MetricsEvent
-                        .ACTION_SCOPED_DIRECTORY_ACCESS_ALREADY_DENIED_BY_FOLDER, index);
-                break;
-            default:
-                Log.wtf(TAG, "invalid ScopedAccessGrant: " + type);
-        }
-    }
-
-    /**
-     * Logs the action that was started by user.
-     * @param context
-     * @param userAction
-     */
-    public static void logUserAction(Context context, @UserAction int userAction) {
-        logHistogram(context, COUNT_USER_ACTION, userAction);
-    }
-
-    /**
-     * Internal method for making a MetricsLogger.count call. Increments the given counter by 1.
-     *
-     * @param context
-     * @param name The counter to increment.
-     */
-    private static void logCount(Context context, String name) {
-        if (DEBUG) Log.d(TAG, name + ": " + 1);
-        MetricsLogger.count(context, name, 1);
-    }
-
-    /**
-     * Internal method for making a MetricsLogger.histogram call.
-     *
-     * @param context
-     * @param name The name of the histogram.
-     * @param bucket The bucket to increment.
-     */
-    private static void logHistogram(Context context, String name, @ActionType int bucket) {
-        if (DEBUG) Log.d(TAG, name + ": " + bucket);
-        MetricsLogger.histogram(context, name, bucket);
-    }
-
-    /**
-     * Generates an integer identifying the given root. For privacy, this function only recognizes a
-     * small set of hard-coded roots (ones provided by the system). Other roots are all grouped into
-     * a single ROOT_OTHER bucket.
-     */
-    private static @Root int sanitizeRoot(Uri uri) {
-        if (uri == null || uri.getAuthority() == null || LauncherActivity.isLaunchUri(uri)) {
-            return ROOT_NONE;
-        }
-
-        switch (uri.getAuthority()) {
-            case AUTHORITY_MEDIA:
-                switch (DocumentsContract.getRootId(uri)) {
-                    case "audio_root":
-                        return ROOT_AUDIO;
-                    case "images_root":
-                        return ROOT_IMAGES;
-                    case "videos_root":
-                        return ROOT_VIDEOS;
-                    default:
-                        return ROOT_OTHER;
-                }
-            case AUTHORITY_STORAGE:
-                if ("home".equals(DocumentsContract.getRootId(uri))) {
-                    return ROOT_HOME;
-                } else {
-                    return ROOT_DEVICE_STORAGE;
-                }
-            case AUTHORITY_DOWNLOADS:
-                return ROOT_DOWNLOADS;
-            case AUTHORITY_MTP:
-                return ROOT_MTP;
-            default:
-                return ROOT_OTHER;
-        }
-    }
-
-    /** @see #sanitizeRoot(Uri) */
-    private static @Root int sanitizeRoot(RootInfo root) {
-        if (root.isRecents()) {
-            // Recents root is special and only identifiable via this method call. Other roots are
-            // identified by URI.
-            return ROOT_RECENTS;
-        } else {
-            return sanitizeRoot(root.getUri());
-        }
-    }
-
-    /** @see #sanitizeRoot(Uri) */
-    private static @Root int sanitizeRoot(ResolveInfo info) {
-        // Log all apps under a single bucket in the roots histogram.
-        return ROOT_THIRD_PARTY_APP;
-    }
-
-    /**
-     * Generates an int identifying a mime type. For privacy, this function only recognizes a small
-     * set of hard-coded types. For any other type, this function returns "other".
-     *
-     * @param mimeType
-     * @return
-     */
-    private static @Mime int sanitizeMime(String mimeType) {
-        if (mimeType == null) {
-            return MIME_NONE;
-        } else if ("*/*".equals(mimeType)) {
-            return MIME_ANY;
-        } else {
-            String type = mimeType.substring(0, mimeType.indexOf('/'));
-            switch (type) {
-                case "application":
-                    return MIME_APPLICATION;
-                case "audio":
-                    return MIME_AUDIO;
-                case "image":
-                    return MIME_IMAGE;
-                case "message":
-                    return MIME_MESSAGE;
-                case "multipart":
-                    return MIME_MULTIPART;
-                case "text":
-                    return MIME_TEXT;
-                case "video":
-                    return MIME_VIDEO;
-            }
-        }
-        // Bucket all other types into one bucket.
-        return MIME_OTHER;
-    }
-
-    private static boolean isSystemProvider(String authority) {
-        switch (authority) {
-            case AUTHORITY_MEDIA:
-            case AUTHORITY_STORAGE:
-            case AUTHORITY_DOWNLOADS:
-                return true;
-            default:
-                return false;
-        }
-    }
-
-    /**
-     * @param operation
-     * @param providerType
-     * @return An opcode, suitable for use as histogram bucket, for the given operation/provider
-     *         combination.
-     */
-    private static @FileOp int getOpCode(@OpType int operation, @Provider int providerType) {
-        switch (operation) {
-            case FileOperationService.OPERATION_COPY:
-                switch (providerType) {
-                    case PROVIDER_INTRA:
-                        return FILEOP_COPY_INTRA_PROVIDER;
-                    case PROVIDER_SYSTEM:
-                        return FILEOP_COPY_SYSTEM_PROVIDER;
-                    case PROVIDER_EXTERNAL:
-                        return FILEOP_COPY_EXTERNAL_PROVIDER;
-                }
-            case FileOperationService.OPERATION_MOVE:
-                switch (providerType) {
-                    case PROVIDER_INTRA:
-                        return FILEOP_MOVE_INTRA_PROVIDER;
-                    case PROVIDER_SYSTEM:
-                        return FILEOP_MOVE_SYSTEM_PROVIDER;
-                    case PROVIDER_EXTERNAL:
-                        return FILEOP_MOVE_EXTERNAL_PROVIDER;
-                }
-            case FileOperationService.OPERATION_DELETE:
-                return FILEOP_DELETE;
-            default:
-                Log.w(TAG, "Unrecognized operation type when logging a file operation");
-                return FILEOP_OTHER;
-        }
-    }
-
-    /**
-     * Maps FileOperationService OpType values, to MetricsOpType values.
-     */
-    private static @MetricsOpType int toMetricsOpType(@OpType int operation) {
-        switch (operation) {
-            case FileOperationService.OPERATION_COPY:
-                return OPERATION_COPY;
-            case FileOperationService.OPERATION_MOVE:
-                return OPERATION_MOVE;
-            case FileOperationService.OPERATION_DELETE:
-                return OPERATION_DELETE;
-            case FileOperationService.OPERATION_UNKNOWN:
-            default:
-                return OPERATION_UNKNOWN;
-        }
-    }
-
-    private static @MetricsAction int toMetricsAction(int action) {
-        switch(action) {
-            case State.ACTION_OPEN:
-                return ACTION_OPEN;
-            case State.ACTION_CREATE:
-                return ACTION_CREATE;
-            case State.ACTION_GET_CONTENT:
-                return ACTION_GET_CONTENT;
-            case State.ACTION_OPEN_TREE:
-                return ACTION_OPEN_TREE;
-            case State.ACTION_BROWSE:
-                return ACTION_BROWSE;
-            case State.ACTION_PICK_COPY_DESTINATION:
-                return ACTION_PICK_COPY_DESTINATION;
-            default:
-                return ACTION_OTHER;
-        }
-    }
-
-    /**
-     * Count the given src documents and provide a tally of how many come from the same provider as
-     * the dst document (if a dst is provided), how many come from system providers, and how many
-     * come from external 3rd-party providers.
-     */
-    private static ProviderCounts countProviders(
-            List<DocumentInfo> srcs, @Nullable DocumentInfo dst) {
-        ProviderCounts counts = new ProviderCounts();
-        for (DocumentInfo doc: srcs) {
-            if (dst != null && doc.authority.equals(dst.authority)) {
-                counts.intraProvider++;
-            } else if (isSystemProvider(doc.authority)){
-                counts.systemProvider++;
-            } else {
-                counts.externalProvider++;
-            }
-        }
-        return counts;
-    }
-
-    private static class ProviderCounts {
-        int intraProvider;
-        int systemProvider;
-        int externalProvider;
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/MimePredicate.java b/packages/DocumentsUI/src/com/android/documentsui/MimePredicate.java
deleted file mode 100644
index 859763b..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/MimePredicate.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.annotation.Nullable;
-import android.provider.DocumentsContract.Document;
-
-import com.android.documentsui.model.DocumentInfo;
-import com.android.internal.util.Predicate;
-
-public class MimePredicate implements Predicate<DocumentInfo> {
-    private final String[] mFilters;
-
-    private static final String APK_TYPE = "application/vnd.android.package-archive";
-    /**
-     * MIME types that are visual in nature. For example, they should always be
-     * shown as thumbnails in list mode.
-     */
-    public static final String[] VISUAL_MIMES = new String[] { "image/*", "video/*" };
-
-    public MimePredicate(String[] filters) {
-        mFilters = filters;
-    }
-
-    @Override
-    public boolean apply(DocumentInfo doc) {
-        if (doc.isDirectory()) {
-            return true;
-        }
-        if (mimeMatches(mFilters, doc.mimeType)) {
-            return true;
-        }
-        return false;
-    }
-
-    public static boolean mimeMatches(String[] filters, String[] tests) {
-        if (tests == null) {
-            return false;
-        }
-        for (String test : tests) {
-            if (mimeMatches(filters, test)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    public static boolean mimeMatches(String filter, String[] tests) {
-        if (tests == null) {
-            return true;
-        }
-        for (String test : tests) {
-            if (mimeMatches(filter, test)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    public static boolean mimeMatches(String[] filters, String test) {
-        if (filters == null) {
-            return true;
-        }
-        for (String filter : filters) {
-            if (mimeMatches(filter, test)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    public static boolean mimeMatches(String filter, String test) {
-        if (test == null) {
-            return false;
-        } else if (filter == null || "*/*".equals(filter)) {
-            return true;
-        } else if (filter.equals(test)) {
-            return true;
-        } else if (filter.endsWith("/*")) {
-            return filter.regionMatches(0, test, 0, filter.indexOf('/'));
-        } else {
-            return false;
-        }
-    }
-
-    public static boolean isApkType(@Nullable String mimeType) {
-        return APK_TYPE.equals(mimeType);
-    }
-
-    public static boolean isDirectoryType(@Nullable String mimeType) {
-        return Document.MIME_TYPE_DIR.equals(mimeType);
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/NavigationViewManager.java b/packages/DocumentsUI/src/com/android/documentsui/NavigationViewManager.java
deleted file mode 100644
index 2554246..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/NavigationViewManager.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.Shared.DEBUG;
-
-import android.annotation.Nullable;
-import android.graphics.drawable.Drawable;
-import android.util.Log;
-import android.view.View;
-
-import com.android.documentsui.dirlist.AnimationView;
-import com.android.documentsui.model.RootInfo;
-
-import java.util.function.Consumer;
-
-/**
- * A facade over the portions of the app and drawer toolbars.
- */
-public class NavigationViewManager {
-
-    private static final String TAG = "NavigationViewManager";
-
-    final DrawerController mDrawer;
-    final DocumentsToolbar mToolbar;
-    final State mState;
-    final NavigationViewManager.Environment mEnv;
-    final Breadcrumb mBreadcrumb;
-
-    public NavigationViewManager(
-            DrawerController drawer,
-            DocumentsToolbar toolbar,
-            State state,
-            NavigationViewManager.Environment env,
-            Breadcrumb breadcrumb) {
-
-        mToolbar = toolbar;
-        mDrawer = drawer;
-        mState = state;
-        mEnv = env;
-        mBreadcrumb = breadcrumb;
-        mBreadcrumb.setup(env, state, this::onNavigationItemSelected);
-
-        mToolbar.setNavigationOnClickListener(
-                new View.OnClickListener() {
-                    @Override
-                    public void onClick(View v) {
-                        onNavigationIconClicked();
-                    }
-                });
-    }
-
-    private void onNavigationIconClicked() {
-        if (mDrawer.isPresent()) {
-            mDrawer.setOpen(true, DrawerController.OPENED_HAMBURGER);
-        }
-    }
-
-    void onNavigationItemSelected(int position) {
-        boolean changed = false;
-        while (mState.stack.size() > position + 1) {
-            changed = true;
-            mState.popDocument();
-        }
-        if (changed) {
-            mEnv.refreshCurrentRootAndDirectory(AnimationView.ANIM_LEAVE);
-        }
-    }
-
-    void update() {
-
-        // TODO: Looks to me like this block is never getting hit.
-        if (mEnv.isSearchExpanded()) {
-            mToolbar.setTitle(null);
-            mBreadcrumb.show(false);
-            return;
-        }
-
-        mDrawer.setTitle(mEnv.getDrawerTitle());
-
-        mToolbar.setNavigationIcon(getActionBarIcon());
-        mToolbar.setNavigationContentDescription(R.string.drawer_open);
-
-        if (mState.stack.size() <= 1) {
-            mBreadcrumb.show(false);
-            String title = mEnv.getCurrentRoot().title;
-            if (DEBUG) Log.d(TAG, "New toolbar title is: " + title);
-            mToolbar.setTitle(title);
-        } else {
-            mBreadcrumb.show(true);
-            mToolbar.setTitle(null);
-            mBreadcrumb.postUpdate();
-        }
-
-        if (DEBUG) Log.d(TAG, "Final toolbar title is: " + mToolbar.getTitle());
-    }
-
-    // Hamburger if drawer is present, else sad nullness.
-    private @Nullable Drawable getActionBarIcon() {
-        if (mDrawer.isPresent()) {
-            return mToolbar.getContext().getDrawable(R.drawable.ic_hamburger);
-        } else {
-            return null;
-        }
-    }
-
-    void revealRootsDrawer(boolean open) {
-        mDrawer.setOpen(open);
-    }
-
-    interface Breadcrumb {
-        void setup(Environment env, State state, Consumer<Integer> listener);
-        void show(boolean visibility);
-        void postUpdate();
-    }
-
-    interface Environment {
-        RootInfo getCurrentRoot();
-        String getDrawerTitle();
-        void refreshCurrentRootAndDirectory(int animation);
-        boolean isSearchExpanded();
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/OpenExternalDirectoryActivity.java b/packages/DocumentsUI/src/com/android/documentsui/OpenExternalDirectoryActivity.java
deleted file mode 100644
index 6588ee1..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/OpenExternalDirectoryActivity.java
+++ /dev/null
@@ -1,512 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static android.os.Environment.isStandardDirectory;
-import static android.os.Environment.STANDARD_DIRECTORIES;
-import static android.os.storage.StorageVolume.EXTRA_DIRECTORY_NAME;
-import static android.os.storage.StorageVolume.EXTRA_STORAGE_VOLUME;
-
-import static com.android.documentsui.LocalPreferences.getScopedAccessPermissionStatus;
-import static com.android.documentsui.LocalPreferences.PERMISSION_ASK;
-import static com.android.documentsui.LocalPreferences.PERMISSION_ASK_AGAIN;
-import static com.android.documentsui.LocalPreferences.PERMISSION_NEVER_ASK;
-import static com.android.documentsui.LocalPreferences.setScopedAccessPermissionStatus;
-import static com.android.documentsui.Metrics.SCOPED_DIRECTORY_ACCESS_ALREADY_DENIED;
-import static com.android.documentsui.Metrics.SCOPED_DIRECTORY_ACCESS_ALREADY_GRANTED;
-import static com.android.documentsui.Metrics.SCOPED_DIRECTORY_ACCESS_DENIED;
-import static com.android.documentsui.Metrics.SCOPED_DIRECTORY_ACCESS_DENIED_AND_PERSIST;
-import static com.android.documentsui.Metrics.SCOPED_DIRECTORY_ACCESS_ERROR;
-import static com.android.documentsui.Metrics.SCOPED_DIRECTORY_ACCESS_GRANTED;
-import static com.android.documentsui.Metrics.SCOPED_DIRECTORY_ACCESS_INVALID_ARGUMENTS;
-import static com.android.documentsui.Metrics.SCOPED_DIRECTORY_ACCESS_INVALID_DIRECTORY;
-import static com.android.documentsui.Metrics.logInvalidScopedAccessRequest;
-import static com.android.documentsui.Metrics.logValidScopedAccessRequest;
-import static com.android.documentsui.Shared.DEBUG;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.app.ActivityManager;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.FragmentManager;
-import android.app.FragmentTransaction;
-import android.content.ContentProviderClient;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnClickListener;
-import android.content.Intent;
-import android.content.UriPermission;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Parcelable;
-import android.os.RemoteException;
-import android.os.UserHandle;
-import android.os.storage.StorageManager;
-import android.os.storage.StorageVolume;
-import android.os.storage.VolumeInfo;
-import android.provider.DocumentsContract;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.View;
-import android.widget.CheckBox;
-import android.widget.CompoundButton;
-import android.widget.CompoundButton.OnCheckedChangeListener;
-import android.widget.TextView;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
-
-/**
- * Activity responsible for handling {@link Intent#ACTION_OPEN_EXTERNAL_DOCUMENT}.
- */
-public class OpenExternalDirectoryActivity extends Activity {
-    private static final String TAG = "OpenExternalDirectory";
-    private static final String FM_TAG = "open_external_directory";
-    private static final String EXTERNAL_STORAGE_AUTH = "com.android.externalstorage.documents";
-    private static final String EXTRA_FILE = "com.android.documentsui.FILE";
-    private static final String EXTRA_APP_LABEL = "com.android.documentsui.APP_LABEL";
-    private static final String EXTRA_VOLUME_LABEL = "com.android.documentsui.VOLUME_LABEL";
-    private static final String EXTRA_VOLUME_UUID = "com.android.documentsui.VOLUME_UUID";
-    private static final String EXTRA_IS_ROOT = "com.android.documentsui.IS_ROOT";
-    private static final String EXTRA_IS_PRIMARY = "com.android.documentsui.IS_PRIMARY";
-    // Special directory name representing the full volume
-    static final String DIRECTORY_ROOT = "ROOT_DIRECTORY";
-
-    private ContentProviderClient mExternalStorageClient;
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        if (savedInstanceState != null) {
-            if (DEBUG) Log.d(TAG, "activity.onCreateDialog(): reusing instance");
-            return;
-        }
-
-        final Intent intent = getIntent();
-        if (intent == null) {
-            if (DEBUG) Log.d(TAG, "missing intent");
-            logInvalidScopedAccessRequest(this, SCOPED_DIRECTORY_ACCESS_INVALID_ARGUMENTS);
-            setResult(RESULT_CANCELED);
-            finish();
-            return;
-        }
-        final Parcelable storageVolume = intent.getParcelableExtra(EXTRA_STORAGE_VOLUME);
-        if (!(storageVolume instanceof StorageVolume)) {
-            if (DEBUG)
-                Log.d(TAG, "extra " + EXTRA_STORAGE_VOLUME + " is not a StorageVolume: "
-                        + storageVolume);
-            logInvalidScopedAccessRequest(this, SCOPED_DIRECTORY_ACCESS_INVALID_ARGUMENTS);
-            setResult(RESULT_CANCELED);
-            finish();
-            return;
-        }
-        String directoryName = intent.getStringExtra(EXTRA_DIRECTORY_NAME );
-        if (directoryName == null) {
-            directoryName = DIRECTORY_ROOT;
-        }
-        final StorageVolume volume = (StorageVolume) storageVolume;
-        if (getScopedAccessPermissionStatus(getApplicationContext(), getCallingPackage(),
-                volume.getUuid(), directoryName) == PERMISSION_NEVER_ASK) {
-            logValidScopedAccessRequest(this, directoryName,
-                    SCOPED_DIRECTORY_ACCESS_ALREADY_DENIED);
-            setResult(RESULT_CANCELED);
-            finish();
-            return;
-        }
-
-        final int userId = UserHandle.myUserId();
-        if (!showFragment(this, userId, volume, directoryName)) {
-            setResult(RESULT_CANCELED);
-            finish();
-            return;
-        }
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        if (mExternalStorageClient != null) {
-            mExternalStorageClient.close();
-        }
-    }
-
-    /**
-     * Validates the given path (volume + directory) and display the appropriate dialog asking the
-     * user to grant access to it.
-     */
-    private static boolean showFragment(OpenExternalDirectoryActivity activity, int userId,
-            StorageVolume storageVolume, String directoryName) {
-        if (DEBUG)
-            Log.d(TAG, "showFragment() for volume " + storageVolume.dump() + ", directory "
-                    + directoryName + ", and user " + userId);
-        final boolean isRoot = directoryName.equals(DIRECTORY_ROOT);
-        final boolean isPrimary = storageVolume.isPrimary();
-
-        if (isRoot && isPrimary) {
-            if (DEBUG) Log.d(TAG, "root access requested on primary volume");
-            return false;
-        }
-
-        final File volumeRoot = storageVolume.getPathFile();
-        File file;
-        try {
-            file = isRoot ? volumeRoot : new File(volumeRoot, directoryName).getCanonicalFile();
-        } catch (IOException e) {
-            Log.e(TAG, "Could not get canonical file for volume " + storageVolume.dump()
-                    + " and directory " + directoryName);
-            logInvalidScopedAccessRequest(activity, SCOPED_DIRECTORY_ACCESS_ERROR);
-            return false;
-        }
-        final StorageManager sm =
-                (StorageManager) activity.getSystemService(Context.STORAGE_SERVICE);
-
-        final String root, directory;
-        if (isRoot) {
-            root = volumeRoot.getAbsolutePath();
-            directory = ".";
-        } else {
-            root = file.getParent();
-            directory = file.getName();
-            // Verify directory is valid.
-            if (TextUtils.isEmpty(directory) || !isStandardDirectory(directory)) {
-                if (DEBUG)
-                    Log.d(TAG, "Directory '" + directory + "' is not standard (full path: '"
-                            + file.getAbsolutePath() + "')");
-                logInvalidScopedAccessRequest(activity, SCOPED_DIRECTORY_ACCESS_INVALID_DIRECTORY);
-                return false;
-            }
-        }
-
-        // Gets volume label and converted path.
-        String volumeLabel = null;
-        String volumeUuid = null;
-        final List<VolumeInfo> volumes = sm.getVolumes();
-        if (DEBUG) Log.d(TAG, "Number of volumes: " + volumes.size());
-        File internalRoot = null;
-        boolean found = true;
-        for (VolumeInfo volume : volumes) {
-            if (isRightVolume(volume, root, userId)) {
-                found = true;
-                internalRoot = volume.getInternalPathForUser(userId);
-                // Must convert path before calling getDocIdForFileCreateNewDir()
-                if (DEBUG) Log.d(TAG, "Converting " + root + " to " + internalRoot);
-                file = isRoot ? internalRoot : new File(internalRoot, directory);
-                volumeUuid = storageVolume.getUuid();
-                volumeLabel = sm.getBestVolumeDescription(volume);
-                if (TextUtils.isEmpty(volumeLabel)) {
-                    volumeLabel = storageVolume.getDescription(activity);
-                }
-                if (TextUtils.isEmpty(volumeLabel)) {
-                    volumeLabel = activity.getString(android.R.string.unknownName);
-                    Log.w(TAG, "No volume description  for " + volume + "; using " + volumeLabel);
-                }
-                break;
-            }
-        }
-        if (internalRoot == null) {
-            // Should not happen on normal circumstances, unless app crafted an invalid volume
-            // using reflection or the list of mounted volumes changed.
-            Log.e(TAG, "Didn't find right volume for '" + storageVolume.dump() + "' on " + volumes);
-            return false;
-        }
-
-        // Checks if the user has granted the permission already.
-        final Intent intent = getIntentForExistingPermission(activity, isRoot, internalRoot, file);
-        if (intent != null) {
-            logValidScopedAccessRequest(activity, directory,
-                    SCOPED_DIRECTORY_ACCESS_ALREADY_GRANTED);
-            activity.setResult(RESULT_OK, intent);
-            activity.finish();
-            return true;
-        }
-
-        if (!found) {
-            Log.e(TAG, "Could not get volume for " + file);
-            logInvalidScopedAccessRequest(activity, SCOPED_DIRECTORY_ACCESS_ERROR);
-            return false;
-        }
-
-        // Gets the package label.
-        final String appLabel = getAppLabel(activity);
-        if (appLabel == null) {
-            // Error already logged.
-            return false;
-        }
-
-        // Sets args that will be retrieve on onCreate()
-        final Bundle args = new Bundle();
-        args.putString(EXTRA_FILE, file.getAbsolutePath());
-        args.putString(EXTRA_VOLUME_LABEL, volumeLabel);
-        args.putString(EXTRA_VOLUME_UUID, volumeUuid);
-        args.putString(EXTRA_APP_LABEL, appLabel);
-        args.putBoolean(EXTRA_IS_ROOT, isRoot);
-        args.putBoolean(EXTRA_IS_PRIMARY, isPrimary);
-
-        final FragmentManager fm = activity.getFragmentManager();
-        final FragmentTransaction ft = fm.beginTransaction();
-        final OpenExternalDirectoryDialogFragment fragment =
-                new OpenExternalDirectoryDialogFragment();
-        fragment.setArguments(args);
-        ft.add(fragment, FM_TAG);
-        ft.commitAllowingStateLoss();
-
-        return true;
-    }
-
-    private static String getAppLabel(Activity activity) {
-        final String packageName = activity.getCallingPackage();
-        final PackageManager pm = activity.getPackageManager();
-        try {
-            return pm.getApplicationLabel(pm.getApplicationInfo(packageName, 0)).toString();
-        } catch (NameNotFoundException e) {
-            logInvalidScopedAccessRequest(activity, SCOPED_DIRECTORY_ACCESS_ERROR);
-            Log.w(TAG, "Could not get label for package " + packageName);
-            return null;
-        }
-    }
-
-    private static boolean isRightVolume(VolumeInfo volume, String root, int userId) {
-        final File userPath = volume.getPathForUser(userId);
-        final String path = userPath == null ? null : volume.getPathForUser(userId).getPath();
-        final boolean isMounted = volume.isMountedReadable();
-        if (DEBUG)
-            Log.d(TAG, "Volume: " + volume
-                    + "\n\tuserId: " + userId
-                    + "\n\tuserPath: " + userPath
-                    + "\n\troot: " + root
-                    + "\n\tpath: " + path
-                    + "\n\tisMounted: " + isMounted);
-
-        return isMounted && root.equals(path);
-    }
-
-    private static Uri getGrantedUriPermission(Context context, ContentProviderClient provider,
-            File file) {
-        // Calls ExternalStorageProvider to get the doc id for the file
-        final Bundle bundle;
-        try {
-            bundle = provider.call("getDocIdForFileCreateNewDir", file.getPath(), null);
-        } catch (RemoteException e) {
-            Log.e(TAG, "Did not get doc id from External Storage provider for " + file, e);
-            logInvalidScopedAccessRequest(context, SCOPED_DIRECTORY_ACCESS_ERROR);
-            return null;
-        }
-        final String docId = bundle == null ? null : bundle.getString("DOC_ID");
-        if (docId == null) {
-            Log.e(TAG, "Did not get doc id from External Storage provider for " + file);
-            logInvalidScopedAccessRequest(context, SCOPED_DIRECTORY_ACCESS_ERROR);
-            return null;
-        }
-        if (DEBUG) Log.d(TAG, "doc id for " + file + ": " + docId);
-
-        final Uri uri = DocumentsContract.buildTreeDocumentUri(EXTERNAL_STORAGE_AUTH, docId);
-        if (uri == null) {
-            Log.e(TAG, "Could not get URI for doc id " + docId);
-            return null;
-        }
-        if (DEBUG) Log.d(TAG, "URI for " + file + ": " + uri);
-        return uri;
-    }
-
-    private static Intent createGrantedUriPermissionsIntent(Context context,
-            ContentProviderClient provider, File file) {
-        final Uri uri = getGrantedUriPermission(context, provider, file);
-        return createGrantedUriPermissionsIntent(uri);
-    }
-
-    private static Intent createGrantedUriPermissionsIntent(Uri uri) {
-        final Intent intent = new Intent();
-        intent.setData(uri);
-        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION
-                | Intent.FLAG_GRANT_WRITE_URI_PERMISSION
-                | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION
-                | Intent.FLAG_GRANT_PREFIX_URI_PERMISSION);
-        return intent;
-    }
-
-    private static Intent getIntentForExistingPermission(OpenExternalDirectoryActivity activity,
-            boolean isRoot, File root, File file) {
-        final String packageName = activity.getCallingPackage();
-        final ContentProviderClient storageClient = activity.getExternalStorageClient();
-        final Uri grantedUri = getGrantedUriPermission(activity, storageClient, file);
-        final Uri rootUri = root.equals(file) ? grantedUri
-                : getGrantedUriPermission(activity, storageClient, root);
-
-        if (DEBUG)
-            Log.d(TAG, "checking if " + packageName + " already has permission for " + grantedUri
-                    + " or its root (" + rootUri + ")");
-        final ActivityManager am =
-                (ActivityManager) activity.getSystemService(Context.ACTIVITY_SERVICE);
-        for (UriPermission uriPermission : am.getGrantedUriPermissions(packageName).getList()) {
-            final Uri uri = uriPermission.getUri();
-            if (uri == null) {
-                Log.w(TAG, "null URI for " + uriPermission);
-                continue;
-            }
-            if (uri.equals(grantedUri) || uri.equals(rootUri)) {
-                if (DEBUG) Log.d(TAG, packageName + " already has permission: " + uriPermission);
-                return createGrantedUriPermissionsIntent(grantedUri);
-            }
-        }
-        if (DEBUG) Log.d(TAG, packageName + " does not have permission for " + grantedUri);
-        return null;
-    }
-
-    public static class OpenExternalDirectoryDialogFragment extends DialogFragment {
-
-        private File mFile;
-        private String mVolumeUuid;
-        private String mVolumeLabel;
-        private String mAppLabel;
-        private boolean mIsRoot;
-        private boolean mIsPrimary;
-        private CheckBox mDontAskAgain;
-        private OpenExternalDirectoryActivity mActivity;
-        private AlertDialog mDialog;
-
-        @Override
-        public void onCreate(Bundle savedInstanceState) {
-            super.onCreate(savedInstanceState);
-            setRetainInstance(true);
-            final Bundle args = getArguments();
-            if (args != null) {
-                mFile = new File(args.getString(EXTRA_FILE));
-                mVolumeUuid = args.getString(EXTRA_VOLUME_UUID);
-                mVolumeLabel = args.getString(EXTRA_VOLUME_LABEL);
-                mAppLabel = args.getString(EXTRA_APP_LABEL);
-                mIsRoot = args.getBoolean(EXTRA_IS_ROOT);
-                mIsPrimary= args.getBoolean(EXTRA_IS_PRIMARY);
-            }
-            mActivity = (OpenExternalDirectoryActivity) getActivity();
-        }
-
-        @Override
-        public void onDestroyView() {
-            // Workaround for https://code.google.com/p/android/issues/detail?id=17423
-            if (mDialog != null && getRetainInstance()) {
-                mDialog.setDismissMessage(null);
-            }
-            super.onDestroyView();
-        }
-
-        @Override
-        public Dialog onCreateDialog(Bundle savedInstanceState) {
-            if (mDialog != null) {
-                if (DEBUG) Log.d(TAG, "fragment.onCreateDialog(): reusing dialog");
-                return mDialog;
-            }
-            if (mActivity != getActivity()) {
-                // Sanity check.
-                Log.wtf(TAG, "activity references don't match on onCreateDialog(): mActivity = "
-                        + mActivity + " , getActivity() = " + getActivity());
-                mActivity = (OpenExternalDirectoryActivity) getActivity();
-            }
-            final String directory = mFile.getName();
-            final String directoryName = mIsRoot ? DIRECTORY_ROOT : directory;
-            final Context context = mActivity.getApplicationContext();
-            final OnClickListener listener = new OnClickListener() {
-
-                @Override
-                public void onClick(DialogInterface dialog, int which) {
-                    Intent intent = null;
-                    if (which == DialogInterface.BUTTON_POSITIVE) {
-                        intent = createGrantedUriPermissionsIntent(mActivity,
-                                mActivity.getExternalStorageClient(), mFile);
-                    }
-                    if (which == DialogInterface.BUTTON_NEGATIVE || intent == null) {
-                        logValidScopedAccessRequest(mActivity, directoryName,
-                                SCOPED_DIRECTORY_ACCESS_DENIED);
-                        final boolean checked = mDontAskAgain.isChecked();
-                        if (checked) {
-                            logValidScopedAccessRequest(mActivity, directory,
-                                    SCOPED_DIRECTORY_ACCESS_DENIED_AND_PERSIST);
-                            setScopedAccessPermissionStatus(context, mActivity.getCallingPackage(),
-                                    mVolumeUuid, directoryName, PERMISSION_NEVER_ASK);
-                        } else {
-                            setScopedAccessPermissionStatus(context, mActivity.getCallingPackage(),
-                                    mVolumeUuid, directoryName, PERMISSION_ASK_AGAIN);
-                        }
-                        mActivity.setResult(RESULT_CANCELED);
-                    } else {
-                        logValidScopedAccessRequest(mActivity, directory,
-                                SCOPED_DIRECTORY_ACCESS_GRANTED);
-                        mActivity.setResult(RESULT_OK, intent);
-                    }
-                    mActivity.finish();
-                }
-            };
-
-            @SuppressLint("InflateParams")
-            // It's ok pass null ViewRoot on AlertDialogs.
-            final View view = View.inflate(mActivity, R.layout.dialog_open_scoped_directory, null);
-            final CharSequence message;
-            if (mIsRoot) {
-                message = TextUtils.expandTemplate(getText(
-                        R.string.open_external_dialog_root_request), mAppLabel, mVolumeLabel);
-            } else {
-                message = TextUtils.expandTemplate(
-                        getText(mIsPrimary ? R.string.open_external_dialog_request_primary_volume
-                                : R.string.open_external_dialog_request),
-                                mAppLabel, directory, mVolumeLabel);
-            }
-            final TextView messageField = (TextView) view.findViewById(R.id.message);
-            messageField.setText(message);
-            mDialog = new AlertDialog.Builder(mActivity, R.style.Theme_AppCompat_Light_Dialog_Alert)
-                    .setView(view)
-                    .setPositiveButton(R.string.allow, listener)
-                    .setNegativeButton(R.string.deny, listener)
-                    .create();
-
-            mDontAskAgain = (CheckBox) view.findViewById(R.id.do_not_ask_checkbox);
-            if (getScopedAccessPermissionStatus(context, mActivity.getCallingPackage(),
-                    mVolumeUuid, directoryName) == PERMISSION_ASK_AGAIN) {
-                mDontAskAgain.setVisibility(View.VISIBLE);
-                mDontAskAgain.setOnCheckedChangeListener(new OnCheckedChangeListener() {
-
-                    @Override
-                    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
-                        mDialog.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(!isChecked);
-                    }
-                });
-            }
-
-            return mDialog;
-        }
-
-        @Override
-        public void onCancel(DialogInterface dialog) {
-            super.onCancel(dialog);
-            final Activity activity = getActivity();
-            logValidScopedAccessRequest(activity, mFile.getName(), SCOPED_DIRECTORY_ACCESS_DENIED);
-            activity.setResult(RESULT_CANCELED);
-            activity.finish();
-        }
-    }
-
-    private synchronized ContentProviderClient getExternalStorageClient() {
-        if (mExternalStorageClient == null) {
-            mExternalStorageClient =
-                    getContentResolver().acquireContentProviderClient(EXTERNAL_STORAGE_AUTH);
-        }
-        return mExternalStorageClient;
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/OperationDialogFragment.java b/packages/DocumentsUI/src/com/android/documentsui/OperationDialogFragment.java
deleted file mode 100644
index 140baad..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/OperationDialogFragment.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.annotation.IntDef;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.FragmentManager;
-import android.app.FragmentTransaction;
-import android.content.DialogInterface;
-import android.os.Bundle;
-import android.text.Html;
-
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
-import com.android.documentsui.services.FileOperationService;
-import com.android.documentsui.services.FileOperationService.OpType;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.ArrayList;
-
-/**
- * Alert dialog for operation dialogs.
- */
-public class OperationDialogFragment extends DialogFragment {
-
-    public static final int DIALOG_TYPE_UNKNOWN = 0;
-    public static final int DIALOG_TYPE_FAILURE = 1;
-    public static final int DIALOG_TYPE_CONVERTED = 2;
-
-    @IntDef(flag = true, value = {
-        DIALOG_TYPE_UNKNOWN,
-        DIALOG_TYPE_FAILURE,
-        DIALOG_TYPE_CONVERTED
-    })
-
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface DialogType {}
-
-    private static final String TAG = "OperationDialogFragment";
-
-    public static void show(FragmentManager fm, @DialogType int dialogType,
-            ArrayList<DocumentInfo> failedSrcList, DocumentStack dstStack,
-            @OpType int operationType) {
-        final Bundle args = new Bundle();
-        args.putInt(FileOperationService.EXTRA_DIALOG_TYPE, dialogType);
-        args.putInt(FileOperationService.EXTRA_OPERATION_TYPE, operationType);
-        args.putParcelableArrayList(FileOperationService.EXTRA_SRC_LIST, failedSrcList);
-
-        final FragmentTransaction ft = fm.beginTransaction();
-        final OperationDialogFragment fragment = new OperationDialogFragment();
-        fragment.setArguments(args);
-
-        ft.add(fragment, TAG);
-        ft.commitAllowingStateLoss();
-    }
-
-    @Override
-    public Dialog onCreateDialog(Bundle inState) {
-        super.onCreate(inState);
-
-        final @DialogType int dialogType =
-              getArguments().getInt(FileOperationService.EXTRA_DIALOG_TYPE);
-        final @OpType int operationType =
-              getArguments().getInt(FileOperationService.EXTRA_OPERATION_TYPE);
-        final ArrayList<DocumentInfo> srcList = getArguments().getParcelableArrayList(
-                FileOperationService.EXTRA_SRC_LIST);
-
-        final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
-        String messageFormat;
-
-        switch (dialogType) {
-            case DIALOG_TYPE_CONVERTED:
-                messageFormat = getString(R.string.copy_converted_warning_content);
-                break;
-
-            case DIALOG_TYPE_FAILURE:
-                switch (operationType) {
-                    case FileOperationService.OPERATION_COPY:
-                        messageFormat = getString(R.string.copy_failure_alert_content);
-                        break;
-                    case FileOperationService.OPERATION_DELETE:
-                        messageFormat = getString(R.string.delete_failure_alert_content);
-                        break;
-                    case FileOperationService.OPERATION_MOVE:
-                        messageFormat = getString(R.string.move_failure_alert_content);
-                        break;
-                    default:
-                        throw new UnsupportedOperationException();
-                }
-                break;
-
-            default:
-                throw new UnsupportedOperationException();
-        }
-
-        final StringBuilder list = new StringBuilder("<p>");
-        for (DocumentInfo documentInfo : srcList) {
-            list.append(String.format("&#8226; %s<br>", Html.escapeHtml(documentInfo.displayName)));
-        }
-        list.append("</p>");
-        builder.setMessage(Html.fromHtml(String.format(messageFormat, list.toString())));
-        builder.setPositiveButton(
-                R.string.close,
-                new DialogInterface.OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int id) {
-                        dialog.dismiss();
-                    }
-                });
-
-        return builder.create();
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/PackageReceiver.java b/packages/DocumentsUI/src/com/android/documentsui/PackageReceiver.java
deleted file mode 100644
index aef63af..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/PackageReceiver.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.content.BroadcastReceiver;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-
-/**
- * Clean up {@link RecentsProvider} when packages are removed.
- */
-public class PackageReceiver extends BroadcastReceiver {
-    @Override
-    public void onReceive(Context context, Intent intent) {
-        final ContentResolver resolver = context.getContentResolver();
-
-        final String action = intent.getAction();
-        if (Intent.ACTION_PACKAGE_FULLY_REMOVED.equals(action)) {
-            resolver.call(RecentsProvider.buildRecent(), RecentsProvider.METHOD_PURGE, null, null);
-
-        } else if (Intent.ACTION_PACKAGE_DATA_CLEARED.equals(action)) {
-            final Uri data = intent.getData();
-            if (data != null) {
-                final String packageName = data.getSchemeSpecificPart();
-                resolver.call(RecentsProvider.buildRecent(), RecentsProvider.METHOD_PURGE_PACKAGE,
-                        packageName, null);
-            }
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/PairedTask.java b/packages/DocumentsUI/src/com/android/documentsui/PairedTask.java
deleted file mode 100644
index 7d2da0b..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/PairedTask.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.app.Activity;
-import android.os.AsyncTask;
-
-/**
- * An {@link CheckedTask} that guards work with checks that a paired {@link Activity}
- * is still alive. Instances of this class make no progress.
- *
- * @template Owner Activity type.
- * @template Input input type
- * @template Output output type
- */
-abstract class PairedTask<Owner extends Activity, Input, Output>
-        extends CheckedTask<Input, Output> {
-
-    protected final Owner mOwner;
-
-    public PairedTask(Owner owner) {
-        super(owner::isDestroyed);
-        mOwner = owner;
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/PickFragment.java b/packages/DocumentsUI/src/com/android/documentsui/PickFragment.java
deleted file mode 100644
index 933506c..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/PickFragment.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.services.FileOperationService.OPERATION_DELETE;
-import static com.android.documentsui.services.FileOperationService.OPERATION_MOVE;
-import static com.android.documentsui.services.FileOperationService.OPERATION_UNKNOWN;
-
-import android.app.Activity;
-import android.app.Fragment;
-import android.app.FragmentManager;
-import android.app.FragmentTransaction;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Button;
-
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.services.FileOperationService.OpType;
-
-/**
- * Display pick confirmation bar, usually for selecting a directory.
- */
-public class PickFragment extends Fragment {
-    public static final String TAG = "PickFragment";
-
-    private int mAction;
-    // Only legal values are OPERATION_COPY, OPERATION_MOVE, and unset (OPERATION_UNKNOWN).
-    private @OpType int mCopyOperationSubType = OPERATION_UNKNOWN;
-    private DocumentInfo mPickTarget;
-    private View mContainer;
-    private Button mPick;
-    private Button mCancel;
-
-    public static void show(FragmentManager fm) {
-        // Fragment can be restored by FragmentManager automatically.
-        if (get(fm) != null) {
-            return;
-        }
-
-        final PickFragment fragment = new PickFragment();
-        final FragmentTransaction ft = fm.beginTransaction();
-        ft.replace(R.id.container_save, fragment, TAG);
-        ft.commitAllowingStateLoss();
-    }
-
-    public static PickFragment get(FragmentManager fm) {
-        return (PickFragment) fm.findFragmentByTag(TAG);
-    }
-
-    @Override
-    public View onCreateView(
-            LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-        mContainer = inflater.inflate(R.layout.fragment_pick, container, false);
-
-        mPick = (Button) mContainer.findViewById(android.R.id.button1);
-        mPick.setOnClickListener(mPickListener);
-
-        mCancel = (Button) mContainer.findViewById(android.R.id.button2);
-        mCancel.setOnClickListener(mCancelListener);
-
-        updateView();
-        return mContainer;
-    }
-
-    private View.OnClickListener mPickListener = new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-            final DocumentsActivity activity = DocumentsActivity.get(PickFragment.this);
-            activity.onPickRequested(mPickTarget);
-        }
-    };
-
-    private View.OnClickListener mCancelListener = new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-            final BaseActivity activity = BaseActivity.get(PickFragment.this);
-            activity.setResult(Activity.RESULT_CANCELED);
-            activity.finish();
-        }
-    };
-
-    /**
-     * @param action Which action defined in State is the picker shown for.
-     */
-    public void setPickTarget(
-            int action, @OpType int copyOperationSubType, DocumentInfo pickTarget) {
-        assert(copyOperationSubType != OPERATION_DELETE);
-
-        mAction = action;
-        mCopyOperationSubType = copyOperationSubType;
-        mPickTarget = pickTarget;
-        if (mContainer != null) {
-            updateView();
-        }
-    }
-
-    /**
-     * Applies the state of fragment to the view components.
-     */
-    private void updateView() {
-        switch (mAction) {
-            case State.ACTION_OPEN_TREE:
-                mPick.setText(R.string.button_select);
-                mCancel.setVisibility(View.GONE);
-                break;
-            case State.ACTION_PICK_COPY_DESTINATION:
-                mPick.setText(mCopyOperationSubType == OPERATION_MOVE
-                        ? R.string.button_move : R.string.button_copy);
-                mCancel.setVisibility(View.VISIBLE);
-                break;
-            default:
-                mContainer.setVisibility(View.GONE);
-                return;
-        }
-
-        if (mPickTarget != null && (
-                mAction == State.ACTION_OPEN_TREE ||
-                mPickTarget.isCreateSupported())) {
-            mContainer.setVisibility(View.VISIBLE);
-        } else {
-            mContainer.setVisibility(View.GONE);
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/ProviderExecutor.java b/packages/DocumentsUI/src/com/android/documentsui/ProviderExecutor.java
deleted file mode 100644
index 8145edc..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/ProviderExecutor.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.os.AsyncTask;
-
-import com.android.internal.annotations.GuardedBy;
-
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.concurrent.Executor;
-import java.util.concurrent.LinkedBlockingQueue;
-
-public class ProviderExecutor extends Thread implements Executor {
-
-    @GuardedBy("sExecutors")
-    private static HashMap<String, ProviderExecutor> sExecutors = new HashMap<>();
-
-    public static ProviderExecutor forAuthority(String authority) {
-        synchronized (sExecutors) {
-            ProviderExecutor executor = sExecutors.get(authority);
-            if (executor == null) {
-                executor = new ProviderExecutor();
-                executor.setName("ProviderExecutor: " + authority);
-                executor.start();
-                sExecutors.put(authority, executor);
-            }
-            return executor;
-        }
-    }
-
-    public interface Preemptable {
-        void preempt();
-    }
-
-    private final LinkedBlockingQueue<Runnable> mQueue = new LinkedBlockingQueue<Runnable>();
-
-    private final ArrayList<WeakReference<Preemptable>> mPreemptable = new ArrayList<>();
-
-    private void preempt() {
-        synchronized (mPreemptable) {
-            int count = 0;
-            for (WeakReference<Preemptable> ref : mPreemptable) {
-                final Preemptable p = ref.get();
-                if (p != null) {
-                    count++;
-                    p.preempt();
-                }
-            }
-            mPreemptable.clear();
-        }
-    }
-
-    /**
-     * Execute the given task. If given task is not {@link Preemptable}, it will
-     * preempt all outstanding preemptable tasks.
-     */
-    public <P> void execute(AsyncTask<P, ?, ?> task, P... params) {
-        if (task instanceof Preemptable) {
-            synchronized (mPreemptable) {
-                mPreemptable.add(new WeakReference<Preemptable>((Preemptable) task));
-            }
-            task.executeOnExecutor(mNonPreemptingExecutor, params);
-        } else {
-            task.executeOnExecutor(this, params);
-        }
-    }
-
-    private Executor mNonPreemptingExecutor = new Executor() {
-        @Override
-        public void execute(Runnable command) {
-            assert(command != null);
-            mQueue.add(command);
-        }
-    };
-
-    @Override
-    public void execute(Runnable command) {
-        preempt();
-        assert(command != null);
-        mQueue.add(command);
-    }
-
-    @Override
-    public void run() {
-        while (true) {
-            try {
-                final Runnable command = mQueue.take();
-                command.run();
-            } catch (InterruptedException e) {
-                // That was weird; let's go look for more tasks.
-            }
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/QuickViewIntentBuilder.java b/packages/DocumentsUI/src/com/android/documentsui/QuickViewIntentBuilder.java
deleted file mode 100644
index 5e3bbbb..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/QuickViewIntentBuilder.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.Shared.MAX_DOCS_IN_INTENT;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
-
-import android.content.ClipData;
-import android.content.ClipDescription;
-import android.content.ComponentName;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.res.Resources;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Build;
-import android.provider.DocumentsContract;
-import android.provider.DocumentsContract.Document;
-import android.support.annotation.Nullable;
-import android.text.TextUtils;
-import android.util.Log;
-import android.util.Range;
-
-import com.android.documentsui.dirlist.Model;
-import com.android.documentsui.model.DocumentInfo;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Provides support for gather a list of quick-viewable files into a quick view intent.
- */
-final class QuickViewIntentBuilder {
-
-    private static final String TAG = "QuickViewIntentBuilder";
-
-    private final DocumentInfo mDocument;
-    private final Model mModel;
-
-    private final PackageManager mPkgManager;
-    private final Resources mResources;
-
-    public QuickViewIntentBuilder(
-            PackageManager pkgManager,
-            Resources resources,
-            DocumentInfo doc,
-            Model model) {
-
-        mPkgManager = pkgManager;
-        mResources = resources;
-        mDocument = doc;
-        mModel = model;
-    }
-
-    /**
-     * Builds the intent for quick viewing. Short circuits building if a handler cannot
-     * be resolved; in this case {@code null} is returned.
-     */
-    @Nullable Intent build() {
-        if (DEBUG) Log.d(TAG, "Preparing intent for doc:" + mDocument.documentId);
-
-        String trustedPkg = getQuickViewPackage();
-
-        if (!TextUtils.isEmpty(trustedPkg)) {
-            Intent intent = new Intent(Intent.ACTION_QUICK_VIEW);
-            intent.setDataAndType(mDocument.derivedUri, mDocument.mimeType);
-            intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
-            intent.setPackage(trustedPkg);
-            if (hasRegisteredHandler(intent)) {
-                final ArrayList<Uri> uris = new ArrayList<Uri>();
-                final int documentLocation = collectViewableUris(uris);
-                final Range<Integer> range = computeSiblingsRange(uris, documentLocation);
-
-                ClipData clipData = null;
-                ClipData.Item item;
-                Uri uri;
-                for (int i = range.getLower(); i <= range.getUpper(); i++) {
-                    uri = uris.get(i);
-                    item = new ClipData.Item(uri);
-                    if (DEBUG) Log.d(TAG, "Including file: " + uri);
-                    if (clipData == null) {
-                        clipData = new ClipData(
-                                "URIs", new String[] { ClipDescription.MIMETYPE_TEXT_URILIST },
-                                item);
-                    } else {
-                        clipData.addItem(item);
-                    }
-                }
-
-                // The documentLocation variable contains an index in "uris". However,
-                // ClipData contains a slice of "uris", so we need to shift the location
-                // so it points to the same Uri.
-                intent.putExtra(Intent.EXTRA_INDEX, documentLocation - range.getLower());
-                intent.setClipData(clipData);
-
-                return intent;
-            } else {
-                Log.e(TAG, "Can't resolve trusted quick view package: " + trustedPkg);
-            }
-        }
-
-        return null;
-    }
-
-    private String getQuickViewPackage() {
-        String resValue = mResources.getString(R.string.trusted_quick_viewer_package);
-        if (Build.IS_DEBUGGABLE ) {
-            // Allow users of debug devices to override default quick viewer
-            // for the purposes of testing.
-            return android.os.SystemProperties.get("debug.quick_viewer", resValue);
-        }
-        return resValue;
-    }
-
-    private int collectViewableUris(ArrayList<Uri> uris) {
-        final String[] siblingIds = mModel.getModelIds();
-        uris.ensureCapacity(siblingIds.length);
-
-        int documentLocation = 0;
-        Cursor cursor;
-        String mimeType;
-        String id;
-        String authority;
-        Uri uri;
-
-        // Cursor's are not guaranteed to be immutable. Hence, traverse it only once.
-        for (int i = 0; i < siblingIds.length; i++) {
-            cursor = mModel.getItem(siblingIds[i]);
-
-            if (cursor == null) {
-                if (DEBUG) Log.d(TAG,
-                        "Unable to obtain cursor for sibling document, modelId: "
-                        + siblingIds[i]);
-                continue;
-            }
-
-            mimeType = getCursorString(cursor, Document.COLUMN_MIME_TYPE);
-            if (Document.MIME_TYPE_DIR.equals(mimeType)) {
-                if (DEBUG) Log.d(TAG,
-                        "Skipping directory, not supported by quick view. modelId: "
-                        + siblingIds[i]);
-                continue;
-            }
-
-            id = getCursorString(cursor, Document.COLUMN_DOCUMENT_ID);
-            authority = getCursorString(cursor, RootCursorWrapper.COLUMN_AUTHORITY);
-            uri = DocumentsContract.buildDocumentUri(authority, id);
-
-            uris.add(uri);
-
-            if (id.equals(mDocument.documentId)) {
-                documentLocation = uris.size() - 1;  // Position in "uris", not in the model.
-                if (DEBUG) Log.d(TAG, "Found starting point for QV. " + documentLocation);
-            }
-        }
-
-        return documentLocation;
-    }
-
-    private static Range<Integer> computeSiblingsRange(List<Uri> uris, int documentLocation) {
-        // Restrict number of siblings to avoid hitting the IPC limit.
-        // TODO: Remove this restriction once ClipData can hold an arbitrary number of
-        // items.
-        int firstSibling;
-        int lastSibling;
-        if (documentLocation < uris.size() / 2) {
-            firstSibling = Math.max(0, documentLocation - MAX_DOCS_IN_INTENT / 2);
-            lastSibling = Math.min(uris.size() - 1, firstSibling + MAX_DOCS_IN_INTENT - 1);
-        } else {
-            lastSibling = Math.min(uris.size() - 1, documentLocation + MAX_DOCS_IN_INTENT / 2);
-            firstSibling = Math.max(0, lastSibling - MAX_DOCS_IN_INTENT + 1);
-        }
-
-        if (DEBUG) Log.d(TAG, "Copmuted siblings from index: " + firstSibling
-                + " to: " + lastSibling);
-
-        return new Range(firstSibling, lastSibling);
-    }
-
-    private boolean hasRegisteredHandler(Intent intent) {
-        // Try to resolve the intent. If a matching app isn't installed, it won't resolve.
-        return intent.resolveActivity(mPkgManager) != null;
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/RecentsCreateFragment.java b/packages/DocumentsUI/src/com/android/documentsui/RecentsCreateFragment.java
deleted file mode 100644
index 019ca86..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/RecentsCreateFragment.java
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.Shared.TAG;
-import static com.android.documentsui.State.ACTION_CREATE;
-
-import android.app.Fragment;
-import android.app.FragmentManager;
-import android.app.FragmentTransaction;
-import android.app.LoaderManager.LoaderCallbacks;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Loader;
-import android.database.Cursor;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.CancellationSignal;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.text.Spannable;
-import android.text.SpannableStringBuilder;
-import android.text.TextUtils.TruncateAt;
-import android.text.style.ImageSpan;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import com.android.documentsui.Events.MotionInputEvent;
-import com.android.documentsui.RecentsProvider.RecentColumns;
-import com.android.documentsui.model.DocumentStack;
-import com.android.documentsui.model.DurableUtils;
-import com.android.documentsui.model.RootInfo;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import libcore.io.IoUtils;
-
-/**
- * Display directories where recent creates took place.
- */
-public class RecentsCreateFragment extends Fragment {
-
-    private View mEmptyView;
-    private RecyclerView mRecView;
-    private DocumentStackAdapter mAdapter;
-    private LoaderCallbacks<List<DocumentStack>> mCallbacks;
-
-    private static final int LOADER_RECENTS = 3;
-
-    public static void show(FragmentManager fm) {
-        final RecentsCreateFragment fragment = new RecentsCreateFragment();
-        final FragmentTransaction ft = fm.beginTransaction();
-        ft.replace(R.id.container_directory, fragment);
-        ft.commitAllowingStateLoss();
-    }
-
-    @Override
-    public View onCreateView(
-            LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-        final Context context = inflater.getContext();
-
-        final View view = inflater.inflate(R.layout.fragment_directory, container, false);
-
-        mRecView = (RecyclerView) view.findViewById(R.id.dir_list);
-        mRecView.setLayoutManager(new LinearLayoutManager(getContext()));
-        mRecView.addOnItemTouchListener(mItemListener);
-
-        mEmptyView = view.findViewById(android.R.id.empty);
-
-        mAdapter = new DocumentStackAdapter();
-        mRecView.setAdapter(mAdapter);
-
-        final RootsCache roots = DocumentsApplication.getRootsCache(context);
-        final State state = ((BaseActivity) getActivity()).getDisplayState();
-
-        mCallbacks = new LoaderCallbacks<List<DocumentStack>>() {
-            @Override
-            public Loader<List<DocumentStack>> onCreateLoader(int id, Bundle args) {
-                return new RecentsCreateLoader(context, roots, state);
-            }
-
-            @Override
-            public void onLoadFinished(
-                    Loader<List<DocumentStack>> loader, List<DocumentStack> data) {
-                mAdapter.update(data);
-
-                // When launched into empty recents, show drawer
-                if (mAdapter.isEmpty() && !state.hasLocationChanged()
-                        && state.action != ACTION_CREATE
-                        && context instanceof DocumentsActivity) {
-                    ((DocumentsActivity) context).setRootsDrawerOpen(true);
-                }
-            }
-
-            @Override
-            public void onLoaderReset(Loader<List<DocumentStack>> loader) {
-                mAdapter.update(null);
-            }
-        };
-
-        return view;
-    }
-
-    @Override
-    public void onStart() {
-        super.onStart();
-        getLoaderManager().restartLoader(LOADER_RECENTS, getArguments(), mCallbacks);
-    }
-
-    @Override
-    public void onStop() {
-        super.onStop();
-        getLoaderManager().destroyLoader(LOADER_RECENTS);
-    }
-
-    private RecyclerView.OnItemTouchListener mItemListener =
-            new RecyclerView.OnItemTouchListener() {
-                @Override
-                public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
-                    try (MotionInputEvent event = MotionInputEvent.obtain(e, mRecView)) {
-                        if (event.isOverItem() && event.isActionUp()) {
-                            final DocumentStack stack = mAdapter.getItem(event.getItemPosition());
-                            ((BaseActivity) getActivity()).onStackPicked(stack);
-                            return true;
-                        }
-                        return false;
-                    }
-                }
-
-                @Override
-                public void onTouchEvent(RecyclerView rv, MotionEvent e) {}
-                @Override
-                public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {}
-            };
-
-    public static class RecentsCreateLoader extends UriDerivativeLoader<Uri, List<DocumentStack>> {
-        private final RootsCache mRoots;
-        private final State mState;
-
-        public RecentsCreateLoader(Context context, RootsCache roots, State state) {
-            super(context, RecentsProvider.buildRecent());
-            mRoots = roots;
-            mState = state;
-        }
-
-        @Override
-        public List<DocumentStack> loadInBackground(Uri uri, CancellationSignal signal) {
-            final Collection<RootInfo> matchingRoots = mRoots.getMatchingRootsBlocking(mState);
-            final ArrayList<DocumentStack> result = new ArrayList<>();
-
-            final ContentResolver resolver = getContext().getContentResolver();
-            final Cursor cursor = resolver.query(
-                    uri, null, null, null, RecentColumns.TIMESTAMP + " DESC", signal);
-            try {
-                while (cursor != null && cursor.moveToNext()) {
-                    final byte[] rawStack = cursor.getBlob(
-                            cursor.getColumnIndex(RecentColumns.STACK));
-                    try {
-                        final DocumentStack stack = new DocumentStack();
-                        DurableUtils.readFromArray(rawStack, stack);
-
-                        // Only update root here to avoid spinning up all
-                        // providers; we update the stack during the actual
-                        // restore. This also filters away roots that don't
-                        // match current filter.
-                        stack.updateRoot(matchingRoots);
-                        result.add(stack);
-                    } catch (IOException e) {
-                        Log.w(TAG, "Failed to resolve stack: " + e);
-                    }
-                }
-            } finally {
-                IoUtils.closeQuietly(cursor);
-            }
-
-            return result;
-        }
-    }
-
-    private static final class StackHolder extends RecyclerView.ViewHolder {
-        public View view;
-        public StackHolder(View view) {
-            super(view);
-            this.view = view;
-        }
-    }
-
-    private class DocumentStackAdapter extends RecyclerView.Adapter<StackHolder> {
-        @Nullable private List<DocumentStack> mItems;
-
-        DocumentStack getItem(int position) {
-            return mItems.get(position);
-        }
-
-        @Override
-        public int getItemCount() {
-            return mItems == null ? 0 : mItems.size();
-        }
-
-        boolean isEmpty() {
-            return mItems == null ? true : mItems.isEmpty();
-        }
-
-        void update(@Nullable List<DocumentStack> items) {
-            mItems = items;
-
-            if (isEmpty()) {
-                mEmptyView.setVisibility(View.VISIBLE);
-            } else {
-                mEmptyView.setVisibility(View.GONE);
-            }
-
-            notifyDataSetChanged();
-        }
-
-        @Override
-        public StackHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-          final Context context = parent.getContext();
-
-          final LayoutInflater inflater = LayoutInflater.from(context);
-          return new StackHolder(
-                  inflater.inflate(R.layout.item_doc_list, parent, false));
-        }
-
-        @Override
-        public void onBindViewHolder(StackHolder holder, int position) {
-            Context context = getContext();
-            View view = holder.view;
-
-            final ImageView iconMime = (ImageView) view.findViewById(R.id.icon_mime);
-            final TextView title = (TextView) view.findViewById(android.R.id.title);
-            final View line2 = view.findViewById(R.id.line2);
-
-            final DocumentStack stack = getItem(position);
-            iconMime.setImageDrawable(stack.root.loadIcon(context));
-
-            final Drawable crumb = context.getDrawable(R.drawable.ic_breadcrumb_arrow);
-            crumb.setBounds(0, 0, crumb.getIntrinsicWidth(), crumb.getIntrinsicHeight());
-
-            final SpannableStringBuilder builder = new SpannableStringBuilder();
-            builder.append(stack.root.title);
-            for (int i = stack.size() - 2; i >= 0; i--) {
-                appendDrawable(builder, crumb);
-                builder.append(stack.get(i).displayName);
-            }
-            title.setText(builder);
-            title.setEllipsize(TruncateAt.MIDDLE);
-
-            if (line2 != null) line2.setVisibility(View.GONE);
-        }
-    }
-
-    private static void appendDrawable(SpannableStringBuilder b, Drawable d) {
-        final int length = b.length();
-        b.append("\u232a");
-        b.setSpan(new ImageSpan(d), length, b.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/RecentsLoader.java b/packages/DocumentsUI/src/com/android/documentsui/RecentsLoader.java
deleted file mode 100644
index cebc9b0..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/RecentsLoader.java
+++ /dev/null
@@ -1,313 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.Shared.TAG;
-import static com.android.documentsui.State.SORT_ORDER_LAST_MODIFIED;
-
-import android.app.ActivityManager;
-import android.content.AsyncTaskLoader;
-import android.content.ContentProviderClient;
-import android.content.Context;
-import android.database.Cursor;
-import android.database.MatrixCursor;
-import android.database.MergeCursor;
-import android.net.Uri;
-import android.os.Bundle;
-import android.provider.DocumentsContract;
-import android.provider.DocumentsContract.Document;
-import android.text.format.DateUtils;
-import android.util.Log;
-
-import com.android.documentsui.model.RootInfo;
-import com.android.internal.annotations.GuardedBy;
-
-import com.google.common.util.concurrent.AbstractFuture;
-
-import libcore.io.IoUtils;
-
-import java.io.Closeable;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Semaphore;
-import java.util.concurrent.TimeUnit;
-
-public class RecentsLoader extends AsyncTaskLoader<DirectoryResult> {
-    // TODO: clean up cursor ownership so background thread doesn't traverse
-    // previously returned cursors for filtering/sorting; this currently races
-    // with the UI thread.
-
-    private static final int MAX_OUTSTANDING_RECENTS = 4;
-    private static final int MAX_OUTSTANDING_RECENTS_SVELTE = 2;
-
-    /**
-     * Time to wait for first pass to complete before returning partial results.
-     */
-    private static final int MAX_FIRST_PASS_WAIT_MILLIS = 500;
-
-    /** Maximum documents from a single root. */
-    private static final int MAX_DOCS_FROM_ROOT = 64;
-
-    /** Ignore documents older than this age. */
-    private static final long REJECT_OLDER_THAN = 45 * DateUtils.DAY_IN_MILLIS;
-
-    /** MIME types that should always be excluded from recents. */
-    private static final String[] RECENT_REJECT_MIMES = new String[] { Document.MIME_TYPE_DIR };
-
-    private final Semaphore mQueryPermits;
-
-    private final RootsCache mRoots;
-    private final State mState;
-
-    @GuardedBy("mTasks")
-    private final HashMap<RootInfo, RecentsTask> mTasks = new HashMap<>();
-
-    private final int mSortOrder = State.SORT_ORDER_LAST_MODIFIED;
-
-    private CountDownLatch mFirstPassLatch;
-    private volatile boolean mFirstPassDone;
-
-    private DirectoryResult mResult;
-
-    public RecentsLoader(Context context, RootsCache roots, State state) {
-        super(context);
-        mRoots = roots;
-        mState = state;
-
-        // Keep clients around on high-RAM devices, since we'd be spinning them
-        // up moments later to fetch thumbnails anyway.
-        final ActivityManager am = (ActivityManager) getContext().getSystemService(
-                Context.ACTIVITY_SERVICE);
-        mQueryPermits = new Semaphore(
-                am.isLowRamDevice() ? MAX_OUTSTANDING_RECENTS_SVELTE : MAX_OUTSTANDING_RECENTS);
-    }
-
-    @Override
-    public DirectoryResult loadInBackground() {
-        synchronized (mTasks) {
-            return loadInBackgroundLocked();
-        }
-    }
-
-    private DirectoryResult loadInBackgroundLocked() {
-        if (mFirstPassLatch == null) {
-            // First time through we kick off all the recent tasks, and wait
-            // around to see if everyone finishes quickly.
-
-            final Collection<RootInfo> roots = mRoots.getMatchingRootsBlocking(mState);
-            for (RootInfo root : roots) {
-                if (root.supportsRecents()) {
-                    mTasks.put(root, new RecentsTask(root.authority, root.rootId));
-                }
-            }
-
-            mFirstPassLatch = new CountDownLatch(mTasks.size());
-            for (RecentsTask task : mTasks.values()) {
-                ProviderExecutor.forAuthority(task.authority).execute(task);
-            }
-
-            try {
-                mFirstPassLatch.await(MAX_FIRST_PASS_WAIT_MILLIS, TimeUnit.MILLISECONDS);
-                mFirstPassDone = true;
-            } catch (InterruptedException e) {
-                throw new RuntimeException(e);
-            }
-        }
-
-        final long rejectBefore = System.currentTimeMillis() - REJECT_OLDER_THAN;
-
-        // Collect all finished tasks
-        boolean allDone = true;
-        List<Cursor> cursors = new ArrayList<>();
-        for (RecentsTask task : mTasks.values()) {
-            if (task.isDone()) {
-                try {
-                    final Cursor cursor = task.get();
-                    if (cursor == null) continue;
-
-                    final FilteringCursorWrapper filtered = new FilteringCursorWrapper(
-                            cursor, mState.acceptMimes, RECENT_REJECT_MIMES, rejectBefore) {
-                        @Override
-                        public void close() {
-                            // Ignored, since we manage cursor lifecycle internally
-                        }
-                    };
-                    cursors.add(filtered);
-                } catch (InterruptedException e) {
-                    throw new RuntimeException(e);
-                } catch (ExecutionException e) {
-                    // We already logged on other side
-                }
-            } else {
-                allDone = false;
-            }
-        }
-
-        if (DEBUG) {
-            Log.d(TAG, "Found " + cursors.size() + " of " + mTasks.size() + " recent queries done");
-        }
-
-        final DirectoryResult result = new DirectoryResult();
-        result.sortOrder = SORT_ORDER_LAST_MODIFIED;
-
-        final Cursor merged;
-        if (cursors.size() > 0) {
-            merged = new MergeCursor(cursors.toArray(new Cursor[cursors.size()]));
-        } else {
-            // Return something when nobody is ready
-            merged = new MatrixCursor(new String[0]);
-        }
-
-        // Tell the UI if this is an in-progress result. When loading is complete, another update is
-        // sent with EXTRA_LOADING set to false.
-        Bundle extras = new Bundle();
-        extras.putBoolean(DocumentsContract.EXTRA_LOADING, !allDone);
-        merged.setExtras(extras);
-
-        result.cursor = merged;
-
-        return result;
-    }
-
-    @Override
-    public void cancelLoadInBackground() {
-        super.cancelLoadInBackground();
-    }
-
-    @Override
-    public void deliverResult(DirectoryResult result) {
-        if (isReset()) {
-            IoUtils.closeQuietly(result);
-            return;
-        }
-        DirectoryResult oldResult = mResult;
-        mResult = result;
-
-        if (isStarted()) {
-            super.deliverResult(result);
-        }
-
-        if (oldResult != null && oldResult != result) {
-            IoUtils.closeQuietly(oldResult);
-        }
-    }
-
-    @Override
-    protected void onStartLoading() {
-        if (mResult != null) {
-            deliverResult(mResult);
-        }
-        if (takeContentChanged() || mResult == null) {
-            forceLoad();
-        }
-    }
-
-    @Override
-    protected void onStopLoading() {
-        cancelLoad();
-    }
-
-    @Override
-    public void onCanceled(DirectoryResult result) {
-        IoUtils.closeQuietly(result);
-    }
-
-    @Override
-    protected void onReset() {
-        super.onReset();
-
-        // Ensure the loader is stopped
-        onStopLoading();
-
-        synchronized (mTasks) {
-            for (RecentsTask task : mTasks.values()) {
-                IoUtils.closeQuietly(task);
-            }
-        }
-
-        IoUtils.closeQuietly(mResult);
-        mResult = null;
-    }
-
-    // TODO: create better transfer of ownership around cursor to ensure its
-    // closed in all edge cases.
-
-    public class RecentsTask extends AbstractFuture<Cursor> implements Runnable, Closeable {
-        public final String authority;
-        public final String rootId;
-
-        private Cursor mWithRoot;
-
-        public RecentsTask(String authority, String rootId) {
-            this.authority = authority;
-            this.rootId = rootId;
-        }
-
-        @Override
-        public void run() {
-            if (isCancelled()) return;
-
-            try {
-                mQueryPermits.acquire();
-            } catch (InterruptedException e) {
-                return;
-            }
-
-            try {
-                runInternal();
-            } finally {
-                mQueryPermits.release();
-            }
-        }
-
-        public void runInternal() {
-            ContentProviderClient client = null;
-            try {
-                client = DocumentsApplication.acquireUnstableProviderOrThrow(
-                        getContext().getContentResolver(), authority);
-
-                final Uri uri = DocumentsContract.buildRecentDocumentsUri(authority, rootId);
-                final Cursor cursor = client.query(
-                        uri, null, null, null, DirectoryLoader.getQuerySortOrder(mSortOrder));
-                mWithRoot = new RootCursorWrapper(authority, rootId, cursor, MAX_DOCS_FROM_ROOT);
-
-            } catch (Exception e) {
-                Log.w(TAG, "Failed to load " + authority + ", " + rootId, e);
-            } finally {
-                ContentProviderClient.releaseQuietly(client);
-            }
-
-            set(mWithRoot);
-
-            mFirstPassLatch.countDown();
-            if (mFirstPassDone) {
-                onContentChanged();
-            }
-        }
-
-        @Override
-        public void close() throws IOException {
-            IoUtils.closeQuietly(mWithRoot);
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/RecentsProvider.java b/packages/DocumentsUI/src/com/android/documentsui/RecentsProvider.java
deleted file mode 100644
index 6ef9154..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/RecentsProvider.java
+++ /dev/null
@@ -1,370 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
-
-import android.content.ContentProvider;
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.Intent;
-import android.content.UriMatcher;
-import android.content.pm.ResolveInfo;
-import android.database.Cursor;
-import android.database.sqlite.SQLiteDatabase;
-import android.database.sqlite.SQLiteOpenHelper;
-import android.net.Uri;
-import android.os.Bundle;
-import android.provider.DocumentsContract;
-import android.provider.DocumentsContract.Document;
-import android.provider.DocumentsContract.Root;
-import android.text.format.DateUtils;
-import android.util.Log;
-
-import com.android.documentsui.model.DocumentStack;
-import com.android.documentsui.model.DurableUtils;
-import com.android.internal.util.Predicate;
-
-import com.google.android.collect.Sets;
-
-import libcore.io.IoUtils;
-
-import java.io.IOException;
-import java.util.Set;
-
-public class RecentsProvider extends ContentProvider {
-    private static final String TAG = "RecentsProvider";
-
-    private static final long MAX_HISTORY_IN_MILLIS = 45 * DateUtils.DAY_IN_MILLIS;
-
-    private static final String AUTHORITY = "com.android.documentsui.recents";
-
-    private static final UriMatcher sMatcher = new UriMatcher(UriMatcher.NO_MATCH);
-
-    private static final int URI_RECENT = 1;
-    private static final int URI_STATE = 2;
-    private static final int URI_RESUME = 3;
-
-    public static final String METHOD_PURGE = "purge";
-    public static final String METHOD_PURGE_PACKAGE = "purgePackage";
-
-    static {
-        sMatcher.addURI(AUTHORITY, "recent", URI_RECENT);
-        // state/authority/rootId/docId
-        sMatcher.addURI(AUTHORITY, "state/*/*/*", URI_STATE);
-        // resume/packageName
-        sMatcher.addURI(AUTHORITY, "resume/*", URI_RESUME);
-    }
-
-    public static final String TABLE_RECENT = "recent";
-    public static final String TABLE_STATE = "state";
-    public static final String TABLE_RESUME = "resume";
-
-    public static class RecentColumns {
-        public static final String KEY = "key";
-        public static final String STACK = "stack";
-        public static final String TIMESTAMP = "timestamp";
-    }
-
-    public static class StateColumns {
-        public static final String AUTHORITY = "authority";
-        public static final String ROOT_ID = Root.COLUMN_ROOT_ID;
-        public static final String DOCUMENT_ID = Document.COLUMN_DOCUMENT_ID;
-
-        @Deprecated  // mode is tracked in local preferences now...by root only
-        public static final String MODE = "mode";
-        public static final String SORT_ORDER = "sortOrder";
-    }
-
-    public static class ResumeColumns {
-        public static final String PACKAGE_NAME = "package_name";
-        public static final String STACK = "stack";
-        public static final String TIMESTAMP = "timestamp";
-        // Indicates handler was an external app, like photos.
-        public static final String EXTERNAL = "external";
-    }
-
-    public static Uri buildRecent() {
-        return new Uri.Builder().scheme(ContentResolver.SCHEME_CONTENT)
-                .authority(AUTHORITY).appendPath("recent").build();
-    }
-
-    public static Uri buildState(String authority, String rootId, String documentId) {
-        return new Uri.Builder().scheme(ContentResolver.SCHEME_CONTENT).authority(AUTHORITY)
-                .appendPath("state").appendPath(authority).appendPath(rootId).appendPath(documentId)
-                .build();
-    }
-
-    public static Uri buildResume(String packageName) {
-        return new Uri.Builder().scheme(ContentResolver.SCHEME_CONTENT)
-                .authority(AUTHORITY).appendPath("resume").appendPath(packageName).build();
-    }
-
-    private DatabaseHelper mHelper;
-
-    private static class DatabaseHelper extends SQLiteOpenHelper {
-        private static final String DB_NAME = "recents.db";
-
-        private static final int VERSION_INIT = 1;
-        private static final int VERSION_AS_BLOB = 3;
-        private static final int VERSION_ADD_EXTERNAL = 4;
-        private static final int VERSION_ADD_RECENT_KEY = 5;
-
-        public DatabaseHelper(Context context) {
-            super(context, DB_NAME, null, VERSION_ADD_RECENT_KEY);
-        }
-
-        @Override
-        public void onCreate(SQLiteDatabase db) {
-
-            db.execSQL("CREATE TABLE " + TABLE_RECENT + " (" +
-                    RecentColumns.KEY + " TEXT PRIMARY KEY ON CONFLICT REPLACE," +
-                    RecentColumns.STACK + " BLOB DEFAULT NULL," +
-                    RecentColumns.TIMESTAMP + " INTEGER" +
-                    ")");
-
-            db.execSQL("CREATE TABLE " + TABLE_STATE + " (" +
-                    StateColumns.AUTHORITY + " TEXT," +
-                    StateColumns.ROOT_ID + " TEXT," +
-                    StateColumns.DOCUMENT_ID + " TEXT," +
-                    StateColumns.MODE + " INTEGER," +
-                    StateColumns.SORT_ORDER + " INTEGER," +
-                    "PRIMARY KEY (" + StateColumns.AUTHORITY + ", " + StateColumns.ROOT_ID + ", "
-                    + StateColumns.DOCUMENT_ID + ")" +
-                    ")");
-
-            db.execSQL("CREATE TABLE " + TABLE_RESUME + " (" +
-                    ResumeColumns.PACKAGE_NAME + " TEXT NOT NULL PRIMARY KEY," +
-                    ResumeColumns.STACK + " BLOB DEFAULT NULL," +
-                    ResumeColumns.TIMESTAMP + " INTEGER," +
-                    ResumeColumns.EXTERNAL + " INTEGER NOT NULL DEFAULT 0" +
-                    ")");
-        }
-
-        @Override
-        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
-            Log.w(TAG, "Upgrading database; wiping app data");
-            db.execSQL("DROP TABLE IF EXISTS " + TABLE_RECENT);
-            db.execSQL("DROP TABLE IF EXISTS " + TABLE_STATE);
-            db.execSQL("DROP TABLE IF EXISTS " + TABLE_RESUME);
-            onCreate(db);
-        }
-    }
-
-    @Override
-    public boolean onCreate() {
-        mHelper = new DatabaseHelper(getContext());
-        return true;
-    }
-
-    @Override
-    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
-            String sortOrder) {
-        final SQLiteDatabase db = mHelper.getReadableDatabase();
-        switch (sMatcher.match(uri)) {
-            case URI_RECENT:
-                final long cutoff = System.currentTimeMillis() - MAX_HISTORY_IN_MILLIS;
-                return db.query(TABLE_RECENT, projection, RecentColumns.TIMESTAMP + ">" + cutoff,
-                        null, null, null, sortOrder);
-            case URI_STATE:
-                final String authority = uri.getPathSegments().get(1);
-                final String rootId = uri.getPathSegments().get(2);
-                final String documentId = uri.getPathSegments().get(3);
-                return db.query(TABLE_STATE, projection, StateColumns.AUTHORITY + "=? AND "
-                        + StateColumns.ROOT_ID + "=? AND " + StateColumns.DOCUMENT_ID + "=?",
-                        new String[] { authority, rootId, documentId }, null, null, sortOrder);
-            case URI_RESUME:
-                final String packageName = uri.getPathSegments().get(1);
-                return db.query(TABLE_RESUME, projection, ResumeColumns.PACKAGE_NAME + "=?",
-                        new String[] { packageName }, null, null, sortOrder);
-            default:
-                throw new UnsupportedOperationException("Unsupported Uri " + uri);
-        }
-    }
-
-    @Override
-    public String getType(Uri uri) {
-        return null;
-    }
-
-    @Override
-    public Uri insert(Uri uri, ContentValues values) {
-        final SQLiteDatabase db = mHelper.getWritableDatabase();
-        final ContentValues key = new ContentValues();
-        switch (sMatcher.match(uri)) {
-            case URI_RECENT:
-                values.put(RecentColumns.TIMESTAMP, System.currentTimeMillis());
-                db.insert(TABLE_RECENT, null, values);
-                final long cutoff = System.currentTimeMillis() - MAX_HISTORY_IN_MILLIS;
-                db.delete(TABLE_RECENT, RecentColumns.TIMESTAMP + "<" + cutoff, null);
-                return uri;
-            case URI_STATE:
-                final String authority = uri.getPathSegments().get(1);
-                final String rootId = uri.getPathSegments().get(2);
-                final String documentId = uri.getPathSegments().get(3);
-
-                key.put(StateColumns.AUTHORITY, authority);
-                key.put(StateColumns.ROOT_ID, rootId);
-                key.put(StateColumns.DOCUMENT_ID, documentId);
-
-                // Ensure that row exists, then update with changed values
-                db.insertWithOnConflict(TABLE_STATE, null, key, SQLiteDatabase.CONFLICT_IGNORE);
-                db.update(TABLE_STATE, values, StateColumns.AUTHORITY + "=? AND "
-                        + StateColumns.ROOT_ID + "=? AND " + StateColumns.DOCUMENT_ID + "=?",
-                        new String[] { authority, rootId, documentId });
-
-                return uri;
-            case URI_RESUME:
-                values.put(ResumeColumns.TIMESTAMP, System.currentTimeMillis());
-
-                final String packageName = uri.getPathSegments().get(1);
-                key.put(ResumeColumns.PACKAGE_NAME, packageName);
-
-                // Ensure that row exists, then update with changed values
-                db.insertWithOnConflict(TABLE_RESUME, null, key, SQLiteDatabase.CONFLICT_IGNORE);
-                db.update(TABLE_RESUME, values, ResumeColumns.PACKAGE_NAME + "=?",
-                        new String[] { packageName });
-                return uri;
-            default:
-                throw new UnsupportedOperationException("Unsupported Uri " + uri);
-        }
-    }
-
-    @Override
-    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
-        throw new UnsupportedOperationException("Unsupported Uri " + uri);
-    }
-
-    @Override
-    public int delete(Uri uri, String selection, String[] selectionArgs) {
-        throw new UnsupportedOperationException("Unsupported Uri " + uri);
-    }
-
-    @Override
-    public Bundle call(String method, String arg, Bundle extras) {
-        if (METHOD_PURGE.equals(method)) {
-            // Purge references to unknown authorities
-            final Intent intent = new Intent(DocumentsContract.PROVIDER_INTERFACE);
-            final Set<String> knownAuth = Sets.newHashSet();
-            for (ResolveInfo info : getContext()
-                    .getPackageManager().queryIntentContentProviders(intent, 0)) {
-                knownAuth.add(info.providerInfo.authority);
-            }
-
-            purgeByAuthority(new Predicate<String>() {
-                @Override
-                public boolean apply(String authority) {
-                    // Purge unknown authorities
-                    return !knownAuth.contains(authority);
-                }
-            });
-
-            return null;
-
-        } else if (METHOD_PURGE_PACKAGE.equals(method)) {
-            // Purge references to authorities in given package
-            final Intent intent = new Intent(DocumentsContract.PROVIDER_INTERFACE);
-            intent.setPackage(arg);
-            final Set<String> packageAuth = Sets.newHashSet();
-            for (ResolveInfo info : getContext()
-                    .getPackageManager().queryIntentContentProviders(intent, 0)) {
-                packageAuth.add(info.providerInfo.authority);
-            }
-
-            if (!packageAuth.isEmpty()) {
-                purgeByAuthority(new Predicate<String>() {
-                    @Override
-                    public boolean apply(String authority) {
-                        // Purge authority matches
-                        return packageAuth.contains(authority);
-                    }
-                });
-            }
-
-            return null;
-
-        } else {
-            return super.call(method, arg, extras);
-        }
-    }
-
-    /**
-     * Purge all internal data whose authority matches the given
-     * {@link Predicate}.
-     */
-    private void purgeByAuthority(Predicate<String> predicate) {
-        final SQLiteDatabase db = mHelper.getWritableDatabase();
-        final DocumentStack stack = new DocumentStack();
-
-        Cursor cursor = db.query(TABLE_RECENT, null, null, null, null, null, null);
-        try {
-            while (cursor.moveToNext()) {
-                try {
-                    final byte[] rawStack = cursor.getBlob(
-                            cursor.getColumnIndex(RecentColumns.STACK));
-                    DurableUtils.readFromArray(rawStack, stack);
-
-                    if (stack.root != null && predicate.apply(stack.root.authority)) {
-                        final String key = getCursorString(cursor, RecentColumns.KEY);
-                        db.delete(TABLE_RECENT, RecentColumns.KEY + "=?", new String[] { key });
-                    }
-                } catch (IOException ignored) {
-                }
-            }
-        } finally {
-            IoUtils.closeQuietly(cursor);
-        }
-
-        cursor = db.query(TABLE_STATE, new String[] {
-                StateColumns.AUTHORITY }, null, null, StateColumns.AUTHORITY, null, null);
-        try {
-            while (cursor.moveToNext()) {
-                final String authority = getCursorString(cursor, StateColumns.AUTHORITY);
-                if (predicate.apply(authority)) {
-                    db.delete(TABLE_STATE, StateColumns.AUTHORITY + "=?", new String[] {
-                            authority });
-                    if (DEBUG) Log.d(TAG, "Purged state for " + authority);
-                }
-            }
-        } finally {
-            IoUtils.closeQuietly(cursor);
-        }
-
-        cursor = db.query(TABLE_RESUME, null, null, null, null, null, null);
-        try {
-            while (cursor.moveToNext()) {
-                try {
-                    final byte[] rawStack = cursor.getBlob(
-                            cursor.getColumnIndex(ResumeColumns.STACK));
-                    DurableUtils.readFromArray(rawStack, stack);
-
-                    if (stack.root != null && predicate.apply(stack.root.authority)) {
-                        final String packageName = getCursorString(
-                                cursor, ResumeColumns.PACKAGE_NAME);
-                        db.delete(TABLE_RESUME, ResumeColumns.PACKAGE_NAME + "=?",
-                                new String[] { packageName });
-                    }
-                } catch (IOException ignored) {
-                }
-            }
-        } finally {
-            IoUtils.closeQuietly(cursor);
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/RetainedState.java b/packages/DocumentsUI/src/com/android/documentsui/RetainedState.java
deleted file mode 100644
index 57cf3b4..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/RetainedState.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.support.annotation.Nullable;
-
-import com.android.documentsui.dirlist.MultiSelectManager.Selection;
-
-/**
- * Object used to collect retained state from activity and fragments. Used
- * with Activity#onRetainNonConfigurationInstance. Information stored in
- * this class should be primarily ephemeral as instances of the class
- * only last across configuration changes (like device rotation). When
- * an application is fully town down, all instances are lost, fa-evah!
- */
-public final class RetainedState {
-    public @Nullable Selection selection;
-
-    public boolean hasSelection() {
-        return selection != null;
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/RootCursorWrapper.java b/packages/DocumentsUI/src/com/android/documentsui/RootCursorWrapper.java
deleted file mode 100644
index 0b58218..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/RootCursorWrapper.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.database.AbstractCursor;
-import android.database.Cursor;
-import android.os.Bundle;
-
-/**
- * Cursor wrapper that adds columns to identify which root a document came from.
- */
-public class RootCursorWrapper extends AbstractCursor {
-    private final String mAuthority;
-    private final String mRootId;
-
-    private final Cursor mCursor;
-    private final int mCount;
-
-    private final String[] mColumnNames;
-
-    private final int mAuthorityIndex;
-    private final int mRootIdIndex;
-
-    public static final String COLUMN_AUTHORITY = "android:authority";
-    public static final String COLUMN_ROOT_ID = "android:rootId";
-
-    public RootCursorWrapper(String authority, String rootId, Cursor cursor, int maxCount) {
-        mAuthority = authority;
-        mRootId = rootId;
-        mCursor = cursor;
-
-        final int count = cursor.getCount();
-        if (maxCount > 0 && count > maxCount) {
-            mCount = maxCount;
-        } else {
-            mCount = count;
-        }
-
-        if (cursor.getColumnIndex(COLUMN_AUTHORITY) != -1
-                || cursor.getColumnIndex(COLUMN_ROOT_ID) != -1) {
-            throw new IllegalArgumentException("Cursor contains internal columns!");
-        }
-        final String[] before = cursor.getColumnNames();
-        mColumnNames = new String[before.length + 2];
-        System.arraycopy(before, 0, mColumnNames, 0, before.length);
-        mAuthorityIndex = before.length;
-        mRootIdIndex = before.length + 1;
-        mColumnNames[mAuthorityIndex] = COLUMN_AUTHORITY;
-        mColumnNames[mRootIdIndex] = COLUMN_ROOT_ID;
-    }
-
-    @Override
-    public Bundle getExtras() {
-        return mCursor.getExtras();
-    }
-
-    @Override
-    public void close() {
-        super.close();
-        mCursor.close();
-    }
-
-    @Override
-    public boolean onMove(int oldPosition, int newPosition) {
-        return mCursor.moveToPosition(newPosition);
-    }
-
-    @Override
-    public String[] getColumnNames() {
-        return mColumnNames;
-    }
-
-    @Override
-    public int getCount() {
-        return mCount;
-    }
-
-    @Override
-    public double getDouble(int column) {
-        return mCursor.getDouble(column);
-    }
-
-    @Override
-    public float getFloat(int column) {
-        return mCursor.getFloat(column);
-    }
-
-    @Override
-    public int getInt(int column) {
-        return mCursor.getInt(column);
-    }
-
-    @Override
-    public long getLong(int column) {
-        return mCursor.getLong(column);
-    }
-
-    @Override
-    public short getShort(int column) {
-        return mCursor.getShort(column);
-    }
-
-    @Override
-    public String getString(int column) {
-        if (column == mAuthorityIndex) {
-            return mAuthority;
-        } else if (column == mRootIdIndex) {
-            return mRootId;
-        } else {
-            return mCursor.getString(column);
-        }
-    }
-
-    @Override
-    public int getType(int column) {
-        return mCursor.getType(column);
-    }
-
-    @Override
-    public boolean isNull(int column) {
-        return mCursor.isNull(column);
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/RootItemView.java b/packages/DocumentsUI/src/com/android/documentsui/RootItemView.java
deleted file mode 100644
index 93aa526..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/RootItemView.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.widget.LinearLayout;
-
-public final class RootItemView extends LinearLayout {
-    private static final int[] STATE_HIGHLIGHTED = {R.attr.state_highlighted};
-
-    private boolean mHighlighted = false;
-
-    public RootItemView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    @Override
-    public int[] onCreateDrawableState(int extraSpace) {
-        final int[] drawableState = super.onCreateDrawableState(extraSpace + 1);
-
-        if (mHighlighted) {
-            mergeDrawableStates(drawableState, STATE_HIGHLIGHTED);
-        }
-
-        return drawableState;
-    }
-
-    public void setHighlight(boolean highlight) {
-        mHighlighted = highlight;
-        refreshDrawableState();
-    }
-
-    /**
-     * Synthesizes pressed state to trick RippleDrawable starting a ripple effect.
-     */
-    public void drawRipple() {
-        setPressed(true);
-        setPressed(false);
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java b/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java
deleted file mode 100644
index 117bb01..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java
+++ /dev/null
@@ -1,529 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.Shared.DEBUG;
-
-import android.content.BroadcastReceiver.PendingResult;
-import android.content.ContentProviderClient;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.ProviderInfo;
-import android.content.pm.ResolveInfo;
-import android.database.ContentObserver;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.SystemClock;
-import android.provider.DocumentsContract;
-import android.provider.DocumentsContract.Root;
-import android.provider.DocumentsProvider;
-import android.support.annotation.VisibleForTesting;
-import android.util.Log;
-
-import com.android.documentsui.model.RootInfo;
-import com.android.internal.annotations.GuardedBy;
-
-import libcore.io.IoUtils;
-
-import com.google.common.collect.ArrayListMultimap;
-import com.google.common.collect.Multimap;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Objects;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Cache of known storage backends and their roots.
- */
-public class RootsCache {
-    public static final Uri sNotificationUri = Uri.parse(
-            "content://com.android.documentsui.roots/");
-
-    private static final String TAG = "RootsCache";
-
-    private final Context mContext;
-    private final ContentObserver mObserver;
-
-    private final RootInfo mRecentsRoot;
-
-    private final Object mLock = new Object();
-    private final CountDownLatch mFirstLoad = new CountDownLatch(1);
-
-    @GuardedBy("mLock")
-    private boolean mFirstLoadDone;
-    @GuardedBy("mLock")
-    private PendingResult mBootCompletedResult;
-
-    @GuardedBy("mLock")
-    private Multimap<String, RootInfo> mRoots = ArrayListMultimap.create();
-    @GuardedBy("mLock")
-    private HashSet<String> mStoppedAuthorities = new HashSet<>();
-
-    @GuardedBy("mObservedAuthorities")
-    private final HashSet<String> mObservedAuthorities = new HashSet<>();
-
-    public RootsCache(Context context) {
-        mContext = context;
-        mObserver = new RootsChangedObserver();
-
-        // Create a new anonymous "Recents" RootInfo. It's a faker.
-        mRecentsRoot = new RootInfo() {{
-                // Special root for recents
-                derivedIcon = R.drawable.ic_root_recent;
-                derivedType = RootInfo.TYPE_RECENTS;
-                flags = Root.FLAG_LOCAL_ONLY | Root.FLAG_SUPPORTS_IS_CHILD
-                        | Root.FLAG_SUPPORTS_CREATE;
-                title = mContext.getString(R.string.root_recent);
-                availableBytes = -1;
-            }};
-    }
-
-    private class RootsChangedObserver extends ContentObserver {
-        public RootsChangedObserver() {
-            super(new Handler());
-        }
-
-        @Override
-        public void onChange(boolean selfChange, Uri uri) {
-            if (uri == null) {
-                Log.w(TAG, "Received onChange event for null uri. Skipping.");
-                return;
-            }
-            if (DEBUG) Log.d(TAG, "Updating roots due to change at " + uri);
-            updateAuthorityAsync(uri.getAuthority());
-        }
-    }
-
-    /**
-     * Gather roots from all known storage providers.
-     */
-    public void updateAsync(boolean forceRefreshAll) {
-
-        // NOTE: This method is called when the UI language changes.
-        // For that reason we update our RecentsRoot to reflect
-        // the current language.
-        mRecentsRoot.title = mContext.getString(R.string.root_recent);
-
-        // Nothing else about the root should ever change.
-        assert(mRecentsRoot.authority == null);
-        assert(mRecentsRoot.rootId == null);
-        assert(mRecentsRoot.derivedIcon == R.drawable.ic_root_recent);
-        assert(mRecentsRoot.derivedType == RootInfo.TYPE_RECENTS);
-        assert(mRecentsRoot.flags == (Root.FLAG_LOCAL_ONLY
-                | Root.FLAG_SUPPORTS_IS_CHILD
-                | Root.FLAG_SUPPORTS_CREATE));
-        assert(mRecentsRoot.availableBytes == -1);
-
-        new UpdateTask(forceRefreshAll, null)
-                .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
-    }
-
-    /**
-     * Gather roots from storage providers belonging to given package name.
-     */
-    public void updatePackageAsync(String packageName) {
-        new UpdateTask(false, packageName).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
-    }
-
-    /**
-     * Gather roots from storage providers belonging to given authority.
-     */
-    public void updateAuthorityAsync(String authority) {
-        final ProviderInfo info = mContext.getPackageManager().resolveContentProvider(authority, 0);
-        if (info != null) {
-            updatePackageAsync(info.packageName);
-        }
-    }
-
-    public void setBootCompletedResult(PendingResult result) {
-        synchronized (mLock) {
-            // Quickly check if we've already finished loading, otherwise hang
-            // out until first pass is finished.
-            if (mFirstLoadDone) {
-                result.finish();
-            } else {
-                mBootCompletedResult = result;
-            }
-        }
-    }
-
-    /**
-     * Block until the first {@link UpdateTask} pass has finished.
-     *
-     * @return {@code true} if cached roots is ready to roll, otherwise
-     *         {@code false} if we timed out while waiting.
-     */
-    private boolean waitForFirstLoad() {
-        boolean success = false;
-        try {
-            success = mFirstLoad.await(15, TimeUnit.SECONDS);
-        } catch (InterruptedException e) {
-        }
-        if (!success) {
-            Log.w(TAG, "Timeout waiting for first update");
-        }
-        return success;
-    }
-
-    /**
-     * Load roots from authorities that are in stopped state. Normal
-     * {@link UpdateTask} passes ignore stopped applications.
-     */
-    private void loadStoppedAuthorities() {
-        final ContentResolver resolver = mContext.getContentResolver();
-        synchronized (mLock) {
-            for (String authority : mStoppedAuthorities) {
-                if (DEBUG) Log.d(TAG, "Loading stopped authority " + authority);
-                mRoots.putAll(authority, loadRootsForAuthority(resolver, authority, true));
-            }
-            mStoppedAuthorities.clear();
-        }
-    }
-
-    /**
-     * Load roots from a stopped authority. Normal {@link UpdateTask} passes
-     * ignore stopped applications.
-     */
-    private void loadStoppedAuthority(String authority) {
-        final ContentResolver resolver = mContext.getContentResolver();
-        synchronized (mLock) {
-            if (!mStoppedAuthorities.contains(authority)) {
-                return;
-            }
-            if (DEBUG) {
-                Log.d(TAG, "Loading stopped authority " + authority);
-            }
-            mRoots.putAll(authority, loadRootsForAuthority(resolver, authority, true));
-            mStoppedAuthorities.remove(authority);
-        }
-    }
-
-    private class UpdateTask extends AsyncTask<Void, Void, Void> {
-        private final boolean mForceRefreshAll;
-        private final String mForceRefreshPackage;
-
-        private final Multimap<String, RootInfo> mTaskRoots = ArrayListMultimap.create();
-        private final HashSet<String> mTaskStoppedAuthorities = new HashSet<>();
-
-        /**
-         * Create task to update roots cache.
-         *
-         * @param forceRefreshAll when true, all previously cached values for
-         *            all packages should be ignored.
-         * @param forceRefreshPackage when non-null, all previously cached
-         *            values for this specific package should be ignored.
-         */
-        public UpdateTask(boolean forceRefreshAll, String forceRefreshPackage) {
-            mForceRefreshAll = forceRefreshAll;
-            mForceRefreshPackage = forceRefreshPackage;
-        }
-
-        @Override
-        protected Void doInBackground(Void... params) {
-            final long start = SystemClock.elapsedRealtime();
-
-            mTaskRoots.put(mRecentsRoot.authority, mRecentsRoot);
-
-            final ContentResolver resolver = mContext.getContentResolver();
-            final PackageManager pm = mContext.getPackageManager();
-
-            // Pick up provider with action string
-            final Intent intent = new Intent(DocumentsContract.PROVIDER_INTERFACE);
-            final List<ResolveInfo> providers = pm.queryIntentContentProviders(intent, 0);
-            for (ResolveInfo info : providers) {
-                handleDocumentsProvider(info.providerInfo);
-            }
-
-            final long delta = SystemClock.elapsedRealtime() - start;
-            if (DEBUG)
-                Log.d(TAG, "Update found " + mTaskRoots.size() + " roots in " + delta + "ms");
-            synchronized (mLock) {
-                mFirstLoadDone = true;
-                if (mBootCompletedResult != null) {
-                    mBootCompletedResult.finish();
-                    mBootCompletedResult = null;
-                }
-                mRoots = mTaskRoots;
-                mStoppedAuthorities = mTaskStoppedAuthorities;
-            }
-            mFirstLoad.countDown();
-            resolver.notifyChange(sNotificationUri, null, false);
-            return null;
-        }
-
-        private void handleDocumentsProvider(ProviderInfo info) {
-            // Ignore stopped packages for now; we might query them
-            // later during UI interaction.
-            if ((info.applicationInfo.flags & ApplicationInfo.FLAG_STOPPED) != 0) {
-                if (DEBUG) Log.d(TAG, "Ignoring stopped authority " + info.authority);
-                mTaskStoppedAuthorities.add(info.authority);
-                return;
-            }
-
-            final boolean forceRefresh = mForceRefreshAll
-                    || Objects.equals(info.packageName, mForceRefreshPackage);
-            mTaskRoots.putAll(info.authority, loadRootsForAuthority(mContext.getContentResolver(),
-                    info.authority, forceRefresh));
-        }
-    }
-
-    /**
-     * Bring up requested provider and query for all active roots.
-     */
-    private Collection<RootInfo> loadRootsForAuthority(ContentResolver resolver, String authority,
-            boolean forceRefresh) {
-        if (DEBUG) Log.d(TAG, "Loading roots for " + authority);
-
-        synchronized (mObservedAuthorities) {
-            if (mObservedAuthorities.add(authority)) {
-                // Watch for any future updates
-                final Uri rootsUri = DocumentsContract.buildRootsUri(authority);
-                mContext.getContentResolver().registerContentObserver(rootsUri, true, mObserver);
-            }
-        }
-
-        final Uri rootsUri = DocumentsContract.buildRootsUri(authority);
-        if (!forceRefresh) {
-            // Look for roots data that we might have cached for ourselves in the
-            // long-lived system process.
-            final Bundle systemCache = resolver.getCache(rootsUri);
-            if (systemCache != null) {
-                if (DEBUG) Log.d(TAG, "System cache hit for " + authority);
-                return systemCache.getParcelableArrayList(TAG);
-            }
-        }
-
-        final ArrayList<RootInfo> roots = new ArrayList<>();
-        ContentProviderClient client = null;
-        Cursor cursor = null;
-        try {
-            client = DocumentsApplication.acquireUnstableProviderOrThrow(resolver, authority);
-            cursor = client.query(rootsUri, null, null, null, null);
-            while (cursor.moveToNext()) {
-                final RootInfo root = RootInfo.fromRootsCursor(authority, cursor);
-                roots.add(root);
-            }
-        } catch (Exception e) {
-            Log.w(TAG, "Failed to load some roots from " + authority + ": " + e);
-        } finally {
-            IoUtils.closeQuietly(cursor);
-            ContentProviderClient.releaseQuietly(client);
-        }
-
-        // Cache these freshly parsed roots over in the long-lived system
-        // process, in case our process goes away. The system takes care of
-        // invalidating the cache if the package or Uri changes.
-        final Bundle systemCache = new Bundle();
-        systemCache.putParcelableArrayList(TAG, roots);
-        resolver.putCache(rootsUri, systemCache);
-
-        return roots;
-    }
-
-    /**
-     * Return the requested {@link RootInfo}, but only loading the roots for the
-     * requested authority. This is useful when we want to load fast without
-     * waiting for all the other roots to come back.
-     */
-    public RootInfo getRootOneshot(String authority, String rootId) {
-        return getRootOneshot(authority, rootId, false);
-    }
-
-    /**
-     * Return the requested {@link RootInfo}, but only loading the roots of the requested authority.
-     * It always fetches from {@link DocumentsProvider} if forceRefresh is true, which is used to
-     * get the most up-to-date free space before starting copy operations.
-     */
-    public RootInfo getRootOneshot(String authority, String rootId, boolean forceRefresh) {
-        synchronized (mLock) {
-            RootInfo root = forceRefresh ? null : getRootLocked(authority, rootId);
-            if (root == null) {
-                mRoots.putAll(authority, loadRootsForAuthority(
-                                mContext.getContentResolver(), authority, forceRefresh));
-                root = getRootLocked(authority, rootId);
-            }
-            return root;
-        }
-    }
-
-    public RootInfo getRootBlocking(String authority, String rootId) {
-        waitForFirstLoad();
-        loadStoppedAuthorities();
-        synchronized (mLock) {
-            return getRootLocked(authority, rootId);
-        }
-    }
-
-    private RootInfo getRootLocked(String authority, String rootId) {
-        for (RootInfo root : mRoots.get(authority)) {
-            if (Objects.equals(root.rootId, rootId)) {
-                return root;
-            }
-        }
-        return null;
-    }
-
-    public boolean isIconUniqueBlocking(RootInfo root) {
-        waitForFirstLoad();
-        loadStoppedAuthorities();
-        synchronized (mLock) {
-            final int rootIcon = root.derivedIcon != 0 ? root.derivedIcon : root.icon;
-            for (RootInfo test : mRoots.get(root.authority)) {
-                if (Objects.equals(test.rootId, root.rootId)) {
-                    continue;
-                }
-                final int testIcon = test.derivedIcon != 0 ? test.derivedIcon : test.icon;
-                if (testIcon == rootIcon) {
-                    return false;
-                }
-            }
-            return true;
-        }
-    }
-
-    public RootInfo getRecentsRoot() {
-        return mRecentsRoot;
-    }
-
-    public boolean isRecentsRoot(RootInfo root) {
-        return mRecentsRoot.equals(root);
-    }
-
-    public Collection<RootInfo> getRootsBlocking() {
-        waitForFirstLoad();
-        loadStoppedAuthorities();
-        synchronized (mLock) {
-            return mRoots.values();
-        }
-    }
-
-    public Collection<RootInfo> getMatchingRootsBlocking(State state) {
-        waitForFirstLoad();
-        loadStoppedAuthorities();
-        synchronized (mLock) {
-            return getMatchingRoots(mRoots.values(), state);
-        }
-    }
-
-    /**
-     * Returns a list of roots for the specified authority. If not found, then
-     * an empty list is returned.
-     */
-    public Collection<RootInfo> getRootsForAuthorityBlocking(String authority) {
-        waitForFirstLoad();
-        loadStoppedAuthority(authority);
-        synchronized (mLock) {
-            final Collection<RootInfo> roots = mRoots.get(authority);
-            return roots != null ? roots : Collections.<RootInfo>emptyList();
-        }
-    }
-
-    /**
-     * Returns the default root for the specified state.
-     */
-    public RootInfo getDefaultRootBlocking(State state) {
-        for (RootInfo root : getMatchingRoots(getRootsBlocking(), state)) {
-            if (root.isDownloads()) {
-                return root;
-            }
-        }
-        return mRecentsRoot;
-    }
-
-    @VisibleForTesting
-    static List<RootInfo> getMatchingRoots(Collection<RootInfo> roots, State state) {
-        final List<RootInfo> matching = new ArrayList<>();
-        for (RootInfo root : roots) {
-
-            if (DEBUG) Log.d(TAG, "Evaluating " + root);
-
-            if (state.action == State.ACTION_CREATE && !root.supportsCreate()) {
-                if (DEBUG) Log.d(TAG, "Excluding read-only root because: ACTION_CREATE.");
-                continue;
-            }
-
-            if (state.action == State.ACTION_PICK_COPY_DESTINATION
-                    && !root.supportsCreate()) {
-                if (DEBUG) Log.d(
-                        TAG, "Excluding read-only root because: ACTION_PICK_COPY_DESTINATION.");
-                continue;
-            }
-
-            if (state.action == State.ACTION_OPEN_TREE && !root.supportsChildren()) {
-                if (DEBUG) Log.d(
-                        TAG, "Excluding root !supportsChildren because: ACTION_OPEN_TREE.");
-                continue;
-            }
-
-            if (!state.showAdvanced && root.isAdvanced()) {
-                if (DEBUG) Log.d(TAG, "Excluding root because: unwanted advanced device.");
-                continue;
-            }
-
-            if (state.localOnly && !root.isLocalOnly()) {
-                if (DEBUG) Log.d(TAG, "Excluding root because: unwanted non-local device.");
-                continue;
-            }
-
-            if (state.directoryCopy && root.isDownloads()) {
-                if (DEBUG) Log.d(
-                        TAG, "Excluding downloads root because: unsupported directory copy.");
-                continue;
-            }
-
-            if (state.action == State.ACTION_OPEN && root.isEmpty()) {
-                if (DEBUG) Log.d(TAG, "Excluding empty root because: ACTION_OPEN.");
-                continue;
-            }
-
-            if (state.action == State.ACTION_GET_CONTENT && root.isEmpty()) {
-                if (DEBUG) Log.d(TAG, "Excluding empty root because: ACTION_GET_CONTENT.");
-                continue;
-            }
-
-            final boolean overlap =
-                    MimePredicate.mimeMatches(root.derivedMimeTypes, state.acceptMimes) ||
-                    MimePredicate.mimeMatches(state.acceptMimes, root.derivedMimeTypes);
-            if (!overlap) {
-                if (DEBUG) Log.d(
-                        TAG, "Excluding root because: unsupported content types > "
-                        + state.acceptMimes);
-                continue;
-            }
-
-            if (state.excludedAuthorities.contains(root.authority)) {
-                if (DEBUG) Log.d(TAG, "Excluding root because: owned by calling package.");
-                continue;
-            }
-
-            if (DEBUG) Log.d(TAG, "Including " + root);
-            matching.add(root);
-        }
-        return matching;
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java b/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java
deleted file mode 100644
index ca28622..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java
+++ /dev/null
@@ -1,738 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.Shared.DEBUG;
-
-import android.annotation.LayoutRes;
-import android.app.Activity;
-import android.app.Fragment;
-import android.app.FragmentManager;
-import android.app.FragmentTransaction;
-import android.app.LoaderManager.LoaderCallbacks;
-import android.content.ClipData;
-import android.content.Context;
-import android.content.Intent;
-import android.content.Loader;
-import android.content.pm.ActivityInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Looper;
-import android.provider.Settings;
-import android.support.annotation.Nullable;
-import android.text.TextUtils;
-import android.text.format.Formatter;
-import android.util.Log;
-import android.view.ContextMenu;
-import android.view.DragEvent;
-import android.view.LayoutInflater;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.View.OnDragListener;
-import android.view.View.OnGenericMotionListener;
-import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.AdapterView.AdapterContextMenuInfo;
-import android.widget.AdapterView.OnItemClickListener;
-import android.widget.AdapterView.OnItemLongClickListener;
-import android.widget.ArrayAdapter;
-import android.widget.ImageView;
-import android.widget.ListView;
-import android.widget.TextView;
-
-import com.android.documentsui.CheckedTask.Check;
-import com.android.documentsui.clipping.DocumentClipper;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.RootInfo;
-import com.android.documentsui.services.FileOperations;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.function.BooleanSupplier;
-import java.util.function.Consumer;
-
-/**
- * Display list of known storage backend roots.
- */
-public class RootsFragment extends Fragment implements ItemDragListener.DragHost {
-
-    private static final String TAG = "RootsFragment";
-    private static final String EXTRA_INCLUDE_APPS = "includeApps";
-
-    private final OnDragListener mDragListener = new ItemDragListener<RootsFragment>(this) {
-        @Override
-        public boolean handleDropEventChecked(View v, DragEvent event) {
-            final int position = (Integer) v.getTag(R.id.item_position_tag);
-            final Item item = mAdapter.getItem(position);
-
-            assert(item.isDropTarget());
-
-            BaseActivity activity = getBaseActivity();
-            return item.dropOn(event.getClipData(), activity, RootsFragment.this::isDetached,
-                    activity.fileOpCallback);
-        }
-    };
-
-    private ListView mList;
-    private RootsAdapter mAdapter;
-    private LoaderCallbacks<Collection<RootInfo>> mCallbacks;
-    private Consumer<RootInfo> mOpenSettings = (RootInfo) -> {
-        throw new UnsupportedOperationException("Can't open settings.");
-    };
-
-    public static void show(FragmentManager fm, Consumer<RootInfo> openSettings) {
-        RootsFragment fragment = show(fm, (Intent) null);
-        fragment.mOpenSettings = openSettings;
-    }
-
-    public static RootsFragment show(FragmentManager fm, Intent includeApps) {
-        final Bundle args = new Bundle();
-        args.putParcelable(EXTRA_INCLUDE_APPS, includeApps);
-
-        final RootsFragment fragment = new RootsFragment();
-        fragment.setArguments(args);
-
-        final FragmentTransaction ft = fm.beginTransaction();
-        ft.replace(R.id.container_roots, fragment);
-        ft.commitAllowingStateLoss();
-
-        return fragment;
-    }
-
-    public static RootsFragment get(FragmentManager fm) {
-        return (RootsFragment) fm.findFragmentById(R.id.container_roots);
-    }
-
-    @Override
-    public View onCreateView(
-            LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-
-        final View view = inflater.inflate(R.layout.fragment_roots, container, false);
-        mList = (ListView) view.findViewById(R.id.roots_list);
-        mList.setOnItemClickListener(mItemListener);
-        // ListView does not have right-click specific listeners, so we will have a
-        // GenericMotionListener to listen for it.
-        // Currently, right click is viewed the same as long press, so we will have to quickly
-        // register for context menu when we receive a right click event, and quickly unregister
-        // it afterwards to prevent context menus popping up upon long presses.
-        // All other motion events will then get passed to OnItemClickListener.
-        mList.setOnGenericMotionListener(
-                new OnGenericMotionListener() {
-            @Override
-            public boolean onGenericMotion(View v, MotionEvent event) {
-                if (Events.isMouseEvent(event)
-                        && event.getButtonState() == MotionEvent.BUTTON_SECONDARY) {
-                    registerForContextMenu(v);
-                    v.showContextMenu(event.getX(), event.getY());
-                    unregisterForContextMenu(v);
-                    return true;
-                }
-                return false;
-            }
-        });
-        mList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
-        return view;
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-
-        final Context context = getActivity();
-        final RootsCache roots = DocumentsApplication.getRootsCache(context);
-        final State state = ((BaseActivity) context).getDisplayState();
-
-        mCallbacks = new LoaderCallbacks<Collection<RootInfo>>() {
-            @Override
-            public Loader<Collection<RootInfo>> onCreateLoader(int id, Bundle args) {
-                return new RootsLoader(context, roots, state);
-            }
-
-            @Override
-            public void onLoadFinished(
-                    Loader<Collection<RootInfo>> loader, Collection<RootInfo> result) {
-                if (!isAdded()) {
-                    return;
-                }
-
-                Intent handlerAppIntent = getArguments().getParcelable(EXTRA_INCLUDE_APPS);
-
-                mAdapter =
-                        new RootsAdapter(context, result, handlerAppIntent, state, mDragListener);
-                mList.setAdapter(mAdapter);
-
-                onCurrentRootChanged();
-            }
-
-            @Override
-            public void onLoaderReset(Loader<Collection<RootInfo>> loader) {
-                mAdapter = null;
-                mList.setAdapter(null);
-            }
-        };
-    }
-
-    @Override
-    public void onResume() {
-        super.onResume();
-        onDisplayStateChanged();
-    }
-
-    public void onDisplayStateChanged() {
-        final Context context = getActivity();
-        final State state = ((BaseActivity) context).getDisplayState();
-
-        if (state.action == State.ACTION_GET_CONTENT) {
-            mList.setOnItemLongClickListener(mItemLongClickListener);
-        } else {
-            mList.setOnItemLongClickListener(null);
-            mList.setLongClickable(false);
-        }
-
-        getLoaderManager().restartLoader(2, null, mCallbacks);
-    }
-
-    public void onCurrentRootChanged() {
-        if (mAdapter == null) {
-            return;
-        }
-
-        final RootInfo root = ((BaseActivity) getActivity()).getCurrentRoot();
-        for (int i = 0; i < mAdapter.getCount(); i++) {
-            final Object item = mAdapter.getItem(i);
-            if (item instanceof RootItem) {
-                final RootInfo testRoot = ((RootItem) item).root;
-                if (Objects.equals(testRoot, root)) {
-                    mList.setItemChecked(i, true);
-                    return;
-                }
-            }
-        }
-    }
-
-    /**
-     * Attempts to shift focus back to the navigation drawer.
-     */
-    public void requestFocus() {
-        mList.requestFocus();
-    }
-
-    private void showAppDetails(ResolveInfo ri) {
-        final Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
-        intent.setData(Uri.fromParts("package", ri.activityInfo.packageName, null));
-        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
-        startActivity(intent);
-    }
-
-    private BaseActivity getBaseActivity() {
-        return (BaseActivity) getActivity();
-    }
-
-    @Override
-    public void runOnUiThread(Runnable runnable) {
-        getActivity().runOnUiThread(runnable);
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * In RootsFragment we open the hovered root.
-     */
-    @Override
-    public void onViewHovered(View v) {
-        // SpacerView doesn't have DragListener so this view is guaranteed to be a RootItemView.
-        RootItemView itemView = (RootItemView) v;
-        itemView.drawRipple();
-
-        final int position = (Integer) v.getTag(R.id.item_position_tag);
-        final Item item = mAdapter.getItem(position);
-        item.open(this);
-    }
-
-    @Override
-    public void setDropTargetHighlight(View v, boolean highlight) {
-        // SpacerView doesn't have DragListener so this view is guaranteed to be a RootItemView.
-        RootItemView itemView = (RootItemView) v;
-        itemView.setHighlight(highlight);
-    }
-
-    @Override
-    public void onCreateContextMenu(
-            ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
-        super.onCreateContextMenu(menu, v, menuInfo);
-        AdapterContextMenuInfo adapterMenuInfo = (AdapterContextMenuInfo) menuInfo;
-        final Item item = mAdapter.getItem(adapterMenuInfo.position);
-        if (item instanceof RootItem) {
-            RootItem rootItem = (RootItem) item;
-            MenuInflater inflater = getActivity().getMenuInflater();
-            inflater.inflate(R.menu.root_context_menu, menu);
-            (getBaseActivity()).getMenuManager().updateRootContextMenu(menu, rootItem.root);
-        }
-    }
-
-    @Override
-    public boolean onContextItemSelected(MenuItem item) {
-        AdapterContextMenuInfo adapterMenuInfo = (AdapterContextMenuInfo) item.getMenuInfo();
-        // There is a possibility that this is called from DirectoryFragment since
-        // all fragments' onContextItemSelected gets called when any menu item is selected
-        // This is to guard against it since DirectoryFragment's RecylerView does not have a
-        // menuInfo
-        if (adapterMenuInfo == null) {
-            return false;
-        }
-        final RootItem rootItem = (RootItem) mAdapter.getItem(adapterMenuInfo.position);
-        switch (item.getItemId()) {
-            case R.id.menu_eject_root:
-                final View ejectIcon = adapterMenuInfo.targetView.findViewById(R.id.eject_icon);
-                ejectClicked(ejectIcon, rootItem.root);
-                return true;
-            case R.id.menu_settings:
-                mOpenSettings.accept(rootItem.root);
-                return true;
-            default:
-                if (DEBUG) Log.d(TAG, "Unhandled menu item selected: " + item);
-                return false;
-        }
-    }
-
-    private static void ejectClicked(View ejectIcon, RootInfo root) {
-        assert(ejectIcon != null);
-        assert(ejectIcon.getContext() instanceof BaseActivity);
-        assert (!root.ejecting);
-        ejectIcon.setEnabled(false);
-        root.ejecting = true;
-        ejectRoot(
-                ejectIcon,
-                root.authority,
-                root.rootId,
-                new Consumer<Boolean>() {
-                    @Override
-                    public void accept(Boolean ejected) {
-                        ejectIcon.setEnabled(!ejected);
-                        root.ejecting = false;
-                    }
-                });
-    }
-
-    static void ejectRoot(
-            View ejectIcon, String authority, String rootId, Consumer<Boolean> listener) {
-        BooleanSupplier predicate = () -> {
-            return !(ejectIcon.getVisibility() == View.VISIBLE);
-        };
-        new EjectRootTask(ejectIcon.getContext(),
-                authority,
-                rootId,
-                predicate,
-                listener).executeOnExecutor(ProviderExecutor.forAuthority(authority));
-    }
-
-    private OnItemClickListener mItemListener = new OnItemClickListener() {
-        @Override
-        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-            final Item item = mAdapter.getItem(position);
-            item.open(RootsFragment.this);
-
-            ((BaseActivity) getActivity()).setRootsDrawerOpen(false);
-        }
-    };
-
-    private OnItemLongClickListener mItemLongClickListener = new OnItemLongClickListener() {
-        @Override
-        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
-            final Item item = mAdapter.getItem(position);
-            return item.showAppDetails(RootsFragment.this);
-        }
-    };
-
-    private static abstract class Item {
-        private final @LayoutRes int mLayoutId;
-        private final String mStringId;
-
-        public Item(@LayoutRes int layoutId, String stringId) {
-            mLayoutId = layoutId;
-            mStringId = stringId;
-        }
-
-        public View getView(View convertView, ViewGroup parent) {
-            if (convertView == null
-                    || (Integer) convertView.getTag(R.id.layout_id_tag) != mLayoutId) {
-                convertView = LayoutInflater.from(parent.getContext())
-                        .inflate(mLayoutId, parent, false);
-            }
-            convertView.setTag(R.id.layout_id_tag, mLayoutId);
-            bindView(convertView);
-            return convertView;
-        }
-
-        boolean showAppDetails(RootsFragment fragment) {
-            return false;
-        }
-
-        abstract void bindView(View convertView);
-
-        abstract boolean isDropTarget();
-
-        abstract void open(RootsFragment fragment);
-
-        boolean dropOn(ClipData data, Context context, Check check,
-                FileOperations.Callback callback) {
-            return false;
-        }
-    }
-
-    private static class RootItem extends Item {
-        private static final String STRING_ID_FORMAT = "RootItem{%s/%s}";
-
-        public final RootInfo root;
-
-        public RootItem(RootInfo root) {
-            super(R.layout.item_root, getStringId(root));
-            this.root = root;
-        }
-
-        private static String getStringId(RootInfo root) {
-            // Empty URI authority is invalid, so we can use empty string if root.authority is null.
-            // Directly passing null to String.format() will write "null" which can be a valid URI
-            // authority.
-            String authority = (root.authority == null ? "" : root.authority);
-            return String.format(STRING_ID_FORMAT, authority, root.rootId);
-        }
-
-        @Override
-        public void bindView(View convertView) {
-            final ImageView icon = (ImageView) convertView.findViewById(android.R.id.icon);
-            final TextView title = (TextView) convertView.findViewById(android.R.id.title);
-            final TextView summary = (TextView) convertView.findViewById(android.R.id.summary);
-            final ImageView ejectIcon = (ImageView) convertView.findViewById(R.id.eject_icon);
-
-            final Context context = convertView.getContext();
-            icon.setImageDrawable(root.loadDrawerIcon(context));
-            title.setText(root.title);
-
-            if (root.supportsEject()) {
-                ejectIcon.setVisibility(View.VISIBLE);
-                ejectIcon.setImageDrawable(root.loadEjectIcon(context));
-                ejectIcon.setOnClickListener(new OnClickListener() {
-                    @Override
-                    public void onClick(View unmountIcon) {
-                        RootsFragment.ejectClicked(unmountIcon, root);
-                    }
-                });
-            } else {
-                ejectIcon.setVisibility(View.GONE);
-                ejectIcon.setOnClickListener(null);
-            }
-            // Show available space if no summary
-            String summaryText = root.summary;
-            if (TextUtils.isEmpty(summaryText) && root.availableBytes >= 0) {
-                summaryText = context.getString(R.string.root_available_bytes,
-                        Formatter.formatFileSize(context, root.availableBytes));
-            }
-
-            summary.setText(summaryText);
-            summary.setVisibility(TextUtils.isEmpty(summaryText) ? View.GONE : View.VISIBLE);
-        }
-
-        @Override
-        boolean isDropTarget() {
-            return root.supportsCreate() && !root.isLibrary();
-        }
-
-        @Override
-        void open(RootsFragment fragment) {
-            BaseActivity activity = BaseActivity.get(fragment);
-            Metrics.logRootVisited(fragment.getActivity(), root);
-            activity.onRootPicked(root);
-        }
-
-        @Override
-        boolean dropOn(
-                ClipData data, Context context, Check check, FileOperations.Callback callback) {
-            ProviderExecutor executor = ProviderExecutor.forAuthority(root.authority);
-            new DropOnRootTask(data, root, context, check, callback).executeOnExecutor(executor);
-            return true;
-        }
-    }
-
-    private static class SpacerItem extends Item {
-        private static final String STRING_ID = "SpacerItem";
-
-        public SpacerItem() {
-            // Multiple spacer items can share the same string id as they're identical.
-            super(R.layout.item_root_spacer, STRING_ID);
-        }
-
-        @Override
-        void bindView(View convertView) {
-            // Nothing to bind
-        }
-
-        @Override
-        boolean isDropTarget() {
-            return false;
-        }
-
-        @Override
-        void open(RootsFragment fragment) {
-            if (DEBUG) Log.d(TAG, "Ignoring click/hover on spacer item.");
-        }
-    }
-
-    private static class AppItem extends Item {
-        private static final String STRING_ID_FORMAT = "AppItem{%s/%s}";
-
-        public final ResolveInfo info;
-
-        public AppItem(ResolveInfo info) {
-            super(R.layout.item_root, getStringId(info));
-            this.info = info;
-        }
-
-        private static String getStringId(ResolveInfo info) {
-            ActivityInfo activityInfo = info.activityInfo;
-
-            String component = String.format(
-                    STRING_ID_FORMAT, activityInfo.applicationInfo.packageName, activityInfo.name);
-            return component;
-        }
-
-        @Override
-        boolean showAppDetails(RootsFragment fragment) {
-            fragment.showAppDetails(info);
-            return true;
-        }
-
-        @Override
-        void bindView(View convertView) {
-            final ImageView icon = (ImageView) convertView.findViewById(android.R.id.icon);
-            final TextView title = (TextView) convertView.findViewById(android.R.id.title);
-            final TextView summary = (TextView) convertView.findViewById(android.R.id.summary);
-
-            final PackageManager pm = convertView.getContext().getPackageManager();
-            icon.setImageDrawable(info.loadIcon(pm));
-            title.setText(info.loadLabel(pm));
-
-            // TODO: match existing summary behavior from disambig dialog
-            summary.setVisibility(View.GONE);
-        }
-
-        @Override
-        boolean isDropTarget() {
-            // We won't support drag n' drop in DocumentsActivity, and apps only show up there.
-            return false;
-        }
-
-        @Override
-        void open(RootsFragment fragment) {
-            DocumentsActivity activity = DocumentsActivity.get(fragment);
-            Metrics.logAppVisited(fragment.getActivity(), info);
-            activity.onAppPicked(info);
-        }
-    }
-
-    private static class DropOnRootTask extends CheckedTask<Void, DocumentInfo> {
-        private ClipData mData;
-        private RootInfo mDstRoot;
-        private Context mContext;
-        private FileOperations.Callback mCallback;
-
-        private DropOnRootTask(ClipData data, RootInfo dstRoot, Context context, Check check,
-                FileOperations.Callback callback) {
-            super(check);
-            mData = data;
-            mDstRoot = dstRoot;
-            mContext = context;
-            mCallback = callback;
-        }
-
-        @Override
-        public DocumentInfo run(Void... args) {
-            return mDstRoot.getRootDocumentBlocking(mContext);
-        }
-
-        @Override
-        public void finish(DocumentInfo doc) {
-            if (doc != null) {
-                DocumentClipper clipper =
-                        DocumentsApplication.getDocumentClipper(mContext);
-                clipper.copyFromClipData(mDstRoot, doc, mData, mCallback);
-            } else {
-                Log.e(TAG, "Failed to get doc.");
-            }
-        }
-    }
-
-    private static class RootsAdapter extends ArrayAdapter<Item> {
-        private static final Map<String, Long> sIdMap = new HashMap<String, Long>();
-        // the next available id to associate with a new string id
-        private static long sNextAvailableId;
-
-        private OnDragListener mDragListener;
-
-        /**
-         * @param handlerAppIntent When not null, apps capable of handling the original intent will
-         *            be included in list of roots (in special section at bottom).
-         */
-        public RootsAdapter(Context context, Collection<RootInfo> roots,
-                @Nullable Intent handlerAppIntent, State state, OnDragListener dragListener) {
-            super(context, 0);
-
-            final List<RootItem> libraries = new ArrayList<>();
-            final List<RootItem> others = new ArrayList<>();
-
-            for (final RootInfo root : roots) {
-                final RootItem item = new RootItem(root);
-
-                if (root.isHome() &&
-                        !Shared.shouldShowDocumentsRoot(context,
-                                ((Activity) context).getIntent())) {
-                    continue;
-                } else if (root.isLibrary()) {
-                    if (DEBUG) Log.d(TAG, "Adding " + root + " as library.");
-                    libraries.add(item);
-                } else {
-                    if (DEBUG) Log.d(TAG, "Adding " + root + " as non-library.");
-                    others.add(item);
-                }
-            }
-
-            final RootComparator comp = new RootComparator();
-            Collections.sort(libraries, comp);
-            Collections.sort(others, comp);
-
-            addAll(libraries);
-            // Only add the spacer if it is actually separating something.
-            if (!libraries.isEmpty() && !others.isEmpty()) {
-                add(new SpacerItem());
-            }
-            addAll(others);
-
-            // Include apps that can handle this intent too.
-            if (handlerAppIntent != null) {
-                includeHandlerApps(context, handlerAppIntent);
-            }
-
-            mDragListener = dragListener;
-        }
-
-        /**
-         * Adds apps capable of handling the original intent will be included in list of roots (in
-         * special section at bottom).
-         */
-        private void includeHandlerApps(Context context, Intent handlerAppIntent) {
-            final PackageManager pm = context.getPackageManager();
-            final List<ResolveInfo> infos = pm.queryIntentActivities(
-                    handlerAppIntent, PackageManager.MATCH_DEFAULT_ONLY);
-
-            final List<AppItem> apps = new ArrayList<>();
-
-            // Omit ourselves from the list
-            for (ResolveInfo info : infos) {
-                if (!context.getPackageName().equals(info.activityInfo.packageName)) {
-                    apps.add(new AppItem(info));
-                }
-            }
-
-            if (apps.size() > 0) {
-                add(new SpacerItem());
-                addAll(apps);
-            }
-        }
-
-        @Override
-        public boolean hasStableIds() {
-            return true;
-        }
-
-        @Override
-        public long getItemId(int position) {
-            // Ensure this method is only called in main thread because we don't have any
-            // concurrency protection.
-            assert(Looper.myLooper() == Looper.getMainLooper());
-
-            String stringId = getItem(position).mStringId;
-
-            long id;
-            if (sIdMap.containsKey(stringId)) {
-                id = sIdMap.get(stringId);
-            } else {
-                id = sNextAvailableId++;
-                sIdMap.put(stringId, id);
-            }
-
-            return id;
-        }
-
-        @Override
-        public View getView(int position, View convertView, ViewGroup parent) {
-            final Item item = getItem(position);
-            final View view = item.getView(convertView, parent);
-
-            if (item.isDropTarget()) {
-                view.setTag(R.id.item_position_tag, position);
-                view.setOnDragListener(mDragListener);
-            } else {
-                view.setTag(R.id.item_position_tag, null);
-                view.setOnDragListener(null);
-            }
-            return view;
-        }
-
-        @Override
-        public boolean areAllItemsEnabled() {
-            return false;
-        }
-
-        @Override
-        public boolean isEnabled(int position) {
-            return getItemViewType(position) != 1;
-        }
-
-        @Override
-        public int getItemViewType(int position) {
-            final Item item = getItem(position);
-            if (item instanceof RootItem || item instanceof AppItem) {
-                return 0;
-            } else {
-                return 1;
-            }
-        }
-
-        @Override
-        public int getViewTypeCount() {
-            return 2;
-        }
-    }
-
-    public static class RootComparator implements Comparator<RootItem> {
-        @Override
-        public int compare(RootItem lhs, RootItem rhs) {
-            return lhs.root.compareTo(rhs.root);
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/RootsList.java b/packages/DocumentsUI/src/com/android/documentsui/RootsList.java
deleted file mode 100644
index bf03ffd..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/RootsList.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.documentsui;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.KeyEvent;
-import android.widget.ListView;
-
-/**
- * The list in the navigation drawer. This class exists for the purpose of overriding the key
- * handler on ListView. Ignoring keystrokes (e.g. the tab key) cannot be properly done using
- * View.OnKeyListener.
- */
-public class RootsList extends ListView {
-
-    // Multiple constructors are needed to handle all the different ways this View could be
-    // constructed by the framework. Don't remove them!
-    public RootsList(Context context) {
-        super(context);
-    }
-
-    public RootsList(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
-        super(context, attrs, defStyleAttr, defStyleRes);
-    }
-
-    public RootsList(Context context, AttributeSet attrs, int defStyleAttr) {
-        super(context, attrs, defStyleAttr);
-    }
-
-    public RootsList(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    @Override
-    public boolean onKeyDown(int keyCode, KeyEvent event) {
-        switch (keyCode) {
-            // Ignore tab key events - this causes them to bubble up to the global key handler where
-            // they are appropriately handled. See BaseActivity.onKeyDown.
-            case KeyEvent.KEYCODE_TAB:
-                return false;
-            // Prevent left/right arrow keystrokes from shifting focus away from the roots list.
-            case KeyEvent.KEYCODE_DPAD_LEFT:
-            case KeyEvent.KEYCODE_DPAD_RIGHT:
-                return true;
-            default:
-                return super.onKeyDown(keyCode, event);
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/RootsLoader.java b/packages/DocumentsUI/src/com/android/documentsui/RootsLoader.java
deleted file mode 100644
index 5c4ccdd..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/RootsLoader.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.content.AsyncTaskLoader;
-import android.content.Context;
-
-import com.android.documentsui.model.RootInfo;
-
-import java.util.Collection;
-
-public class RootsLoader extends AsyncTaskLoader<Collection<RootInfo>> {
-    private final ForceLoadContentObserver mObserver = new ForceLoadContentObserver();
-
-    private final RootsCache mRoots;
-    private final State mState;
-
-    private Collection<RootInfo> mResult;
-
-    public RootsLoader(Context context, RootsCache roots, State state) {
-        super(context);
-        mRoots = roots;
-        mState = state;
-
-        getContext().getContentResolver()
-                .registerContentObserver(RootsCache.sNotificationUri, false, mObserver);
-    }
-
-    @Override
-    public final Collection<RootInfo> loadInBackground() {
-        return mRoots.getMatchingRootsBlocking(mState);
-    }
-
-    @Override
-    public void deliverResult(Collection<RootInfo> result) {
-        if (isReset()) {
-            return;
-        }
-
-        mResult = result;
-
-        if (isStarted()) {
-            super.deliverResult(result);
-        }
-    }
-
-    @Override
-    protected void onStartLoading() {
-        if (mResult != null) {
-            deliverResult(mResult);
-        }
-        if (takeContentChanged() || mResult == null) {
-            forceLoad();
-        }
-    }
-
-    @Override
-    protected void onStopLoading() {
-        cancelLoad();
-    }
-
-    @Override
-    protected void onReset() {
-        super.onReset();
-
-        // Ensure the loader is stopped
-        onStopLoading();
-
-        mResult = null;
-
-        getContext().getContentResolver().unregisterContentObserver(mObserver);
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/SaveFragment.java b/packages/DocumentsUI/src/com/android/documentsui/SaveFragment.java
deleted file mode 100644
index a37590d..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/SaveFragment.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.app.Fragment;
-import android.app.FragmentManager;
-import android.app.FragmentTransaction;
-import android.content.Context;
-import android.os.Bundle;
-import android.text.Editable;
-import android.text.TextUtils;
-import android.text.TextWatcher;
-import android.view.KeyEvent;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.EditText;
-import android.widget.ImageView;
-import android.widget.ProgressBar;
-
-import com.android.documentsui.model.DocumentInfo;
-
-/**
- * Display document title editor and save button.
- */
-public class SaveFragment extends Fragment {
-    public static final String TAG = "SaveFragment";
-
-    private DocumentInfo mReplaceTarget;
-    private EditText mDisplayName;
-    private Button mSave;
-    private ProgressBar mProgress;
-    private boolean mIgnoreNextEdit;
-
-    private static final String EXTRA_MIME_TYPE = "mime_type";
-    private static final String EXTRA_DISPLAY_NAME = "display_name";
-
-    public static void show(FragmentManager fm, String mimeType, String displayName) {
-        final Bundle args = new Bundle();
-        args.putString(EXTRA_MIME_TYPE, mimeType);
-        args.putString(EXTRA_DISPLAY_NAME, displayName);
-
-        final SaveFragment fragment = new SaveFragment();
-        fragment.setArguments(args);
-
-        final FragmentTransaction ft = fm.beginTransaction();
-        ft.replace(R.id.container_save, fragment, TAG);
-        ft.commitAllowingStateLoss();
-    }
-
-    public static SaveFragment get(FragmentManager fm) {
-        return (SaveFragment) fm.findFragmentByTag(TAG);
-    }
-
-    @Override
-    public View onCreateView(
-            LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-        final Context context = inflater.getContext();
-
-        final View view = inflater.inflate(R.layout.fragment_save, container, false);
-
-        final ImageView icon = (ImageView) view.findViewById(android.R.id.icon);
-        icon.setImageDrawable(
-                IconUtils.loadMimeIcon(context, getArguments().getString(EXTRA_MIME_TYPE)));
-
-        mDisplayName = (EditText) view.findViewById(android.R.id.title);
-        mDisplayName.addTextChangedListener(mDisplayNameWatcher);
-        mDisplayName.setText(getArguments().getString(EXTRA_DISPLAY_NAME));
-        mDisplayName.setOnKeyListener(
-                new View.OnKeyListener() {
-                    @Override
-                    public boolean onKey(View v, int keyCode, KeyEvent event) {
-                        // Only handle key-down events. This is simpler, consistent with most other
-                        // UIs, and enables the handling of repeated key events from holding down a
-                        // key.
-                        if (event.getAction() != KeyEvent.ACTION_DOWN) {
-                            return false;
-                        }
-
-                        // Returning false in this method will bubble the event up to
-                        // {@link BaseActivity#onKeyDown}. In order to prevent backspace popping
-                        // documents once the textView is empty, we are going to trap it here.
-                        if (keyCode == KeyEvent.KEYCODE_DEL
-                                && TextUtils.isEmpty(mDisplayName.getText())) {
-                            return true;
-                        }
-
-                        if (keyCode == KeyEvent.KEYCODE_ENTER && mSave.isEnabled()) {
-                            performSave();
-                            return true;
-                        }
-                        return false;
-                    }
-                });
-
-        mSave = (Button) view.findViewById(android.R.id.button1);
-        mSave.setOnClickListener(mSaveListener);
-        mSave.setEnabled(false);
-
-        mProgress = (ProgressBar) view.findViewById(android.R.id.progress);
-
-        return view;
-    }
-
-    private TextWatcher mDisplayNameWatcher = new TextWatcher() {
-        @Override
-        public void onTextChanged(CharSequence s, int start, int before, int count) {
-            if (mIgnoreNextEdit) {
-                mIgnoreNextEdit = false;
-            } else {
-                mReplaceTarget = null;
-            }
-        }
-
-        @Override
-        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-            // ignored
-        }
-
-        @Override
-        public void afterTextChanged(Editable s) {
-            // ignored
-        }
-    };
-
-    private View.OnClickListener mSaveListener = new View.OnClickListener() {
-        @Override
-        public void onClick(View v) {
-            performSave();
-        }
-
-    };
-
-    private void performSave() {
-        final DocumentsActivity activity = DocumentsActivity.get(SaveFragment.this);
-        if (mReplaceTarget != null) {
-            activity.onSaveRequested(mReplaceTarget);
-        } else {
-            final String mimeType = getArguments().getString(EXTRA_MIME_TYPE);
-            final String displayName = mDisplayName.getText().toString();
-            activity.onSaveRequested(mimeType, displayName);
-        }
-    }
-
-    /**
-     * Set given document as target for in-place writing if user hits save
-     * without changing the filename. Can be set to {@code null} if user
-     * navigates outside the target directory.
-     */
-    public void setReplaceTarget(DocumentInfo replaceTarget) {
-        mReplaceTarget = replaceTarget;
-
-        if (mReplaceTarget != null) {
-            getArguments().putString(EXTRA_DISPLAY_NAME, replaceTarget.displayName);
-            mIgnoreNextEdit = true;
-            mDisplayName.setText(replaceTarget.displayName);
-        }
-    }
-
-    public void prepareForDirectory(DocumentInfo cwd) {
-        setSaveEnabled(cwd != null && cwd.isCreateSupported());
-    }
-
-    private void setSaveEnabled(boolean enabled) {
-        mSave.setEnabled(enabled);
-    }
-
-    public void setPending(boolean pending) {
-        mSave.setVisibility(pending ? View.INVISIBLE : View.VISIBLE);
-        mProgress.setVisibility(pending ? View.VISIBLE : View.GONE);
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/SearchViewManager.java b/packages/DocumentsUI/src/com/android/documentsui/SearchViewManager.java
deleted file mode 100644
index 46a14e6..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/SearchViewManager.java
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.Shared.DEBUG;
-
-import android.annotation.Nullable;
-import android.os.Bundle;
-import android.provider.DocumentsContract.Root;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.MenuItem.OnActionExpandListener;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.View.OnFocusChangeListener;
-import android.widget.SearchView;
-import android.widget.SearchView.OnQueryTextListener;
-
-import com.android.documentsui.model.RootInfo;
-
-/**
- * Manages searching UI behavior.
- */
-public class SearchViewManager implements
-        SearchView.OnCloseListener, OnQueryTextListener, OnClickListener, OnFocusChangeListener,
-        OnActionExpandListener {
-
-    public interface SearchManagerListener {
-        void onSearchChanged(@Nullable String query);
-        void onSearchFinished();
-    }
-
-    private static final String TAG = "SearchManager";
-
-    private SearchManagerListener mListener;
-    private boolean mSearchExpanded;
-    private String mCurrentSearch;
-    private boolean mIgnoreNextClose;
-    private boolean mFullBar;
-
-    private DocumentsToolbar mActionBar;
-    private MenuItem mMenuItem;
-    private SearchView mSearchView;
-
-    public SearchViewManager(SearchManagerListener listener, @Nullable Bundle savedState) {
-        mListener = listener;
-        mCurrentSearch = savedState != null ? savedState.getString(Shared.EXTRA_QUERY) : null;
-    }
-
-    public void setSearchMangerListener(SearchManagerListener listener) {
-        mListener = listener;
-    }
-
-    public void install(DocumentsToolbar actionBar, boolean isFullBarSearch) {
-        mActionBar = actionBar;
-        mMenuItem = actionBar.getSearchMenu();
-        mSearchView = (SearchView) mMenuItem.getActionView();
-
-        mSearchView.setOnQueryTextListener(this);
-        mSearchView.setOnCloseListener(this);
-        mSearchView.setOnSearchClickListener(this);
-        mSearchView.setOnQueryTextFocusChangeListener(this);
-
-        mFullBar = isFullBarSearch;
-        if (mFullBar) {
-            mMenuItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW
-                    | MenuItem.SHOW_AS_ACTION_ALWAYS);
-            mMenuItem.setOnActionExpandListener(this);
-        }
-
-        restoreSearch();
-    }
-
-    /**
-     * Used to hide menu icons, when the search is being restored. Needed because search restoration
-     * is done before onPrepareOptionsMenu(Menu menu) that is overriding the icons visibility.
-     */
-    public void updateMenu() {
-        if (isSearching() && mFullBar) {
-            Menu menu = mActionBar.getMenu();
-            menu.setGroupVisible(R.id.group_hide_when_searching, false);
-        }
-    }
-
-    /**
-     * @param root Info about the current directory.
-     */
-    void update(RootInfo root) {
-        if (mMenuItem == null) {
-            if (DEBUG) Log.d(TAG, "update called before Search MenuItem installed.");
-            return;
-        }
-
-        if (mCurrentSearch != null) {
-            mMenuItem.expandActionView();
-
-            mSearchView.setIconified(false);
-            mSearchView.clearFocus();
-            mSearchView.setQuery(mCurrentSearch, false);
-        } else {
-            mSearchView.clearFocus();
-            if (!mSearchView.isIconified()) {
-                mIgnoreNextClose = true;
-                mSearchView.setIconified(true);
-            }
-
-            if (mMenuItem.isActionViewExpanded()) {
-                mMenuItem.collapseActionView();
-            }
-        }
-
-        showMenu(root != null
-                && ((root.flags & Root.FLAG_SUPPORTS_SEARCH) != 0));
-    }
-
-    protected void showMenu(boolean visible) {
-        if (mMenuItem == null) {
-            if (DEBUG) Log.d(TAG, "showMenu called before Search MenuItem installed.");
-            return;
-        }
-
-        if (!visible) {
-            mCurrentSearch = null;
-        }
-
-        mMenuItem.setVisible(visible);
-    }
-
-    /**
-     * Cancels current search operation. Triggers clearing and collapsing the SearchView.
-     *
-     * @return True if it cancels search. False if it does not operate search currently.
-     */
-    boolean cancelSearch() {
-        if (isExpanded() || isSearching()) {
-            // If the query string is not empty search view won't get iconified
-            mSearchView.setQuery("", false);
-
-            if (mFullBar) {
-               onClose();
-            } else {
-                // Causes calling onClose(). onClose() is triggering directory content update.
-                mSearchView.setIconified(true);
-            }
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Sets search view into the searching state. Used to restore state after device orientation
-     * change.
-     */
-    private void restoreSearch() {
-        if (isSearching()) {
-            if(mFullBar) {
-                mMenuItem.expandActionView();
-            } else {
-                mSearchView.setIconified(false);
-            }
-            onSearchExpanded();
-            mSearchView.setQuery(mCurrentSearch, false);
-            mSearchView.clearFocus();
-        }
-    }
-
-    private void onSearchExpanded() {
-        mSearchExpanded = true;
-        if(mFullBar) {
-            Menu menu = mActionBar.getMenu();
-            menu.setGroupVisible(R.id.group_hide_when_searching, false);
-        }
-    }
-
-    /**
-     * Clears the search. Triggers refreshing of the directory content.
-     * @return True if the default behavior of clearing/dismissing SearchView should be overridden.
-     *         False otherwise.
-     */
-    @Override
-    public boolean onClose() {
-        mSearchExpanded = false;
-        if (mIgnoreNextClose) {
-            mIgnoreNextClose = false;
-            return false;
-        }
-
-        // Refresh the directory if a search was done
-        if (mCurrentSearch != null) {
-            mCurrentSearch = null;
-            if (mListener != null) {
-                mListener.onSearchChanged(mCurrentSearch);
-            }
-        }
-
-        if(mFullBar) {
-            mMenuItem.collapseActionView();
-        }
-        mListener.onSearchFinished();
-
-        return false;
-    }
-
-    /**
-     * Called when owning activity is saving state to be used to restore state during creation.
-     * @param state Bundle to save state too
-     */
-    public void onSaveInstanceState(Bundle state) {
-        state.putString(Shared.EXTRA_QUERY, mCurrentSearch);
-    }
-
-    /**
-     * Sets mSearchExpanded. Called when search icon is clicked to start search for both search view
-     * modes.
-     */
-    @Override
-    public void onClick(View v) {
-        onSearchExpanded();
-    }
-
-    @Override
-    public boolean onQueryTextSubmit(String query) {
-        mCurrentSearch = query;
-        mSearchView.clearFocus();
-        if (mListener != null) {
-            mListener.onSearchChanged(mCurrentSearch);
-        }
-        return true;
-    }
-
-    /**
-     * Used to detect and handle back button pressed event when search is expanded.
-     */
-    @Override
-    public void onFocusChange(View v, boolean hasFocus) {
-        if (!hasFocus) {
-            if (mCurrentSearch == null) {
-                mSearchView.setIconified(true);
-            } else if (TextUtils.isEmpty(mSearchView.getQuery())) {
-                cancelSearch();
-            }
-        }
-    }
-
-    @Override
-    public boolean onQueryTextChange(String newText) {
-        return false;
-    }
-
-    @Override
-    public boolean onMenuItemActionCollapse(MenuItem item) {
-        Menu menu = mActionBar.getMenu();
-        menu.setGroupVisible(R.id.group_hide_when_searching, true);
-
-        // Handles case when search view is collapsed by using the arrow on the left of the bar
-        if (isExpanded() || isSearching()) {
-            cancelSearch();
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    public boolean onMenuItemActionExpand(MenuItem item) {
-        return true;
-    }
-
-    String getCurrentSearch() {
-        return mCurrentSearch;
-    }
-
-    boolean isSearching() {
-        return mCurrentSearch != null;
-    }
-
-    boolean isExpanded() {
-        return mSearchExpanded;
-    }
-
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/SectionedListAdapter.java b/packages/DocumentsUI/src/com/android/documentsui/SectionedListAdapter.java
deleted file mode 100644
index ae959f9..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/SectionedListAdapter.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.BaseAdapter;
-import android.widget.ListAdapter;
-
-import java.util.ArrayList;
-
-/**
- * Adapter that combines multiple adapters as sections, asking each section to
- * provide a header, and correctly handling item types across child adapters.
- */
-public class SectionedListAdapter extends BaseAdapter {
-    private ArrayList<SectionAdapter> mSections = new ArrayList<>();
-
-    public interface SectionAdapter extends ListAdapter {
-        public View getHeaderView(View convertView, ViewGroup parent);
-    }
-
-    public void clearSections() {
-        mSections.clear();
-        notifyDataSetChanged();
-    }
-
-    /**
-     * After mutating sections, you <em>must</em>
-     * {@link AdapterView#setAdapter(android.widget.Adapter)} to correctly
-     * recount view types.
-     */
-    public void addSection(SectionAdapter adapter) {
-        mSections.add(adapter);
-        notifyDataSetChanged();
-    }
-
-    @Override
-    public int getCount() {
-        int count = 0;
-        final int size = mSections.size();
-        for (int i = 0; i < size; i++) {
-            count += mSections.get(i).getCount() + 1;
-        }
-        return count;
-    }
-
-    @Override
-    public Object getItem(int position) {
-        final int size = mSections.size();
-        for (int i = 0; i < size; i++) {
-            final SectionAdapter section = mSections.get(i);
-            final int sectionSize = section.getCount() + 1;
-
-            // Check if position inside this section
-            if (position == 0) {
-                return section;
-            } else if (position < sectionSize) {
-                return section.getItem(position - 1);
-            }
-
-            // Otherwise jump into next section
-            position -= sectionSize;
-        }
-        throw new IllegalStateException("Unknown position " + position);
-    }
-
-    @Override
-    public long getItemId(int position) {
-        return position;
-    }
-
-    @Override
-    public View getView(int position, View convertView, ViewGroup parent) {
-        final int size = mSections.size();
-        for (int i = 0; i < size; i++) {
-            final SectionAdapter section = mSections.get(i);
-            final int sectionSize = section.getCount() + 1;
-
-            // Check if position inside this section
-            if (position == 0) {
-                return section.getHeaderView(convertView, parent);
-            } else if (position < sectionSize) {
-                return section.getView(position - 1, convertView, parent);
-            }
-
-            // Otherwise jump into next section
-            position -= sectionSize;
-        }
-        throw new IllegalStateException("Unknown position " + position);
-    }
-
-    @Override
-    public boolean areAllItemsEnabled() {
-        return false;
-    }
-
-    @Override
-    public boolean isEnabled(int position) {
-        final int size = mSections.size();
-        for (int i = 0; i < size; i++) {
-            final SectionAdapter section = mSections.get(i);
-            final int sectionSize = section.getCount() + 1;
-
-            // Check if position inside this section
-            if (position == 0) {
-                return false;
-            } else if (position < sectionSize) {
-                return section.isEnabled(position - 1);
-            }
-
-            // Otherwise jump into next section
-            position -= sectionSize;
-        }
-        throw new IllegalStateException("Unknown position " + position);
-    }
-
-    @Override
-    public int getItemViewType(int position) {
-        int type = 1;
-        final int size = mSections.size();
-        for (int i = 0; i < size; i++) {
-            final SectionAdapter section = mSections.get(i);
-            final int sectionSize = section.getCount() + 1;
-
-            // Check if position inside this section
-            if (position == 0) {
-                return 0;
-            } else if (position < sectionSize) {
-                return type + section.getItemViewType(position - 1);
-            }
-
-            // Otherwise jump into next section
-            position -= sectionSize;
-            type += section.getViewTypeCount();
-        }
-        throw new IllegalStateException("Unknown position " + position);
-    }
-
-    @Override
-    public int getViewTypeCount() {
-        int count = 1;
-        final int size = mSections.size();
-        for (int i = 0; i < size; i++) {
-            count += mSections.get(i).getViewTypeCount();
-        }
-        return count;
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/Shared.java b/packages/DocumentsUI/src/com/android/documentsui/Shared.java
deleted file mode 100644
index c1db87d..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/Shared.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.content.Context;
-import android.content.Intent;
-import android.content.res.Configuration;
-import android.os.Looper;
-import android.provider.DocumentsContract;
-import android.text.TextUtils;
-import android.text.format.DateUtils;
-import android.text.format.Time;
-import android.util.Log;
-import android.view.WindowManager;
-
-import java.text.Collator;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.annotation.Nullable;
-
-/** @hide */
-public final class Shared {
-
-    public static final String TAG = "Documents";
-
-    public static final boolean DEBUG = true;
-
-    /** Intent action name to pick a copy destination. */
-    public static final String ACTION_PICK_COPY_DESTINATION =
-            "com.android.documentsui.PICK_COPY_DESTINATION";
-
-    /**
-     * Extra flag allowing app to be opened in productivity mode (less downloadsy).
-     * Useful developers and the likes. When set to true overrides the default
-     * config value of productivity_device.
-     */
-    public static final String EXTRA_PRODUCTIVITY_MODE = "com.android.documentsui.PRODUCTIVITY";
-
-    /**
-     * Extra boolean flag for {@link ACTION_PICK_COPY_DESTINATION}, which
-     * specifies if the destination directory needs to create new directory or not.
-     */
-    public static final String EXTRA_DIRECTORY_COPY = "com.android.documentsui.DIRECTORY_COPY";
-
-    /**
-     * Extra flag used to store the current stack so user opens in right spot.
-     */
-    public static final String EXTRA_STACK = "com.android.documentsui.STACK";
-
-    /**
-     * Extra flag used to store query of type String in the bundle.
-     */
-    public static final String EXTRA_QUERY = "query";
-
-    /**
-     * Extra flag used to store state of type State in the bundle.
-     */
-    public static final String EXTRA_STATE = "state";
-
-    /**
-     * Extra flag used to store type of DirectoryFragment's type ResultType type in the bundle.
-     */
-    public static final String EXTRA_TYPE = "type";
-
-    /**
-     * Extra flag used to store root of type RootInfo in the bundle.
-     */
-    public static final String EXTRA_ROOT = "root";
-
-    /**
-     * Extra flag used to store document of DocumentInfo type in the bundle.
-     */
-    public static final String EXTRA_DOC = "document";
-
-    /**
-     * Extra flag used to store DirectoryFragment's selection of Selection type in the bundle.
-     */
-    public static final String EXTRA_SELECTION = "selection";
-
-    /**
-     * Extra flag used to store DirectoryFragment's search mode of boolean type in the bundle.
-     */
-    public static final String EXTRA_SEARCH_MODE = "searchMode";
-
-    /**
-     * Extra flag used to store DirectoryFragment's ignore state of boolean type in the bundle.
-     */
-    public static final String EXTRA_IGNORE_STATE = "ignoreState";
-
-    /**
-     * Extra for an Intent for enabling performance benchmark. Used only by tests.
-     */
-    public static final String EXTRA_BENCHMARK = "com.android.documentsui.benchmark";
-
-    /**
-     * Maximum number of items in a Binder transaction packet.
-     */
-    public static final int MAX_DOCS_IN_INTENT = 500;
-
-    private static final Collator sCollator;
-
-    static {
-        sCollator = Collator.getInstance();
-        sCollator.setStrength(Collator.SECONDARY);
-    }
-
-    /**
-     * Generates a formatted quantity string.
-     */
-    public static final String getQuantityString(Context context, int resourceId, int quantity) {
-        return context.getResources().getQuantityString(resourceId, quantity, quantity);
-    }
-
-    public static String formatTime(Context context, long when) {
-        // TODO: DateUtils should make this easier
-        Time then = new Time();
-        then.set(when);
-        Time now = new Time();
-        now.setToNow();
-
-        int flags = DateUtils.FORMAT_NO_NOON | DateUtils.FORMAT_NO_MIDNIGHT
-                | DateUtils.FORMAT_ABBREV_ALL;
-
-        if (then.year != now.year) {
-            flags |= DateUtils.FORMAT_SHOW_YEAR | DateUtils.FORMAT_SHOW_DATE;
-        } else if (then.yearDay != now.yearDay) {
-            flags |= DateUtils.FORMAT_SHOW_DATE;
-        } else {
-            flags |= DateUtils.FORMAT_SHOW_TIME;
-        }
-
-        return DateUtils.formatDateTime(context, when, flags);
-    }
-
-    /**
-     * A convenient way to transform any list into a (parcelable) ArrayList.
-     * Uses cast if possible, else creates a new list with entries from {@code list}.
-     */
-    public static <T> ArrayList<T> asArrayList(List<T> list) {
-        return list instanceof ArrayList
-            ? (ArrayList<T>) list
-            : new ArrayList<T>(list);
-    }
-
-    /**
-     * Compare two strings against each other using system default collator in a
-     * case-insensitive mode. Clusters strings prefixed with {@link DIR_PREFIX}
-     * before other items.
-     */
-    public static int compareToIgnoreCaseNullable(String lhs, String rhs) {
-        final boolean leftEmpty = TextUtils.isEmpty(lhs);
-        final boolean rightEmpty = TextUtils.isEmpty(rhs);
-
-        if (leftEmpty && rightEmpty) return 0;
-        if (leftEmpty) return -1;
-        if (rightEmpty) return 1;
-
-        return sCollator.compare(lhs, rhs);
-    }
-
-    public static boolean isHardwareKeyboardAvailable(Context context) {
-        return context.getResources().getConfiguration().keyboard != Configuration.KEYBOARD_NOKEYS;
-    }
-
-    public static void ensureKeyboardPresent(Context context, AlertDialog dialog) {
-        if (!isHardwareKeyboardAvailable(context)) {
-            dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
-        }
-    }
-
-    /*
-     * Returns true if app is running in "productivity mode".
-     */
-    private static boolean isProductivityMode(Context context, Intent intent) {
-        return intent.getBooleanExtra(
-                Shared.EXTRA_PRODUCTIVITY_MODE,
-                context.getResources().getBoolean(R.bool.productivity_device));
-    }
-
-    /*
-     * Returns true if "Documents" root should be shown.
-     */
-    public static boolean shouldShowDocumentsRoot(Context context, Intent intent) {
-        return isProductivityMode(context, intent);
-    }
-
-    /*
-     * Returns true if device root should be shown.
-     */
-    public static boolean shouldShowDeviceRoot(Context context, Intent intent) {
-        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);
-    }
-
-    public static void checkMainLoop() {
-        if (Looper.getMainLooper() != Looper.myLooper()) {
-            Log.e(TAG, "Calling from non-UI thread!");
-        }
-    }
-
-    public static @Nullable <T> T findView(Activity activity, int... resources) {
-        for (int id : resources) {
-            @SuppressWarnings("unchecked")
-            T r = (T) activity.findViewById(id);
-            if (r != null) {
-                return r;
-            }
-        }
-        return null;
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/Snackbars.java b/packages/DocumentsUI/src/com/android/documentsui/Snackbars.java
deleted file mode 100644
index c3a82d7..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/Snackbars.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.annotation.StringRes;
-import android.app.Activity;
-import android.support.design.widget.Snackbar;
-import android.view.View;
-
-public final class Snackbars {
-    private Snackbars() {}
-
-    public static final void showDocumentsClipped(Activity activity, int docCount) {
-        String msg = Shared.getQuantityString(
-                activity, R.plurals.clipboard_files_clipped, docCount);
-        Snackbars.makeSnackbar(activity, msg, Snackbar.LENGTH_SHORT).show();
-    }
-
-    public static final void showMove(Activity activity, int docCount) {
-        CharSequence message = Shared.getQuantityString(activity, R.plurals.move_begin, docCount);
-        makeSnackbar(activity, message, Snackbar.LENGTH_SHORT).show();
-    }
-
-    public static final void showCopy(Activity activity, int docCount) {
-        CharSequence message = Shared.getQuantityString(activity, R.plurals.copy_begin, docCount);
-        makeSnackbar(activity, message, Snackbar.LENGTH_SHORT).show();
-    }
-
-    public static final void showPasteFailed(Activity activity) {
-        makeSnackbar(activity, R.string.clipboard_files_cannot_paste, Snackbar.LENGTH_SHORT).show();
-    }
-
-    public static final Snackbar makeSnackbar(Activity activity, @StringRes int messageId,
-            int duration) {
-        return Snackbars.makeSnackbar(
-                activity, activity.getResources().getText(messageId), duration);
-    }
-
-    public static final Snackbar makeSnackbar(
-            Activity activity, CharSequence message, int duration) {
-        final View view = activity.findViewById(R.id.coordinator_layout);
-        return Snackbar.make(view, message, duration);
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/State.java b/packages/DocumentsUI/src/com/android/documentsui/State.java
deleted file mode 100644
index 9cdf1a8..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/State.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.Shared.DEBUG;
-
-import android.annotation.IntDef;
-import android.content.Intent;
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.util.Log;
-import android.util.SparseArray;
-
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
-import com.android.documentsui.model.DurableUtils;
-import com.android.documentsui.model.RootInfo;
-import com.android.documentsui.services.FileOperationService;
-import com.android.documentsui.services.FileOperationService.OpType;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-public class State implements android.os.Parcelable {
-
-    private static final String TAG = "State";
-
-    @IntDef(flag = true, value = {
-            ACTION_BROWSE,
-            ACTION_PICK_COPY_DESTINATION,
-            ACTION_OPEN,
-            ACTION_CREATE,
-            ACTION_GET_CONTENT,
-            ACTION_OPEN_TREE
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface ActionType {}
-    // File manager and related private picking activity.
-    public static final int ACTION_BROWSE = 1;
-    public static final int ACTION_PICK_COPY_DESTINATION = 2;
-    // All public picking activities
-    public static final int ACTION_OPEN = 3;
-    public static final int ACTION_CREATE = 4;
-    public static final int ACTION_GET_CONTENT = 5;
-    public static final int ACTION_OPEN_TREE = 6;
-
-    @IntDef(flag = true, value = {
-            MODE_UNKNOWN,
-            MODE_LIST,
-            MODE_GRID
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface ViewMode {}
-    public static final int MODE_UNKNOWN = 0;
-    public static final int MODE_LIST = 1;
-    public static final int MODE_GRID = 2;
-
-    public static final int SORT_ORDER_UNKNOWN = 0;
-    public static final int SORT_ORDER_DISPLAY_NAME = 1;
-    public static final int SORT_ORDER_LAST_MODIFIED = 2;
-    public static final int SORT_ORDER_SIZE = 3;
-
-    public @ActionType int action;
-    public String[] acceptMimes;
-
-    /** Derived from local preferences */
-    public @ViewMode int derivedMode = MODE_GRID;
-
-    /** Explicit user choice */
-    public int userSortOrder = SORT_ORDER_UNKNOWN;
-    /** Derived after loader */
-    public int derivedSortOrder = SORT_ORDER_DISPLAY_NAME;
-
-    public boolean allowMultiple;
-    public boolean forceSize;
-    public boolean showSize;
-    public boolean localOnly;
-    public boolean showAdvancedOption;
-    public boolean showAdvanced;
-    public boolean restored;
-    /*
-     * Indicates handler was an external app, like photos.
-     */
-    public boolean external;
-
-    // Indicates that a copy operation (or move) includes a directory.
-    // Why? Directory creation isn't supported by some roots (like Downloads).
-    // This allows us to restrict available roots to just those with support.
-    public boolean directoryCopy;
-    public boolean openableOnly;
-
-    /**
-     * This is basically a sub-type for the copy operation. It can be either COPY or MOVE.
-     * The only legal values, if set, are: OPERATION_COPY, OPERATION_MOVE. Other pick
-     * operations don't use this. In those cases OPERATION_UNKNOWN is also legal.
-     */
-    public @OpType int copyOperationSubType = FileOperationService.OPERATION_UNKNOWN;
-
-    /** Current user navigation stack; empty implies recents. */
-    public DocumentStack stack = new DocumentStack();
-    private boolean mStackTouched;
-    private boolean mInitialRootChanged;
-    private boolean mInitialDocChanged;
-
-    /** Instance state for every shown directory */
-    public HashMap<String, SparseArray<Parcelable>> dirState = new HashMap<>();
-
-    /** Name of the package that started DocsUI */
-    public List<String> excludedAuthorities = new ArrayList<>();
-
-    public void initAcceptMimes(Intent intent) {
-        if (intent.hasExtra(Intent.EXTRA_MIME_TYPES)) {
-            acceptMimes = intent.getStringArrayExtra(Intent.EXTRA_MIME_TYPES);
-        } else {
-            String glob = intent.getType();
-            acceptMimes = new String[] { glob != null ? glob : "*/*" };
-        }
-    }
-
-    public void onRootChanged(RootInfo root) {
-        if (DEBUG) Log.d(TAG, "Root changed to: " + root);
-        if (!mInitialRootChanged && stack.root != null && !root.equals(stack.root)) {
-            mInitialRootChanged = true;
-        }
-        stack.root = root;
-        stack.clear();
-        mStackTouched = true;
-    }
-
-    public void pushDocument(DocumentInfo info) {
-        if (DEBUG) Log.d(TAG, "Adding doc to stack: " + info);
-        if (!mInitialDocChanged && stack.size() > 0 && !info.equals(stack.peek())) {
-            mInitialDocChanged = true;
-        }
-        stack.push(info);
-        mStackTouched = true;
-    }
-
-    public void popDocument() {
-        if (DEBUG) Log.d(TAG, "Popping doc off stack.");
-        stack.pop();
-        mStackTouched = true;
-    }
-
-    public void setStack(DocumentStack stack) {
-        if (DEBUG) Log.d(TAG, "Setting the whole darn stack to: " + stack);
-        this.stack = stack;
-        mStackTouched = true;
-    }
-
-    // This will return true even when the initial location is set.
-    // To get a read on if the user has changed something, use #hasInitialLocationChanged.
-    public boolean hasLocationChanged() {
-        return mStackTouched;
-    }
-
-    public boolean hasInitialLocationChanged() {
-        return mInitialRootChanged || mInitialDocChanged;
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel out, int flags) {
-        out.writeInt(action);
-        out.writeStringArray(acceptMimes);
-        out.writeInt(userSortOrder);
-        out.writeInt(allowMultiple ? 1 : 0);
-        out.writeInt(forceSize ? 1 : 0);
-        out.writeInt(showSize ? 1 : 0);
-        out.writeInt(localOnly ? 1 : 0);
-        out.writeInt(showAdvancedOption ? 1 : 0);
-        out.writeInt(showAdvanced ? 1 : 0);
-        out.writeInt(restored ? 1 : 0);
-        out.writeInt(external ? 1 : 0);
-        DurableUtils.writeToParcel(out, stack);
-        out.writeMap(dirState);
-        out.writeList(excludedAuthorities);
-        out.writeInt(openableOnly ? 1 : 0);
-        out.writeInt(mStackTouched ? 1 : 0);
-        out.writeInt(mInitialRootChanged ? 1 : 0);
-        out.writeInt(mInitialDocChanged ? 1 : 0);
-    }
-
-    public static final ClassLoaderCreator<State> CREATOR = new ClassLoaderCreator<State>() {
-        @Override
-        public State createFromParcel(Parcel in) {
-            return createFromParcel(in, null);
-        }
-
-        @Override
-        public State createFromParcel(Parcel in, ClassLoader loader) {
-            final State state = new State();
-            state.action = in.readInt();
-            state.acceptMimes = in.readStringArray();
-            state.userSortOrder = in.readInt();
-            state.allowMultiple = in.readInt() != 0;
-            state.forceSize = in.readInt() != 0;
-            state.showSize = in.readInt() != 0;
-            state.localOnly = in.readInt() != 0;
-            state.showAdvancedOption = in.readInt() != 0;
-            state.showAdvanced = in.readInt() != 0;
-            state.restored = in.readInt() != 0;
-            state.external = in.readInt() != 0;
-            DurableUtils.readFromParcel(in, state.stack);
-            in.readMap(state.dirState, loader);
-            in.readList(state.excludedAuthorities, loader);
-            state.openableOnly = in.readInt() != 0;
-            state.mStackTouched = in.readInt() != 0;
-            state.mInitialRootChanged = in.readInt() != 0;
-            state.mInitialDocChanged = in.readInt() != 0;
-            return state;
-        }
-
-        @Override
-        public State[] newArray(int size) {
-            return new State[size];
-        }
-    };
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/ThumbnailCache.java b/packages/DocumentsUI/src/com/android/documentsui/ThumbnailCache.java
deleted file mode 100644
index 639d4fb..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/ThumbnailCache.java
+++ /dev/null
@@ -1,318 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.annotation.IntDef;
-import android.annotation.Nullable;
-import android.content.ComponentCallbacks2;
-import android.graphics.Bitmap;
-import android.graphics.Point;
-import android.net.Uri;
-import android.util.LruCache;
-import android.util.Pair;
-import android.util.Pools;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.TreeMap;
-
-/**
- * An LRU cache that supports finding the thumbnail of the requested uri with a different size than
- * the requested one.
- */
-public class ThumbnailCache {
-
-    private static final SizeComparator SIZE_COMPARATOR = new SizeComparator();
-
-    /**
-     * A 2-dimensional index into {@link #mCache} entries. Pair<Uri, Point> is the key to
-     * {@link #mCache}. TreeMap is used to search the closest size to a given size and a given uri.
-     */
-    private final HashMap<Uri, TreeMap<Point, Pair<Uri, Point>>> mSizeIndex;
-    private final Cache mCache;
-
-    /**
-     * Creates a thumbnail LRU cache.
-     *
-     * @param maxCacheSizeInBytes the maximum size of thumbnails in bytes this cache can hold.
-     */
-    public ThumbnailCache(int maxCacheSizeInBytes) {
-        mSizeIndex = new HashMap<>();
-        mCache = new Cache(maxCacheSizeInBytes);
-    }
-
-    /**
-     * Obtains thumbnail given a uri and a size.
-     *
-     * @param uri the uri of the thumbnail in need
-     * @param size the desired size of the thumbnail
-     * @return the thumbnail result
-     */
-    public Result getThumbnail(Uri uri, Point size) {
-        TreeMap<Point, Pair<Uri, Point>> sizeMap;
-        sizeMap = mSizeIndex.get(uri);
-        if (sizeMap == null || sizeMap.isEmpty()) {
-            // There is not any thumbnail for this uri.
-            return Result.obtainMiss();
-        }
-
-        // Look for thumbnail of the same size.
-        Pair<Uri, Point> cacheKey = sizeMap.get(size);
-        if (cacheKey != null) {
-            Entry entry = mCache.get(cacheKey);
-            if (entry != null) {
-                return Result.obtain(Result.CACHE_HIT_EXACT, size, entry);
-            }
-        }
-
-        // Look for thumbnail of bigger sizes.
-        Point otherSize = sizeMap.higherKey(size);
-        if (otherSize != null) {
-            cacheKey = sizeMap.get(otherSize);
-
-            if (cacheKey != null) {
-                Entry entry = mCache.get(cacheKey);
-                if (entry != null) {
-                    return Result.obtain(Result.CACHE_HIT_LARGER, otherSize, entry);
-                }
-            }
-        }
-
-        // Look for thumbnail of smaller sizes.
-        otherSize = sizeMap.lowerKey(size);
-        if (otherSize != null) {
-            cacheKey = sizeMap.get(otherSize);
-
-            if (cacheKey != null) {
-                Entry entry = mCache.get(cacheKey);
-                if (entry != null) {
-                    return Result.obtain(Result.CACHE_HIT_SMALLER, otherSize, entry);
-                }
-            }
-        }
-
-        // Cache miss.
-        return Result.obtainMiss();
-    }
-
-    /**
-     * Puts a thumbnail for the given uri and size in to the cache.
-     * @param uri the uri of the thumbnail
-     * @param size the size of the thumbnail
-     * @param thumbnail the thumbnail to put in cache
-     * @param lastModified last modified value of the thumbnail to track its validity
-     */
-    public void putThumbnail(Uri uri, Point size, Bitmap thumbnail, long lastModified) {
-        Pair<Uri, Point> cacheKey = Pair.create(uri, size);
-
-        TreeMap<Point, Pair<Uri, Point>> sizeMap;
-        synchronized (mSizeIndex) {
-            sizeMap = mSizeIndex.get(uri);
-            if (sizeMap == null) {
-                sizeMap = new TreeMap<>(SIZE_COMPARATOR);
-                mSizeIndex.put(uri, sizeMap);
-            }
-        }
-
-        Entry entry = new Entry(thumbnail, lastModified);
-        mCache.put(cacheKey, entry);
-        synchronized (sizeMap) {
-            sizeMap.put(size, cacheKey);
-        }
-    }
-
-    /**
-     * Removes all thumbnail cache associated to the given uri.
-     * @param uri the uri which thumbnail cache to remove
-     */
-    public void removeUri(Uri uri) {
-        TreeMap<Point, Pair<Uri, Point>> sizeMap;
-        synchronized (mSizeIndex) {
-            sizeMap = mSizeIndex.get(uri);
-        }
-
-        if (sizeMap != null) {
-            // Create an array to hold all values to avoid ConcurrentModificationException because
-            // removeKey() will be called by LruCache but we can't modify the map while we're
-            // iterating over the collection of values.
-            for (Pair<Uri, Point> index : sizeMap.values().toArray(new Pair[0])) {
-                mCache.remove(index);
-            }
-        }
-    }
-
-    private void removeKey(Uri uri, Point size) {
-        TreeMap<Point, Pair<Uri, Point>> sizeMap;
-        synchronized (mSizeIndex) {
-            sizeMap = mSizeIndex.get(uri);
-        }
-
-        assert(sizeMap != null);
-        synchronized (sizeMap) {
-            sizeMap.remove(size);
-        }
-    }
-
-    public void onTrimMemory(int level) {
-        if (level >= ComponentCallbacks2.TRIM_MEMORY_MODERATE) {
-            mCache.evictAll();
-        } else if (level >= ComponentCallbacks2.TRIM_MEMORY_BACKGROUND) {
-            mCache.trimToSize(mCache.size() / 2);
-        }
-    }
-
-    /**
-     * A class that holds thumbnail and cache status.
-     */
-    public static final class Result {
-
-        @Retention(RetentionPolicy.SOURCE)
-        @IntDef({CACHE_MISS, CACHE_HIT_EXACT, CACHE_HIT_SMALLER, CACHE_HIT_LARGER})
-        @interface Status {}
-        /**
-         * Indicates there is no thumbnail for the requested uri. The thumbnail will be null.
-         */
-        public static final int CACHE_MISS = 0;
-        /**
-         * Indicates the thumbnail matches the requested size and requested uri.
-         */
-        public static final int CACHE_HIT_EXACT = 1;
-        /**
-         * Indicates the thumbnail is in a smaller size than the requested one from the requested
-         * uri.
-         */
-        public static final int CACHE_HIT_SMALLER = 2;
-        /**
-         * Indicates the thumbnail is in a larger size than the requested one from the requested
-         * uri.
-         */
-        public static final int CACHE_HIT_LARGER = 3;
-
-        private static final Pools.SimplePool<Result> sPool = new Pools.SimplePool<>(1);
-
-        private @Status int mStatus;
-        private @Nullable Bitmap mThumbnail;
-        private @Nullable Point mSize;
-        private long mLastModified;
-
-        private static Result obtainMiss() {
-            return obtain(CACHE_MISS, null, null, 0);
-        }
-
-        private static Result obtain(@Status int status, Point size, Entry entry) {
-            return obtain(status, entry.mThumbnail, size, entry.mLastModified);
-        }
-
-        private static Result obtain(@Status int status, @Nullable Bitmap thumbnail,
-                @Nullable Point size, long lastModified) {
-            Shared.checkMainLoop();
-
-            Result instance = sPool.acquire();
-            instance = (instance != null ? instance : new Result());
-
-            instance.mStatus = status;
-            instance.mThumbnail = thumbnail;
-            instance.mSize = size;
-            instance.mLastModified = lastModified;
-
-            return instance;
-        }
-
-        private Result() {}
-
-        public void recycle() {
-            Shared.checkMainLoop();
-
-            mStatus = -1;
-            mThumbnail = null;
-            mSize = null;
-            mLastModified = -1;
-
-            boolean released = sPool.release(this);
-            // This assert is used to guarantee we won't generate too many instances that can't be
-            // held in the pool, which indicates our pool size is too small.
-            //
-            // Right now one instance is enough because we expect all instances are only used in
-            // main thread.
-            assert (released);
-        }
-
-        public @Status int getStatus() {
-            return mStatus;
-        }
-
-        public @Nullable Bitmap getThumbnail() {
-            return mThumbnail;
-        }
-
-        public @Nullable Point getSize() {
-            return mSize;
-        }
-
-        public long getLastModified() {
-            return mLastModified;
-        }
-
-        public boolean isHit() {
-            return (mStatus != CACHE_MISS);
-        }
-
-        public boolean isExactHit() {
-            return (mStatus == CACHE_HIT_EXACT);
-        }
-    }
-
-    private static final class Entry {
-        private final Bitmap mThumbnail;
-        private final long mLastModified;
-
-        private Entry(Bitmap thumbnail, long lastModified) {
-            mThumbnail = thumbnail;
-            mLastModified = lastModified;
-        }
-    }
-
-    private final class Cache extends LruCache<Pair<Uri, Point>, Entry> {
-
-        private Cache(int maxSizeBytes) {
-            super(maxSizeBytes);
-        }
-
-        @Override
-        protected int sizeOf(Pair<Uri, Point> key, Entry value) {
-            return value.mThumbnail.getByteCount();
-        }
-
-        @Override
-        protected void entryRemoved(
-                boolean evicted, Pair<Uri, Point> key, Entry oldValue, Entry newValue) {
-            if (newValue == null) {
-                removeKey(key.first, key.second);
-            }
-        }
-    }
-
-    private static final class SizeComparator implements Comparator<Point> {
-        @Override
-        public int compare(Point size0, Point size1) {
-            // Assume all sizes are roughly square, so we only compare them in one dimension.
-            return size0.x - size1.x;
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/UriDerivativeLoader.java b/packages/DocumentsUI/src/com/android/documentsui/UriDerivativeLoader.java
deleted file mode 100644
index 7bb662c..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/UriDerivativeLoader.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.content.AsyncTaskLoader;
-import android.content.Context;
-import android.database.ContentObserver;
-import android.os.CancellationSignal;
-import android.os.OperationCanceledException;
-
-/**
- * Loader that derives its data from a Uri. Watches for {@link ContentObserver}
- * changes while started, manages {@link CancellationSignal}, and caches
- * returned results.
- */
-public abstract class UriDerivativeLoader<Param, Res> extends AsyncTaskLoader<Res> {
-    final ForceLoadContentObserver mObserver;
-
-    private final Param mParam;
-
-    private Res mResult;
-    private CancellationSignal mCancellationSignal;
-
-    @Override
-    public final Res loadInBackground() {
-        synchronized (this) {
-            if (isLoadInBackgroundCanceled()) {
-                throw new OperationCanceledException();
-            }
-            mCancellationSignal = new CancellationSignal();
-        }
-        try {
-            return loadInBackground(mParam, mCancellationSignal);
-        } finally {
-            synchronized (this) {
-                mCancellationSignal = null;
-            }
-        }
-    }
-
-    public abstract Res loadInBackground(Param param, CancellationSignal signal);
-
-    @Override
-    public void cancelLoadInBackground() {
-        super.cancelLoadInBackground();
-
-        synchronized (this) {
-            if (mCancellationSignal != null) {
-                mCancellationSignal.cancel();
-            }
-        }
-    }
-
-    @Override
-    public void deliverResult(Res result) {
-        if (isReset()) {
-            closeQuietly(result);
-            return;
-        }
-        Res oldResult = mResult;
-        mResult = result;
-
-        if (isStarted()) {
-            super.deliverResult(result);
-        }
-
-        if (oldResult != null && oldResult != result) {
-            closeQuietly(oldResult);
-        }
-    }
-
-    public UriDerivativeLoader(Context context, Param param) {
-        super(context);
-        mObserver = new ForceLoadContentObserver();
-        mParam = param;
-    }
-
-    @Override
-    protected void onStartLoading() {
-        if (mResult != null) {
-            deliverResult(mResult);
-        }
-        if (takeContentChanged() || mResult == null) {
-            forceLoad();
-        }
-    }
-
-    @Override
-    protected void onStopLoading() {
-        cancelLoad();
-    }
-
-    @Override
-    public void onCanceled(Res result) {
-        closeQuietly(result);
-    }
-
-    @Override
-    protected void onReset() {
-        super.onReset();
-
-        // Ensure the loader is stopped
-        onStopLoading();
-
-        closeQuietly(mResult);
-        mResult = null;
-
-        getContext().getContentResolver().unregisterContentObserver(mObserver);
-    }
-
-    private void closeQuietly(Res result) {
-        if (result instanceof AutoCloseable) {
-            try {
-                ((AutoCloseable) result).close();
-            } catch (RuntimeException rethrown) {
-                throw rethrown;
-            } catch (Exception ignored) {
-            }
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/clipping/ClipStorage.java b/packages/DocumentsUI/src/com/android/documentsui/clipping/ClipStorage.java
deleted file mode 100644
index 49edbcf..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/clipping/ClipStorage.java
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.clipping;
-
-import android.content.SharedPreferences;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.support.annotation.VisibleForTesting;
-import android.system.ErrnoException;
-import android.system.Os;
-import android.util.Log;
-
-import com.android.documentsui.Files;
-
-import java.io.Closeable;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.nio.channels.FileLock;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Provides support for storing lists of documents identified by Uri.
- *
- * This class uses a ring buffer to recycle clip file slots, to mitigate the issue of clip file
- * deletions. Below is the directory layout:
- * [cache dir]
- *      - [dir] 1
- *      - [dir] 2
- *      - ... to {@link #NUM_OF_SLOTS}
- * When a clip data is actively being used:
- * [cache dir]
- *      - [dir] 1
- *          - [file] primary
- *          - [symlink] 1 > primary # copying to location X
- *          - [symlink] 2 > primary # copying to location Y
- */
-public final class ClipStorage {
-
-    public static final int NO_SELECTION_TAG = -1;
-
-    public static final String PREF_NAME = "ClipStoragePref";
-
-    @VisibleForTesting
-    static final int NUM_OF_SLOTS = 20;
-
-    private static final String TAG = "ClipStorage";
-
-    private static final long STALENESS_THRESHOLD = TimeUnit.DAYS.toMillis(2);
-
-    private static final String NEXT_POS_TAG = "NextPosTag";
-    private static final String PRIMARY_DATA_FILE_NAME = "primary";
-
-    private static final byte[] LINE_SEPARATOR = System.lineSeparator().getBytes();
-
-    private final File mOutDir;
-    private final SharedPreferences mPref;
-
-    private final File[] mSlots = new File[NUM_OF_SLOTS];
-    private int mNextPos;
-
-    /**
-     * @param outDir see {@link #prepareStorage(File)}.
-     */
-    public ClipStorage(File outDir, SharedPreferences pref) {
-        assert(outDir.isDirectory());
-        mOutDir = outDir;
-        mPref = pref;
-
-        mNextPos = mPref.getInt(NEXT_POS_TAG, 0);
-    }
-
-    /**
-     * Tries to get the next available clip slot. It's guaranteed to return one. If none of
-     * slots is available, it returns the next slot of the most recently returned slot by this
-     * method.
-     *
-     * <p>This is not a perfect solution, but should be enough for most regular use. There are
-     * several situations this method may not work:
-     * <ul>
-     *     <li>Making {@link #NUM_OF_SLOTS} - 1 times of large drag and drop or moveTo/copyTo/delete
-     *     operations after cutting a primary clip, then the primary clip is overwritten.</li>
-     *     <li>Having more than {@link #NUM_OF_SLOTS} queued jumbo file operations, one or more clip
-     *     file may be overwritten.</li>
-     * </ul>
-     */
-    synchronized int claimStorageSlot() {
-        int curPos = mNextPos;
-        for (int i = 0; i < NUM_OF_SLOTS; ++i, curPos = (curPos + 1) % NUM_OF_SLOTS) {
-            createSlotFileObject(curPos);
-
-            if (!mSlots[curPos].exists()) {
-                break;
-            }
-
-            // No file or only primary file exists, we deem it available.
-            if (mSlots[curPos].list().length <= 1) {
-                break;
-            }
-            // This slot doesn't seem available, but still need to check if it's a legacy of
-            // service being killed or a service crash etc. If it's stale, it's available.
-            else if (checkStaleFiles(curPos)) {
-                break;
-            }
-        }
-
-        prepareSlot(curPos);
-
-        mNextPos = (curPos + 1) % NUM_OF_SLOTS;
-        mPref.edit().putInt(NEXT_POS_TAG, mNextPos).commit();
-        return curPos;
-    }
-
-    private boolean checkStaleFiles(int pos) {
-        File slotData = toSlotDataFile(pos);
-
-        // No need to check if the file exists. File.lastModified() returns 0L if the file doesn't
-        // exist.
-        return slotData.lastModified() + STALENESS_THRESHOLD <= System.currentTimeMillis();
-    }
-
-    private void prepareSlot(int pos) {
-        assert(mSlots[pos] != null);
-
-        Files.deleteRecursively(mSlots[pos]);
-        mSlots[pos].mkdir();
-        assert(mSlots[pos].isDirectory());
-    }
-
-    /**
-     * Returns a writer. Callers must close the writer when finished.
-     */
-    private Writer createWriter(int tag) throws IOException {
-        File file = toSlotDataFile(tag);
-        return new Writer(file);
-    }
-
-    /**
-     * Gets a {@link File} instance given a tag.
-     *
-     * This method creates a symbolic link in the slot folder to the data file as a reference
-     * counting method. When someone is done using this symlink, it's responsible to delete it.
-     * Therefore we can have a neat way to track how many things are still using this slot.
-     */
-    public synchronized File getFile(int tag) throws IOException {
-        createSlotFileObject(tag);
-
-        File primary = toSlotDataFile(tag);
-
-        String linkFileName = Integer.toString(mSlots[tag].list().length);
-        File link = new File(mSlots[tag], linkFileName);
-
-        try {
-            Os.symlink(primary.getAbsolutePath(), link.getAbsolutePath());
-        } catch (ErrnoException e) {
-            e.rethrowAsIOException();
-        }
-        return link;
-    }
-
-    /**
-     * Returns a Reader. Callers must close the reader when finished.
-     */
-    ClipStorageReader createReader(File file) throws IOException {
-        assert(file.getParentFile().getParentFile().equals(mOutDir));
-        return new ClipStorageReader(file);
-    }
-
-    private File toSlotDataFile(int pos) {
-        assert(mSlots[pos] != null);
-        return new File(mSlots[pos], PRIMARY_DATA_FILE_NAME);
-    }
-
-    private void createSlotFileObject(int pos) {
-        if (mSlots[pos] == null) {
-            mSlots[pos] = new File(mOutDir, Integer.toString(pos));
-        }
-    }
-
-    /**
-     * Provides initialization of the clip data storage directory.
-     */
-    public static File prepareStorage(File cacheDir) {
-        File clipDir = getClipDir(cacheDir);
-        clipDir.mkdir();
-
-        assert(clipDir.isDirectory());
-        return clipDir;
-    }
-
-    private static File getClipDir(File cacheDir) {
-        return new File(cacheDir, "clippings");
-    }
-
-    private static final class Writer implements Closeable {
-
-        private final FileOutputStream mOut;
-        private final FileLock mLock;
-
-        private Writer(File file) throws IOException {
-            assert(!file.exists());
-
-            mOut = new FileOutputStream(file);
-
-            // Lock the file here so copy tasks would wait until everything is flushed to disk
-            // before start to run.
-            mLock = mOut.getChannel().lock();
-        }
-
-        public void write(Uri uri) throws IOException {
-            mOut.write(uri.toString().getBytes());
-            mOut.write(LINE_SEPARATOR);
-        }
-
-        @Override
-        public void close() throws IOException {
-            if (mLock != null) {
-                mLock.release();
-            }
-
-            if (mOut != null) {
-                mOut.close();
-            }
-        }
-    }
-
-    /**
-     * An {@link AsyncTask} that persists doc uris in {@link ClipStorage}.
-     */
-    static final class PersistTask extends AsyncTask<Void, Void, Void> {
-
-        private final ClipStorage mClipStorage;
-        private final Iterable<Uri> mUris;
-        private final int mTag;
-
-        PersistTask(ClipStorage clipStorage, Iterable<Uri> uris, int tag) {
-            mClipStorage = clipStorage;
-            mUris = uris;
-            mTag = tag;
-        }
-
-        @Override
-        protected Void doInBackground(Void... params) {
-            try(Writer writer = mClipStorage.createWriter(mTag)){
-                for (Uri uri: mUris) {
-                    assert(uri != null);
-                    writer.write(uri);
-                }
-            } catch (IOException e) {
-                Log.e(TAG, "Caught exception trying to write jumbo clip to disk.", e);
-            }
-
-            return null;
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/clipping/ClipStorageReader.java b/packages/DocumentsUI/src/com/android/documentsui/clipping/ClipStorageReader.java
deleted file mode 100644
index 2bae0f8..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/clipping/ClipStorageReader.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.clipping;
-
-import android.net.Uri;
-
-import java.io.Closeable;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.nio.channels.FileLock;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Scanner;
-
-/**
- * Reader class used to read uris from clip files stored in {@link ClipStorage}. It provides
- * synchronization within a single process as an addition to {@link FileLock} which is for
- * cross-process synchronization.
- */
-class ClipStorageReader implements Iterable<Uri>, Closeable {
-
-    /**
-     * FileLock can't be held multiple times in a single JVM, but it's possible to have multiple
-     * readers reading the same clip file. Share the FileLock here so that it can be released
-     * when it's not needed.
-     */
-    private static final Map<String, FileLockEntry> sLocks = new HashMap<>();
-
-    private final String mCanonicalPath;
-    private final Scanner mScanner;
-
-    ClipStorageReader(File file) throws IOException {
-        FileInputStream inStream = new FileInputStream(file);
-        mScanner = new Scanner(inStream);
-
-        mCanonicalPath = file.getCanonicalPath(); // Resolve symlink
-        synchronized (sLocks) {
-            if (sLocks.containsKey(mCanonicalPath)) {
-                // Read lock is already held by someone in this JVM, just increment the ref
-                // count.
-                sLocks.get(mCanonicalPath).mCount++;
-            } else {
-                // No map entry, need to lock the file so it won't pass this line until the
-                // corresponding writer is done writing.
-                FileLock lock = inStream.getChannel().lock(0L, Long.MAX_VALUE, true);
-                sLocks.put(mCanonicalPath, new FileLockEntry(1, lock, mScanner));
-            }
-        }
-    }
-
-    @Override
-    public Iterator iterator() {
-        return new Iterator(mScanner);
-    }
-
-    @Override
-    public void close() throws IOException {
-        FileLockEntry ref;
-        synchronized (sLocks) {
-            ref = sLocks.get(mCanonicalPath);
-
-            assert(ref.mCount > 0);
-            if (--ref.mCount == 0) {
-                // If ref count is 0 now, then there is no one who needs to hold the read lock.
-                // Release the lock, and remove the entry.
-                ref.mLock.release();
-                ref.mScanner.close();
-                sLocks.remove(mCanonicalPath);
-            }
-        }
-
-        if (mScanner != ref.mScanner) {
-            mScanner.close();
-        }
-    }
-
-    private static final class Iterator implements java.util.Iterator {
-        private final Scanner mScanner;
-
-        private Iterator(Scanner scanner) {
-            mScanner = scanner;
-        }
-
-        @Override
-        public boolean hasNext() {
-            return mScanner.hasNextLine();
-        }
-
-        @Override
-        public Uri next() {
-            String line = mScanner.nextLine();
-            return Uri.parse(line);
-        }
-    }
-
-    private static final class FileLockEntry {
-        private final FileLock mLock;
-        // We need to keep this scanner here because if the scanner is closed, the file lock is
-        // closed too.
-        private final Scanner mScanner;
-
-        private int mCount;
-
-        private FileLockEntry(int count, FileLock lock, Scanner scanner) {
-            mCount = count;
-            mLock = lock;
-            mScanner = scanner;
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/clipping/DocumentClipper.java b/packages/DocumentsUI/src/com/android/documentsui/clipping/DocumentClipper.java
deleted file mode 100644
index bdc1836..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/clipping/DocumentClipper.java
+++ /dev/null
@@ -1,339 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.clipping;
-
-import android.content.ClipData;
-import android.content.ClipDescription;
-import android.content.ClipboardManager;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.net.Uri;
-import android.os.PersistableBundle;
-import android.provider.DocumentsContract;
-import android.support.annotation.Nullable;
-import android.util.Log;
-
-import com.android.documentsui.Shared;
-import com.android.documentsui.dirlist.MultiSelectManager.Selection;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
-import com.android.documentsui.model.RootInfo;
-import com.android.documentsui.services.FileOperation;
-import com.android.documentsui.services.FileOperationService;
-import com.android.documentsui.services.FileOperationService.OpType;
-import com.android.documentsui.services.FileOperations;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.function.Function;
-
-/**
- * ClipboardManager wrapper class providing higher level logical
- * support for dealing with Documents.
- */
-public final class DocumentClipper {
-
-    private static final String TAG = "DocumentClipper";
-
-    static final String SRC_PARENT_KEY = "srcParent";
-    static final String OP_TYPE_KEY = "opType";
-    static final String OP_JUMBO_SELECTION_SIZE = "jumboSelection-size";
-    static final String OP_JUMBO_SELECTION_TAG = "jumboSelection-tag";
-
-    private final Context mContext;
-    private final ClipStorage mClipStorage;
-    private final ClipboardManager mClipboard;
-
-    public DocumentClipper(Context context, ClipStorage storage) {
-        mContext = context;
-        mClipStorage = storage;
-        mClipboard = context.getSystemService(ClipboardManager.class);
-    }
-
-    public boolean hasItemsToPaste() {
-        if (mClipboard.hasPrimaryClip()) {
-            ClipData clipData = mClipboard.getPrimaryClip();
-
-            int count = clipData.getItemCount();
-            if (count > 0) {
-                for (int i = 0; i < count; ++i) {
-                    ClipData.Item item = clipData.getItemAt(i);
-                    Uri uri = item.getUri();
-                    if (isDocumentUri(uri)) {
-                        return true;
-                    }
-                }
-            }
-        }
-        return false;
-    }
-
-    private boolean isDocumentUri(@Nullable Uri uri) {
-        return uri != null && DocumentsContract.isDocumentUri(mContext, uri);
-    }
-
-    /**
-     * Returns {@link ClipData} representing the selection, or null if selection is empty,
-     * or cannot be converted.
-     */
-    public ClipData getClipDataForDocuments(
-        Function<String, Uri> uriBuilder, Selection selection, @OpType int opType) {
-
-        assert(selection != null);
-
-        if (selection.isEmpty()) {
-            Log.w(TAG, "Attempting to clip empty selection. Ignoring.");
-            return null;
-        }
-
-        return (selection.size() > Shared.MAX_DOCS_IN_INTENT)
-                ? createJumboClipData(uriBuilder, selection, opType)
-                : createStandardClipData(uriBuilder, selection, opType);
-    }
-
-    /**
-     * Returns ClipData representing the selection.
-     */
-    private ClipData createStandardClipData(
-            Function<String, Uri> uriBuilder, Selection selection, @OpType int opType) {
-
-        assert(!selection.isEmpty());
-        assert(selection.size() <= Shared.MAX_DOCS_IN_INTENT);
-
-        final ContentResolver resolver = mContext.getContentResolver();
-        final ArrayList<ClipData.Item> clipItems = new ArrayList<>();
-        final Set<String> clipTypes = new HashSet<>();
-
-        PersistableBundle bundle = new PersistableBundle();
-        bundle.putInt(OP_TYPE_KEY, opType);
-
-        for (String id : selection) {
-            assert(id != null);
-            Uri uri = uriBuilder.apply(id);
-            DocumentInfo.addMimeTypes(resolver, uri, clipTypes);
-            clipItems.add(new ClipData.Item(uri));
-        }
-
-        ClipDescription description = new ClipDescription(
-                "", // Currently "label" is not displayed anywhere in the UI.
-                clipTypes.toArray(new String[0]));
-        description.setExtras(bundle);
-
-        return new ClipData(description, clipItems);
-    }
-
-    /**
-     * Returns ClipData representing the list of docs
-     */
-    private ClipData createJumboClipData(
-            Function<String, Uri> uriBuilder, Selection selection, @OpType int opType) {
-
-        assert(!selection.isEmpty());
-        assert(selection.size() > Shared.MAX_DOCS_IN_INTENT);
-
-        final List<Uri> uris = new ArrayList<>(selection.size());
-
-        final int capacity = Math.min(selection.size(), Shared.MAX_DOCS_IN_INTENT);
-        final ArrayList<ClipData.Item> clipItems = new ArrayList<>(capacity);
-
-        // Set up mime types for the first Shared.MAX_DOCS_IN_INTENT
-        final ContentResolver resolver = mContext.getContentResolver();
-        final Set<String> clipTypes = new HashSet<>();
-        int docCount = 0;
-        for (String id : selection) {
-            assert(id != null);
-            Uri uri = uriBuilder.apply(id);
-            if (docCount++ < Shared.MAX_DOCS_IN_INTENT) {
-                DocumentInfo.addMimeTypes(resolver, uri, clipTypes);
-                clipItems.add(new ClipData.Item(uri));
-            }
-
-            uris.add(uri);
-        }
-
-        // Prepare metadata
-        PersistableBundle bundle = new PersistableBundle();
-        bundle.putInt(OP_TYPE_KEY, opType);
-        bundle.putInt(OP_JUMBO_SELECTION_SIZE, selection.size());
-
-        // Creates a clip tag
-        int tag = mClipStorage.claimStorageSlot();
-        bundle.putInt(OP_JUMBO_SELECTION_TAG, tag);
-
-        ClipDescription description = new ClipDescription(
-                "", // Currently "label" is not displayed anywhere in the UI.
-                clipTypes.toArray(new String[0]));
-        description.setExtras(bundle);
-
-        // Persists clip items
-        new ClipStorage.PersistTask(mClipStorage, uris, tag).execute();
-
-        return new ClipData(description, clipItems);
-    }
-
-    /**
-     * Puts {@code ClipData} in a primary clipboard, describing a copy operation
-     */
-    public void clipDocumentsForCopy(Function<String, Uri> uriBuilder, Selection selection) {
-        ClipData data =
-                getClipDataForDocuments(uriBuilder, selection, FileOperationService.OPERATION_COPY);
-        assert(data != null);
-
-        mClipboard.setPrimaryClip(data);
-    }
-
-    /**
-     *  Puts {@Code ClipData} in a primary clipboard, describing a cut operation
-     */
-    public void clipDocumentsForCut(
-            Function<String, Uri> uriBuilder, Selection selection, DocumentInfo parent) {
-        assert(!selection.isEmpty());
-        assert(parent.derivedUri != null);
-
-        ClipData data = getClipDataForDocuments(uriBuilder, selection,
-                FileOperationService.OPERATION_MOVE);
-        assert(data != null);
-
-        PersistableBundle bundle = data.getDescription().getExtras();
-        bundle.putString(SRC_PARENT_KEY, parent.derivedUri.toString());
-
-        mClipboard.setPrimaryClip(data);
-    }
-
-    /**
-     * Copies documents from clipboard. It's the same as {@link #copyFromClipData} with clipData
-     * returned from {@link ClipboardManager#getPrimaryClip()}.
-     *
-     * @param destination destination document.
-     * @param docStack the document stack to the destination folder,
-     * @param callback callback to notify when operation finishes.
-     */
-    public void copyFromClipboard(
-            DocumentInfo destination,
-            DocumentStack docStack,
-            FileOperations.Callback callback) {
-
-        copyFromClipData(destination, docStack, mClipboard.getPrimaryClip(), callback);
-    }
-
-    /**
-     * Copied documents from given clip data to a root directory.
-     * @param root the root which root directory to copy to
-     * @param destination the root directory
-     * @param clipData the clipData to copy from
-     * @param callback callback to notify when operation finishes
-     */
-    public void copyFromClipData(
-            final RootInfo root,
-            final DocumentInfo destination,
-            final @Nullable ClipData clipData,
-            final FileOperations.Callback callback) {
-        DocumentStack dstStack = new DocumentStack(root, destination);
-        copyFromClipData(dstStack, clipData, callback);
-    }
-
-    /**
-     * Copies documents from given clip data to a folder.
-     *
-     * @param destination destination folder
-     * @param docStack the document stack to the destination folder (not including the destination
-     *                 folder)
-     * @param clipData the clipData to copy from
-     * @param callback callback to notify when operation finishes
-     */
-    public void copyFromClipData(
-            final DocumentInfo destination,
-            final DocumentStack docStack,
-            final @Nullable ClipData clipData,
-            final FileOperations.Callback callback) {
-
-        DocumentStack dstStack = new DocumentStack(docStack, destination);
-        copyFromClipData(dstStack, clipData, callback);
-    }
-
-    private void copyFromClipData(
-            final DocumentStack dstStack,
-            final @Nullable ClipData clipData,
-            final FileOperations.Callback callback) {
-
-        if (clipData == null) {
-            Log.i(TAG, "Received null clipData. Ignoring.");
-            return;
-        }
-
-        PersistableBundle bundle = clipData.getDescription().getExtras();
-        @OpType int opType = getOpType(bundle);
-        try {
-            if (!canCopy(dstStack.peek())) {
-                callback.onOperationResult(
-                        FileOperations.Callback.STATUS_REJECTED, getOpType(clipData), 0);
-                return;
-            }
-
-            UrisSupplier uris = UrisSupplier.create(clipData, mContext);
-            if (uris.getItemCount() == 0) {
-                callback.onOperationResult(
-                        FileOperations.Callback.STATUS_ACCEPTED, opType, 0);
-                return;
-            }
-
-            String srcParentString = bundle.getString(SRC_PARENT_KEY);
-            Uri srcParent = srcParentString == null ? null : Uri.parse(srcParentString);
-
-            FileOperation operation = new FileOperation.Builder()
-                    .withOpType(opType)
-                    .withSrcParent(srcParent)
-                    .withDestination(dstStack)
-                    .withSrcs(uris)
-                    .build();
-
-            FileOperations.start(mContext, operation, callback);
-        } catch(IOException e) {
-            Log.e(TAG, "Cannot create uris supplier.", e);
-            callback.onOperationResult(FileOperations.Callback.STATUS_REJECTED, opType, 0);
-            return;
-        }
-    }
-
-    /**
-     * Returns true if the list of files can be copied to destination. Note that this
-     * is a policy check only. Currently the method does not attempt to verify
-     * available space or any other environmental aspects possibly resulting in
-     * failure to copy.
-     *
-     * @return true if the list of files can be copied to destination.
-     */
-    private static boolean canCopy(DocumentInfo dest) {
-        if (dest == null || !dest.isDirectory() || !dest.isCreateSupported()) {
-            return false;
-        }
-
-        return true;
-    }
-
-    public static @OpType int getOpType(ClipData data) {
-        PersistableBundle bundle = data.getDescription().getExtras();
-        return getOpType(bundle);
-    }
-
-    private static @OpType int getOpType(PersistableBundle bundle) {
-        return bundle.getInt(OP_TYPE_KEY);
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/clipping/UrisSupplier.java b/packages/DocumentsUI/src/com/android/documentsui/clipping/UrisSupplier.java
deleted file mode 100644
index 7b1ba34..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/clipping/UrisSupplier.java
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.clipping;
-
-import static com.android.documentsui.clipping.DocumentClipper.OP_JUMBO_SELECTION_SIZE;
-import static com.android.documentsui.clipping.DocumentClipper.OP_JUMBO_SELECTION_TAG;
-
-import android.content.ClipData;
-import android.content.Context;
-import android.net.Uri;
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.os.PersistableBundle;
-import android.support.annotation.VisibleForTesting;
-import android.util.Log;
-
-import com.android.documentsui.DocumentsApplication;
-import com.android.documentsui.Shared;
-import com.android.documentsui.dirlist.MultiSelectManager.Selection;
-import com.android.documentsui.services.FileOperation;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.concurrent.atomic.AtomicReference;
-import java.util.function.Function;
-
-/**
- * UrisSupplier provides doc uri list to {@link FileOperation}.
- *
- * <p>Under the hood it provides cross-process synchronization support such that its consumer doesn't
- * need to explicitly synchronize its access.
- */
-public abstract class UrisSupplier implements Parcelable {
-
-    public abstract int getItemCount();
-
-    /**
-     * Gets doc list. This may only be called once because it may read a file
-     * to get the list.
-     *
-     * @param context We need context to obtain {@link ClipStorage}. It can't be sent in a parcel.
-     */
-    public Iterable<Uri> getUris(Context context) throws IOException {
-        return getUris(DocumentsApplication.getClipStorage(context));
-    }
-
-    @VisibleForTesting
-    abstract Iterable<Uri> getUris(ClipStorage storage) throws IOException;
-
-    public void dispose() {}
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    public static UrisSupplier create(ClipData clipData, Context context) throws IOException {
-        UrisSupplier uris;
-        PersistableBundle bundle = clipData.getDescription().getExtras();
-        if (bundle.containsKey(OP_JUMBO_SELECTION_TAG)) {
-            uris = new JumboUrisSupplier(clipData, context);
-        } else {
-            uris = new StandardUrisSupplier(clipData);
-        }
-
-        return uris;
-    }
-
-    public static UrisSupplier create(
-            Selection selection, Function<String, Uri> uriBuilder, Context context)
-            throws IOException {
-
-        ClipStorage storage = DocumentsApplication.getClipStorage(context);
-
-        List<Uri> uris = new ArrayList<>(selection.size());
-        for (String id : selection) {
-            uris.add(uriBuilder.apply(id));
-        }
-
-        return create(uris, storage);
-    }
-
-    @VisibleForTesting
-    static UrisSupplier create(List<Uri> uris, ClipStorage storage) throws IOException {
-        UrisSupplier urisSupplier = (uris.size() > Shared.MAX_DOCS_IN_INTENT)
-                ? new JumboUrisSupplier(uris, storage)
-                : new StandardUrisSupplier(uris);
-
-        return urisSupplier;
-    }
-
-    private static class JumboUrisSupplier extends UrisSupplier {
-        private static final String TAG = "JumboUrisSupplier";
-
-        private final File mFile;
-        private final int mSelectionSize;
-
-        private final transient AtomicReference<ClipStorageReader> mReader =
-                new AtomicReference<>();
-
-        private JumboUrisSupplier(ClipData clipData, Context context) throws IOException {
-            PersistableBundle bundle = clipData.getDescription().getExtras();
-            final int tag = bundle.getInt(OP_JUMBO_SELECTION_TAG, ClipStorage.NO_SELECTION_TAG);
-            assert(tag != ClipStorage.NO_SELECTION_TAG);
-            mFile = DocumentsApplication.getClipStorage(context).getFile(tag);
-            assert(mFile.exists());
-
-            mSelectionSize = bundle.getInt(OP_JUMBO_SELECTION_SIZE);
-            assert(mSelectionSize > Shared.MAX_DOCS_IN_INTENT);
-        }
-
-        private JumboUrisSupplier(Collection<Uri> uris, ClipStorage storage) throws IOException {
-            final int tag = storage.claimStorageSlot();
-            new ClipStorage.PersistTask(storage, uris, tag).execute();
-
-            // There is a tiny race condition here. A job may starts to read before persist task
-            // starts to write, but it has to beat an IPC and background task schedule, which is
-            // pretty rare. Creating a symlink doesn't need that file to exist, but we can't assert
-            // on its existence.
-            mFile = storage.getFile(tag);
-            mSelectionSize = uris.size();
-        }
-
-        @Override
-        public int getItemCount() {
-            return mSelectionSize;
-        }
-
-        @Override
-        Iterable<Uri> getUris(ClipStorage storage) throws IOException {
-            ClipStorageReader reader = mReader.getAndSet(storage.createReader(mFile));
-            if (reader != null) {
-                reader.close();
-                mReader.get().close();
-                throw new IllegalStateException("This method can only be called once.");
-            }
-
-            return mReader.get();
-        }
-
-        @Override
-        public void dispose() {
-            try {
-                ClipStorageReader reader = mReader.get();
-                if (reader != null) {
-                    reader.close();
-                }
-            } catch (IOException e) {
-                Log.w(TAG, "Failed to close the reader.", e);
-            }
-
-            // mFile is a symlink to the actual data file. Delete the symlink here so that we know
-            // there is one fewer referrer that needs the data file. The actual data file will be
-            // cleaned up during file slot rotation. See ClipStorage for more details.
-            mFile.delete();
-        }
-
-        @Override
-        public String toString() {
-            StringBuilder builder = new StringBuilder();
-            builder.append("JumboUrisSupplier{");
-            builder.append("file=").append(mFile.getAbsolutePath());
-            builder.append(", selectionSize=").append(mSelectionSize);
-            builder.append("}");
-            return builder.toString();
-        }
-
-        @Override
-        public void writeToParcel(Parcel dest, int flags) {
-            dest.writeString(mFile.getAbsolutePath());
-            dest.writeInt(mSelectionSize);
-        }
-
-        private JumboUrisSupplier(Parcel in) {
-            mFile = new File(in.readString());
-            mSelectionSize = in.readInt();
-        }
-
-        public static final Parcelable.Creator<JumboUrisSupplier> CREATOR =
-                new Parcelable.Creator<JumboUrisSupplier>() {
-
-                    @Override
-                    public JumboUrisSupplier createFromParcel(Parcel source) {
-                        return new JumboUrisSupplier(source);
-                    }
-
-                    @Override
-                    public JumboUrisSupplier[] newArray(int size) {
-                        return new JumboUrisSupplier[size];
-                    }
-                };
-    }
-
-    /**
-     * This class and its constructor is visible for testing to create test doubles of
-     * {@link UrisSupplier}.
-     */
-    @VisibleForTesting
-    public static class StandardUrisSupplier extends UrisSupplier {
-        private final List<Uri> mDocs;
-
-        private StandardUrisSupplier(ClipData clipData) {
-            mDocs = listDocs(clipData);
-        }
-
-        @VisibleForTesting
-        public StandardUrisSupplier(List<Uri> docs) {
-            mDocs = docs;
-        }
-
-        private List<Uri> listDocs(ClipData clipData) {
-            ArrayList<Uri> docs = new ArrayList<>(clipData.getItemCount());
-
-            for (int i = 0; i < clipData.getItemCount(); ++i) {
-                Uri uri = clipData.getItemAt(i).getUri();
-                assert(uri != null);
-                docs.add(uri);
-            }
-
-            return docs;
-        }
-
-        @Override
-        public int getItemCount() {
-            return mDocs.size();
-        }
-
-        @Override
-        Iterable<Uri> getUris(ClipStorage storage) {
-            return mDocs;
-        }
-
-        @Override
-        public String toString() {
-            StringBuilder builder = new StringBuilder();
-            builder.append("StandardUrisSupplier{");
-            builder.append("docs=").append(mDocs.toString());
-            builder.append("}");
-            return builder.toString();
-        }
-
-        @Override
-        public void writeToParcel(Parcel dest, int flags) {
-            dest.writeTypedList(mDocs);
-        }
-
-        private StandardUrisSupplier(Parcel in) {
-            mDocs = in.createTypedArrayList(Uri.CREATOR);
-        }
-
-        public static final Parcelable.Creator<StandardUrisSupplier> CREATOR =
-                new Parcelable.Creator<StandardUrisSupplier>() {
-
-                    @Override
-                    public StandardUrisSupplier createFromParcel(Parcel source) {
-                        return new StandardUrisSupplier(source);
-                    }
-
-                    @Override
-                    public StandardUrisSupplier[] newArray(int size) {
-                        return new StandardUrisSupplier[size];
-                    }
-                };
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/AnimationView.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/AnimationView.java
deleted file mode 100644
index a666456..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/AnimationView.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.annotation.IntDef;
-import android.app.FragmentTransaction;
-import android.content.Context;
-import android.os.Bundle;
-import android.util.AttributeSet;
-import android.widget.LinearLayout;
-
-import com.android.documentsui.R;
-import com.android.documentsui.Shared;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/**
- * This class exists solely to support animated transition of our directory fragment.
- * The structure of this class is tightly coupled with the static animations defined in
- * res/animator, specifically the "position" property referenced by
- * res/animator/dir_{enter,leave}.xml.
- */
-public class AnimationView extends LinearLayout {
-
-    @IntDef(flag = true, value = {
-            ANIM_NONE,
-            ANIM_SIDE,
-            ANIM_LEAVE,
-            ANIM_ENTER
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface AnimationType {}
-    public static final int ANIM_NONE = 1;
-    public static final int ANIM_SIDE = 2;
-    public static final int ANIM_LEAVE = 3;
-    public static final int ANIM_ENTER = 4;
-
-    private float mPosition = 0f;
-
-    // The distance the animation will cover...currently matches the height of the
-    // content area.
-    private int mSpan;
-
-    public AnimationView(Context context) {
-        super(context);
-    }
-
-    public AnimationView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    @Override
-    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
-        super.onSizeChanged(w, h, oldw, oldh);
-        mSpan = h;
-        setPosition(mPosition);
-    }
-
-    public float getPosition() {
-        return mPosition;
-    }
-
-    public void setPosition(float position) {
-        mPosition = position;
-        // Warning! If we ever decide to switch this to setX (slide left/right)
-        // please remember to add RLT variations of the animations under res/animator-ldrtl.
-        setY((mSpan > 0) ? (mPosition * mSpan) : 0);
-
-        if (mPosition != 0) {
-            setTranslationZ(getResources().getDimensionPixelSize(R.dimen.dir_elevation));
-        } else {
-            setTranslationZ(0);
-        }
-    }
-
-    /**
-     * Configures custom animations on the transaction according to the specified
-     * @AnimationType.
-     */
-    static void setupAnimations(
-            FragmentTransaction ft, @AnimationType int anim, Bundle args) {
-        switch (anim) {
-            case AnimationView.ANIM_SIDE:
-                args.putBoolean(Shared.EXTRA_IGNORE_STATE, true);
-                break;
-            case AnimationView.ANIM_ENTER:
-                // TODO: Document which behavior is being tailored
-                //     by passing this bit. Remove if possible.
-                args.putBoolean(Shared.EXTRA_IGNORE_STATE, true);
-                ft.setCustomAnimations(R.animator.dir_enter, R.animator.fade_out);
-                break;
-            case AnimationView.ANIM_LEAVE:
-                ft.setCustomAnimations(R.animator.fade_in, R.animator.dir_leave);
-                break;
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/BandController.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/BandController.java
deleted file mode 100644
index 5ab85c1..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/BandController.java
+++ /dev/null
@@ -1,1173 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.dirlist.ModelBackedDocumentsAdapter.ITEM_TYPE_DIRECTORY;
-import static com.android.documentsui.dirlist.ModelBackedDocumentsAdapter.ITEM_TYPE_DOCUMENT;
-import static com.android.documentsui.dirlist.ViewAutoScroller.NOT_SET;
-
-import android.graphics.Point;
-import android.graphics.Rect;
-import android.graphics.drawable.Drawable;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.support.v7.widget.GridLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.util.Log;
-import android.util.SparseArray;
-import android.util.SparseBooleanArray;
-import android.util.SparseIntArray;
-import android.view.MotionEvent;
-import android.view.View;
-
-import com.android.documentsui.Events;
-import com.android.documentsui.Events.InputEvent;
-import com.android.documentsui.Events.MotionInputEvent;
-import com.android.documentsui.R;
-import com.android.documentsui.dirlist.MultiSelectManager.Selection;
-import com.android.documentsui.dirlist.ViewAutoScroller.ScrollActionDelegate;
-import com.android.documentsui.dirlist.ViewAutoScroller.ScrollDistanceDelegate;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Provides mouse driven band-select support when used in conjunction with {@link RecyclerView}
- * and {@link MultiSelectManager}. This class is responsible for rendering the band select
- * overlay and selecting overlaid items via MultiSelectManager.
- */
-public class BandController extends RecyclerView.OnScrollListener {
-
-    private static final String TAG = "BandController";
-    private static final int AUTOSCROLL_EDGE_HEIGHT = 1;
-
-    private final Runnable mModelBuilder;
-    private final SelectionEnvironment mEnvironment;
-    private final DocumentsAdapter mAdapter;
-    private final MultiSelectManager mSelectionManager;
-    private final Runnable mViewScroller;
-    private final GridModel.OnSelectionChangedListener mGridListener;
-
-    @Nullable private Rect mBounds;
-    @Nullable private Point mCurrentPosition;
-    @Nullable private Point mOrigin;
-    @Nullable private BandController.GridModel mModel;
-
-    private Selection mSelection;
-
-    public BandController(
-            final RecyclerView view,
-            DocumentsAdapter adapter,
-            MultiSelectManager selectionManager) {
-        this(new RuntimeSelectionEnvironment(view), adapter, selectionManager);
-
-        view.addOnItemTouchListener(
-                new RecyclerView.OnItemTouchListener() {
-                    @Override
-                    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
-                        try (InputEvent event = MotionInputEvent.obtain(e, view)) {
-                            return handleEvent(event);
-                        }
-                    }
-                    @Override
-                    public void onTouchEvent(RecyclerView rv, MotionEvent e) {
-                        if (Events.isMouseEvent(e)) {
-                            try (InputEvent event = MotionInputEvent.obtain(e, view)) {
-                                processInputEvent(event);
-                            }
-                        }
-                    }
-                    @Override
-                    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {}
-                });
-    }
-
-    private BandController(
-            SelectionEnvironment env,
-            DocumentsAdapter adapter,
-            MultiSelectManager selectionManager) {
-
-        selectionManager.bindContoller(this);
-
-        mEnvironment = env;
-        mAdapter = adapter;
-        mSelectionManager = selectionManager;
-
-        mEnvironment.addOnScrollListener(this);
-        mViewScroller = new ViewAutoScroller(
-                AUTOSCROLL_EDGE_HEIGHT,
-                new ScrollDistanceDelegate() {
-                    @Override
-                    public Point getCurrentPosition() {
-                        return mCurrentPosition;
-                    }
-
-                    @Override
-                    public int getViewHeight() {
-                        return mEnvironment.getHeight();
-                    }
-
-                    @Override
-                    public boolean isActive() {
-                        return BandController.this.isActive();
-                    }
-                },
-                env);
-
-        mAdapter.registerAdapterDataObserver(
-                new RecyclerView.AdapterDataObserver() {
-                    @Override
-                    public void onChanged() {
-                        if (isActive()) {
-                            endBandSelect();
-                        }
-                    }
-
-                    @Override
-                    public void onItemRangeChanged(
-                            int startPosition, int itemCount, Object payload) {
-                        // No change in position. Ignoring.
-                    }
-
-                    @Override
-                    public void onItemRangeInserted(int startPosition, int itemCount) {
-                        if (isActive()) {
-                            endBandSelect();
-                        }
-                    }
-
-                    @Override
-                    public void onItemRangeRemoved(int startPosition, int itemCount) {
-                        assert(startPosition >= 0);
-                        assert(itemCount > 0);
-
-                        // TODO: Should update grid model.
-                    }
-
-                    @Override
-                    public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) {
-                        throw new UnsupportedOperationException();
-                    }
-                });
-
-        mGridListener = new GridModel.OnSelectionChangedListener() {
-
-            @Override
-            public void onSelectionChanged(Set<String> updatedSelection) {
-                BandController.this.onSelectionChanged(updatedSelection);
-            }
-
-            @Override
-            public boolean onBeforeItemStateChange(String id, boolean nextState) {
-                return BandController.this.onBeforeItemStateChange(id, nextState);
-            }
-        };
-
-        mModelBuilder = new Runnable() {
-            @Override
-            public void run() {
-                mModel = new GridModel(mEnvironment, mAdapter);
-                mModel.addOnSelectionChangedListener(mGridListener);
-            }
-        };
-    }
-
-    private boolean isActive() {
-        return mModel != null;
-    }
-
-    void bindSelection(Selection selection) {
-        mSelection = selection;
-    }
-
-    private boolean handleEvent(InputEvent e) {
-        // Don't start, or extend bands on right click.
-        if (e.isSecondaryButtonPressed()) {
-            return false;
-        }
-
-        if (!e.isMouseEvent() && isActive()) {
-            // Weird things happen if we keep up band select
-            // when touch events happen.
-            endBandSelect();
-            return false;
-        }
-
-        // b/23793622 notes the fact that we *never* receive ACTION_DOWN
-        // events in onTouchEvent. Where it not for this issue, we'd
-        // push start handling down into handleInputEvent.
-        if (shouldStart(e)) {
-            // endBandSelect is handled in handleInputEvent.
-            startBandSelect(e.getOrigin());
-        } else if (isActive() && e.isActionUp()) {
-            // Same issue here w b/23793622. The ACTION_UP event
-            // is only evert dispatched to onTouchEvent when
-            // there is some associated motion. If a user taps
-            // mouse, but doesn't move, then band select gets
-            // started BUT not ended. Causing phantom
-            // bands to appear when the user later clicks to start
-            // band select.
-            if (e.isMouseEvent()) {
-                processInputEvent(e);
-            }
-        }
-
-        return isActive();
-    }
-
-    /**
-     * Handle a change in layout by cleaning up and getting rid of the old model and creating
-     * a new model which will track the new layout.
-     */
-    public void handleLayoutChanged() {
-        if (mModel != null) {
-            mModel.removeOnSelectionChangedListener(mGridListener);
-            mModel.stopListening();
-
-            // build a new model, all fresh and happy.
-            mModelBuilder.run();
-        }
-    }
-
-    boolean shouldStart(InputEvent e) {
-        return !isActive()
-                && e.isActionDown()  // the initial button press
-                && mAdapter.getItemCount() > 0
-                && e.getItemPosition() == RecyclerView.NO_ID;  // in empty space
-    }
-
-    boolean shouldStop(InputEvent input) {
-        return isActive()
-                && input.isMouseEvent()
-                && input.isActionUp();
-    }
-
-    /**
-     * Processes a MotionEvent by starting, ending, or resizing the band select overlay.
-     * @param input
-     */
-    private void processInputEvent(InputEvent input) {
-        assert(input.isMouseEvent());
-
-        if (shouldStop(input)) {
-            endBandSelect();
-            return;
-        }
-
-        // We shouldn't get any events in this method when band select is not active,
-        // but it turns some guests show up late to the party.
-        if (!isActive()) {
-            return;
-        }
-
-        mCurrentPosition = input.getOrigin();
-        mModel.resizeSelection(input.getOrigin());
-        scrollViewIfNecessary();
-        resizeBandSelectRectangle();
-    }
-
-    /**
-     * Starts band select by adding the drawable to the RecyclerView's overlay.
-     */
-    private void startBandSelect(Point origin) {
-        if (DEBUG) Log.d(TAG, "Starting band select @ " + origin);
-
-        mOrigin = origin;
-        mModelBuilder.run();  // Creates a new selection model.
-        mModel.startSelection(mOrigin);
-    }
-
-    /**
-     * Scrolls the view if necessary.
-     */
-    private void scrollViewIfNecessary() {
-        mEnvironment.removeCallback(mViewScroller);
-        mViewScroller.run();
-        mEnvironment.invalidateView();
-    }
-
-    /**
-     * Resizes the band select rectangle by using the origin and the current pointer position as
-     * two opposite corners of the selection.
-     */
-    private void resizeBandSelectRectangle() {
-        mBounds = new Rect(Math.min(mOrigin.x, mCurrentPosition.x),
-                Math.min(mOrigin.y, mCurrentPosition.y),
-                Math.max(mOrigin.x, mCurrentPosition.x),
-                Math.max(mOrigin.y, mCurrentPosition.y));
-        mEnvironment.showBand(mBounds);
-    }
-
-    /**
-     * Ends band select by removing the overlay.
-     */
-    private void endBandSelect() {
-        if (DEBUG) Log.d(TAG, "Ending band select.");
-
-        mEnvironment.hideBand();
-        mSelection.applyProvisionalSelection();
-        mModel.endSelection();
-        int firstSelected = mModel.getPositionNearestOrigin();
-        if (firstSelected != NOT_SET) {
-            if (mSelection.contains(mAdapter.getModelId(firstSelected))) {
-                // TODO: firstSelected should really be lastSelected, we want to anchor the item
-                // where the mouse-up occurred.
-                mSelectionManager.setSelectionRangeBegin(firstSelected);
-            } else {
-                // TODO: Check if this is really happening.
-                Log.w(TAG, "First selected by band is NOT in selection!");
-            }
-        }
-
-        mModel = null;
-        mOrigin = null;
-    }
-
-    private void onSelectionChanged(Set<String> updatedSelection) {
-        Map<String, Boolean> delta = mSelection.setProvisionalSelection(updatedSelection);
-        for (Map.Entry<String, Boolean> entry: delta.entrySet()) {
-            mSelectionManager.notifyItemStateChanged(entry.getKey(), entry.getValue());
-        }
-        mSelectionManager.notifySelectionChanged();
-    }
-
-    private boolean onBeforeItemStateChange(String id, boolean nextState) {
-        return mSelectionManager.notifyBeforeItemStateChange(id, nextState);
-    }
-
-    @Override
-    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
-        if (!isActive()) {
-            return;
-        }
-
-        // Adjust the y-coordinate of the origin the opposite number of pixels so that the
-        // origin remains in the same place relative to the view's items.
-        mOrigin.y -= dy;
-        resizeBandSelectRectangle();
-    }
-
-    /**
-     * Provides a band selection item model for views within a RecyclerView. This class queries the
-     * RecyclerView to determine where its items are placed; then, once band selection is underway,
-     * it alerts listeners of which items are covered by the selections.
-     */
-    @VisibleForTesting
-    static final class GridModel extends RecyclerView.OnScrollListener {
-
-        public static final int NOT_SET = -1;
-
-        // Enum values used to determine the corner at which the origin is located within the
-        private static final int UPPER = 0x00;
-        private static final int LOWER = 0x01;
-        private static final int LEFT = 0x00;
-        private static final int RIGHT = 0x02;
-        private static final int UPPER_LEFT = UPPER | LEFT;
-        private static final int UPPER_RIGHT = UPPER | RIGHT;
-        private static final int LOWER_LEFT = LOWER | LEFT;
-        private static final int LOWER_RIGHT = LOWER | RIGHT;
-
-        private final SelectionEnvironment mHelper;
-        private final DocumentsAdapter mAdapter;
-
-        private final List<GridModel.OnSelectionChangedListener> mOnSelectionChangedListeners =
-                new ArrayList<>();
-
-        // Map from the x-value of the left side of a SparseBooleanArray of adapter positions, keyed
-        // by their y-offset. For example, if the first column of the view starts at an x-value of 5,
-        // mColumns.get(5) would return an array of positions in that column. Within that array, the
-        // value for key y is the adapter position for the item whose y-offset is y.
-        private final SparseArray<SparseIntArray> mColumns = new SparseArray<>();
-
-        // List of limits along the x-axis (columns).
-        // This list is sorted from furthest left to furthest right.
-        private final List<GridModel.Limits> mColumnBounds = new ArrayList<>();
-
-        // List of limits along the y-axis (rows). Note that this list only contains items which
-        // have been in the viewport.
-        private final List<GridModel.Limits> mRowBounds = new ArrayList<>();
-
-        // The adapter positions which have been recorded so far.
-        private final SparseBooleanArray mKnownPositions = new SparseBooleanArray();
-
-        // Array passed to registered OnSelectionChangedListeners. One array is created and reused
-        // throughout the lifetime of the object.
-        private final Set<String> mSelection = new HashSet<>();
-
-        // The current pointer (in absolute positioning from the top of the view).
-        private Point mPointer = null;
-
-        // The bounds of the band selection.
-        private RelativePoint mRelativeOrigin;
-        private RelativePoint mRelativePointer;
-
-        private boolean mIsActive;
-
-        // Tracks where the band select originated from. This is used to determine where selections
-        // should expand from when Shift+click is used.
-        private int mPositionNearestOrigin = NOT_SET;
-
-        GridModel(SelectionEnvironment helper, DocumentsAdapter adapter) {
-            mHelper = helper;
-            mAdapter = adapter;
-            mHelper.addOnScrollListener(this);
-        }
-
-        /**
-         * Stops listening to the view's scrolls. Call this function before discarding a
-         * BandSelecModel object to prevent memory leaks.
-         */
-        void stopListening() {
-            mHelper.removeOnScrollListener(this);
-        }
-
-        /**
-         * Start a band select operation at the given point.
-         * @param relativeOrigin The origin of the band select operation, relative to the viewport.
-         *     For example, if the view is scrolled to the bottom, the top-left of the viewport
-         *     would have a relative origin of (0, 0), even though its absolute point has a higher
-         *     y-value.
-         */
-        void startSelection(Point relativeOrigin) {
-            recordVisibleChildren();
-            if (isEmpty()) {
-                // The selection band logic works only if there is at least one visible child.
-                return;
-            }
-
-            mIsActive = true;
-            mPointer = mHelper.createAbsolutePoint(relativeOrigin);
-            mRelativeOrigin = new RelativePoint(mPointer);
-            mRelativePointer = new RelativePoint(mPointer);
-            computeCurrentSelection();
-            notifyListeners();
-        }
-
-        /**
-         * Resizes the selection by adjusting the pointer (i.e., the corner of the selection
-         * opposite the origin.
-         * @param relativePointer The pointer (opposite of the origin) of the band select operation,
-         *     relative to the viewport. For example, if the view is scrolled to the bottom, the
-         *     top-left of the viewport would have a relative origin of (0, 0), even though its
-         *     absolute point has a higher y-value.
-         */
-        @VisibleForTesting
-        void resizeSelection(Point relativePointer) {
-            mPointer = mHelper.createAbsolutePoint(relativePointer);
-            updateModel();
-        }
-
-        /**
-         * Ends the band selection.
-         */
-        void endSelection() {
-            mIsActive = false;
-        }
-
-        /**
-         * @return The adapter position for the item nearest the origin corresponding to the latest
-         *         band select operation, or NOT_SET if the selection did not cover any items.
-         */
-        int getPositionNearestOrigin() {
-            return mPositionNearestOrigin;
-        }
-
-        @Override
-        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
-            if (!mIsActive) {
-                return;
-            }
-
-            mPointer.x += dx;
-            mPointer.y += dy;
-            recordVisibleChildren();
-            updateModel();
-        }
-
-        /**
-         * Queries the view for all children and records their location metadata.
-         */
-        private void recordVisibleChildren() {
-            for (int i = 0; i < mHelper.getVisibleChildCount(); i++) {
-                int adapterPosition = mHelper.getAdapterPositionAt(i);
-                // Sometimes the view is not attached, as we notify the multi selection manager
-                // synchronously, while views are attached asynchronously. As a result items which
-                // are in the adapter may not actually have a corresponding view (yet).
-                if (mHelper.hasView(adapterPosition) &&
-                        !mHelper.isLayoutItem(adapterPosition) &&
-                        !mKnownPositions.get(adapterPosition)) {
-                    mKnownPositions.put(adapterPosition, true);
-                    recordItemData(mHelper.getAbsoluteRectForChildViewAt(i), adapterPosition);
-                }
-            }
-        }
-
-        /**
-         * Checks if there are any recorded children.
-         */
-        private boolean isEmpty() {
-            return mColumnBounds.size() == 0 || mRowBounds.size() == 0;
-        }
-
-        /**
-         * Updates the limits lists and column map with the given item metadata.
-         * @param absoluteChildRect The absolute rectangle for the child view being processed.
-         * @param adapterPosition The position of the child view being processed.
-         */
-        private void recordItemData(Rect absoluteChildRect, int adapterPosition) {
-            if (mColumnBounds.size() != mHelper.getColumnCount()) {
-                // If not all x-limits have been recorded, record this one.
-                recordLimits(
-                        mColumnBounds, new Limits(absoluteChildRect.left, absoluteChildRect.right));
-            }
-
-            recordLimits(mRowBounds, new Limits(absoluteChildRect.top, absoluteChildRect.bottom));
-
-            SparseIntArray columnList = mColumns.get(absoluteChildRect.left);
-            if (columnList == null) {
-                columnList = new SparseIntArray();
-                mColumns.put(absoluteChildRect.left, columnList);
-            }
-            columnList.put(absoluteChildRect.top, adapterPosition);
-        }
-
-        /**
-         * Ensures limits exists within the sorted list limitsList, and adds it to the list if it
-         * does not exist.
-         */
-        private void recordLimits(List<GridModel.Limits> limitsList, GridModel.Limits limits) {
-            int index = Collections.binarySearch(limitsList, limits);
-            if (index < 0) {
-                limitsList.add(~index, limits);
-            }
-        }
-
-        /**
-         * Handles a moved pointer; this function determines whether the pointer movement resulted
-         * in a selection change and, if it has, notifies listeners of this change.
-         */
-        private void updateModel() {
-            RelativePoint old = mRelativePointer;
-            mRelativePointer = new RelativePoint(mPointer);
-            if (old != null && mRelativePointer.equals(old)) {
-                return;
-            }
-
-            computeCurrentSelection();
-            notifyListeners();
-        }
-
-        /**
-         * Computes the currently-selected items.
-         */
-        private void computeCurrentSelection() {
-            if (areItemsCoveredByBand(mRelativePointer, mRelativeOrigin)) {
-                updateSelection(computeBounds());
-            } else {
-                mSelection.clear();
-                mPositionNearestOrigin = NOT_SET;
-            }
-        }
-
-        /**
-         * Notifies all listeners of a selection change. Note that this function simply passes
-         * mSelection, so computeCurrentSelection() should be called before this
-         * function.
-         */
-        private void notifyListeners() {
-            for (GridModel.OnSelectionChangedListener listener : mOnSelectionChangedListeners) {
-                listener.onSelectionChanged(mSelection);
-            }
-        }
-
-        /**
-         * @param rect Rectangle including all covered items.
-         */
-        private void updateSelection(Rect rect) {
-            int columnStart =
-                    Collections.binarySearch(mColumnBounds, new Limits(rect.left, rect.left));
-            assert(columnStart >= 0);
-            int columnEnd = columnStart;
-
-            for (int i = columnStart; i < mColumnBounds.size()
-                    && mColumnBounds.get(i).lowerLimit <= rect.right; i++) {
-                columnEnd = i;
-            }
-
-            int rowStart = Collections.binarySearch(mRowBounds, new Limits(rect.top, rect.top));
-            if (rowStart < 0) {
-                mPositionNearestOrigin = NOT_SET;
-                return;
-            }
-
-            int rowEnd = rowStart;
-            for (int i = rowStart; i < mRowBounds.size()
-                    && mRowBounds.get(i).lowerLimit <= rect.bottom; i++) {
-                rowEnd = i;
-            }
-
-            updateSelection(columnStart, columnEnd, rowStart, rowEnd);
-        }
-
-        /**
-         * Computes the selection given the previously-computed start- and end-indices for each
-         * row and column.
-         */
-        private void updateSelection(
-                int columnStartIndex, int columnEndIndex, int rowStartIndex, int rowEndIndex) {
-            if (DEBUG) Log.d(TAG, String.format("updateSelection: %d, %d, %d, %d",
-                    columnStartIndex, columnEndIndex, rowStartIndex, rowEndIndex));
-
-            mSelection.clear();
-            for (int column = columnStartIndex; column <= columnEndIndex; column++) {
-                SparseIntArray items = mColumns.get(mColumnBounds.get(column).lowerLimit);
-                for (int row = rowStartIndex; row <= rowEndIndex; row++) {
-                    // The default return value for SparseIntArray.get is 0, which is a valid
-                    // position. Use a sentry value to prevent erroneously selecting item 0.
-                    final int rowKey = mRowBounds.get(row).lowerLimit;
-                    int position = items.get(rowKey, NOT_SET);
-                    if (position != NOT_SET) {
-                        String id = mAdapter.getModelId(position);
-                        if (id != null) {
-                            // The adapter inserts items for UI layout purposes that aren't associated
-                            // with files.  Those will have a null model ID.  Don't select them.
-                            if (canSelect(id)) {
-                                mSelection.add(id);
-                            }
-                        }
-                        if (isPossiblePositionNearestOrigin(column, columnStartIndex, columnEndIndex,
-                                row, rowStartIndex, rowEndIndex)) {
-                            // If this is the position nearest the origin, record it now so that it
-                            // can be returned by endSelection() later.
-                            mPositionNearestOrigin = position;
-                        }
-                    }
-                }
-            }
-        }
-
-        /**
-         * @return True if the item is selectable.
-         */
-        private boolean canSelect(String id) {
-            // TODO: Simplify the logic, so the check whether we can select is done in one place.
-            // Consider injecting FragmentTuner, or move the checks from MultiSelectManager to
-            // Selection.
-            for (GridModel.OnSelectionChangedListener listener : mOnSelectionChangedListeners) {
-                if (!listener.onBeforeItemStateChange(id, true)) {
-                    return false;
-                }
-            }
-            return true;
-        }
-
-        /**
-         * @return Returns true if the position is the nearest to the origin, or, in the case of the
-         *     lower-right corner, whether it is possible that the position is the nearest to the
-         *     origin. See comment below for reasoning for this special case.
-         */
-        private boolean isPossiblePositionNearestOrigin(int columnIndex, int columnStartIndex,
-                int columnEndIndex, int rowIndex, int rowStartIndex, int rowEndIndex) {
-            int corner = computeCornerNearestOrigin();
-            switch (corner) {
-                case UPPER_LEFT:
-                    return columnIndex == columnStartIndex && rowIndex == rowStartIndex;
-                case UPPER_RIGHT:
-                    return columnIndex == columnEndIndex && rowIndex == rowStartIndex;
-                case LOWER_LEFT:
-                    return columnIndex == columnStartIndex && rowIndex == rowEndIndex;
-                case LOWER_RIGHT:
-                    // Note that in some cases, the last row will not have as many items as there
-                    // are columns (e.g., if there are 4 items and 3 columns, the second row will
-                    // only have one item in the first column). This function is invoked for each
-                    // position from left to right, so return true for any position in the bottom
-                    // row and only the right-most position in the bottom row will be recorded.
-                    return rowIndex == rowEndIndex;
-                default:
-                    throw new RuntimeException("Invalid corner type.");
-            }
-        }
-
-        /**
-         * Listener for changes in which items have been band selected.
-         */
-        static interface OnSelectionChangedListener {
-            public void onSelectionChanged(Set<String> updatedSelection);
-            public boolean onBeforeItemStateChange(String id, boolean nextState);
-        }
-
-        void addOnSelectionChangedListener(GridModel.OnSelectionChangedListener listener) {
-            mOnSelectionChangedListeners.add(listener);
-        }
-
-        void removeOnSelectionChangedListener(GridModel.OnSelectionChangedListener listener) {
-            mOnSelectionChangedListeners.remove(listener);
-        }
-
-        /**
-         * Limits of a view item. For example, if an item's left side is at x-value 5 and its right side
-         * is at x-value 10, the limits would be from 5 to 10. Used to record the left- and right sides
-         * of item columns and the top- and bottom sides of item rows so that it can be determined
-         * whether the pointer is located within the bounds of an item.
-         */
-        private static class Limits implements Comparable<GridModel.Limits> {
-            int lowerLimit;
-            int upperLimit;
-
-            Limits(int lowerLimit, int upperLimit) {
-                this.lowerLimit = lowerLimit;
-                this.upperLimit = upperLimit;
-            }
-
-            @Override
-            public int compareTo(GridModel.Limits other) {
-                return lowerLimit - other.lowerLimit;
-            }
-
-            @Override
-            public boolean equals(Object other) {
-                if (!(other instanceof GridModel.Limits)) {
-                    return false;
-                }
-
-                return ((GridModel.Limits) other).lowerLimit == lowerLimit &&
-                        ((GridModel.Limits) other).upperLimit == upperLimit;
-            }
-
-            @Override
-            public String toString() {
-                return "(" + lowerLimit + ", " + upperLimit + ")";
-            }
-        }
-
-        /**
-         * The location of a coordinate relative to items. This class represents a general area of the
-         * view as it relates to band selection rather than an explicit point. For example, two
-         * different points within an item are considered to have the same "location" because band
-         * selection originating within the item would select the same items no matter which point
-         * was used. Same goes for points between items as well as those at the very beginning or end
-         * of the view.
-         *
-         * Tracking a coordinate (e.g., an x-value) as a CoordinateLocation instead of as an int has the
-         * advantage of tying the value to the Limits of items along that axis. This allows easy
-         * selection of items within those Limits as opposed to a search through every item to see if a
-         * given coordinate value falls within those Limits.
-         */
-        private static class RelativeCoordinate
-                implements Comparable<GridModel.RelativeCoordinate> {
-            /**
-             * Location describing points after the last known item.
-             */
-            static final int AFTER_LAST_ITEM = 0;
-
-            /**
-             * Location describing points before the first known item.
-             */
-            static final int BEFORE_FIRST_ITEM = 1;
-
-            /**
-             * Location describing points between two items.
-             */
-            static final int BETWEEN_TWO_ITEMS = 2;
-
-            /**
-             * Location describing points within the limits of one item.
-             */
-            static final int WITHIN_LIMITS = 3;
-
-            /**
-             * The type of this coordinate, which is one of AFTER_LAST_ITEM, BEFORE_FIRST_ITEM,
-             * BETWEEN_TWO_ITEMS, or WITHIN_LIMITS.
-             */
-            final int type;
-
-            /**
-             * The limits before the coordinate; only populated when type == WITHIN_LIMITS or type ==
-             * BETWEEN_TWO_ITEMS.
-             */
-            GridModel.Limits limitsBeforeCoordinate;
-
-            /**
-             * The limits after the coordinate; only populated when type == BETWEEN_TWO_ITEMS.
-             */
-            GridModel.Limits limitsAfterCoordinate;
-
-            // Limits of the first known item; only populated when type == BEFORE_FIRST_ITEM.
-            GridModel.Limits mFirstKnownItem;
-            // Limits of the last known item; only populated when type == AFTER_LAST_ITEM.
-            GridModel.Limits mLastKnownItem;
-
-            /**
-             * @param limitsList The sorted limits list for the coordinate type. If this
-             *     CoordinateLocation is an x-value, mXLimitsList should be passed; otherwise,
-             *     mYLimitsList should be pased.
-             * @param value The coordinate value.
-             */
-            RelativeCoordinate(List<GridModel.Limits> limitsList, int value) {
-                int index = Collections.binarySearch(limitsList, new Limits(value, value));
-
-                if (index >= 0) {
-                    this.type = WITHIN_LIMITS;
-                    this.limitsBeforeCoordinate = limitsList.get(index);
-                } else if (~index == 0) {
-                    this.type = BEFORE_FIRST_ITEM;
-                    this.mFirstKnownItem = limitsList.get(0);
-                } else if (~index == limitsList.size()) {
-                    GridModel.Limits lastLimits = limitsList.get(limitsList.size() - 1);
-                    if (lastLimits.lowerLimit <= value && value <= lastLimits.upperLimit) {
-                        this.type = WITHIN_LIMITS;
-                        this.limitsBeforeCoordinate = lastLimits;
-                    } else {
-                        this.type = AFTER_LAST_ITEM;
-                        this.mLastKnownItem = lastLimits;
-                    }
-                } else {
-                    GridModel.Limits limitsBeforeIndex = limitsList.get(~index - 1);
-                    if (limitsBeforeIndex.lowerLimit <= value && value <= limitsBeforeIndex.upperLimit) {
-                        this.type = WITHIN_LIMITS;
-                        this.limitsBeforeCoordinate = limitsList.get(~index - 1);
-                    } else {
-                        this.type = BETWEEN_TWO_ITEMS;
-                        this.limitsBeforeCoordinate = limitsList.get(~index - 1);
-                        this.limitsAfterCoordinate = limitsList.get(~index);
-                    }
-                }
-            }
-
-            int toComparisonValue() {
-                if (type == BEFORE_FIRST_ITEM) {
-                    return mFirstKnownItem.lowerLimit - 1;
-                } else if (type == AFTER_LAST_ITEM) {
-                    return mLastKnownItem.upperLimit + 1;
-                } else if (type == BETWEEN_TWO_ITEMS) {
-                    return limitsBeforeCoordinate.upperLimit + 1;
-                } else {
-                    return limitsBeforeCoordinate.lowerLimit;
-                }
-            }
-
-            @Override
-            public boolean equals(Object other) {
-                if (!(other instanceof GridModel.RelativeCoordinate)) {
-                    return false;
-                }
-
-                GridModel.RelativeCoordinate otherCoordinate = (GridModel.RelativeCoordinate) other;
-                return toComparisonValue() == otherCoordinate.toComparisonValue();
-            }
-
-            @Override
-            public int compareTo(GridModel.RelativeCoordinate other) {
-                return toComparisonValue() - other.toComparisonValue();
-            }
-        }
-
-        /**
-         * The location of a point relative to the Limits of nearby items; consists of both an x- and
-         * y-RelativeCoordinateLocation.
-         */
-        private class RelativePoint {
-            final GridModel.RelativeCoordinate xLocation;
-            final GridModel.RelativeCoordinate yLocation;
-
-            RelativePoint(Point point) {
-                this.xLocation = new RelativeCoordinate(mColumnBounds, point.x);
-                this.yLocation = new RelativeCoordinate(mRowBounds, point.y);
-            }
-
-            @Override
-            public boolean equals(Object other) {
-                if (!(other instanceof RelativePoint)) {
-                    return false;
-                }
-
-                RelativePoint otherPoint = (RelativePoint) other;
-                return xLocation.equals(otherPoint.xLocation) && yLocation.equals(otherPoint.yLocation);
-            }
-        }
-
-        /**
-         * Generates a rectangle which contains the items selected by the pointer and origin.
-         * @return The rectangle, or null if no items were selected.
-         */
-        private Rect computeBounds() {
-            Rect rect = new Rect();
-            rect.left = getCoordinateValue(
-                    min(mRelativeOrigin.xLocation, mRelativePointer.xLocation),
-                    mColumnBounds,
-                    true);
-            rect.right = getCoordinateValue(
-                    max(mRelativeOrigin.xLocation, mRelativePointer.xLocation),
-                    mColumnBounds,
-                    false);
-            rect.top = getCoordinateValue(
-                    min(mRelativeOrigin.yLocation, mRelativePointer.yLocation),
-                    mRowBounds,
-                    true);
-            rect.bottom = getCoordinateValue(
-                    max(mRelativeOrigin.yLocation, mRelativePointer.yLocation),
-                    mRowBounds,
-                    false);
-            return rect;
-        }
-
-        /**
-         * Computes the corner of the selection nearest the origin.
-         * @return
-         */
-        private int computeCornerNearestOrigin() {
-            int cornerValue = 0;
-
-            if (mRelativeOrigin.yLocation ==
-                    min(mRelativeOrigin.yLocation, mRelativePointer.yLocation)) {
-                cornerValue |= UPPER;
-            } else {
-                cornerValue |= LOWER;
-            }
-
-            if (mRelativeOrigin.xLocation ==
-                    min(mRelativeOrigin.xLocation, mRelativePointer.xLocation)) {
-                cornerValue |= LEFT;
-            } else {
-                cornerValue |= RIGHT;
-            }
-
-            return cornerValue;
-        }
-
-        private GridModel.RelativeCoordinate min(GridModel.RelativeCoordinate first, GridModel.RelativeCoordinate second) {
-            return first.compareTo(second) < 0 ? first : second;
-        }
-
-        private GridModel.RelativeCoordinate max(GridModel.RelativeCoordinate first, GridModel.RelativeCoordinate second) {
-            return first.compareTo(second) > 0 ? first : second;
-        }
-
-        /**
-         * @return The absolute coordinate (i.e., the x- or y-value) of the given relative
-         *     coordinate.
-         */
-        private int getCoordinateValue(GridModel.RelativeCoordinate coordinate,
-                List<GridModel.Limits> limitsList, boolean isStartOfRange) {
-            switch (coordinate.type) {
-                case RelativeCoordinate.BEFORE_FIRST_ITEM:
-                    return limitsList.get(0).lowerLimit;
-                case RelativeCoordinate.AFTER_LAST_ITEM:
-                    return limitsList.get(limitsList.size() - 1).upperLimit;
-                case RelativeCoordinate.BETWEEN_TWO_ITEMS:
-                    if (isStartOfRange) {
-                        return coordinate.limitsAfterCoordinate.lowerLimit;
-                    } else {
-                        return coordinate.limitsBeforeCoordinate.upperLimit;
-                    }
-                case RelativeCoordinate.WITHIN_LIMITS:
-                    return coordinate.limitsBeforeCoordinate.lowerLimit;
-            }
-
-            throw new RuntimeException("Invalid coordinate value.");
-        }
-
-        private boolean areItemsCoveredByBand(
-                RelativePoint first, RelativePoint second) {
-            return doesCoordinateLocationCoverItems(first.xLocation, second.xLocation) &&
-                    doesCoordinateLocationCoverItems(first.yLocation, second.yLocation);
-        }
-
-        private boolean doesCoordinateLocationCoverItems(
-                GridModel.RelativeCoordinate pointerCoordinate,
-                GridModel.RelativeCoordinate originCoordinate) {
-            if (pointerCoordinate.type == RelativeCoordinate.BEFORE_FIRST_ITEM &&
-                    originCoordinate.type == RelativeCoordinate.BEFORE_FIRST_ITEM) {
-                return false;
-            }
-
-            if (pointerCoordinate.type == RelativeCoordinate.AFTER_LAST_ITEM &&
-                    originCoordinate.type == RelativeCoordinate.AFTER_LAST_ITEM) {
-                return false;
-            }
-
-            if (pointerCoordinate.type == RelativeCoordinate.BETWEEN_TWO_ITEMS &&
-                    originCoordinate.type == RelativeCoordinate.BETWEEN_TWO_ITEMS &&
-                    pointerCoordinate.limitsBeforeCoordinate.equals(
-                            originCoordinate.limitsBeforeCoordinate) &&
-                    pointerCoordinate.limitsAfterCoordinate.equals(
-                            originCoordinate.limitsAfterCoordinate)) {
-                return false;
-            }
-
-            return true;
-        }
-    }
-
-    /**
-     * Provides functionality for BandController. Exists primarily to tests that are
-     * fully isolated from RecyclerView.
-     */
-    interface SelectionEnvironment extends ScrollActionDelegate {
-        void showBand(Rect rect);
-        void hideBand();
-        void addOnScrollListener(RecyclerView.OnScrollListener listener);
-        void removeOnScrollListener(RecyclerView.OnScrollListener listener);
-        int getHeight();
-        void invalidateView();
-        Point createAbsolutePoint(Point relativePoint);
-        Rect getAbsoluteRectForChildViewAt(int index);
-        int getAdapterPositionAt(int index);
-        int getColumnCount();
-        int getChildCount();
-        int getVisibleChildCount();
-        /**
-         * Layout items are excluded from the GridModel.
-         */
-        boolean isLayoutItem(int adapterPosition);
-        /**
-         * Items may be in the adapter, but without an attached view.
-         */
-        boolean hasView(int adapterPosition);
-    }
-
-    /** Recycler view facade implementation backed by good ol' RecyclerView. */
-    private static final class RuntimeSelectionEnvironment implements SelectionEnvironment {
-
-        private final RecyclerView mView;
-        private final Drawable mBand;
-
-        private boolean mIsOverlayShown = false;
-
-        RuntimeSelectionEnvironment(RecyclerView view) {
-            mView = view;
-            mBand = mView.getContext().getTheme().getDrawable(R.drawable.band_select_overlay);
-        }
-
-        @Override
-        public int getAdapterPositionAt(int index) {
-            return mView.getChildAdapterPosition(mView.getChildAt(index));
-        }
-
-        @Override
-        public void addOnScrollListener(RecyclerView.OnScrollListener listener) {
-            mView.addOnScrollListener(listener);
-        }
-
-        @Override
-        public void removeOnScrollListener(RecyclerView.OnScrollListener listener) {
-            mView.removeOnScrollListener(listener);
-        }
-
-        @Override
-        public Point createAbsolutePoint(Point relativePoint) {
-            return new Point(relativePoint.x + mView.computeHorizontalScrollOffset(),
-                    relativePoint.y + mView.computeVerticalScrollOffset());
-        }
-
-        @Override
-        public Rect getAbsoluteRectForChildViewAt(int index) {
-            final View child = mView.getChildAt(index);
-            final Rect childRect = new Rect();
-            child.getHitRect(childRect);
-            childRect.left += mView.computeHorizontalScrollOffset();
-            childRect.right += mView.computeHorizontalScrollOffset();
-            childRect.top += mView.computeVerticalScrollOffset();
-            childRect.bottom += mView.computeVerticalScrollOffset();
-            return childRect;
-        }
-
-        @Override
-        public int getChildCount() {
-            return mView.getAdapter().getItemCount();
-        }
-
-        @Override
-        public int getVisibleChildCount() {
-            return mView.getChildCount();
-        }
-
-        @Override
-        public int getColumnCount() {
-            RecyclerView.LayoutManager layoutManager = mView.getLayoutManager();
-            if (layoutManager instanceof GridLayoutManager) {
-                return ((GridLayoutManager) layoutManager).getSpanCount();
-            }
-
-            // Otherwise, it is a list with 1 column.
-            return 1;
-        }
-
-        @Override
-        public int getHeight() {
-            return mView.getHeight();
-        }
-
-        @Override
-        public void invalidateView() {
-            mView.invalidate();
-        }
-
-        @Override
-        public void runAtNextFrame(Runnable r) {
-            mView.postOnAnimation(r);
-        }
-
-        @Override
-        public void removeCallback(Runnable r) {
-            mView.removeCallbacks(r);
-        }
-
-        @Override
-        public void scrollBy(int dy) {
-            mView.scrollBy(0, dy);
-        }
-
-        @Override
-        public void showBand(Rect rect) {
-            mBand.setBounds(rect);
-
-            if (!mIsOverlayShown) {
-                mView.getOverlay().add(mBand);
-            }
-        }
-
-        @Override
-        public void hideBand() {
-            mView.getOverlay().remove(mBand);
-        }
-
-        @Override
-        public boolean isLayoutItem(int pos) {
-            // The band selection model only operates on documents and directories. Exclude other
-            // types of adapter items (e.g. whitespace items like dividers).
-            RecyclerView.ViewHolder vh = mView.findViewHolderForAdapterPosition(pos);
-            switch (vh.getItemViewType()) {
-                case ITEM_TYPE_DOCUMENT:
-                case ITEM_TYPE_DIRECTORY:
-                    return false;
-                default:
-                    return true;
-            }
-        }
-
-        @Override
-        public boolean hasView(int pos) {
-            return mView.findViewHolderForAdapterPosition(pos) != null;
-        }
-    }
-}
\ No newline at end of file
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryDragListener.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryDragListener.java
deleted file mode 100644
index f0a7aae..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryDragListener.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.view.DragEvent;
-import android.view.View;
-
-import com.android.documentsui.ItemDragListener;
-
-class DirectoryDragListener extends ItemDragListener<DirectoryFragment> {
-
-    DirectoryDragListener(DirectoryFragment fragment) {
-        super(fragment);
-    }
-
-    @Override
-    public boolean onDrag(View v, DragEvent event) {
-        final boolean result = super.onDrag(v, event);
-
-        if (event.getAction() == DragEvent.ACTION_DRAG_STARTED) {
-            mDragHost.dragStarted();
-        } else if (event.getAction() == DragEvent.ACTION_DRAG_ENDED) {
-            // getResult() is true if drag was accepted
-            mDragHost.dragStopped(event.getResult());
-        }
-
-        return result;
-    }
-
-    @Override
-    public boolean handleDropEventChecked(View v, DragEvent event) {
-        return mDragHost.handleDropEvent(v, event);
-    }
-}
\ No newline at end of file
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java
deleted file mode 100644
index db19881..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java
+++ /dev/null
@@ -1,1711 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.State.MODE_GRID;
-import static com.android.documentsui.State.MODE_LIST;
-import static com.android.documentsui.State.SORT_ORDER_UNKNOWN;
-import static com.android.documentsui.model.DocumentInfo.getCursorInt;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
-
-import android.annotation.IntDef;
-import android.annotation.StringRes;
-import android.app.Activity;
-import android.app.ActivityManager;
-import android.app.AlertDialog;
-import android.app.Fragment;
-import android.app.FragmentManager;
-import android.app.FragmentTransaction;
-import android.app.LoaderManager.LoaderCallbacks;
-import android.content.ClipData;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.Loader;
-import android.database.Cursor;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Parcelable;
-import android.provider.DocumentsContract;
-import android.provider.DocumentsContract.Document;
-import android.support.v13.view.DragStartHelper;
-import android.support.v4.widget.SwipeRefreshLayout;
-import android.support.v7.widget.GridLayoutManager;
-import android.support.v7.widget.GridLayoutManager.SpanSizeLookup;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.RecyclerListener;
-import android.support.v7.widget.RecyclerView.ViewHolder;
-import android.text.BidiFormatter;
-import android.text.TextUtils;
-import android.util.Log;
-import android.util.SparseArray;
-import android.view.ActionMode;
-import android.view.ContextMenu;
-import android.view.DragEvent;
-import android.view.HapticFeedbackConstants;
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
-import android.widget.Toolbar;
-
-import com.android.documentsui.BaseActivity;
-import com.android.documentsui.DirectoryLoader;
-import com.android.documentsui.DirectoryResult;
-import com.android.documentsui.DocumentsActivity;
-import com.android.documentsui.DocumentsApplication;
-import com.android.documentsui.Events.InputEvent;
-import com.android.documentsui.Events.MotionInputEvent;
-import com.android.documentsui.ItemDragListener;
-import com.android.documentsui.MenuManager;
-import com.android.documentsui.Menus;
-import com.android.documentsui.MessageBar;
-import com.android.documentsui.Metrics;
-import com.android.documentsui.MimePredicate;
-import com.android.documentsui.R;
-import com.android.documentsui.RecentsLoader;
-import com.android.documentsui.RetainedState;
-import com.android.documentsui.RootsCache;
-import com.android.documentsui.Shared;
-import com.android.documentsui.Snackbars;
-import com.android.documentsui.State;
-import com.android.documentsui.State.ViewMode;
-import com.android.documentsui.ThumbnailCache;
-import com.android.documentsui.clipping.DocumentClipper;
-import com.android.documentsui.clipping.UrisSupplier;
-import com.android.documentsui.dirlist.MultiSelectManager.Selection;
-import com.android.documentsui.dirlist.UserInputHandler.DocumentDetails;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.RootInfo;
-import com.android.documentsui.services.FileOperation;
-import com.android.documentsui.services.FileOperationService;
-import com.android.documentsui.services.FileOperationService.OpType;
-import com.android.documentsui.services.FileOperations;
-
-import java.io.IOException;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-import java.util.function.Function;
-
-import javax.annotation.Nullable;
-
-/**
- * Display the documents inside a single directory.
- */
-public class DirectoryFragment extends Fragment
-        implements DocumentsAdapter.Environment, LoaderCallbacks<DirectoryResult>,
-        ItemDragListener.DragHost, SwipeRefreshLayout.OnRefreshListener {
-
-    @IntDef(flag = true, value = {
-            TYPE_NORMAL,
-            TYPE_RECENT_OPEN
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface ResultType {}
-    public static final int TYPE_NORMAL = 1;
-    public static final int TYPE_RECENT_OPEN = 2;
-
-    @IntDef(flag = true, value = {
-            REQUEST_COPY_DESTINATION
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface RequestCode {}
-    public static final int REQUEST_COPY_DESTINATION = 1;
-
-    private static final String TAG = "DirectoryFragment";
-    private static final int LOADER_ID = 42;
-
-    private static final int CACHE_EVICT_LIMIT = 100;
-    private static final int REFRESH_SPINNER_DISMISS_DELAY = 500;
-
-    private Model mModel;
-    private MultiSelectManager mSelectionMgr;
-    private Model.UpdateListener mModelUpdateListener = new ModelUpdateListener();
-    private UserInputHandler<InputEvent> mInputHandler;
-    private SelectionModeListener mSelectionModeListener;
-    private FocusManager mFocusManager;
-
-    private IconHelper mIconHelper;
-
-    private SwipeRefreshLayout mRefreshLayout;
-    private View mEmptyView;
-    private RecyclerView mRecView;
-    private ListeningGestureDetector mGestureDetector;
-
-    private String mStateKey;
-
-    private int mLastSortOrder = SORT_ORDER_UNKNOWN;
-    private DocumentsAdapter mAdapter;
-    private FragmentTuner mTuner;
-    private DocumentClipper mClipper;
-    private GridLayoutManager mLayout;
-    private int mColumnCount = 1;  // This will get updated when layout changes.
-
-    private LayoutInflater mInflater;
-    private MessageBar mMessageBar;
-    private View mProgressBar;
-
-    // Directory fragment state is defined by: root, document, query, type, selection
-    private @ResultType int mType = TYPE_NORMAL;
-    private RootInfo mRoot;
-    private DocumentInfo mDocument;
-    private String mQuery = null;
-    // Note, we use !null to indicate that selection was restored (from rotation).
-    // So don't fiddle with this field unless you've got the bigger picture in mind.
-    private @Nullable Selection mRestoredSelection = null;
-    // Here we save the clip details of moveTo/copyTo actions when picker shows up.
-    // This will be written to saved instance.
-    private @Nullable FileOperation mPendingOperation;
-    private boolean mSearchMode = false;
-
-    private @Nullable BandController mBandController;
-    private @Nullable ActionMode mActionMode;
-
-    private DragScrollListener mOnDragListener;
-    private MenuManager mMenuManager;
-
-    @Override
-    public View onCreateView(
-            LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-        mInflater = inflater;
-        final View view = inflater.inflate(R.layout.fragment_directory, container, false);
-
-        mMessageBar = MessageBar.create(getChildFragmentManager());
-        mProgressBar = view.findViewById(R.id.progressbar);
-
-        mRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.refresh_layout);
-        mRefreshLayout.setOnRefreshListener(this);
-
-        mEmptyView = view.findViewById(android.R.id.empty);
-        mRecView = (RecyclerView) view.findViewById(R.id.dir_list);
-        mRecView.setRecyclerListener(
-                new RecyclerListener() {
-                    @Override
-                    public void onViewRecycled(ViewHolder holder) {
-                        cancelThumbnailTask(holder.itemView);
-                    }
-                });
-
-        mRecView.setItemAnimator(new DirectoryItemAnimator(getActivity()));
-
-        mOnDragListener = DragScrollListener.create(
-                getActivity(), new DirectoryDragListener(this), mRecView);
-
-        // Make the recycler and the empty views responsive to drop events.
-        mRecView.setOnDragListener(mOnDragListener);
-        mEmptyView.setOnDragListener(mOnDragListener);
-
-        return view;
-    }
-
-    @Override
-    public void onDestroyView() {
-        mSelectionMgr.clearSelection();
-
-        // Cancel any outstanding thumbnail requests
-        final int count = mRecView.getChildCount();
-        for (int i = 0; i < count; i++) {
-            final View view = mRecView.getChildAt(i);
-            cancelThumbnailTask(view);
-        }
-
-        super.onDestroyView();
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-
-        final Context context = getActivity();
-        final State state = getDisplayState();
-
-        // Read arguments when object created for the first time.
-        // Restore state if fragment recreated.
-        Bundle args = savedInstanceState == null ? getArguments() : savedInstanceState;
-        mRoot = args.getParcelable(Shared.EXTRA_ROOT);
-        mDocument = args.getParcelable(Shared.EXTRA_DOC);
-        mStateKey = buildStateKey(mRoot, mDocument);
-        mQuery = args.getString(Shared.EXTRA_QUERY);
-        mType = args.getInt(Shared.EXTRA_TYPE);
-        mSearchMode = args.getBoolean(Shared.EXTRA_SEARCH_MODE);
-        mPendingOperation = args.getParcelable(FileOperationService.EXTRA_OPERATION);
-
-        // Restore any selection we may have squirreled away in retained state.
-        @Nullable RetainedState retained = getBaseActivity().getRetainedState();
-        if (retained != null && retained.hasSelection()) {
-            // We claim the selection for ourselves and null it out once used
-            // so we don't have a rando selection hanging around in RetainedState.
-            mRestoredSelection = retained.selection;
-            retained.selection = null;
-        }
-
-        mIconHelper = new IconHelper(context, MODE_GRID);
-
-        mAdapter = new SectionBreakDocumentsAdapterWrapper(
-                this, new ModelBackedDocumentsAdapter(this, mIconHelper));
-
-        mRecView.setAdapter(mAdapter);
-
-        mLayout = new GridLayoutManager(getContext(), mColumnCount);
-        SpanSizeLookup lookup = mAdapter.createSpanSizeLookup();
-        if (lookup != null) {
-            mLayout.setSpanSizeLookup(lookup);
-        }
-        mRecView.setLayoutManager(mLayout);
-
-        // TODO: instead of inserting the view into the constructor, extract listener-creation code
-        // and set the listener on the view after the fact.  Then the view doesn't need to be passed
-        // into the selection manager.
-        mSelectionMgr = new MultiSelectManager(
-                mAdapter,
-                state.allowMultiple
-                    ? MultiSelectManager.MODE_MULTIPLE
-                    : MultiSelectManager.MODE_SINGLE);
-
-        // Make sure this is done after the RecyclerView is set up.
-        mFocusManager = new FocusManager(context, mRecView, mModel);
-
-        mInputHandler = new UserInputHandler<>(
-                mSelectionMgr,
-                mFocusManager,
-                new Function<MotionEvent, InputEvent>() {
-                    @Override
-                    public InputEvent apply(MotionEvent t) {
-                        return MotionInputEvent.obtain(t, mRecView);
-                    }
-                },
-                this::getTarget,
-                this::canSelect,
-                this::onRightClick,
-                this::onActivate,
-                (DocumentDetails ignored) -> {
-                    return onDeleteSelectedDocuments();
-                });
-
-        mGestureDetector =
-                new ListeningGestureDetector(this.getContext(), mDragHelper, mInputHandler);
-
-        mRecView.addOnItemTouchListener(mGestureDetector);
-        mEmptyView.setOnTouchListener(mGestureDetector);
-
-        if (state.allowMultiple) {
-            mBandController = new BandController(mRecView, mAdapter, mSelectionMgr);
-        }
-
-        mSelectionModeListener = new SelectionModeListener();
-        mSelectionMgr.addCallback(mSelectionModeListener);
-
-        mModel = new Model();
-        mModel.addUpdateListener(mAdapter);
-        mModel.addUpdateListener(mModelUpdateListener);
-
-        final BaseActivity activity = getBaseActivity();
-        mTuner = activity.createFragmentTuner();
-        mMenuManager = activity.getMenuManager();
-        mClipper = DocumentsApplication.getDocumentClipper(getContext());
-
-        final ActivityManager am = (ActivityManager) context.getSystemService(
-                Context.ACTIVITY_SERVICE);
-        boolean svelte = am.isLowRamDevice() && (mType == TYPE_RECENT_OPEN);
-        mIconHelper.setThumbnailsEnabled(!svelte);
-
-        // Kick off loader at least once
-        getLoaderManager().restartLoader(LOADER_ID, null, this);
-    }
-
-    public void retainState(RetainedState state) {
-        state.selection = mSelectionMgr.getSelection(new Selection());
-    }
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-
-        outState.putInt(Shared.EXTRA_TYPE, mType);
-        outState.putParcelable(Shared.EXTRA_ROOT, mRoot);
-        outState.putParcelable(Shared.EXTRA_DOC, mDocument);
-        outState.putString(Shared.EXTRA_QUERY, mQuery);
-        outState.putBoolean(Shared.EXTRA_SEARCH_MODE, mSearchMode);
-        outState.putParcelable(FileOperationService.EXTRA_OPERATION, mPendingOperation);
-    }
-
-    @Override
-    public void onActivityResult(@RequestCode int requestCode, int resultCode, Intent data) {
-        switch (requestCode) {
-            case REQUEST_COPY_DESTINATION:
-                handleCopyResult(resultCode, data);
-                break;
-            default:
-                throw new UnsupportedOperationException("Unknown request code: " + requestCode);
-        }
-    }
-
-    @Override
-    public void onCreateContextMenu(ContextMenu menu,
-            View v,
-            ContextMenu.ContextMenuInfo menuInfo) {
-        super.onCreateContextMenu(menu, v, menuInfo);
-        MenuInflater inflater = getActivity().getMenuInflater();
-        inflater.inflate(R.menu.context_menu, menu);
-
-        menu.add(Menu.NONE, R.id.menu_create_dir, Menu.NONE, R.string.menu_create_dir);
-        menu.add(Menu.NONE, R.id.menu_delete, Menu.NONE, R.string.menu_delete);
-        menu.add(Menu.NONE, R.id.menu_rename, Menu.NONE, R.string.menu_rename);
-
-        if (v == mRecView || v == mEmptyView) {
-            mMenuManager.updateContextMenu(menu, null, getBaseActivity().getDirectoryDetails());
-        } else {
-            mMenuManager.updateContextMenu(menu, mSelectionModeListener,
-                    getBaseActivity().getDirectoryDetails());
-        }
-    }
-
-    @Override
-    public boolean onContextItemSelected(MenuItem item) {
-        return handleMenuItemClick(item);
-    }
-
-    private void handleCopyResult(int resultCode, Intent data) {
-
-        FileOperation operation = mPendingOperation;
-        mPendingOperation = null;
-
-        if (resultCode == Activity.RESULT_CANCELED || data == null) {
-            // User pressed the back button or otherwise cancelled the destination pick. Don't
-            // proceed with the copy.
-            operation.dispose();
-            return;
-        }
-
-        operation.setDestination(data.getParcelableExtra(Shared.EXTRA_STACK));
-
-        BaseActivity activity = getBaseActivity();
-        FileOperations.start(activity, operation, activity.fileOpCallback);
-    }
-
-    protected boolean onRightClick(InputEvent e) {
-        if (e.getItemPosition() != RecyclerView.NO_POSITION) {
-            final DocumentHolder doc = getTarget(e);
-            if (!mSelectionMgr.getSelection().contains(doc.modelId)) {
-                mSelectionMgr.replaceSelection(Collections.singleton(doc.modelId));
-            }
-
-            // We are registering for context menu here so long-press doesn't trigger this
-            // floating context menu, and then quickly unregister right afterwards
-            registerForContextMenu(doc.itemView);
-            mRecView.showContextMenuForChild(doc.itemView,
-                    e.getX() - doc.itemView.getLeft(), e.getY() - doc.itemView.getTop());
-            unregisterForContextMenu(doc.itemView);
-            return true;
-        }
-
-        // If there was no corresponding item pos, that means user right-clicked on the blank
-        // pane
-        // We would want to show different options then, and not select any item
-        // The blank pane could be the recyclerView or the emptyView, so we need to register
-        // according to whichever one is visible
-        if (mEmptyView.getVisibility() == View.VISIBLE) {
-            registerForContextMenu(mEmptyView);
-            mEmptyView.showContextMenu(e.getX(), e.getY());
-            unregisterForContextMenu(mEmptyView);
-            return true;
-        }
-
-        registerForContextMenu(mRecView);
-        mRecView.showContextMenu(e.getX(), e.getY());
-        unregisterForContextMenu(mRecView);
-        return true;
-    }
-
-    private boolean handleViewItem(String id) {
-        final Cursor cursor = mModel.getItem(id);
-
-        if (cursor == null) {
-            Log.w(TAG, "Can't view item. Can't obtain cursor for modeId" + id);
-            return false;
-        }
-
-        final String docMimeType = getCursorString(cursor, Document.COLUMN_MIME_TYPE);
-        final int docFlags = getCursorInt(cursor, Document.COLUMN_FLAGS);
-        if (mTuner.isDocumentEnabled(docMimeType, docFlags)) {
-            final DocumentInfo doc = DocumentInfo.fromDirectoryCursor(cursor);
-            getBaseActivity().onDocumentPicked(doc, mModel);
-            mSelectionMgr.clearSelection();
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public void onStop() {
-        super.onStop();
-
-        // Remember last scroll location
-        final SparseArray<Parcelable> container = new SparseArray<Parcelable>();
-        getView().saveHierarchyState(container);
-        final State state = getDisplayState();
-        state.dirState.put(mStateKey, container);
-    }
-
-    public void onDisplayStateChanged() {
-        updateDisplayState();
-    }
-
-    public void onSortOrderChanged() {
-        // Sort order is implemented as a sorting wrapper around directory
-        // results. So when sort order changes, we force a reload of the directory.
-        getLoaderManager().restartLoader(LOADER_ID, null, this);
-    }
-
-    public void onViewModeChanged() {
-        // Mode change is just visual change; no need to kick loader.
-        updateDisplayState();
-    }
-
-    private void updateDisplayState() {
-        State state = getDisplayState();
-        updateLayout(state.derivedMode);
-        mRecView.setAdapter(mAdapter);
-    }
-
-    /**
-     * Updates the layout after the view mode switches.
-     * @param mode The new view mode.
-     */
-    private void updateLayout(@ViewMode int mode) {
-        mColumnCount = calculateColumnCount(mode);
-        if (mLayout != null) {
-            mLayout.setSpanCount(mColumnCount);
-        }
-
-        int pad = getDirectoryPadding(mode);
-        mRecView.setPadding(pad, pad, pad, pad);
-        mRecView.requestLayout();
-        if (mBandController != null) {
-            mBandController.handleLayoutChanged();
-        }
-        mIconHelper.setViewMode(mode);
-    }
-
-    private int calculateColumnCount(@ViewMode int mode) {
-        if (mode == MODE_LIST) {
-            // List mode is a "grid" with 1 column.
-            return 1;
-        }
-
-        int cellWidth = getResources().getDimensionPixelSize(R.dimen.grid_width);
-        int cellMargin = 2 * getResources().getDimensionPixelSize(R.dimen.grid_item_margin);
-        int viewPadding = mRecView.getPaddingLeft() + mRecView.getPaddingRight();
-
-        // RecyclerView sometimes gets a width of 0 (see b/27150284).  Clamp so that we always lay
-        // out the grid with at least 2 columns.
-        int columnCount = Math.max(2,
-                (mRecView.getWidth() - viewPadding) / (cellWidth + cellMargin));
-
-        return columnCount;
-    }
-
-    private int getDirectoryPadding(@ViewMode int mode) {
-        switch (mode) {
-            case MODE_GRID:
-                return getResources().getDimensionPixelSize(R.dimen.grid_container_padding);
-            case MODE_LIST:
-                return getResources().getDimensionPixelSize(R.dimen.list_container_padding);
-            default:
-                throw new IllegalArgumentException("Unsupported layout mode: " + mode);
-        }
-    }
-
-    @Override
-    public int getColumnCount() {
-        return mColumnCount;
-    }
-
-    // Support method to replace getOwner().foo() with something
-    // slightly less clumsy like: getOwner().foo().
-    private BaseActivity getBaseActivity() {
-        return (BaseActivity) getActivity();
-    }
-
-    /**
-     * Manages the integration between our ActionMode and MultiSelectManager, initiating
-     * ActionMode when there is a selection, canceling it when there is no selection,
-     * and clearing selection when action mode is explicitly exited by the user.
-     */
-    private final class SelectionModeListener implements MultiSelectManager.Callback,
-            ActionMode.Callback, MenuManager.SelectionDetails {
-
-        private Selection mSelected = new Selection();
-
-        // Partial files are files that haven't been fully downloaded.
-        private int mPartialCount = 0;
-        private int mDirectoryCount = 0;
-        private int mNoDeleteCount = 0;
-        private int mNoRenameCount = 0;
-
-        private Menu mMenu;
-
-        @Override
-        public boolean onBeforeItemStateChange(String modelId, boolean selected) {
-            if (selected) {
-                final Cursor cursor = mModel.getItem(modelId);
-                if (cursor == null) {
-                    Log.w(TAG, "Can't obtain cursor for modelId: " + modelId);
-                    return false;
-                }
-
-                final String docMimeType = getCursorString(cursor, Document.COLUMN_MIME_TYPE);
-                final int docFlags = getCursorInt(cursor, Document.COLUMN_FLAGS);
-                if (!mTuner.canSelectType(docMimeType, docFlags)) {
-                    return false;
-                }
-                return mTuner.canSelectType(docMimeType, docFlags);
-            }
-            return true;
-        }
-
-        @Override
-        public void onItemStateChanged(String modelId, boolean selected) {
-            final Cursor cursor = mModel.getItem(modelId);
-            if (cursor == null) {
-                Log.w(TAG, "Model returned null cursor for document: " + modelId
-                        + ". Ignoring state changed event.");
-                return;
-            }
-
-            // TODO: Should this be happening in onSelectionChanged? Technically this callback is
-            // triggered on "silent" selection updates (i.e. we might be reacting to unfinalized
-            // selection changes here)
-            final String mimeType = getCursorString(cursor, Document.COLUMN_MIME_TYPE);
-            if (MimePredicate.isDirectoryType(mimeType)) {
-                mDirectoryCount += selected ? 1 : -1;
-            }
-
-            final int docFlags = getCursorInt(cursor, Document.COLUMN_FLAGS);
-            if ((docFlags & Document.FLAG_PARTIAL) != 0) {
-                mPartialCount += selected ? 1 : -1;
-            }
-            if ((docFlags & Document.FLAG_SUPPORTS_DELETE) == 0) {
-                mNoDeleteCount += selected ? 1 : -1;
-            }
-            if ((docFlags & Document.FLAG_SUPPORTS_RENAME) == 0) {
-                mNoRenameCount += selected ? 1 : -1;
-            }
-        }
-
-        @Override
-        public void onSelectionChanged() {
-            mSelectionMgr.getSelection(mSelected);
-            if (mSelected.size() > 0) {
-                if (DEBUG) Log.d(TAG, "Maybe starting action mode.");
-                if (mActionMode == null) {
-                    if (DEBUG) Log.d(TAG, "Yeah. Starting action mode.");
-                    mActionMode = getActivity().startActionMode(this);
-                }
-                updateActionMenu();
-            } else {
-                if (DEBUG) Log.d(TAG, "Finishing action mode.");
-                if (mActionMode != null) {
-                    mActionMode.finish();
-                }
-            }
-
-            if (mActionMode != null) {
-                assert(!mSelected.isEmpty());
-                final String title = Shared.getQuantityString(getActivity(),
-                        R.plurals.elements_selected, mSelected.size());
-                mActionMode.setTitle(title);
-                mRecView.announceForAccessibility(title);
-            }
-        }
-
-        // Called when the user exits the action mode
-        @Override
-        public void onDestroyActionMode(ActionMode mode) {
-            if (DEBUG) Log.d(TAG, "Handling action mode destroyed.");
-            mActionMode = null;
-            // clear selection
-            mSelectionMgr.clearSelection();
-            mSelected.clear();
-
-            mDirectoryCount = 0;
-            mPartialCount = 0;
-            mNoDeleteCount = 0;
-            mNoRenameCount = 0;
-
-            // Re-enable TalkBack for the toolbars, as they are no longer covered by action mode.
-            final Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
-            toolbar.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO);
-
-            // This toolbar is not present in the fixed_layout
-            final Toolbar rootsToolbar = (Toolbar) getActivity().findViewById(R.id.roots_toolbar);
-            if (rootsToolbar != null) {
-                rootsToolbar.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_AUTO);
-            }
-        }
-
-        @Override
-        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
-            if (mRestoredSelection != null) {
-                // This is a careful little song and dance to avoid haptic feedback
-                // when selection has been restored after rotation. We're
-                // also responsible for cleaning up restored selection so the
-                // object dones't unnecessarily hang around.
-                mRestoredSelection = null;
-            } else {
-                mRecView.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
-            }
-
-            int size = mSelectionMgr.getSelection().size();
-            mode.getMenuInflater().inflate(R.menu.mode_directory, menu);
-            mode.setTitle(TextUtils.formatSelectedCount(size));
-
-            if (size > 0) {
-                // Hide the toolbars if action mode is enabled, so TalkBack doesn't navigate to
-                // these controls when using linear navigation.
-                final Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
-                toolbar.setImportantForAccessibility(
-                        View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
-
-                // This toolbar is not present in the fixed_layout
-                final Toolbar rootsToolbar = (Toolbar) getActivity().findViewById(
-                        R.id.roots_toolbar);
-                if (rootsToolbar != null) {
-                    rootsToolbar.setImportantForAccessibility(
-                            View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
-                }
-                return true;
-            }
-
-            return false;
-        }
-
-        @Override
-        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
-            mMenu = menu;
-            updateActionMenu();
-            return true;
-        }
-
-        @Override
-        public boolean containsDirectories() {
-            return mDirectoryCount > 0;
-        }
-
-        @Override
-        public boolean containsPartialFiles() {
-            return mPartialCount > 0;
-        }
-
-        @Override
-        public boolean canDelete() {
-            return mNoDeleteCount == 0;
-        }
-
-        @Override
-        public boolean canRename() {
-            return mNoRenameCount == 0 && mSelectionMgr.getSelection().size() == 1;
-        }
-
-        private void updateActionMenu() {
-            assert(mMenu != null);
-            mMenuManager.updateActionMenu(mMenu, this);
-            Menus.disableHiddenItems(mMenu);
-        }
-
-        @Override
-        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
-            return handleMenuItemClick(item);
-        }
-    }
-
-    private boolean handleMenuItemClick(MenuItem item) {
-        Selection selection = mSelectionMgr.getSelection(new Selection());
-
-        switch (item.getItemId()) {
-            case R.id.menu_open:
-                openDocuments(selection);
-                mActionMode.finish();
-                return true;
-
-            case R.id.menu_share:
-                shareDocuments(selection);
-                // TODO: Only finish selection if share action is completed.
-                mActionMode.finish();
-                return true;
-
-            case R.id.menu_delete:
-                // deleteDocuments will end action mode if the documents are deleted.
-                // It won't end action mode if user cancels the delete.
-                deleteDocuments(selection);
-                return true;
-
-            case R.id.menu_copy_to:
-                transferDocuments(selection, FileOperationService.OPERATION_COPY);
-                // TODO: Only finish selection mode if copy-to is not canceled.
-                // Need to plum down into handling the way we do with deleteDocuments.
-                mActionMode.finish();
-                return true;
-
-            case R.id.menu_move_to:
-                // Exit selection mode first, so we avoid deselecting deleted documents.
-                mActionMode.finish();
-                transferDocuments(selection, FileOperationService.OPERATION_MOVE);
-                return true;
-
-            case R.id.menu_cut_to_clipboard:
-                cutSelectedToClipboard();
-                return true;
-
-            case R.id.menu_copy_to_clipboard:
-                copySelectedToClipboard();
-                return true;
-
-            case R.id.menu_paste_from_clipboard:
-                pasteFromClipboard();
-                return true;
-
-            case R.id.menu_select_all:
-                selectAllFiles();
-                return true;
-
-            case R.id.menu_rename:
-                // Exit selection mode first, so we avoid deselecting deleted
-                // (renamed) documents.
-                mActionMode.finish();
-                renameDocuments(selection);
-                return true;
-
-            default:
-                // See if BaseActivity can handle this particular MenuItem
-                if (!getBaseActivity().onOptionsItemSelected(item)) {
-                    if (DEBUG) Log.d(TAG, "Unhandled menu item selected: " + item);
-                    return false;
-                }
-                return true;
-        }
-    }
-
-    public final boolean onBackPressed() {
-        if (mSelectionMgr.hasSelection()) {
-            if (DEBUG) Log.d(TAG, "Clearing selection on selection manager.");
-            mSelectionMgr.clearSelection();
-            return true;
-        }
-        return false;
-    }
-
-    private void cancelThumbnailTask(View view) {
-        final ImageView iconThumb = (ImageView) view.findViewById(R.id.icon_thumb);
-        if (iconThumb != null) {
-            mIconHelper.stopLoading(iconThumb);
-        }
-    }
-
-    private void openDocuments(final Selection selected) {
-        Metrics.logUserAction(getContext(), Metrics.USER_ACTION_OPEN);
-
-        new GetDocumentsTask() {
-            @Override
-            void onDocumentsReady(List<DocumentInfo> docs) {
-                // TODO: Implement support in Files activity for opening multiple docs.
-                BaseActivity.get(DirectoryFragment.this).onDocumentsPicked(docs);
-            }
-        }.execute(selected);
-    }
-
-    private void shareDocuments(final Selection selected) {
-        Metrics.logUserAction(getContext(), Metrics.USER_ACTION_SHARE);
-
-        new GetDocumentsTask() {
-            @Override
-            void onDocumentsReady(List<DocumentInfo> docs) {
-                Intent intent;
-
-                // Filter out directories and virtual files - those can't be shared.
-                List<DocumentInfo> docsForSend = new ArrayList<>();
-                for (DocumentInfo doc: docs) {
-                    if (!doc.isDirectory() && !doc.isVirtualDocument()) {
-                        docsForSend.add(doc);
-                    }
-                }
-
-                if (docsForSend.size() == 1) {
-                    final DocumentInfo doc = docsForSend.get(0);
-
-                    intent = new Intent(Intent.ACTION_SEND);
-                    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
-                    intent.addCategory(Intent.CATEGORY_DEFAULT);
-                    intent.setType(doc.mimeType);
-                    intent.putExtra(Intent.EXTRA_STREAM, doc.derivedUri);
-
-                } else if (docsForSend.size() > 1) {
-                    intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
-                    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
-                    intent.addCategory(Intent.CATEGORY_DEFAULT);
-
-                    final ArrayList<String> mimeTypes = new ArrayList<>();
-                    final ArrayList<Uri> uris = new ArrayList<>();
-                    for (DocumentInfo doc : docsForSend) {
-                        mimeTypes.add(doc.mimeType);
-                        uris.add(doc.derivedUri);
-                    }
-
-                    intent.setType(findCommonMimeType(mimeTypes));
-                    intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
-
-                } else {
-                    return;
-                }
-
-                intent = Intent.createChooser(intent, getActivity().getText(R.string.share_via));
-                startActivity(intent);
-            }
-        }.execute(selected);
-    }
-
-    private String generateDeleteMessage(final List<DocumentInfo> docs) {
-        String message;
-        int dirsCount = 0;
-
-        for (DocumentInfo doc : docs) {
-            if (doc.isDirectory()) {
-                ++dirsCount;
-            }
-        }
-
-        if (docs.size() == 1) {
-            // Deleteing 1 file xor 1 folder in cwd
-
-            // Address b/28772371, where including user strings in message can result in
-            // broken bidirectional support.
-            String displayName = BidiFormatter.getInstance().unicodeWrap(docs.get(0).displayName);
-            message = dirsCount == 0
-                    ? getActivity().getString(R.string.delete_filename_confirmation_message,
-                            displayName)
-                    : getActivity().getString(R.string.delete_foldername_confirmation_message,
-                            displayName);
-        } else if (dirsCount == 0) {
-            // Deleting only files in cwd
-            message = Shared.getQuantityString(getActivity(),
-                    R.plurals.delete_files_confirmation_message, docs.size());
-        } else if (dirsCount == docs.size()) {
-            // Deleting only folders in cwd
-            message = Shared.getQuantityString(getActivity(),
-                    R.plurals.delete_folders_confirmation_message, docs.size());
-        } else {
-            // Deleting mixed items (files and folders) in cwd
-            message = Shared.getQuantityString(getActivity(),
-                    R.plurals.delete_items_confirmation_message, docs.size());
-        }
-        return message;
-    }
-
-    private boolean onDeleteSelectedDocuments() {
-        if (mSelectionMgr.hasSelection()) {
-            deleteDocuments(mSelectionMgr.getSelection(new Selection()));
-        }
-        return false;
-    }
-
-    private boolean onActivate(DocumentDetails doc) {
-        // Toggle selection if we're in selection mode, othewise, view item.
-        if (mSelectionMgr.hasSelection()) {
-            mSelectionMgr.toggleSelection(doc.getModelId());
-        } else {
-            handleViewItem(doc.getModelId());
-        }
-        return true;
-    }
-
-//    private boolean onSelect(DocumentDetails doc) {
-//        mSelectionMgr.toggleSelection(doc.getModelId());
-//        mSelectionMgr.setSelectionRangeBegin(doc.getAdapterPosition());
-//        return true;
-//    }
-
-    private void deleteDocuments(final Selection selected) {
-        Metrics.logUserAction(getContext(), Metrics.USER_ACTION_DELETE);
-
-        assert(!selected.isEmpty());
-
-        final DocumentInfo srcParent = getDisplayState().stack.peek();
-        new GetDocumentsTask() {
-            @Override
-            void onDocumentsReady(final List<DocumentInfo> docs) {
-
-                TextView message =
-                        (TextView) mInflater.inflate(R.layout.dialog_delete_confirmation, null);
-                message.setText(generateDeleteMessage(docs));
-
-                // For now, we implement this dialog NOT
-                // as a fragment (which can survive rotation and have its own state),
-                // but as a simple runtime dialog. So rotating a device with an
-                // active delete dialog...results in that dialog disappearing.
-                // We can do better, but don't have cycles for it now.
-                new AlertDialog.Builder(getActivity())
-                    .setView(message)
-                    .setPositiveButton(
-                         android.R.string.ok,
-                         new DialogInterface.OnClickListener() {
-                            @Override
-                            public void onClick(DialogInterface dialog, int id) {
-                                // Finish selection mode first which clears selection so we
-                                // don't end up trying to deselect deleted documents.
-                                // This is done here, rather in the onActionItemClicked
-                                // so we can avoid de-selecting items in the case where
-                                // the user cancels the delete.
-                                if (mActionMode != null) {
-                                    mActionMode.finish();
-                                } else {
-                                    Log.w(TAG, "Action mode is null before deleting documents.");
-                                }
-
-                                UrisSupplier srcs;
-                                try {
-                                    srcs = UrisSupplier.create(
-                                            selected,
-                                            mModel::getItemUri,
-                                            getContext());
-                                } catch(IOException e) {
-                                    throw new RuntimeException("Failed to create uri supplier.", e);
-                                }
-
-                                FileOperation operation = new FileOperation.Builder()
-                                        .withOpType(FileOperationService.OPERATION_DELETE)
-                                        .withDestination(getDisplayState().stack)
-                                        .withSrcs(srcs)
-                                        .withSrcParent(srcParent.derivedUri)
-                                        .build();
-
-                                BaseActivity activity = getBaseActivity();
-                                FileOperations.start(activity, operation, activity.fileOpCallback);
-                            }
-                        })
-                    .setNegativeButton(android.R.string.cancel, null)
-                    .show();
-            }
-        }.execute(selected);
-    }
-
-    private void transferDocuments(final Selection selected, final @OpType int mode) {
-        if(mode == FileOperationService.OPERATION_COPY) {
-            Metrics.logUserAction(getContext(), Metrics.USER_ACTION_COPY_TO);
-        } else if (mode == FileOperationService.OPERATION_MOVE) {
-            Metrics.logUserAction(getContext(), Metrics.USER_ACTION_MOVE_TO);
-        }
-
-        // Pop up a dialog to pick a destination.  This is inadequate but works for now.
-        // TODO: Implement a picker that is to spec.
-        final Intent intent = new Intent(
-                Shared.ACTION_PICK_COPY_DESTINATION,
-                Uri.EMPTY,
-                getActivity(),
-                DocumentsActivity.class);
-
-        UrisSupplier srcs;
-        try {
-            srcs = UrisSupplier.create(selected, mModel::getItemUri, getContext());
-        } catch(IOException e) {
-            throw new RuntimeException("Failed to create uri supplier.", e);
-        }
-
-        Uri srcParent = getDisplayState().stack.peek().derivedUri;
-        mPendingOperation = new FileOperation.Builder()
-                .withOpType(mode)
-                .withSrcParent(srcParent)
-                .withSrcs(srcs)
-                .build();
-
-        // Relay any config overrides bits present in the original intent.
-        Intent original = getActivity().getIntent();
-        if (original != null && original.hasExtra(Shared.EXTRA_PRODUCTIVITY_MODE)) {
-            intent.putExtra(
-                    Shared.EXTRA_PRODUCTIVITY_MODE,
-                    original.getBooleanExtra(Shared.EXTRA_PRODUCTIVITY_MODE, false));
-        }
-
-        // Set an appropriate title on the drawer when it is shown in the picker.
-        // Coupled with the fact that we auto-open the drawer for copy/move operations
-        // it should basically be the thing people see first.
-        int drawerTitleId = mode == FileOperationService.OPERATION_MOVE
-                ? R.string.menu_move : R.string.menu_copy;
-        intent.putExtra(DocumentsContract.EXTRA_PROMPT, getResources().getString(drawerTitleId));
-
-        new GetDocumentsTask() {
-            @Override
-            void onDocumentsReady(List<DocumentInfo> docs) {
-                // Determine if there is a directory in the set of documents
-                // to be copied? Why? Directory creation isn't supported by some roots
-                // (like Downloads). This informs DocumentsActivity (the "picker")
-                // to restrict available roots to just those with support.
-                intent.putExtra(Shared.EXTRA_DIRECTORY_COPY, hasDirectory(docs));
-                intent.putExtra(FileOperationService.EXTRA_OPERATION_TYPE, mode);
-
-                // This just identifies the type of request...we'll check it
-                // when we reveive a response.
-                startActivityForResult(intent, REQUEST_COPY_DESTINATION);
-            }
-
-        }.execute(selected);
-    }
-
-    private static boolean hasDirectory(List<DocumentInfo> docs) {
-        for (DocumentInfo info : docs) {
-            if (Document.MIME_TYPE_DIR.equals(info.mimeType)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    private void renameDocuments(Selection selected) {
-        Metrics.logUserAction(getContext(), Metrics.USER_ACTION_RENAME);
-
-        // Batch renaming not supported
-        // Rename option is only available in menu when 1 document selected
-        assert(selected.size() == 1);
-
-        new GetDocumentsTask() {
-            @Override
-            void onDocumentsReady(List<DocumentInfo> docs) {
-                RenameDocumentFragment.show(getFragmentManager(), docs.get(0));
-            }
-        }.execute(selected);
-    }
-
-    @Override
-    public void initDocumentHolder(DocumentHolder holder) {
-        holder.addKeyEventListener(mInputHandler);
-        holder.itemView.setOnFocusChangeListener(mFocusManager);
-    }
-
-    @Override
-    public void onBindDocumentHolder(DocumentHolder holder, Cursor cursor) {
-        setupDragAndDropOnDocumentView(holder.itemView, cursor);
-    }
-
-    @Override
-    public State getDisplayState() {
-        return getBaseActivity().getDisplayState();
-    }
-
-    @Override
-    public Model getModel() {
-        return mModel;
-    }
-
-    @Override
-    public boolean isDocumentEnabled(String docMimeType, int docFlags) {
-        return mTuner.isDocumentEnabled(docMimeType, docFlags);
-    }
-
-    private void showEmptyDirectory() {
-        showEmptyView(R.string.empty, R.drawable.cabinet);
-    }
-
-    private void showNoResults(RootInfo root) {
-        CharSequence msg = getContext().getResources().getText(R.string.no_results);
-        showEmptyView(String.format(String.valueOf(msg), root.title), R.drawable.cabinet);
-    }
-
-    private void showQueryError() {
-        showEmptyView(R.string.query_error, R.drawable.hourglass);
-    }
-
-    private void showEmptyView(@StringRes int id, int drawable) {
-        showEmptyView(getContext().getResources().getText(id), drawable);
-    }
-
-    private void showEmptyView(CharSequence msg, int drawable) {
-        View content = mEmptyView.findViewById(R.id.content);
-        TextView msgView = (TextView) mEmptyView.findViewById(R.id.message);
-        ImageView imageView = (ImageView) mEmptyView.findViewById(R.id.artwork);
-        msgView.setText(msg);
-        imageView.setImageResource(drawable);
-
-        mEmptyView.setVisibility(View.VISIBLE);
-        mEmptyView.requestFocus();
-        mRecView.setVisibility(View.GONE);
-    }
-
-    private void showDirectory() {
-        mEmptyView.setVisibility(View.GONE);
-        mRecView.setVisibility(View.VISIBLE);
-        mRecView.requestFocus();
-    }
-
-    private String findCommonMimeType(List<String> mimeTypes) {
-        String[] commonType = mimeTypes.get(0).split("/");
-        if (commonType.length != 2) {
-            return "*/*";
-        }
-
-        for (int i = 1; i < mimeTypes.size(); i++) {
-            String[] type = mimeTypes.get(i).split("/");
-            if (type.length != 2) continue;
-
-            if (!commonType[1].equals(type[1])) {
-                commonType[1] = "*";
-            }
-
-            if (!commonType[0].equals(type[0])) {
-                commonType[0] = "*";
-                commonType[1] = "*";
-                break;
-            }
-        }
-
-        return commonType[0] + "/" + commonType[1];
-    }
-
-    public void copySelectedToClipboard() {
-        Metrics.logUserAction(getContext(), Metrics.USER_ACTION_COPY_CLIPBOARD);
-
-        Selection selection = mSelectionMgr.getSelection(new Selection());
-        if (selection.isEmpty()) {
-            return;
-        }
-        mSelectionMgr.clearSelection();
-
-        mClipper.clipDocumentsForCopy(mModel::getItemUri, selection);
-
-        Snackbars.showDocumentsClipped(getActivity(), selection.size());
-    }
-
-    public void cutSelectedToClipboard() {
-        Metrics.logUserAction(getContext(), Metrics.USER_ACTION_CUT_CLIPBOARD);
-
-        Selection selection = mSelectionMgr.getSelection(new Selection());
-        if (selection.isEmpty()) {
-            return;
-        }
-        mSelectionMgr.clearSelection();
-
-        mClipper.clipDocumentsForCut(mModel::getItemUri, selection, getDisplayState().stack.peek());
-
-        Snackbars.showDocumentsClipped(getActivity(), selection.size());
-    }
-
-    public void pasteFromClipboard() {
-        Metrics.logUserAction(getContext(), Metrics.USER_ACTION_PASTE_CLIPBOARD);
-
-        BaseActivity activity = (BaseActivity) getActivity();
-        DocumentInfo destination = activity.getCurrentDirectory();
-        mClipper.copyFromClipboard(
-                destination, activity.getDisplayState().stack, activity.fileOpCallback);
-        getActivity().invalidateOptionsMenu();
-    }
-
-    public void selectAllFiles() {
-        Metrics.logUserAction(getContext(), Metrics.USER_ACTION_SELECT_ALL);
-
-        // Exclude disabled files
-        List<String> enabled = new ArrayList<String>();
-        for (String id : mAdapter.getModelIds()) {
-            Cursor cursor = getModel().getItem(id);
-            if (cursor == null) {
-                Log.w(TAG, "Skipping selection. Can't obtain cursor for modeId: " + id);
-                continue;
-            }
-            String docMimeType = getCursorString(cursor, Document.COLUMN_MIME_TYPE);
-            int docFlags = getCursorInt(cursor, Document.COLUMN_FLAGS);
-            if (isDocumentEnabled(docMimeType, docFlags)) {
-                enabled.add(id);
-            }
-        }
-
-        // Only select things currently visible in the adapter.
-        boolean changed = mSelectionMgr.setItemsSelected(enabled, true);
-        if (changed) {
-            updateDisplayState();
-        }
-    }
-
-    /**
-     * Attempts to restore focus on the directory listing.
-     */
-    public void requestFocus() {
-        mFocusManager.restoreLastFocus();
-    }
-
-    private void setupDragAndDropOnDocumentView(View view, Cursor cursor) {
-        final String docMimeType = getCursorString(cursor, Document.COLUMN_MIME_TYPE);
-        if (Document.MIME_TYPE_DIR.equals(docMimeType)) {
-            // Make a directory item a drop target. Drop on non-directories and empty space
-            // is handled at the list/grid view level.
-            view.setOnDragListener(mOnDragListener);
-        }
-
-        if (mTuner.dragAndDropEnabled()) {
-            // Make all items draggable.
-            view.setOnLongClickListener(onLongClickListener);
-        }
-    }
-
-    void dragStarted() {
-        // When files are selected for dragging, ActionMode is started. This obscures the breadcrumb
-        // with an ActionBar. In order to make drag and drop to the breadcrumb possible, we first
-        // end ActionMode so the breadcrumb is visible to the user.
-        if (mActionMode != null) {
-            mActionMode.finish();
-        }
-    }
-
-    void dragStopped(boolean result) {
-        if (result) {
-            mSelectionMgr.clearSelection();
-        }
-    }
-
-    @Override
-    public void runOnUiThread(Runnable runnable) {
-        getActivity().runOnUiThread(runnable);
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * In DirectoryFragment, we spring loads the hovered folder.
-     */
-    @Override
-    public void onViewHovered(View view) {
-        BaseActivity activity = (BaseActivity) getActivity();
-        if (getModelId(view) != null) {
-           activity.springOpenDirectory(getDestination(view));
-        }
-
-        activity.setRootsDrawerOpen(false);
-    }
-
-    boolean handleDropEvent(View v, DragEvent event) {
-        BaseActivity activity = (BaseActivity) getActivity();
-        activity.setRootsDrawerOpen(false);
-
-        ClipData clipData = event.getClipData();
-        assert (clipData != null);
-
-        assert(DocumentClipper.getOpType(clipData) == FileOperationService.OPERATION_COPY);
-
-        // Don't copy from the cwd into the cwd. Note: this currently doesn't work for
-        // multi-window drag, because localState isn't carried over from one process to
-        // another.
-        Object src = event.getLocalState();
-        DocumentInfo dst = getDestination(v);
-        if (Objects.equals(src, dst)) {
-            if (DEBUG) Log.d(TAG, "Drop target same as source. Ignoring.");
-            return false;
-        }
-
-        // Recognize multi-window drag and drop based on the fact that localState is not
-        // carried between processes. It will stop working when the localsState behavior
-        // is changed. The info about window should be passed in the localState then.
-        // The localState could also be null for copying from Recents in single window
-        // mode, but Recents doesn't offer this functionality (no directories).
-        Metrics.logUserAction(getContext(),
-                src == null ? Metrics.USER_ACTION_DRAG_N_DROP_MULTI_WINDOW
-                        : Metrics.USER_ACTION_DRAG_N_DROP);
-
-        mClipper.copyFromClipData(dst, getDisplayState().stack, clipData, activity.fileOpCallback);
-        return true;
-    }
-
-    private DocumentInfo getDestination(View v) {
-        String id = getModelId(v);
-        if (id != null) {
-            Cursor dstCursor = mModel.getItem(id);
-            if (dstCursor == null) {
-                Log.w(TAG, "Invalid destination. Can't obtain cursor for modelId: " + id);
-                return null;
-            }
-            return DocumentInfo.fromDirectoryCursor(dstCursor);
-        }
-
-        if (v == mRecView || v == mEmptyView) {
-            return getDisplayState().stack.peek();
-        }
-
-        return null;
-    }
-
-    @Override
-    public void setDropTargetHighlight(View v, boolean highlight) {
-        // Note: use exact comparison - this code is searching for views which are children of
-        // the RecyclerView instance in the UI.
-        if (v.getParent() == mRecView) {
-            RecyclerView.ViewHolder vh = mRecView.getChildViewHolder(v);
-            if (vh instanceof DocumentHolder) {
-                ((DocumentHolder) vh).setHighlighted(highlight);
-            }
-        }
-    }
-
-    private @Nullable DocumentHolder getTarget(InputEvent e) {
-        View childView = mRecView.findChildViewUnder(e.getX(), e.getY());
-        if (childView != null) {
-            return (DocumentHolder) mRecView.getChildViewHolder(childView);
-        } else {
-            return null;
-        }
-    }
-
-    /**
-     * Gets the model ID for a given RecyclerView item.
-     * @param view A View that is a document item view, or a child of a document item view.
-     * @return The Model ID for the given document, or null if the given view is not associated with
-     *     a document item view.
-     */
-    protected @Nullable String getModelId(View view) {
-        View itemView = mRecView.findContainingItemView(view);
-        if (itemView != null) {
-            RecyclerView.ViewHolder vh = mRecView.getChildViewHolder(itemView);
-            if (vh instanceof DocumentHolder) {
-                return ((DocumentHolder) vh).modelId;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Abstract task providing support for loading documents *off*
-     * the main thread. And if it isn't obvious, creating a list
-     * of documents (especially large lists) can be pretty expensive.
-     */
-    private abstract class GetDocumentsTask
-            extends AsyncTask<Selection, Void, List<DocumentInfo>> {
-        @Override
-        protected final List<DocumentInfo> doInBackground(Selection... selected) {
-            return mModel.getDocuments(selected[0]);
-        }
-
-        @Override
-        protected final void onPostExecute(List<DocumentInfo> docs) {
-            onDocumentsReady(docs);
-        }
-
-        abstract void onDocumentsReady(List<DocumentInfo> docs);
-    }
-
-    @Override
-    public boolean isSelected(String modelId) {
-        return mSelectionMgr.getSelection().contains(modelId);
-    }
-
-    private final class ModelUpdateListener implements Model.UpdateListener {
-        @Override
-        public void onModelUpdate(Model model) {
-            if (model.info != null || model.error != null) {
-                mMessageBar.setInfo(model.info);
-                mMessageBar.setError(model.error);
-                mMessageBar.show();
-            }
-
-            mProgressBar.setVisibility(model.isLoading() ? View.VISIBLE : View.GONE);
-
-            if (model.isEmpty()) {
-                if (mSearchMode) {
-                    showNoResults(getDisplayState().stack.root);
-                } else {
-                    showEmptyDirectory();
-                }
-            } else {
-                showDirectory();
-                mAdapter.notifyDataSetChanged();
-            }
-
-            if (!model.isLoading()) {
-                getBaseActivity().notifyDirectoryLoaded(
-                    model.doc != null ? model.doc.derivedUri : null);
-            }
-        }
-
-        @Override
-        public void onModelUpdateFailed(Exception e) {
-            showQueryError();
-        }
-    }
-
-    private Drawable getDragIcon(Selection selection) {
-        if (selection.size() == 1) {
-            DocumentInfo doc = getSingleSelectedDocument(selection);
-            return mIconHelper.getDocumentIcon(getContext(), doc);
-        }
-        return getContext().getDrawable(com.android.internal.R.drawable.ic_doc_generic);
-    }
-
-    private String getDragTitle(Selection selection) {
-        assert (!selection.isEmpty());
-        if (selection.size() == 1) {
-            DocumentInfo doc = getSingleSelectedDocument(selection);
-            return doc.displayName;
-        }
-
-        return Shared.getQuantityString(getContext(), R.plurals.elements_dragged, selection.size());
-    }
-
-    private DocumentInfo getSingleSelectedDocument(Selection selection) {
-        assert (selection.size() == 1);
-        final List<DocumentInfo> docs = mModel.getDocuments(mSelectionMgr.getSelection());
-        assert (docs.size() == 1);
-        return docs.get(0);
-    }
-
-    private DragStartHelper.OnDragStartListener mOnDragStartListener =
-            new DragStartHelper.OnDragStartListener() {
-                @Override
-                public boolean onDragStart(View v, DragStartHelper helper) {
-                    Selection selection = mSelectionMgr.getSelection();
-
-                    if (v == null) {
-                        Log.d(TAG, "Ignoring drag event, null view");
-                        return false;
-                    }
-                    if (!isSelected(getModelId(v))) {
-                        Log.d(TAG, "Ignoring drag event, unselected view.");
-                        return false;
-                    }
-
-                    // NOTE: Preparation of the ClipData object can require a lot of time
-                    // and ideally should be done in the background. Unfortunately
-                    // the current code layout and framework assumptions don't support
-                    // this. So for now, we could end up doing a bunch of i/o on main thread.
-                    v.startDragAndDrop(
-                            mClipper.getClipDataForDocuments(
-                                    mModel::getItemUri,
-                                    selection,
-                                    FileOperationService.OPERATION_COPY),
-                            new DragShadowBuilder(
-                                    getActivity(),
-                                    getDragTitle(selection),
-                                    getDragIcon(selection)),
-                            getDisplayState().stack.peek(),
-                            View.DRAG_FLAG_GLOBAL
-                                    | View.DRAG_FLAG_GLOBAL_URI_READ
-                                    | View.DRAG_FLAG_GLOBAL_URI_WRITE);
-
-                    return true;
-                }
-            };
-
-
-    private DragStartHelper mDragHelper = new DragStartHelper(null, mOnDragStartListener);
-
-    private View.OnLongClickListener onLongClickListener = new View.OnLongClickListener() {
-        @Override
-        public boolean onLongClick(View v) {
-            return mDragHelper.onLongClick(v);
-        }
-    };
-
-    private boolean canSelect(DocumentDetails doc) {
-        return canSelect(doc.getModelId());
-    }
-
-    private boolean canSelect(String modelId) {
-
-        // TODO: Combine this method with onBeforeItemStateChange, as both of them are almost
-        // the same, and responsible for the same thing (whether to select or not).
-        final Cursor cursor = mModel.getItem(modelId);
-        if (cursor == null) {
-            Log.w(TAG, "Couldn't obtain cursor for modelId: " + modelId);
-            return false;
-        }
-
-        final String docMimeType = getCursorString(cursor, Document.COLUMN_MIME_TYPE);
-        final int docFlags = getCursorInt(cursor, Document.COLUMN_FLAGS);
-        return mTuner.canSelectType(docMimeType, docFlags);
-    }
-
-    public static void showDirectory(
-            FragmentManager fm, RootInfo root, DocumentInfo doc, int anim) {
-        create(fm, TYPE_NORMAL, root, doc, null, anim);
-    }
-
-    public static void showRecentsOpen(FragmentManager fm, int anim) {
-        create(fm, TYPE_RECENT_OPEN, null, null, null, anim);
-    }
-
-    public static void reloadSearch(FragmentManager fm, RootInfo root, DocumentInfo doc,
-            String query) {
-        DirectoryFragment df = get(fm);
-
-        df.mQuery = query;
-        df.mRoot = root;
-        df.mDocument = doc;
-        df.mSearchMode =  query != null;
-        df.getLoaderManager().restartLoader(LOADER_ID, null, df);
-    }
-
-    public static void reload(FragmentManager fm, int type, RootInfo root, DocumentInfo doc,
-            String query) {
-        DirectoryFragment df = get(fm);
-        df.mType = type;
-        df.mQuery = query;
-        df.mRoot = root;
-        df.mDocument = doc;
-        df.mSearchMode =  query != null;
-        df.getLoaderManager().restartLoader(LOADER_ID, null, df);
-    }
-
-    public static void create(FragmentManager fm, int type, RootInfo root, DocumentInfo doc,
-            String query, int anim) {
-        final Bundle args = new Bundle();
-        args.putInt(Shared.EXTRA_TYPE, type);
-        args.putParcelable(Shared.EXTRA_ROOT, root);
-        args.putParcelable(Shared.EXTRA_DOC, doc);
-        args.putString(Shared.EXTRA_QUERY, query);
-        args.putParcelable(Shared.EXTRA_SELECTION, new Selection());
-
-        final FragmentTransaction ft = fm.beginTransaction();
-        AnimationView.setupAnimations(ft, anim, args);
-
-        final DirectoryFragment fragment = new DirectoryFragment();
-        fragment.setArguments(args);
-
-        ft.replace(getFragmentId(), fragment);
-        ft.commitAllowingStateLoss();
-    }
-
-    private static String buildStateKey(RootInfo root, DocumentInfo doc) {
-        final StringBuilder builder = new StringBuilder();
-        builder.append(root != null ? root.authority : "null").append(';');
-        builder.append(root != null ? root.rootId : "null").append(';');
-        builder.append(doc != null ? doc.documentId : "null");
-        return builder.toString();
-    }
-
-    public static @Nullable DirectoryFragment get(FragmentManager fm) {
-        // TODO: deal with multiple directories shown at once
-        Fragment fragment = fm.findFragmentById(getFragmentId());
-        return fragment instanceof DirectoryFragment
-                ? (DirectoryFragment) fragment
-                : null;
-    }
-
-    private static int getFragmentId() {
-        return R.id.container_directory;
-    }
-
-    @Override
-    public void onRefresh() {
-        // Remove thumbnail cache. We do this not because we're worried about stale thumbnails as it
-        // should be covered by last modified value we store in thumbnail cache, but rather to give
-        // the user a greater sense that contents are being reloaded.
-        ThumbnailCache cache = DocumentsApplication.getThumbnailCache(getContext());
-        String[] ids = mModel.getModelIds();
-        int numOfEvicts = Math.min(ids.length, CACHE_EVICT_LIMIT);
-        for (int i = 0; i < numOfEvicts; ++i) {
-            cache.removeUri(mModel.getItemUri(ids[i]));
-        }
-
-        // Trigger loading
-        getLoaderManager().restartLoader(LOADER_ID, null, this);
-    }
-
-    @Override
-    public Loader<DirectoryResult> onCreateLoader(int id, Bundle args) {
-        Context context = getActivity();
-        State state = getDisplayState();
-
-        Uri contentsUri;
-        switch (mType) {
-            case TYPE_NORMAL:
-                contentsUri = mSearchMode ? DocumentsContract.buildSearchDocumentsUri(
-                        mRoot.authority, mRoot.rootId, mQuery)
-                        : DocumentsContract.buildChildDocumentsUri(
-                                mDocument.authority, mDocument.documentId);
-                if (mTuner.managedModeEnabled()) {
-                    contentsUri = DocumentsContract.setManageMode(contentsUri);
-                }
-                return new DirectoryLoader(
-                        context, mType, mRoot, mDocument, contentsUri, state.userSortOrder,
-                        mSearchMode);
-            case TYPE_RECENT_OPEN:
-                final RootsCache roots = DocumentsApplication.getRootsCache(context);
-                return new RecentsLoader(context, roots, state);
-
-            default:
-                throw new IllegalStateException("Unknown type " + mType);
-        }
-    }
-
-    @Override
-    public void onLoadFinished(Loader<DirectoryResult> loader, DirectoryResult result) {
-        if (!isAdded()) return;
-
-        if (mSearchMode) {
-            Metrics.logUserAction(getContext(), Metrics.USER_ACTION_SEARCH);
-        }
-
-        State state = getDisplayState();
-
-        mAdapter.notifyDataSetChanged();
-        mModel.update(result);
-
-        state.derivedSortOrder = result.sortOrder;
-
-        updateLayout(state.derivedMode);
-
-        if (mRestoredSelection != null) {
-            mSelectionMgr.restoreSelection(mRestoredSelection);
-            // Note, we'll take care of cleaning up retained selection
-            // in the selection handler where we already have some
-            // specialized code to handle when selection was restored.
-        }
-
-        // Restore any previous instance state
-        final SparseArray<Parcelable> container = state.dirState.remove(mStateKey);
-        if (container != null && !getArguments().getBoolean(Shared.EXTRA_IGNORE_STATE, false)) {
-            getView().restoreHierarchyState(container);
-        } else if (mLastSortOrder != state.derivedSortOrder) {
-            // The derived sort order takes the user sort order into account, but applies
-            // directory-specific defaults when the user doesn't explicitly set the sort
-            // order. Scroll to the top if the sort order actually changed.
-            mRecView.smoothScrollToPosition(0);
-        }
-
-        mLastSortOrder = state.derivedSortOrder;
-
-        mTuner.onModelLoaded(mModel, mType, mSearchMode);
-
-        if (mRefreshLayout.isRefreshing()) {
-            new Handler().postDelayed(
-                    () -> mRefreshLayout.setRefreshing(false),
-                    REFRESH_SPINNER_DISMISS_DELAY);
-        }
-    }
-
-    @Override
-    public void onLoaderReset(Loader<DirectoryResult> loader) {
-        mModel.update(null);
-
-        mRefreshLayout.setRefreshing(false);
-    }
-  }
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryItemAnimator.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryItemAnimator.java
deleted file mode 100644
index 1135c21..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryItemAnimator.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.animation.Animator;
-import android.animation.ArgbEvaluator;
-import android.animation.ValueAnimator;
-import android.content.Context;
-import android.support.v4.util.ArrayMap;
-import android.support.v7.widget.DefaultItemAnimator;
-import android.support.v7.widget.RecyclerView;
-import android.util.TypedValue;
-
-import com.android.documentsui.R;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Performs change animations on Items in DirectoryFragment's RecyclerView.  This class overrides
- * the way selection animations are normally performed - instead of cross fading the old Item with a
- * new Item, this class manually animates a background color change.  This enables selected Items to
- * correctly maintain focus.
- */
-class DirectoryItemAnimator extends DefaultItemAnimator {
-    private final List<ColorAnimation> mPendingAnimations = new ArrayList<>();
-    private final Map<RecyclerView.ViewHolder, ColorAnimation> mRunningAnimations =
-            new ArrayMap<>();
-    private final Integer mDefaultColor;
-    private final Integer mSelectedColor;
-
-    public DirectoryItemAnimator(Context context) {
-        mDefaultColor = context.getResources().getColor(R.color.item_doc_background);
-        mSelectedColor = context.getResources().getColor(R.color.item_doc_background_selected);
-    }
-
-    @Override
-    public void runPendingAnimations() {
-        super.runPendingAnimations();
-        for (ColorAnimation anim: mPendingAnimations) {
-            anim.start();
-            mRunningAnimations.put(anim.viewHolder, anim);
-        }
-        mPendingAnimations.clear();
-    }
-
-    @Override
-    public void endAnimation(RecyclerView.ViewHolder vh) {
-        super.endAnimation(vh);
-
-        for (int i = mPendingAnimations.size() - 1; i >= 0; --i) {
-            ColorAnimation anim = mPendingAnimations.get(i);
-            if (anim.viewHolder == vh) {
-                mPendingAnimations.remove(i);
-                anim.end();
-            }
-        }
-
-        ColorAnimation anim = mRunningAnimations.get(vh);
-        if (anim != null) {
-            anim.cancel();
-        }
-    }
-
-    @Override
-    public ItemHolderInfo recordPreLayoutInformation(
-        RecyclerView.State state,
-        RecyclerView.ViewHolder viewHolder,
-        @AdapterChanges int changeFlags,
-        List<Object> payloads) {
-        ItemInfo info = (ItemInfo) super.recordPreLayoutInformation(state,
-                viewHolder, changeFlags, payloads);
-        info.isActivated = viewHolder.itemView.isActivated();
-        return info;
-    }
-
-
-    @Override
-    public ItemHolderInfo recordPostLayoutInformation(
-        RecyclerView.State state, RecyclerView.ViewHolder viewHolder) {
-        ItemInfo info = (ItemInfo) super.recordPostLayoutInformation(state,
-                viewHolder);
-        info.isActivated = viewHolder.itemView.isActivated();
-        return info;
-    }
-
-    @Override
-    public boolean animateChange(final RecyclerView.ViewHolder oldHolder,
-            RecyclerView.ViewHolder newHolder, ItemHolderInfo preInfo,
-            ItemHolderInfo postInfo) {
-        if (oldHolder != newHolder) {
-            return super.animateChange(oldHolder, newHolder, preInfo, postInfo);
-        }
-
-        ItemInfo pre = (ItemInfo)preInfo;
-        ItemInfo post = (ItemInfo)postInfo;
-
-        if (pre.isActivated == post.isActivated) {
-            dispatchAnimationFinished(oldHolder);
-            return false;
-        } else {
-            Integer startColor = pre.isActivated ? mSelectedColor : mDefaultColor;
-            Integer endColor = post.isActivated ? mSelectedColor : mDefaultColor;
-            oldHolder.itemView.setBackgroundColor(startColor);
-            mPendingAnimations.add(new ColorAnimation(oldHolder, startColor, endColor));
-        }
-        return true;
-    }
-
-    @Override
-    public ItemHolderInfo obtainHolderInfo() {
-        return new ItemInfo();
-    }
-
-    @Override
-    public boolean canReuseUpdatedViewHolder(RecyclerView.ViewHolder vh) {
-        return true;
-    }
-
-    class ItemInfo extends DefaultItemAnimator.ItemHolderInfo {
-        boolean isActivated;
-    };
-
-    /**
-     * Animates changes in background color.
-     */
-    class ColorAnimation
-            implements ValueAnimator.AnimatorUpdateListener, Animator.AnimatorListener {
-        ValueAnimator mValueAnimator;
-        final RecyclerView.ViewHolder viewHolder;
-        int mEndColor;
-
-        public ColorAnimation(RecyclerView.ViewHolder vh, int startColor, int endColor)
-        {
-            viewHolder = vh;
-            mValueAnimator = ValueAnimator.ofObject(new ArgbEvaluator(), startColor, endColor);
-            mValueAnimator.addUpdateListener(this);
-            mValueAnimator.addListener(this);
-
-            mEndColor = endColor;
-        }
-
-        public void start() {
-            mValueAnimator.start();
-        }
-
-        public void cancel() {
-            mValueAnimator.cancel();
-        }
-
-        public void end() {
-            mValueAnimator.end();
-        }
-
-        @Override
-        public void onAnimationUpdate(ValueAnimator animator) {
-            viewHolder.itemView.setBackgroundColor((Integer)animator.getAnimatedValue());
-        }
-
-        @Override
-        public void onAnimationEnd(Animator animator) {
-            viewHolder.itemView.setBackgroundColor(mEndColor);
-            mRunningAnimations.remove(viewHolder);
-            dispatchAnimationFinished(viewHolder);
-        }
-
-        @Override
-        public void onAnimationStart(Animator animation) {
-            dispatchAnimationStarted(viewHolder);
-        }
-
-        @Override
-        public void onAnimationCancel(Animator animation) {}
-
-        @Override
-        public void onAnimationRepeat(Animator animation) {}
-    };
-};
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DocumentHolder.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DocumentHolder.java
deleted file mode 100644
index c2b0bf2..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DocumentHolder.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.annotation.ColorInt;
-import android.content.Context;
-import android.database.Cursor;
-import android.graphics.Rect;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.RecyclerView;
-import android.view.KeyEvent;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import com.android.documentsui.Events.InputEvent;
-import com.android.documentsui.R;
-import com.android.documentsui.State;
-import com.android.documentsui.dirlist.UserInputHandler.DocumentDetails;
-
-public abstract class DocumentHolder
-        extends RecyclerView.ViewHolder
-        implements View.OnKeyListener,
-        DocumentDetails {
-
-    static final float DISABLED_ALPHA = 0.3f;
-
-    @Deprecated  // Public access is deprecated, use #getModelId.
-    public @Nullable String modelId;
-
-    final Context mContext;
-    final @ColorInt int mDefaultBgColor;
-    final @ColorInt int mSelectedBgColor;
-
-    // See #addKeyEventListener for details on the need for this field.
-    KeyboardEventListener mKeyEventListener;
-
-    private View mSelectionHotspot;
-
-
-    public DocumentHolder(Context context, ViewGroup parent, int layout) {
-        this(context, inflateLayout(context, parent, layout));
-    }
-
-    public DocumentHolder(Context context, View item) {
-        super(item);
-
-        itemView.setOnKeyListener(this);
-
-        mContext = context;
-
-        mDefaultBgColor = context.getColor(R.color.item_doc_background);
-        mSelectedBgColor = context.getColor(R.color.item_doc_background_selected);
-
-        mSelectionHotspot = itemView.findViewById(R.id.icon_check);
-    }
-
-    /**
-     * Binds the view to the given item data.
-     * @param cursor
-     * @param modelId
-     * @param state
-     */
-    public abstract void bind(Cursor cursor, String modelId, State state);
-
-    @Override
-    public String getModelId() {
-        return modelId;
-    }
-
-    /**
-     * Makes the associated item view appear selected. Note that this merely affects the appearance
-     * of the view, it doesn't actually select the item.
-     * TODO: Use the DirectoryItemAnimator instead of manually controlling animation using a boolean
-     * flag.
-     *
-     * @param selected
-     * @param animate Whether or not to animate the change. Only selection changes initiated by the
-     *            selection manager should be animated. See
-     *            {@link ModelBackedDocumentsAdapter#onBindViewHolder(DocumentHolder, int, java.util.List)}
-     */
-    public void setSelected(boolean selected, boolean animate) {
-        // Note: the animate param doesn't apply for this base implementation, because the
-        // DirectoryItemAnimator takes care of it. It's required by subclasses, which perform their
-        // own animation.
-        itemView.setActivated(selected);
-        itemView.setBackgroundColor(selected ? mSelectedBgColor : mDefaultBgColor);
-    }
-
-    /**
-     * Highlights the associated item view.
-     * @param highlighted
-     */
-    public void setHighlighted(boolean highlighted) {
-        itemView.setBackgroundColor(highlighted ? mSelectedBgColor : mDefaultBgColor);
-    }
-
-    public void setEnabled(boolean enabled) {
-        setEnabledRecursive(itemView, enabled);
-    }
-
-    @Override
-    public boolean onKey(View v, int keyCode, KeyEvent event) {
-        assert(mKeyEventListener != null);
-        return mKeyEventListener.onKey(this,  keyCode,  event);
-    }
-
-    /**
-     * Installs a delegate to receive keyboard input events. This arrangement is necessitated
-     * by the fact that a single listener cannot listen to all keyboard events
-     * on RecyclerView (our parent view). Not sure why this is, but have been
-     * assured it is the case.
-     *
-     * <p>Ideally we'd not involve DocumentHolder in propagation of events like this.
-     */
-    public void addKeyEventListener(KeyboardEventListener listener) {
-        assert(mKeyEventListener == null);
-        mKeyEventListener = listener;
-    }
-
-    @Override
-    public boolean isInSelectionHotspot(InputEvent event) {
-        // Do everything in global coordinates - it makes things simpler.
-        int[] coords = new int[2];
-        mSelectionHotspot.getLocationOnScreen(coords);
-        Rect rect = new Rect(coords[0], coords[1], coords[0] + mSelectionHotspot.getWidth(),
-                coords[1] + mSelectionHotspot.getHeight());
-
-        // If the tap occurred within the icon rect, consider it a selection.
-        return rect.contains((int) event.getRawX(), (int) event.getRawY());
-    }
-
-        static void setEnabledRecursive(View itemView, boolean enabled) {
-        if (itemView == null) return;
-        if (itemView.isEnabled() == enabled) return;
-        itemView.setEnabled(enabled);
-
-        if (itemView instanceof ViewGroup) {
-            final ViewGroup vg = (ViewGroup) itemView;
-            for (int i = vg.getChildCount() - 1; i >= 0; i--) {
-                setEnabledRecursive(vg.getChildAt(i), enabled);
-            }
-        }
-    }
-
-    private static View inflateLayout(Context context, ViewGroup parent, int layout) {
-        final LayoutInflater inflater = LayoutInflater.from(context);
-        return inflater.inflate(layout, parent, false);
-    }
-
-    /**
-     * Implement this in order to be able to respond to events coming from DocumentHolders.
-     * TODO: Make this bubble up logic events rather than having imperative commands.
-     */
-    interface KeyboardEventListener {
-
-        /**
-         * Handles key events on the document holder.
-         *
-         * @param doc The target DocumentHolder.
-         * @param keyCode Key code for the event.
-         * @param event KeyEvent for the event.
-         * @return Whether the event was handled.
-         */
-        public boolean onKey(DocumentHolder doc, int keyCode, KeyEvent event);
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DocumentsAdapter.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DocumentsAdapter.java
deleted file mode 100644
index 4b35447..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DocumentsAdapter.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.provider.DocumentsContract.Document;
-import android.support.v7.widget.GridLayoutManager;
-import android.support.v7.widget.RecyclerView;
-
-import com.android.documentsui.State;
-
-import java.util.List;
-
-/**
- * DocumentsAdapter provides glue between a directory Model, and RecylcerView. We've
- * abstracted this a bit in order to decompose some specialized support
- * for adding dummy layout objects (@see SectionBreakDocumentsAdapter). Handling of the
- * dummy layout objects was error prone when interspersed with the core mode / adapter code.
- *
- * @see ModelBackedDocumentsAdapter
- * @see SectionBreakDocumentsAdapter
- */
-abstract class DocumentsAdapter
-        extends RecyclerView.Adapter<DocumentHolder>
-        implements Model.UpdateListener {
-
-    // Payloads for notifyItemChange to distinguish between selection and other events.
-    static final String SELECTION_CHANGED_MARKER = "Selection-Changed";
-
-    /**
-     * Returns a list of model IDs of items currently in the adapter. Excludes items that are
-     * currently hidden (see {@link #hide(String...)}).
-     *
-     * @return A list of Model IDs.
-     */
-    abstract List<String> getModelIds();
-
-    /**
-     * Triggers item-change notifications by stable ID (as opposed to position).
-     * Passing an unrecognized ID will result in a warning in logcat, but no other error.
-     */
-    abstract void onItemSelectionChanged(String id);
-
-    /**
-     * @return The model ID of the item at the given adapter position.
-     */
-    abstract String getModelId(int position);
-
-    /**
-     * Returns a class that yields the span size for a particular element. This is
-     * primarily useful in {@link SectionBreakDocumentsAdapterWrapper} where
-     * we adjust sizes.
-     */
-    GridLayoutManager.SpanSizeLookup createSpanSizeLookup() {
-        throw new UnsupportedOperationException();
-    }
-
-    static boolean isDirectory(Cursor cursor) {
-        final String mimeType = getCursorString(cursor, Document.COLUMN_MIME_TYPE);
-        return Document.MIME_TYPE_DIR.equals(mimeType);
-    }
-
-    boolean isDirectory(Model model, int position) {
-        String modelId = getModelIds().get(position);
-        Cursor cursor = model.getItem(modelId);
-        return isDirectory(cursor);
-    }
-
-    /**
-     * Environmental access for View adapter implementations.
-     */
-    interface Environment {
-        Context getContext();
-        int getColumnCount();
-        State getDisplayState();
-        boolean isSelected(String id);
-        Model getModel();
-        boolean isDocumentEnabled(String mimeType, int flags);
-        void initDocumentHolder(DocumentHolder holder);
-        void onBindDocumentHolder(DocumentHolder holder, Cursor cursor);
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DragScrollListener.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DragScrollListener.java
deleted file mode 100644
index 898a4a2..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DragScrollListener.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.content.Context;
-import android.graphics.Point;
-import android.view.DragEvent;
-import android.view.View;
-import android.view.View.OnDragListener;
-
-import com.android.documentsui.ItemDragListener;
-import com.android.documentsui.ItemDragListener.DragHost;
-import com.android.documentsui.dirlist.ViewAutoScroller.ScrollActionDelegate;
-import com.android.documentsui.dirlist.ViewAutoScroller.ScrollDistanceDelegate;
-import com.android.documentsui.R;
-
-import java.util.function.BooleanSupplier;
-import java.util.function.IntSupplier;
-
-import javax.annotation.Nullable;
-
-/**
- * This class acts as a middle-man handler for potential auto-scrolling before passing the dragEvent
- * onto {@link DirectoryDragListener}.
- */
-class DragScrollListener implements OnDragListener {
-
-    private final ItemDragListener<? extends DragHost> mDragHandler;
-    private final IntSupplier mHeight;
-    private final BooleanSupplier mCanScrollUp;
-    private final BooleanSupplier mCanScrollDown;
-    private final int mAutoScrollEdgeHeight;
-    private final Runnable mDragScroller;
-
-    private boolean mDragHappening;
-    private @Nullable Point mCurrentPosition;
-
-    private DragScrollListener(
-            Context context,
-            ItemDragListener<? extends DragHost> dragHandler,
-            IntSupplier heightSupplier,
-            BooleanSupplier scrollUpSupplier,
-            BooleanSupplier scrollDownSupplier,
-            ViewAutoScroller.ScrollActionDelegate actionDelegate) {
-        mDragHandler = dragHandler;
-        mAutoScrollEdgeHeight = (int) context.getResources()
-                .getDimension(R.dimen.autoscroll_edge_height);
-        mHeight = heightSupplier;
-        mCanScrollUp = scrollUpSupplier;
-        mCanScrollDown = scrollDownSupplier;
-
-        ScrollDistanceDelegate distanceDelegate = new ScrollDistanceDelegate() {
-            @Override
-            public Point getCurrentPosition() {
-                return mCurrentPosition;
-            }
-
-            @Override
-            public int getViewHeight() {
-                return mHeight.getAsInt();
-            }
-
-            @Override
-            public boolean isActive() {
-                return mDragHappening;
-            }
-        };
-
-        mDragScroller = new ViewAutoScroller(
-                mAutoScrollEdgeHeight, distanceDelegate, actionDelegate);
-    }
-
-    static DragScrollListener create(
-            Context context, ItemDragListener<? extends DragHost> dragHandler, View scrollView) {
-        ScrollActionDelegate actionDelegate = new ScrollActionDelegate() {
-            @Override
-            public void scrollBy(int dy) {
-                scrollView.scrollBy(0, dy);
-            }
-
-            @Override
-            public void runAtNextFrame(Runnable r) {
-                scrollView.postOnAnimation(r);
-
-            }
-
-            @Override
-            public void removeCallback(Runnable r) {
-                scrollView.removeCallbacks(r);
-            }
-        };
-        DragScrollListener listener = new DragScrollListener(
-                context,
-                dragHandler,
-                scrollView::getHeight,
-                () -> {
-                    return scrollView.canScrollVertically(-1);
-                },
-                () -> {
-                    return scrollView.canScrollVertically(1);
-                },
-                actionDelegate);
-        return listener;
-    }
-
-    @Override
-    public boolean onDrag(View v, DragEvent event) {
-        boolean handled = false;
-        switch (event.getAction()) {
-            case DragEvent.ACTION_DRAG_STARTED:
-                mDragHappening = true;
-                break;
-            case DragEvent.ACTION_DRAG_ENDED:
-                mDragHappening = false;
-                break;
-            case DragEvent.ACTION_DRAG_ENTERED:
-                handled = insideDragZone();
-                break;
-            case DragEvent.ACTION_DRAG_LOCATION:
-                handled = handleLocationEvent(v, event.getX(), event.getY());
-                break;
-            default:
-                break;
-        }
-
-        if (!handled) {
-            handled = mDragHandler.onDrag(v, event);
-        }
-
-        return handled;
-    }
-
-    private boolean handleLocationEvent(View v, float x, float y) {
-        mCurrentPosition = new Point(Math.round(v.getX() + x), Math.round(v.getY() + y));
-        if (insideDragZone()) {
-            mDragScroller.run();
-            return true;
-        }
-        return false;
-    }
-
-    private boolean insideDragZone() {
-        if (mCurrentPosition == null) {
-            return false;
-        }
-
-        boolean shouldScrollUp = mCurrentPosition.y < mAutoScrollEdgeHeight
-                && mCanScrollUp.getAsBoolean();
-        boolean shouldScrollDown = mCurrentPosition.y > mHeight.getAsInt() - mAutoScrollEdgeHeight
-                && mCanScrollDown.getAsBoolean();
-        return shouldScrollUp || shouldScrollDown;
-    }
-}
\ No newline at end of file
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DragShadowBuilder.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DragShadowBuilder.java
deleted file mode 100644
index c7d7a64..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DragShadowBuilder.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Point;
-import android.graphics.Rect;
-import android.graphics.drawable.Drawable;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import com.android.documentsui.R;
-
-final class DragShadowBuilder extends View.DragShadowBuilder {
-
-    private final View mShadowView;
-    private final TextView mTitle;
-    private final ImageView mIcon;
-    private final int mWidth;
-    private final int mHeight;
-
-    public DragShadowBuilder(Context context, String title, Drawable icon) {
-        mWidth = context.getResources().getDimensionPixelSize(R.dimen.drag_shadow_width);
-        mHeight= context.getResources().getDimensionPixelSize(R.dimen.drag_shadow_height);
-
-        mShadowView = LayoutInflater.from(context).inflate(R.layout.drag_shadow_layout, null);
-        mTitle = (TextView) mShadowView.findViewById(android.R.id.title);
-        mIcon = (ImageView) mShadowView.findViewById(android.R.id.icon);
-
-        mTitle.setText(title);
-        mIcon.setImageDrawable(icon);
-    }
-
-    @Override
-    public void onProvideShadowMetrics(
-            Point shadowSize, Point shadowTouchPoint) {
-        shadowSize.set(mWidth, mHeight);
-        shadowTouchPoint.set(mWidth, mHeight);
-    }
-
-    @Override
-    public void onDrawShadow(Canvas canvas) {
-        Rect r = canvas.getClipBounds();
-        // Calling measure is necessary in order for all child views to get correctly laid out.
-        mShadowView.measure(
-                View.MeasureSpec.makeMeasureSpec(r.right- r.left, View.MeasureSpec.EXACTLY),
-                View.MeasureSpec.makeMeasureSpec(r.top- r.bottom, View.MeasureSpec.EXACTLY));
-        mShadowView.layout(r.left, r.top, r.right, r.bottom);
-        mShadowView.draw(canvas);
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/FocusHandler.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/FocusHandler.java
deleted file mode 100644
index ba26d65..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/FocusHandler.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.view.KeyEvent;
-import android.view.View;
-
-/**
- * A class that handles navigation and focus within the DirectoryFragment.
- */
-interface FocusHandler extends View.OnFocusChangeListener {
-
-    /**
-     * Handles navigation (setting focus, adjusting selection if needed) arising from incoming key
-     * events.
-     *
-     * @param doc The DocumentHolder receiving the key event.
-     * @param keyCode
-     * @param event
-     * @return Whether the event was handled.
-     */
-    boolean handleKey(DocumentHolder doc, int keyCode, KeyEvent event);
-
-    @Override
-    void onFocusChange(View v, boolean hasFocus);
-
-    /**
-     * Requests focus on the item that last had focus. Scrolls to that item if necessary.
-     */
-    void restoreLastFocus();
-
-    /**
-     * @return The adapter position of the last focused item.
-     */
-    int getFocusPosition();
-
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/FocusManager.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/FocusManager.java
deleted file mode 100644
index 1be2f65..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/FocusManager.java
+++ /dev/null
@@ -1,550 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
-
-import android.annotation.Nullable;
-import android.content.Context;
-import android.database.Cursor;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.SystemClock;
-import android.provider.DocumentsContract.Document;
-import android.support.v7.widget.GridLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.text.Editable;
-import android.text.Spannable;
-import android.text.method.KeyListener;
-import android.text.method.TextKeyListener;
-import android.text.method.TextKeyListener.Capitalize;
-import android.text.style.BackgroundColorSpan;
-import android.util.Log;
-import android.view.KeyEvent;
-import android.view.View;
-import android.widget.TextView;
-
-import com.android.documentsui.Events;
-import com.android.documentsui.R;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Timer;
-import java.util.TimerTask;
-
-/**
- * A class that handles navigation and focus within the DirectoryFragment.
- */
-final class FocusManager implements FocusHandler {
-    private static final String TAG = "FocusManager";
-
-    private RecyclerView mView;
-    private DocumentsAdapter mAdapter;
-    private GridLayoutManager mLayout;
-
-    private TitleSearchHelper mSearchHelper;
-    private Model mModel;
-
-    private int mLastFocusPosition = RecyclerView.NO_POSITION;
-
-    public FocusManager(Context context, RecyclerView view, Model model) {
-        mView = view;
-        mAdapter = (DocumentsAdapter) view.getAdapter();
-        mLayout = (GridLayoutManager) view.getLayoutManager();
-        mModel = model;
-
-        mSearchHelper = new TitleSearchHelper(context);
-    }
-
-    @Override
-    public boolean handleKey(DocumentHolder doc, int keyCode, KeyEvent event) {
-        // Search helper gets first crack, for doing type-to-focus.
-        if (mSearchHelper.handleKey(doc, keyCode, event)) {
-            return true;
-        }
-
-        // Translate space/shift-space into PgDn/PgUp
-        if (keyCode == KeyEvent.KEYCODE_SPACE) {
-            if (event.isShiftPressed()) {
-                keyCode = KeyEvent.KEYCODE_PAGE_UP;
-            } else {
-                keyCode = KeyEvent.KEYCODE_PAGE_DOWN;
-            }
-        }
-
-        if (Events.isNavigationKeyCode(keyCode)) {
-            // Find the target item and focus it.
-            int endPos = findTargetPosition(doc.itemView, keyCode, event);
-
-            if (endPos != RecyclerView.NO_POSITION) {
-                focusItem(endPos);
-            }
-            // Swallow all navigation keystrokes. Otherwise they go to the app's global
-            // key-handler, which will route them back to the DF and cause focus to be reset.
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public void onFocusChange(View v, boolean hasFocus) {
-        // Remember focus events on items.
-        if (hasFocus && v.getParent() == mView) {
-            mLastFocusPosition = mView.getChildAdapterPosition(v);
-        }
-    }
-
-    @Override
-    public void restoreLastFocus() {
-        if (mAdapter.getItemCount() == 0) {
-            // Nothing to focus.
-            return;
-        }
-
-        if (mLastFocusPosition != RecyclerView.NO_POSITION) {
-            // The system takes care of situations when a view is no longer on screen, etc,
-            focusItem(mLastFocusPosition);
-        } else {
-            // Focus the first visible item
-            focusItem(mLayout.findFirstVisibleItemPosition());
-        }
-    }
-
-    @Override
-    public int getFocusPosition() {
-        return mLastFocusPosition;
-    }
-
-    /**
-     * Finds the destination position where the focus should land for a given navigation event.
-     *
-     * @param view The view that received the event.
-     * @param keyCode The key code for the event.
-     * @param event
-     * @return The adapter position of the destination item. Could be RecyclerView.NO_POSITION.
-     */
-    private int findTargetPosition(View view, int keyCode, KeyEvent event) {
-        switch (keyCode) {
-            case KeyEvent.KEYCODE_MOVE_HOME:
-                return 0;
-            case KeyEvent.KEYCODE_MOVE_END:
-                return mAdapter.getItemCount() - 1;
-            case KeyEvent.KEYCODE_PAGE_UP:
-            case KeyEvent.KEYCODE_PAGE_DOWN:
-                return findPagedTargetPosition(view, keyCode, event);
-        }
-
-        // Find a navigation target based on the arrow key that the user pressed.
-        int searchDir = -1;
-        switch (keyCode) {
-            case KeyEvent.KEYCODE_DPAD_UP:
-                searchDir = View.FOCUS_UP;
-                break;
-            case KeyEvent.KEYCODE_DPAD_DOWN:
-                searchDir = View.FOCUS_DOWN;
-                break;
-        }
-
-        if (inGridMode()) {
-            int currentPosition = mView.getChildAdapterPosition(view);
-            // Left and right arrow keys only work in grid mode.
-            switch (keyCode) {
-                case KeyEvent.KEYCODE_DPAD_LEFT:
-                    if (currentPosition > 0) {
-                        // Stop backward focus search at the first item, otherwise focus will wrap
-                        // around to the last visible item.
-                        searchDir = View.FOCUS_BACKWARD;
-                    }
-                    break;
-                case KeyEvent.KEYCODE_DPAD_RIGHT:
-                    if (currentPosition < mAdapter.getItemCount() - 1) {
-                        // Stop forward focus search at the last item, otherwise focus will wrap
-                        // around to the first visible item.
-                        searchDir = View.FOCUS_FORWARD;
-                    }
-                    break;
-            }
-        }
-
-        if (searchDir != -1) {
-            // Focus search behaves badly if the parent RecyclerView is focused. However, focusable
-            // shouldn't be unset on RecyclerView, otherwise focus isn't properly restored after
-            // events that cause a UI rebuild (like rotating the device). Compromise: turn focusable
-            // off while performing the focus search.
-            // TODO: Revisit this when RV focus issues are resolved.
-            mView.setFocusable(false);
-            View targetView = view.focusSearch(searchDir);
-            mView.setFocusable(true);
-            // TargetView can be null, for example, if the user pressed <down> at the bottom
-            // of the list.
-            if (targetView != null) {
-                // Ignore navigation targets that aren't items in the RecyclerView.
-                if (targetView.getParent() == mView) {
-                    return mView.getChildAdapterPosition(targetView);
-                }
-            }
-        }
-
-        return RecyclerView.NO_POSITION;
-    }
-
-    /**
-     * Given a PgUp/PgDn event and the current view, find the position of the target view.
-     * This returns:
-     * <li>The position of the topmost (or bottom-most) visible item, if the current item is not
-     *     the top- or bottom-most visible item.
-     * <li>The position of an item that is one page's worth of items up (or down) if the current
-     *      item is the top- or bottom-most visible item.
-     * <li>The first (or last) item, if paging up (or down) would go past those limits.
-     * @param view The view that received the key event.
-     * @param keyCode Must be KEYCODE_PAGE_UP or KEYCODE_PAGE_DOWN.
-     * @param event
-     * @return The adapter position of the target item.
-     */
-    private int findPagedTargetPosition(View view, int keyCode, KeyEvent event) {
-        int first = mLayout.findFirstVisibleItemPosition();
-        int last = mLayout.findLastVisibleItemPosition();
-        int current = mView.getChildAdapterPosition(view);
-        int pageSize = last - first + 1;
-
-        if (keyCode == KeyEvent.KEYCODE_PAGE_UP) {
-            if (current > first) {
-                // If the current item isn't the first item, target the first item.
-                return first;
-            } else {
-                // If the current item is the first item, target the item one page up.
-                int target = current - pageSize;
-                return target < 0 ? 0 : target;
-            }
-        }
-
-        if (keyCode == KeyEvent.KEYCODE_PAGE_DOWN) {
-            if (current < last) {
-                // If the current item isn't the last item, target the last item.
-                return last;
-            } else {
-                // If the current item is the last item, target the item one page down.
-                int target = current + pageSize;
-                int max = mAdapter.getItemCount() - 1;
-                return target < max ? target : max;
-            }
-        }
-
-        throw new IllegalArgumentException("Unsupported keyCode: " + keyCode);
-    }
-
-    /**
-     * Requests focus for the item in the given adapter position, scrolling the RecyclerView if
-     * necessary.
-     *
-     * @param pos
-     */
-    private void focusItem(final int pos) {
-        focusItem(pos, null);
-    }
-
-    /**
-     * Requests focus for the item in the given adapter position, scrolling the RecyclerView if
-     * necessary.
-     *
-     * @param pos
-     * @param callback A callback to call after the given item has been focused.
-     */
-    private void focusItem(final int pos, @Nullable final FocusCallback callback) {
-        // If the item is already in view, focus it; otherwise, scroll to it and focus it.
-        RecyclerView.ViewHolder vh = mView.findViewHolderForAdapterPosition(pos);
-        if (vh != null) {
-            if (vh.itemView.requestFocus() && callback != null) {
-                callback.onFocus(vh.itemView);
-            }
-        } else {
-            // Set a one-time listener to request focus when the scroll has completed.
-            mView.addOnScrollListener(
-                    new RecyclerView.OnScrollListener() {
-                        @Override
-                        public void onScrollStateChanged(RecyclerView view, int newState) {
-                            if (newState == RecyclerView.SCROLL_STATE_IDLE) {
-                                // When scrolling stops, find the item and focus it.
-                                RecyclerView.ViewHolder vh =
-                                        view.findViewHolderForAdapterPosition(pos);
-                                if (vh != null) {
-                                    if (vh.itemView.requestFocus() && callback != null) {
-                                        callback.onFocus(vh.itemView);
-                                    }
-                                } else {
-                                    // This might happen in weird corner cases, e.g. if the user is
-                                    // scrolling while a delete operation is in progress. In that
-                                    // case, just don't attempt to focus the missing item.
-                                    Log.w(TAG, "Unable to focus position " + pos + " after scroll");
-                                }
-                                view.removeOnScrollListener(this);
-                            }
-                        }
-                    });
-            mView.smoothScrollToPosition(pos);
-        }
-    }
-
-    /**
-     * @return Whether the layout manager is currently in a grid-configuration.
-     */
-    private boolean inGridMode() {
-        return mLayout.getSpanCount() > 1;
-    }
-
-    private interface FocusCallback {
-        public void onFocus(View view);
-    }
-
-    /**
-     * A helper class for handling type-to-focus. Instantiate this class, and pass it KeyEvents via
-     * the {@link #handleKey(DocumentHolder, int, KeyEvent)} method. The class internally will build
-     * up a string from individual key events, and perform searching based on that string. When an
-     * item is found that matches the search term, that item will be focused. This class also
-     * highlights instances of the search term found in the view.
-     */
-    private class TitleSearchHelper {
-        static private final int SEARCH_TIMEOUT = 500;  // ms
-
-        private final KeyListener mTextListener = new TextKeyListener(Capitalize.NONE, false);
-        private final Editable mSearchString = Editable.Factory.getInstance().newEditable("");
-        private final Highlighter mHighlighter = new Highlighter();
-        private final BackgroundColorSpan mSpan;
-
-        private List<String> mIndex;
-        private boolean mActive;
-        private Timer mTimer;
-        private KeyEvent mLastEvent;
-        private Handler mUiRunner;
-
-        public TitleSearchHelper(Context context) {
-            mSpan = new BackgroundColorSpan(context.getColor(R.color.accent_dark));
-            // Handler for running things on the main UI thread. Needed for updating the UI from a
-            // timer (see #activate, below).
-            mUiRunner = new Handler(Looper.getMainLooper());
-        }
-
-        /**
-         * Handles alphanumeric keystrokes for type-to-focus. This method builds a search term out
-         * of individual key events, and then performs a search for the given string.
-         *
-         * @param doc The document holder receiving the key event.
-         * @param keyCode
-         * @param event
-         * @return Whether the event was handled.
-         */
-        public boolean handleKey(DocumentHolder doc, int keyCode, KeyEvent event) {
-            switch (keyCode) {
-                case KeyEvent.KEYCODE_ESCAPE:
-                case KeyEvent.KEYCODE_ENTER:
-                    if (mActive) {
-                        // These keys end any active searches.
-                        endSearch();
-                        return true;
-                    } else {
-                        // Don't handle these key events if there is no active search.
-                        return false;
-                    }
-                case KeyEvent.KEYCODE_SPACE:
-                    // This allows users to search for files with spaces in their names, but ignores
-                    // spacebar events when a text search is not active. Ignoring the spacebar
-                    // event is necessary because other handlers (see FocusManager#handleKey) also
-                    // listen for and handle it.
-                    if (!mActive) {
-                        return false;
-                    }
-            }
-
-            // Navigation keys also end active searches.
-            if (Events.isNavigationKeyCode(keyCode)) {
-                endSearch();
-                // Don't handle the keycode, so navigation still occurs.
-                return false;
-            }
-
-            // Build up the search string, and perform the search.
-            boolean handled = mTextListener.onKeyDown(doc.itemView, mSearchString, keyCode, event);
-
-            // Delete is processed by the text listener, but not "handled". Check separately for it.
-            if (keyCode == KeyEvent.KEYCODE_DEL) {
-                handled = true;
-            }
-
-            if (handled) {
-                mLastEvent = event;
-                if (mSearchString.length() == 0) {
-                    // Don't perform empty searches.
-                    return false;
-                }
-                search();
-            }
-
-            return handled;
-        }
-
-        /**
-         * Activates the search helper, which changes its key handling and updates the search index
-         * and highlights if necessary. Call this each time the search term is updated.
-         */
-        private void search() {
-            if (!mActive) {
-                // The model listener invalidates the search index when the model changes.
-                mModel.addUpdateListener(mModelListener);
-
-                // Used to keep the current search alive until the timeout expires. If the user
-                // presses another key within that time, that keystroke is added to the current
-                // search. Otherwise, the current search ends, and subsequent keystrokes start a new
-                // search.
-                mTimer = new Timer();
-                mActive = true;
-            }
-
-            // If the search index was invalidated, rebuild it
-            if (mIndex == null) {
-                buildIndex();
-            }
-
-            // Search for the current search term.
-            // Perform case-insensitive search.
-            String searchString = mSearchString.toString().toLowerCase();
-            for (int pos = 0; pos < mIndex.size(); pos++) {
-                String title = mIndex.get(pos);
-                if (title != null && title.startsWith(searchString)) {
-                    focusItem(pos, new FocusCallback() {
-                        @Override
-                        public void onFocus(View view) {
-                            mHighlighter.applyHighlight(view);
-                            // Using a timer repeat period of SEARCH_TIMEOUT/2 means the amount of
-                            // time between the last keystroke and a search expiring is actually
-                            // between 500 and 750 ms. A smaller timer period results in less
-                            // variability but does more polling.
-                            mTimer.schedule(new TimeoutTask(), 0, SEARCH_TIMEOUT / 2);
-                        }
-                    });
-                    break;
-                }
-            }
-        }
-
-        /**
-         * Ends the current search (see {@link #search()}.
-         */
-        private void endSearch() {
-            if (mActive) {
-                mModel.removeUpdateListener(mModelListener);
-                mTimer.cancel();
-            }
-
-            mHighlighter.removeHighlight();
-
-            mIndex = null;
-            mSearchString.clear();
-            mActive = false;
-        }
-
-        /**
-         * Builds a search index for finding items by title. Queries the model and adapter, so both
-         * must be set up before calling this method.
-         */
-        private void buildIndex() {
-            int itemCount = mAdapter.getItemCount();
-            List<String> index = new ArrayList<>(itemCount);
-            for (int i = 0; i < itemCount; i++) {
-                String modelId = mAdapter.getModelId(i);
-                Cursor cursor = mModel.getItem(modelId);
-                if (modelId != null && cursor != null) {
-                    String title = getCursorString(cursor, Document.COLUMN_DISPLAY_NAME);
-                    // Perform case-insensitive search.
-                    index.add(title.toLowerCase());
-                } else {
-                    index.add("");
-                }
-            }
-            mIndex = index;
-        }
-
-        private Model.UpdateListener mModelListener = new Model.UpdateListener() {
-            @Override
-            public void onModelUpdate(Model model) {
-                // Invalidate the search index when the model updates.
-                mIndex = null;
-            }
-
-            @Override
-            public void onModelUpdateFailed(Exception e) {
-                // Invalidate the search index when the model updates.
-                mIndex = null;
-            }
-        };
-
-        private class TimeoutTask extends TimerTask {
-            @Override
-            public void run() {
-                long last = mLastEvent.getEventTime();
-                long now = SystemClock.uptimeMillis();
-                if ((now - last) > SEARCH_TIMEOUT) {
-                    // endSearch must run on the main thread because it does UI work
-                    mUiRunner.post(new Runnable() {
-                        @Override
-                        public void run() {
-                            endSearch();
-                        }
-                    });
-                }
-            }
-        };
-
-        private class Highlighter {
-            private Spannable mCurrentHighlight;
-
-            /**
-             * Applies title highlights to the given view. The view must have a title field that is a
-             * spannable text field.  If this condition is not met, this function does nothing.
-             *
-             * @param view
-             */
-            private void applyHighlight(View view) {
-                TextView titleView = (TextView) view.findViewById(android.R.id.title);
-                if (titleView == null) {
-                    return;
-                }
-
-                CharSequence tmpText = titleView.getText();
-                if (tmpText instanceof Spannable) {
-                    if (mCurrentHighlight != null) {
-                        mCurrentHighlight.removeSpan(mSpan);
-                    }
-                    mCurrentHighlight = (Spannable) tmpText;
-                    mCurrentHighlight.setSpan(
-                            mSpan, 0, mSearchString.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
-                }
-            }
-
-            /**
-             * Removes title highlights from the given view. The view must have a title field that is a
-             * spannable text field.  If this condition is not met, this function does nothing.
-             *
-             * @param view
-             */
-            private void removeHighlight() {
-                if (mCurrentHighlight != null) {
-                    mCurrentHighlight.removeSpan(mSpan);
-                }
-            }
-        };
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/FragmentTuner.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/FragmentTuner.java
deleted file mode 100644
index 5201089..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/FragmentTuner.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import static com.android.documentsui.State.ACTION_CREATE;
-import static com.android.documentsui.State.ACTION_GET_CONTENT;
-import static com.android.documentsui.State.ACTION_OPEN;
-import static com.android.documentsui.State.ACTION_OPEN_TREE;
-import static com.android.documentsui.State.ACTION_PICK_COPY_DESTINATION;
-
-import android.content.Context;
-import android.provider.DocumentsContract.Document;
-
-import com.android.documentsui.BaseActivity;
-import com.android.documentsui.MimePredicate;
-import com.android.documentsui.State;
-import com.android.documentsui.dirlist.DirectoryFragment.ResultType;
-
-/**
- * Providers support for specializing the DirectoryFragment to the "host" Activity.
- * Feel free to expand the role of this class to handle other specializations.
- */
-public abstract class FragmentTuner {
-
-    final Context mContext;
-    final State mState;
-
-    public FragmentTuner(Context context, State state) {
-        mContext = context;
-        mState = state;
-    }
-
-    // Subtly different from isDocumentEnabled. The reason may be illuminated as follows.
-    // A folder is enabled such that it may be double clicked, even in settings
-    // when the folder itself cannot be selected. This may also be true of container types.
-    public boolean canSelectType(String docMimeType, int docFlags) {
-        return true;
-    }
-
-    public boolean isDocumentEnabled(String docMimeType, int docFlags) {
-        return true;
-    }
-
-    /**
-     * When managed mode is enabled, active downloads will be visible in the UI.
-     * Presumably this should only be true when in the downloads directory.
-     */
-    boolean managedModeEnabled() {
-        return false;
-    }
-
-    /**
-     * Whether drag n' drop is allowed in this context
-     */
-    boolean dragAndDropEnabled() {
-        return false;
-    }
-
-    abstract void onModelLoaded(Model model, @ResultType int resultType, boolean isSearch);
-
-    /**
-     * Provides support for Platform specific specializations of DirectoryFragment.
-     */
-    public static final class DocumentsTuner extends FragmentTuner {
-
-        // We use this to keep track of whether a model has been previously loaded or not so we can
-        // open the drawer on empty directories on first launch
-        private boolean mModelPreviousLoaded;
-
-        public DocumentsTuner(Context context, State state) {
-            super(context, state);
-        }
-
-        @Override
-        public boolean canSelectType(String docMimeType, int docFlags) {
-            if (!isDocumentEnabled(docMimeType, docFlags)) {
-                return false;
-            }
-
-            if (MimePredicate.isDirectoryType(docMimeType)) {
-                return false;
-            }
-
-            if (mState.action == ACTION_OPEN_TREE
-                    || mState.action == ACTION_PICK_COPY_DESTINATION) {
-                // In this case nothing *ever* is selectable...the expected user behavior is
-                // they navigate *into* a folder, then click a confirmation button indicating
-                // that the current directory is the directory they are picking.
-                return false;
-            }
-
-            return true;
-        }
-
-        @Override
-        public boolean isDocumentEnabled(String mimeType, int docFlags) {
-            // Directories are always enabled.
-            if (MimePredicate.isDirectoryType(mimeType)) {
-                return true;
-            }
-
-            switch (mState.action) {
-                case ACTION_CREATE:
-                    // Read-only files are disabled when creating.
-                    if ((docFlags & Document.FLAG_SUPPORTS_WRITE) == 0) {
-                        return false;
-                    }
-                case ACTION_OPEN:
-                case ACTION_GET_CONTENT:
-                    final boolean isVirtual = (docFlags & Document.FLAG_VIRTUAL_DOCUMENT) != 0;
-                    if (isVirtual && mState.openableOnly) {
-                        return false;
-                    }
-            }
-
-            return MimePredicate.mimeMatches(mState.acceptMimes, mimeType);
-        }
-
-        @Override
-        void onModelLoaded(Model model, @ResultType int resultType, boolean isSearch) {
-            boolean showDrawer = false;
-
-            if (MimePredicate.mimeMatches(MimePredicate.VISUAL_MIMES, mState.acceptMimes)) {
-                showDrawer = false;
-            }
-            if (mState.external && mState.action == ACTION_GET_CONTENT) {
-                showDrawer = true;
-            }
-            if (mState.action == ACTION_PICK_COPY_DESTINATION) {
-                showDrawer = true;
-            }
-
-            // When launched into empty root, open drawer.
-            if (model.isEmpty()) {
-                showDrawer = true;
-            }
-
-            if (showDrawer && !mState.hasInitialLocationChanged() && !isSearch
-                    && !mModelPreviousLoaded) {
-                // This noops on layouts without drawer, so no need to guard.
-                ((BaseActivity) mContext).setRootsDrawerOpen(true);
-            }
-            mModelPreviousLoaded = true;
-        }
-    }
-
-    /**
-     * Provides support for Files activity specific specializations of DirectoryFragment.
-     */
-    public static final class FilesTuner extends FragmentTuner {
-
-        // We use this to keep track of whether a model has been previously loaded or not so we can
-        // open the drawer on empty directories on first launch
-        private boolean mModelPreviousLoaded;
-
-        public FilesTuner(Context context, State state) {
-            super(context, state);
-        }
-
-
-
-        @Override
-        void onModelLoaded(Model model, @ResultType int resultType, boolean isSearch) {
-            // When launched into empty root, open drawer.
-            if (model.isEmpty() && !mState.hasInitialLocationChanged() && !isSearch
-                    && !mModelPreviousLoaded) {
-                // This noops on layouts without drawer, so no need to guard.
-                ((BaseActivity) mContext).setRootsDrawerOpen(true);
-            }
-            mModelPreviousLoaded = true;
-        }
-
-        @Override
-        public boolean managedModeEnabled() {
-            // When in downloads top level directory, we also show active downloads.
-            // And while we don't allow folders in Downloads, we do allow Zip files in
-            // downloads that themselves can be opened and viewed like directories.
-            // This method helps us understand when to kick in on those special behaviors.
-            return mState.stack.root != null
-                    && mState.stack.root.isDownloads()
-                    && mState.stack.size() == 1;
-        }
-
-        @Override
-        public boolean dragAndDropEnabled() {
-            return true;
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/GridDirectoryHolder.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/GridDirectoryHolder.java
deleted file mode 100644
index ce5bcb1..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/GridDirectoryHolder.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.provider.DocumentsContract.Document;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import com.android.documentsui.R;
-import com.android.documentsui.State;
-
-final class GridDirectoryHolder extends DocumentHolder {
-    final TextView mTitle;
-    private ImageView mIconCheck;
-    private ImageView mIconMime;
-
-    public GridDirectoryHolder(Context context, ViewGroup parent) {
-        super(context, parent, R.layout.item_dir_grid);
-
-        mTitle = (TextView) itemView.findViewById(android.R.id.title);
-        mIconMime = (ImageView) itemView.findViewById(R.id.icon_mime_sm);
-        mIconCheck = (ImageView) itemView.findViewById(R.id.icon_check);
-    }
-
-    @Override
-    public void setSelected(boolean selected, boolean animate) {
-        super.setSelected(selected, animate);
-        float checkAlpha = selected ? 1f : 0f;
-
-        if (animate) {
-            mIconCheck.animate().alpha(checkAlpha).start();
-            mIconMime.animate().alpha(1f - checkAlpha).start();
-        } else {
-            mIconCheck.setAlpha(checkAlpha);
-            mIconMime.setAlpha(1f - checkAlpha);
-        }
-    }
-
-    /**
-     * Bind this view to the given document for display.
-     * @param cursor Pointing to the item to be bound.
-     * @param modelId The model ID of the item.
-     * @param state Current display state.
-     */
-    public void bind(Cursor cursor, String modelId, State state) {
-        assert(cursor != null);
-
-        this.modelId = modelId;
-
-        final String docDisplayName = getCursorString(cursor, Document.COLUMN_DISPLAY_NAME);
-        mTitle.setText(docDisplayName, TextView.BufferType.SPANNABLE);
-
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/GridDocumentHolder.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/GridDocumentHolder.java
deleted file mode 100644
index 7ba4bdd..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/GridDocumentHolder.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import static com.android.documentsui.model.DocumentInfo.getCursorInt;
-import static com.android.documentsui.model.DocumentInfo.getCursorLong;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
-
-import android.annotation.ColorInt;
-import android.content.Context;
-import android.database.Cursor;
-import android.net.Uri;
-import android.provider.DocumentsContract;
-import android.provider.DocumentsContract.Document;
-import android.text.format.Formatter;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import com.android.documentsui.R;
-import com.android.documentsui.RootCursorWrapper;
-import com.android.documentsui.Shared;
-import com.android.documentsui.State;
-
-final class GridDocumentHolder extends DocumentHolder {
-
-    private static boolean mHideTitles;
-
-    final TextView mTitle;
-    final TextView mDate;
-    final TextView mSize;
-    final ImageView mIconMimeLg;
-    final ImageView mIconMimeSm;
-    final ImageView mIconThumb;
-    final ImageView mIconCheck;
-    final IconHelper mIconHelper;
-
-    private final @ColorInt int mDisabledBgColor;
-
-    public GridDocumentHolder(Context context, ViewGroup parent, IconHelper iconHelper) {
-        super(context, parent, R.layout.item_doc_grid);
-
-        mDisabledBgColor = context.getColor(R.color.item_doc_background_disabled);
-
-        mTitle = (TextView) itemView.findViewById(android.R.id.title);
-        mDate = (TextView) itemView.findViewById(R.id.date);
-        mSize = (TextView) itemView.findViewById(R.id.size);
-        mIconMimeLg = (ImageView) itemView.findViewById(R.id.icon_mime_lg);
-        mIconMimeSm = (ImageView) itemView.findViewById(R.id.icon_mime_sm);
-        mIconThumb = (ImageView) itemView.findViewById(R.id.icon_thumb);
-        mIconCheck = (ImageView) itemView.findViewById(R.id.icon_check);
-
-        mIconHelper = iconHelper;
-    }
-
-    @Override
-    public void setSelected(boolean selected, boolean animate) {
-        // We always want to make sure our check box disappears if we're not selected,
-        // even if the item is disabled. This is because this object can be reused
-        // and this method will be called to setup initial state.
-        float checkAlpha = selected ? 1f : 0f;
-        if (animate) {
-            mIconCheck.animate().alpha(checkAlpha).start();
-        } else {
-            mIconCheck.setAlpha(checkAlpha);
-        }
-
-        // But it should be an error to be set to selected && be disabled.
-        if (!itemView.isEnabled()) {
-            assert(!selected);
-            return;
-        }
-
-        super.setSelected(selected, animate);
-
-        if (animate) {
-            mIconMimeSm.animate().alpha(1f - checkAlpha).start();
-        } else {
-            mIconMimeSm.setAlpha(1f - checkAlpha);
-        }
-    }
-
-    public void setEnabled(boolean enabled) {
-        super.setEnabled(enabled);
-
-        // Text colors enabled/disabled is handle via a color set.
-        itemView.setBackgroundColor(enabled ? mDefaultBgColor : mDisabledBgColor);
-        float imgAlpha = enabled ? 1f : DISABLED_ALPHA;
-
-        mIconMimeLg.setAlpha(imgAlpha);
-        mIconMimeSm.setAlpha(imgAlpha);
-        mIconThumb.setAlpha(imgAlpha);
-    }
-
-    /**
-     * Bind this view to the given document for display.
-     * @param cursor Pointing to the item to be bound.
-     * @param modelId The model ID of the item.
-     * @param state Current display state.
-     */
-    public void bind(Cursor cursor, String modelId, State state) {
-        assert(cursor != null);
-
-        this.modelId = modelId;
-
-        final String docAuthority = getCursorString(cursor, RootCursorWrapper.COLUMN_AUTHORITY);
-        final String docId = getCursorString(cursor, Document.COLUMN_DOCUMENT_ID);
-        final String docMimeType = getCursorString(cursor, Document.COLUMN_MIME_TYPE);
-        final String docDisplayName = getCursorString(cursor, Document.COLUMN_DISPLAY_NAME);
-        final long docLastModified = getCursorLong(cursor, Document.COLUMN_LAST_MODIFIED);
-        final int docIcon = getCursorInt(cursor, Document.COLUMN_ICON);
-        final int docFlags = getCursorInt(cursor, Document.COLUMN_FLAGS);
-        final long docSize = getCursorLong(cursor, Document.COLUMN_SIZE);
-
-        mIconHelper.stopLoading(mIconThumb);
-
-        mIconMimeLg.animate().cancel();
-        mIconMimeLg.setAlpha(1f);
-        mIconThumb.animate().cancel();
-        mIconThumb.setAlpha(0f);
-
-        final Uri uri = DocumentsContract.buildDocumentUri(docAuthority, docId);
-        mIconHelper.load(uri, docMimeType, docFlags, docIcon, docLastModified, mIconThumb,
-                mIconMimeLg, mIconMimeSm);
-
-        if (mHideTitles) {
-            mTitle.setVisibility(View.GONE);
-        } else {
-            mTitle.setText(docDisplayName, TextView.BufferType.SPANNABLE);
-            mTitle.setVisibility(View.VISIBLE);
-        }
-
-        if (docLastModified == -1) {
-            mDate.setText(null);
-        } else {
-            mDate.setText(Shared.formatTime(mContext, docLastModified));
-        }
-
-        if (!state.showSize || Document.MIME_TYPE_DIR.equals(docMimeType) || docSize == -1) {
-            mSize.setVisibility(View.GONE);
-        } else {
-            mSize.setVisibility(View.VISIBLE);
-            mSize.setText(Formatter.formatFileSize(mContext, docSize));
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/IconHelper.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/IconHelper.java
deleted file mode 100644
index ec72314..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/IconHelper.java
+++ /dev/null
@@ -1,313 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.State.MODE_GRID;
-import static com.android.documentsui.State.MODE_LIST;
-
-import android.content.ContentProviderClient;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.Point;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.CancellationSignal;
-import android.os.OperationCanceledException;
-import android.provider.DocumentsContract;
-import android.provider.DocumentsContract.Document;
-import android.support.annotation.Nullable;
-import android.util.Log;
-import android.view.View;
-import android.widget.ImageView;
-
-import com.android.documentsui.DocumentsApplication;
-import com.android.documentsui.IconUtils;
-import com.android.documentsui.MimePredicate;
-import com.android.documentsui.ProviderExecutor;
-import com.android.documentsui.ProviderExecutor.Preemptable;
-import com.android.documentsui.R;
-import com.android.documentsui.State;
-import com.android.documentsui.State.ViewMode;
-import com.android.documentsui.ThumbnailCache;
-import com.android.documentsui.ThumbnailCache.Result;
-import com.android.documentsui.model.DocumentInfo;
-
-import java.util.function.BiConsumer;
-
-/**
- * A class to assist with loading and managing the Images (i.e. thumbnails and icons) associated
- * with items in the directory listing.
- */
-public class IconHelper {
-    private static final String TAG = "IconHelper";
-
-    // Two animations applied to image views. The first is used to switch mime icon and thumbnail.
-    // The second is used when we need to update thumbnail.
-    private static final BiConsumer<View, View> ANIM_FADE_IN = (mime, thumb) -> {
-        float alpha = mime.getAlpha();
-        mime.animate().alpha(0f).start();
-        thumb.setAlpha(0f);
-        thumb.animate().alpha(alpha).start();
-    };
-    private static final BiConsumer<View, View> ANIM_NO_OP = (mime, thumb) -> {};
-
-    private final Context mContext;
-    private final ThumbnailCache mThumbnailCache;
-
-    // The display mode (MODE_GRID, MODE_LIST, etc).
-    private int mMode;
-    private Point mCurrentSize;
-    private boolean mThumbnailsEnabled = true;
-
-    /**
-     * @param context
-     * @param mode MODE_GRID or MODE_LIST
-     */
-    public IconHelper(Context context, int mode) {
-        mContext = context;
-        setViewMode(mode);
-        mThumbnailCache = DocumentsApplication.getThumbnailCache(context);
-    }
-
-    /**
-     * Enables or disables thumbnails. When thumbnails are disabled, mime icons (or custom icons, if
-     * specified by the document) are used instead.
-     *
-     * @param enabled
-     */
-    public void setThumbnailsEnabled(boolean enabled) {
-        mThumbnailsEnabled = enabled;
-    }
-
-    /**
-     * Sets the current display mode. This affects the thumbnail sizes that are loaded.
-     *
-     * @param mode See {@link State.MODE_LIST} and {@link State.MODE_GRID}.
-     */
-    public void setViewMode(@ViewMode int mode) {
-        mMode = mode;
-        int thumbSize = getThumbSize(mode);
-        mCurrentSize = new Point(thumbSize, thumbSize);
-    }
-
-    private int getThumbSize(int mode) {
-        int thumbSize;
-        switch (mode) {
-            case MODE_GRID:
-                thumbSize = mContext.getResources().getDimensionPixelSize(R.dimen.grid_width);
-                break;
-            case MODE_LIST:
-                thumbSize = mContext.getResources().getDimensionPixelSize(
-                        R.dimen.list_item_thumbnail_size);
-                break;
-            default:
-                throw new IllegalArgumentException("Unsupported layout mode: " + mode);
-        }
-        return thumbSize;
-    }
-
-    /**
-     * Cancels any ongoing load operations associated with the given ImageView.
-     *
-     * @param icon
-     */
-    public void stopLoading(ImageView icon) {
-        final LoaderTask oldTask = (LoaderTask) icon.getTag();
-        if (oldTask != null) {
-            oldTask.preempt();
-            icon.setTag(null);
-        }
-    }
-
-    /** Internal task for loading thumbnails asynchronously. */
-    private static class LoaderTask
-            extends AsyncTask<Uri, Void, Bitmap>
-            implements Preemptable {
-        private final Uri mUri;
-        private final ImageView mIconMime;
-        private final ImageView mIconThumb;
-        private final Point mThumbSize;
-        private final long mLastModified;
-
-        // A callback to apply animation to image views after the thumbnail is loaded.
-        private final BiConsumer<View, View> mImageAnimator;
-
-        private final CancellationSignal mSignal;
-
-        public LoaderTask(Uri uri, ImageView iconMime, ImageView iconThumb,
-                Point thumbSize, long lastModified, BiConsumer<View, View> animator) {
-            mUri = uri;
-            mIconMime = iconMime;
-            mIconThumb = iconThumb;
-            mThumbSize = thumbSize;
-            mImageAnimator = animator;
-            mLastModified = lastModified;
-            mSignal = new CancellationSignal();
-            if (DEBUG) Log.d(TAG, "Starting icon loader task for " + mUri);
-        }
-
-        @Override
-        public void preempt() {
-            if (DEBUG) Log.d(TAG, "Icon loader task for " + mUri + " was cancelled.");
-            cancel(false);
-            mSignal.cancel();
-        }
-
-        @Override
-        protected Bitmap doInBackground(Uri... params) {
-            if (isCancelled()) {
-                return null;
-            }
-
-            final Context context = mIconThumb.getContext();
-            final ContentResolver resolver = context.getContentResolver();
-
-            ContentProviderClient client = null;
-            Bitmap result = null;
-            try {
-                client = DocumentsApplication.acquireUnstableProviderOrThrow(
-                        resolver, mUri.getAuthority());
-                result = DocumentsContract.getDocumentThumbnail(client, mUri, mThumbSize, mSignal);
-                if (result != null) {
-                    final ThumbnailCache cache = DocumentsApplication.getThumbnailCache(context);
-                    cache.putThumbnail(mUri, mThumbSize, result, mLastModified);
-                }
-            } catch (Exception e) {
-                if (!(e instanceof OperationCanceledException)) {
-                    Log.w(TAG, "Failed to load thumbnail for " + mUri + ": " + e);
-                }
-            } finally {
-                ContentProviderClient.releaseQuietly(client);
-            }
-            return result;
-        }
-
-        @Override
-        protected void onPostExecute(Bitmap result) {
-            if (DEBUG) Log.d(TAG, "Loader task for " + mUri + " completed");
-
-            if (mIconThumb.getTag() == this && result != null) {
-                mIconThumb.setTag(null);
-                mIconThumb.setImageBitmap(result);
-
-                mImageAnimator.accept(mIconMime, mIconThumb);
-            }
-        }
-    }
-
-    /**
-     * Load thumbnails for a directory list item.
-     *
-     * @param uri The URI for the file being represented.
-     * @param mimeType The mime type of the file being represented.
-     * @param docFlags Flags for the file being represented.
-     * @param docIcon Custom icon (if any) for the file being requested.
-     * @param docLastModified the last modified value of the file being requested.
-     * @param iconThumb The itemview's thumbnail icon.
-     * @param iconMime The itemview's mime icon. Hidden when iconThumb is shown.
-     * @param subIconMime The second itemview's mime icon. Always visible.
-     * @return
-     */
-    public void load(Uri uri, String mimeType, int docFlags, int docIcon, long docLastModified,
-            ImageView iconThumb, ImageView iconMime, @Nullable ImageView subIconMime) {
-        boolean loadedThumbnail = false;
-
-        final String docAuthority = uri.getAuthority();
-
-        final boolean supportsThumbnail = (docFlags & Document.FLAG_SUPPORTS_THUMBNAIL) != 0;
-        final boolean allowThumbnail = (mMode == MODE_GRID)
-                || MimePredicate.mimeMatches(MimePredicate.VISUAL_MIMES, mimeType);
-        final boolean showThumbnail = supportsThumbnail && allowThumbnail && mThumbnailsEnabled;
-        if (showThumbnail) {
-            loadedThumbnail =
-                loadThumbnail(uri, docAuthority, docLastModified, iconThumb, iconMime);
-        }
-
-        final Drawable mimeIcon = getDocumentIcon(mContext, docAuthority,
-                DocumentsContract.getDocumentId(uri), mimeType, docIcon);
-        if (subIconMime != null) {
-            setMimeIcon(subIconMime, mimeIcon);
-        }
-
-        if (loadedThumbnail) {
-            hideImageView(iconMime);
-        } else {
-            // Add a mime icon if the thumbnail is not shown.
-            setMimeIcon(iconMime, mimeIcon);
-            hideImageView(iconThumb);
-        }
-    }
-
-    private boolean loadThumbnail(Uri uri, String docAuthority, long docLastModified,
-            ImageView iconThumb, ImageView iconMime) {
-        final Result result = mThumbnailCache.getThumbnail(uri, mCurrentSize);
-
-        try {
-            final Bitmap cachedThumbnail = result.getThumbnail();
-            iconThumb.setImageBitmap(cachedThumbnail);
-
-            boolean stale = (docLastModified > result.getLastModified());
-            if (DEBUG) Log.d(TAG,
-                    String.format("Load thumbnail for %s, got result %d and stale %b.",
-                            uri.toString(), result.getStatus(), stale));
-            if (!result.isExactHit() || stale) {
-                final BiConsumer<View, View> animator =
-                        (cachedThumbnail == null ? ANIM_FADE_IN : ANIM_NO_OP);
-                final LoaderTask task = new LoaderTask(uri, iconMime, iconThumb, mCurrentSize,
-                        docLastModified, animator);
-
-                iconThumb.setTag(task);
-
-                ProviderExecutor.forAuthority(docAuthority).execute(task);
-            }
-
-            return result.isHit();
-        } finally {
-            result.recycle();
-        }
-    }
-
-    private void setMimeIcon(ImageView view, Drawable icon) {
-        view.setImageDrawable(icon);
-        view.setAlpha(1f);
-    }
-
-    private void hideImageView(ImageView view) {
-        view.setImageDrawable(null);
-        view.setAlpha(0f);
-    }
-
-    private Drawable getDocumentIcon(
-        Context context, String authority, String id, String mimeType, int icon) {
-        if (icon != 0) {
-            return IconUtils.loadPackageIcon(context, authority, icon);
-        } else {
-            return IconUtils.loadMimeIcon(context, mimeType, authority, id, mMode);
-        }
-    }
-
-    /**
-     * Returns a mime icon or package icon for a {@link DocumentInfo}.
-     */
-    public Drawable getDocumentIcon(Context context, DocumentInfo doc) {
-        return getDocumentIcon(
-                context, doc.authority, doc.documentId, doc.mimeType, doc.icon);
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/ListDocumentHolder.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/ListDocumentHolder.java
deleted file mode 100644
index e88be0c..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/ListDocumentHolder.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import static com.android.documentsui.model.DocumentInfo.getCursorInt;
-import static com.android.documentsui.model.DocumentInfo.getCursorLong;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.net.Uri;
-import android.provider.DocumentsContract;
-import android.provider.DocumentsContract.Document;
-import android.text.format.Formatter;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import com.android.documentsui.R;
-import com.android.documentsui.RootCursorWrapper;
-import com.android.documentsui.Shared;
-import com.android.documentsui.State;
-
-final class ListDocumentHolder extends DocumentHolder {
-    final TextView mTitle;
-    final LinearLayout mDetails;  // Container of date/size/summary
-    final TextView mDate;
-    final TextView mSize;
-    final TextView mSummary;
-    final ImageView mIconMime;
-    final ImageView mIconThumb;
-    final ImageView mIconCheck;
-    final IconHelper mIconHelper;
-
-    public ListDocumentHolder(Context context, ViewGroup parent, IconHelper iconHelper) {
-        super(context, parent, R.layout.item_doc_list);
-
-        mTitle = (TextView) itemView.findViewById(android.R.id.title);
-        mDate = (TextView) itemView.findViewById(R.id.date);
-        mSize = (TextView) itemView.findViewById(R.id.size);
-        mSummary = (TextView) itemView.findViewById(android.R.id.summary);
-        mIconMime = (ImageView) itemView.findViewById(R.id.icon_mime);
-        mIconThumb = (ImageView) itemView.findViewById(R.id.icon_thumb);
-        mIconCheck = (ImageView) itemView.findViewById(R.id.icon_check);
-        // Warning: mDetails view doesn't exists in layout-sw720dp-land layout
-        mDetails = (LinearLayout) itemView.findViewById(R.id.line2);
-
-        mIconHelper = iconHelper;
-    }
-
-    @Override
-    public void setSelected(boolean selected, boolean animate) {
-        // We always want to make sure our check box disappears if we're not selected,
-        // even if the item is disabled. But it should be an error (see assert below)
-        // to be set to selected && be disabled.
-        float checkAlpha = selected ? 1f : 0f;
-        if (animate) {
-            mIconCheck.animate().alpha(checkAlpha).start();
-        } else {
-            mIconCheck.setAlpha(checkAlpha);
-        }
-
-        if (!itemView.isEnabled()) {
-            assert(!selected);
-            return;
-        }
-
-        super.setSelected(selected, animate);
-
-        if (animate) {
-            mIconMime.animate().alpha(1f - checkAlpha).start();
-            mIconThumb.animate().alpha(1f - checkAlpha).start();
-        } else {
-            mIconMime.setAlpha(1f - checkAlpha);
-            mIconThumb.setAlpha(1f - checkAlpha);
-        }
-    }
-
-    @Override
-    public void setEnabled(boolean enabled) {
-        super.setEnabled(enabled);
-
-        // Text colors enabled/disabled is handle via a color set.
-        final float imgAlpha = enabled ? 1f : DISABLED_ALPHA;
-        mIconMime.setAlpha(imgAlpha);
-        mIconThumb.setAlpha(imgAlpha);
-    }
-
-    /**
-     * Bind this view to the given document for display.
-     * @param cursor Pointing to the item to be bound.
-     * @param modelId The model ID of the item.
-     * @param state Current display state.
-     */
-    @Override
-    public void bind(Cursor cursor, String modelId, State state) {
-        assert(cursor != null);
-
-        this.modelId = modelId;
-
-        final String docAuthority = getCursorString(cursor, RootCursorWrapper.COLUMN_AUTHORITY);
-        final String docId = getCursorString(cursor, Document.COLUMN_DOCUMENT_ID);
-        final String docMimeType = getCursorString(cursor, Document.COLUMN_MIME_TYPE);
-        final String docDisplayName = getCursorString(cursor, Document.COLUMN_DISPLAY_NAME);
-        final long docLastModified = getCursorLong(cursor, Document.COLUMN_LAST_MODIFIED);
-        final int docIcon = getCursorInt(cursor, Document.COLUMN_ICON);
-        final int docFlags = getCursorInt(cursor, Document.COLUMN_FLAGS);
-        final String docSummary = getCursorString(cursor, Document.COLUMN_SUMMARY);
-        final long docSize = getCursorLong(cursor, Document.COLUMN_SIZE);
-        final boolean isDirectory = Document.MIME_TYPE_DIR.equals(docMimeType);
-
-        mIconHelper.stopLoading(mIconThumb);
-
-        mIconMime.animate().cancel();
-        mIconMime.setAlpha(1f);
-        mIconThumb.animate().cancel();
-        mIconThumb.setAlpha(0f);
-
-        final Uri uri = DocumentsContract.buildDocumentUri(docAuthority, docId);
-        mIconHelper.load(uri, docMimeType, docFlags, docIcon, docLastModified, mIconThumb,
-                mIconMime, null);
-
-        mTitle.setText(docDisplayName, TextView.BufferType.SPANNABLE);
-        mTitle.setVisibility(View.VISIBLE);
-
-
-        boolean hasDetails = false;
-        if (isDirectory) {
-            // Note, we don't show any details for any directory...ever.
-            hasDetails = false;
-        } else {
-            if (docSummary != null) {
-                hasDetails = true;
-                mSummary.setText(docSummary);
-                mSummary.setVisibility(View.VISIBLE);
-            } else {
-                mSummary.setVisibility(View.INVISIBLE);
-            }
-
-            if (docLastModified > 0) {
-                hasDetails = true;
-                mDate.setText(Shared.formatTime(mContext, docLastModified));
-            } else {
-                mDate.setText(null);
-            }
-
-            if (state.showSize && docSize > -1) {
-                hasDetails = true;
-                mSize.setVisibility(View.VISIBLE);
-                mSize.setText(Formatter.formatFileSize(mContext, docSize));
-            } else {
-                mSize.setVisibility(View.GONE);
-            }
-        }
-
-        // mDetails view doesn't exists in layout-sw720dp-land layout
-        if (mDetails != null) {
-            mDetails.setVisibility(hasDetails ? View.VISIBLE : View.GONE);
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/ListeningGestureDetector.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/ListeningGestureDetector.java
deleted file mode 100644
index 85ff6ed..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/ListeningGestureDetector.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.content.Context;
-import android.support.v13.view.DragStartHelper;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.OnItemTouchListener;
-import android.view.GestureDetector;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.View.OnTouchListener;
-
-import com.android.documentsui.Events;
-
-// Previously we listened to events with one class, only to bounce them forward
-// to GestureDetector. We're still doing that here, but with a single class
-// that reduces overall complexity in our glue code.
-final class ListeningGestureDetector extends GestureDetector
-        implements OnItemTouchListener, OnTouchListener {
-
-    private DragStartHelper mDragHelper;
-    private UserInputHandler mInputHandler;
-
-    public ListeningGestureDetector(
-            Context context, DragStartHelper dragHelper, UserInputHandler handler) {
-        super(context, handler);
-        mDragHelper = dragHelper;
-        mInputHandler = handler;
-        setOnDoubleTapListener(handler);
-    }
-
-    @Override
-    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
-        // TODO: If possible, move this into UserInputHandler.
-        if (e.getAction() == MotionEvent.ACTION_DOWN && Events.isMouseEvent(e)) {
-            mInputHandler.setLastButtonState(e.getButtonState());
-        }
-
-        // Detect drag events. When a drag is detected, intercept the rest of the gesture.
-        View itemView = rv.findChildViewUnder(e.getX(), e.getY());
-        if (itemView != null && mDragHelper.onTouch(itemView,  e)) {
-            return true;
-        }
-        // Forward unhandled events to the GestureDetector.
-        onTouchEvent(e);
-
-        return false;
-    }
-
-    @Override
-    public void onTouchEvent(RecyclerView rv, MotionEvent e) {
-        View itemView = rv.findChildViewUnder(e.getX(), e.getY());
-        mDragHelper.onTouch(itemView,  e);
-        // Note: even though this event is being handled as part of a drag gesture, continue
-        // forwarding to the GestureDetector. The detector needs to see the entire cluster of
-        // events in order to properly interpret gestures.
-        onTouchEvent(e);
-    }
-
-    @Override
-    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {}
-
-    // For mEmptyView right-click context menu
-    @Override
-    public boolean onTouch(View v, MotionEvent event) {
-        if (event.getButtonState() == MotionEvent.BUTTON_SECONDARY) {
-            return mInputHandler.onSingleRightClickUp(event);
-        }
-        return false;
-    }
-}
\ No newline at end of file
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/Model.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/Model.java
deleted file mode 100644
index 5c15228..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/Model.java
+++ /dev/null
@@ -1,440 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.State.SORT_ORDER_DISPLAY_NAME;
-import static com.android.documentsui.State.SORT_ORDER_LAST_MODIFIED;
-import static com.android.documentsui.State.SORT_ORDER_SIZE;
-import static com.android.documentsui.model.DocumentInfo.getCursorLong;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
-
-import android.database.Cursor;
-import android.database.MergeCursor;
-import android.net.Uri;
-import android.os.Bundle;
-import android.provider.DocumentsContract;
-import android.provider.DocumentsContract.Document;
-import android.support.annotation.Nullable;
-import android.support.annotation.VisibleForTesting;
-import android.util.Log;
-
-import com.android.documentsui.DirectoryResult;
-import com.android.documentsui.RootCursorWrapper;
-import com.android.documentsui.Shared;
-import com.android.documentsui.dirlist.MultiSelectManager.Selection;
-import com.android.documentsui.model.DocumentInfo;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * The data model for the current loaded directory.
- */
-@VisibleForTesting
-public class Model {
-    private static final String TAG = "Model";
-
-    private boolean mIsLoading;
-    private List<UpdateListener> mUpdateListeners = new ArrayList<>();
-    @Nullable private Cursor mCursor;
-    private int mCursorCount;
-    /** Maps Model ID to cursor positions, for looking up items by Model ID. */
-    private Map<String, Integer> mPositions = new HashMap<>();
-    /**
-     * A sorted array of model IDs for the files currently in the Model.  Sort order is determined
-     * by {@link #mSortOrder}
-     */
-    private String mIds[] = new String[0];
-    private int mSortOrder = SORT_ORDER_DISPLAY_NAME;
-
-    @Nullable String info;
-    @Nullable String error;
-    @Nullable DocumentInfo doc;
-
-    private void notifyUpdateListeners() {
-        for (UpdateListener listener: mUpdateListeners) {
-            listener.onModelUpdate(this);
-        }
-    }
-
-    private void notifyUpdateListeners(Exception e) {
-        for (UpdateListener listener: mUpdateListeners) {
-            listener.onModelUpdateFailed(e);
-        }
-    }
-
-    void update(DirectoryResult result) {
-        if (DEBUG) Log.i(TAG, "Updating model with new result set.");
-
-        if (result == null) {
-            mCursor = null;
-            mCursorCount = 0;
-            mIds = new String[0];
-            mPositions.clear();
-            info = null;
-            error = null;
-            doc = null;
-            mIsLoading = false;
-            notifyUpdateListeners();
-            return;
-        }
-
-        if (result.exception != null) {
-            Log.e(TAG, "Error while loading directory contents", result.exception);
-            notifyUpdateListeners(result.exception);
-            return;
-        }
-
-        mCursor = result.cursor;
-        mCursorCount = mCursor.getCount();
-        mSortOrder = result.sortOrder;
-        doc = result.doc;
-
-        updateModelData();
-
-        final Bundle extras = mCursor.getExtras();
-        if (extras != null) {
-            info = extras.getString(DocumentsContract.EXTRA_INFO);
-            error = extras.getString(DocumentsContract.EXTRA_ERROR);
-            mIsLoading = extras.getBoolean(DocumentsContract.EXTRA_LOADING, false);
-        }
-
-        notifyUpdateListeners();
-    }
-
-    @VisibleForTesting
-    int getItemCount() {
-        return mCursorCount;
-    }
-
-    /**
-     * Scan over the incoming cursor data, generate Model IDs for each row, and sort the IDs
-     * according to the current sort order.
-     */
-    private void updateModelData() {
-        int[] positions = new int[mCursorCount];
-        mIds = new String[mCursorCount];
-        boolean[] isDirs = new boolean[mCursorCount];
-        String[] displayNames = null;
-        long[] longValues = null;
-
-        switch (mSortOrder) {
-            case SORT_ORDER_DISPLAY_NAME:
-                displayNames = new String[mCursorCount];
-                break;
-            case SORT_ORDER_LAST_MODIFIED:
-            case SORT_ORDER_SIZE:
-                longValues = new long[mCursorCount];
-                break;
-        }
-
-        String mimeType;
-
-        mCursor.moveToPosition(-1);
-        for (int pos = 0; pos < mCursorCount; ++pos) {
-            if (!mCursor.moveToNext()) {
-                Log.e(TAG, "Fail to move cursor to next pos: " + pos);
-                return;
-            }
-            positions[pos] = pos;
-
-            // Generates a Model ID for a cursor entry that refers to a document. The Model ID is a
-            // unique string that can be used to identify the document referred to by the cursor.
-            // If the cursor is a merged cursor over multiple authorities, then prefix the ids
-            // with the authority to avoid collisions.
-            if (mCursor instanceof MergeCursor) {
-                mIds[pos] = getCursorString(mCursor, RootCursorWrapper.COLUMN_AUTHORITY) + "|" +
-                        getCursorString(mCursor, Document.COLUMN_DOCUMENT_ID);
-            } else {
-                mIds[pos] = getCursorString(mCursor, Document.COLUMN_DOCUMENT_ID);
-            }
-
-            mimeType = getCursorString(mCursor, Document.COLUMN_MIME_TYPE);
-            isDirs[pos] = Document.MIME_TYPE_DIR.equals(mimeType);
-
-            switch(mSortOrder) {
-                case SORT_ORDER_DISPLAY_NAME:
-                    final String displayName = getCursorString(
-                            mCursor, Document.COLUMN_DISPLAY_NAME);
-                    displayNames[pos] = displayName;
-                    break;
-                case SORT_ORDER_LAST_MODIFIED:
-                    longValues[pos] = getLastModified(mCursor);
-                    break;
-                case SORT_ORDER_SIZE:
-                    longValues[pos] = getCursorLong(mCursor, Document.COLUMN_SIZE);
-                    break;
-            }
-        }
-
-        switch (mSortOrder) {
-            case SORT_ORDER_DISPLAY_NAME:
-                binarySort(displayNames, isDirs, positions, mIds);
-                break;
-            case SORT_ORDER_LAST_MODIFIED:
-            case SORT_ORDER_SIZE:
-                binarySort(longValues, isDirs, positions, mIds);
-                break;
-        }
-
-        // Populate the positions.
-        mPositions.clear();
-        for (int i = 0; i < mCursorCount; ++i) {
-            mPositions.put(mIds[i], positions[i]);
-        }
-    }
-
-    /**
-     * Sorts model data. Takes three columns of index-corresponded data. The first column is the
-     * sort key. Rows are sorted in ascending alphabetical order on the sort key.
-     * Directories are always shown first. This code is based on TimSort.binarySort().
-     *
-     * @param sortKey Data is sorted in ascending alphabetical order.
-     * @param isDirs Array saying whether an item is a directory or not.
-     * @param positions Cursor positions to be sorted.
-     * @param ids Model IDs to be sorted.
-     */
-    private static void binarySort(String[] sortKey, boolean[] isDirs, int[] positions, String[] ids) {
-        final int count = positions.length;
-        for (int start = 1; start < count; start++) {
-            final int pivotPosition = positions[start];
-            final String pivotValue = sortKey[start];
-            final boolean pivotIsDir = isDirs[start];
-            final String pivotId = ids[start];
-
-            int left = 0;
-            int right = start;
-
-            while (left < right) {
-                int mid = (left + right) >>> 1;
-
-                // Directories always go in front.
-                int compare = 0;
-                final boolean rhsIsDir = isDirs[mid];
-                if (pivotIsDir && !rhsIsDir) {
-                    compare = -1;
-                } else if (!pivotIsDir && rhsIsDir) {
-                    compare = 1;
-                } else {
-                    final String lhs = pivotValue;
-                    final String rhs = sortKey[mid];
-                    compare = Shared.compareToIgnoreCaseNullable(lhs, rhs);
-                }
-
-                if (compare < 0) {
-                    right = mid;
-                } else {
-                    left = mid + 1;
-                }
-            }
-
-            int n = start - left;
-            switch (n) {
-                case 2:
-                    positions[left + 2] = positions[left + 1];
-                    sortKey[left + 2] = sortKey[left + 1];
-                    isDirs[left + 2] = isDirs[left + 1];
-                    ids[left + 2] = ids[left + 1];
-                case 1:
-                    positions[left + 1] = positions[left];
-                    sortKey[left + 1] = sortKey[left];
-                    isDirs[left + 1] = isDirs[left];
-                    ids[left + 1] = ids[left];
-                    break;
-                default:
-                    System.arraycopy(positions, left, positions, left + 1, n);
-                    System.arraycopy(sortKey, left, sortKey, left + 1, n);
-                    System.arraycopy(isDirs, left, isDirs, left + 1, n);
-                    System.arraycopy(ids, left, ids, left + 1, n);
-            }
-
-            positions[left] = pivotPosition;
-            sortKey[left] = pivotValue;
-            isDirs[left] = pivotIsDir;
-            ids[left] = pivotId;
-        }
-    }
-
-    /**
-     * Sorts model data. Takes four columns of index-corresponded data. The first column is the sort
-     * key, and the second is an array of mime types. The rows are first bucketed by mime type
-     * (directories vs documents) and then each bucket is sorted independently in descending
-     * numerical order on the sort key. This code is based on TimSort.binarySort().
-     *
-     * @param sortKey Data is sorted in descending numerical order.
-     * @param isDirs Array saying whether an item is a directory or not.
-     * @param positions Cursor positions to be sorted.
-     * @param ids Model IDs to be sorted.
-     */
-    private static void binarySort(
-            long[] sortKey, boolean[] isDirs, int[] positions, String[] ids) {
-        final int count = positions.length;
-        for (int start = 1; start < count; start++) {
-            final int pivotPosition = positions[start];
-            final long pivotValue = sortKey[start];
-            final boolean pivotIsDir = isDirs[start];
-            final String pivotId = ids[start];
-
-            int left = 0;
-            int right = start;
-
-            while (left < right) {
-                int mid = ((left + right) >>> 1);
-
-                // Directories always go in front.
-                int compare = 0;
-                final boolean rhsIsDir = isDirs[mid];
-                if (pivotIsDir && !rhsIsDir) {
-                    compare = -1;
-                } else if (!pivotIsDir && rhsIsDir) {
-                    compare = 1;
-                } else {
-                    final long lhs = pivotValue;
-                    final long rhs = sortKey[mid];
-                    // Sort in descending numerical order. This matches legacy behaviour, which
-                    // yields largest or most recent items on top.
-                    compare = -Long.compare(lhs, rhs);
-                }
-
-                // If numerical comparison yields a tie, use document ID as a tie breaker.  This
-                // will yield stable results even if incoming items are continually shuffling and
-                // have identical numerical sort keys.  One common example of this scenario is seen
-                // when sorting a set of active downloads by mod time.
-                if (compare == 0) {
-                    compare = pivotId.compareTo(ids[mid]);
-                }
-
-                if (compare < 0) {
-                    right = mid;
-                } else {
-                    left = mid + 1;
-                }
-            }
-
-            int n = start - left;
-            switch (n) {
-                case 2:
-                    positions[left + 2] = positions[left + 1];
-                    sortKey[left + 2] = sortKey[left + 1];
-                    isDirs[left + 2] = isDirs[left + 1];
-                    ids[left + 2] = ids[left + 1];
-                case 1:
-                    positions[left + 1] = positions[left];
-                    sortKey[left + 1] = sortKey[left];
-                    isDirs[left + 1] = isDirs[left];
-                    ids[left + 1] = ids[left];
-                    break;
-                default:
-                    System.arraycopy(positions, left, positions, left + 1, n);
-                    System.arraycopy(sortKey, left, sortKey, left + 1, n);
-                    System.arraycopy(isDirs, left, isDirs, left + 1, n);
-                    System.arraycopy(ids, left, ids, left + 1, n);
-            }
-
-            positions[left] = pivotPosition;
-            sortKey[left] = pivotValue;
-            isDirs[left] = pivotIsDir;
-            ids[left] = pivotId;
-        }
-    }
-
-    /**
-     * @return Timestamp for the given document. Some docs (e.g. active downloads) have a null
-     * timestamp - these will be replaced with MAX_LONG so that such files get sorted to the top
-     * when sorting by date.
-     */
-    long getLastModified(Cursor cursor) {
-        long l = getCursorLong(mCursor, Document.COLUMN_LAST_MODIFIED);
-        return (l == -1) ? Long.MAX_VALUE : l;
-    }
-
-    public @Nullable Cursor getItem(String modelId) {
-        Integer pos = mPositions.get(modelId);
-        if (pos == null) {
-            if (DEBUG) Log.d(TAG, "Unabled to find cursor position for modelId: " + modelId);
-            return null;
-        }
-
-        if (!mCursor.moveToPosition(pos)) {
-            if (DEBUG) Log.d(TAG,
-                    "Unabled to move cursor to position " + pos + " for modelId: " + modelId);
-            return null;
-        }
-
-        return mCursor;
-    }
-
-    boolean isEmpty() {
-        return mCursorCount == 0;
-    }
-
-    boolean isLoading() {
-        return mIsLoading;
-    }
-
-    List<DocumentInfo> getDocuments(Selection selection) {
-        final int size = (selection != null) ? selection.size() : 0;
-
-        final List<DocumentInfo> docs =  new ArrayList<>(size);
-        // NOTE: That as this now iterates over only final (non-provisional) selection.
-        for (String modelId: selection) {
-            final Cursor cursor = getItem(modelId);
-            if (cursor == null) {
-                Log.w(TAG, "Skipping document. Unabled to obtain cursor for modelId: " + modelId);
-                continue;
-            }
-            docs.add(DocumentInfo.fromDirectoryCursor(cursor));
-        }
-        return docs;
-    }
-
-    public Uri getItemUri(String modelId) {
-        final Cursor cursor = getItem(modelId);
-        return DocumentInfo.getUri(cursor);
-    }
-
-    void addUpdateListener(UpdateListener listener) {
-        mUpdateListeners.add(listener);
-    }
-
-    void removeUpdateListener(UpdateListener listener) {
-        mUpdateListeners.remove(listener);
-    }
-
-    static interface UpdateListener {
-        /**
-         * Called when a successful update has occurred.
-         */
-        void onModelUpdate(Model model);
-
-        /**
-         * Called when an update has been attempted but failed.
-         */
-        void onModelUpdateFailed(Exception e);
-    }
-
-    /**
-     * @return An ordered array of model IDs representing the documents in the model. It is sorted
-     *         according to the current sort order, which was set by the last model update.
-     */
-    public String[] getModelIds() {
-        return mIds;
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/ModelBackedDocumentsAdapter.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/ModelBackedDocumentsAdapter.java
deleted file mode 100644
index 2c1a221..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/ModelBackedDocumentsAdapter.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.State.MODE_GRID;
-import static com.android.documentsui.State.MODE_LIST;
-import static com.android.documentsui.model.DocumentInfo.getCursorInt;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
-
-import android.database.Cursor;
-import android.provider.DocumentsContract.Document;
-import android.util.Log;
-import android.view.ViewGroup;
-
-import com.android.documentsui.State;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-/**
- * Adapts from dirlist.Model to something RecyclerView understands.
- */
-final class ModelBackedDocumentsAdapter extends DocumentsAdapter {
-
-    private static final String TAG = "ModelBackedDocuments";
-    public static final int ITEM_TYPE_DOCUMENT = 1;
-    public static final int ITEM_TYPE_DIRECTORY = 2;
-
-    // Provides access to information needed when creating and view holders. This
-    // isn't an ideal pattern (more transitive dependency stuff) but good enough for now.
-    private final Environment mEnv;
-    private final IconHelper mIconHelper;  // a transitive dependency of the holders.
-
-    /**
-     * An ordered list of model IDs. This is the data structure that determines what shows up in
-     * the UI, and where.
-     */
-    private List<String> mModelIds = new ArrayList<>();
-
-    // List of files that have been deleted. Some transient directory updates
-    // may happen while files are being deleted. During this time we don't
-    // want once-hidden files to be re-shown. We only remove
-    // items from this list when we get a model update where the model
-    // does not contain a corresponding id. This ensures hidden entries
-    // don't momentarily re-appear if we get intermediate updates from
-    // the file system.
-    private Set<String> mHiddenIds = new HashSet<>();
-
-    public ModelBackedDocumentsAdapter(Environment env, IconHelper iconHelper) {
-        mEnv = env;
-        mIconHelper = iconHelper;
-    }
-
-    @Override
-    public DocumentHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-        DocumentHolder holder = null;
-        final State state = mEnv.getDisplayState();
-        switch (state.derivedMode) {
-            case MODE_GRID:
-                switch (viewType) {
-                    case ITEM_TYPE_DIRECTORY:
-                        holder = new GridDirectoryHolder(mEnv.getContext(), parent);
-                        break;
-                    case ITEM_TYPE_DOCUMENT:
-                        holder = new GridDocumentHolder(mEnv.getContext(), parent, mIconHelper);
-                        break;
-                    default:
-                        throw new IllegalStateException("Unsupported layout type.");
-                }
-                break;
-            case MODE_LIST:
-                holder = new ListDocumentHolder(mEnv.getContext(), parent, mIconHelper);
-                break;
-            default:
-                throw new IllegalStateException("Unsupported layout mode.");
-        }
-
-        mEnv.initDocumentHolder(holder);
-        return holder;
-    }
-
-    @Override
-    public void onBindViewHolder(DocumentHolder holder, int position, List<Object> payload) {
-        if (payload.contains(SELECTION_CHANGED_MARKER)) {
-            final boolean selected = mEnv.isSelected(mModelIds.get(position));
-            holder.setSelected(selected, true);
-        } else {
-            onBindViewHolder(holder, position);
-        }
-    }
-
-    @Override
-    public void onBindViewHolder(DocumentHolder holder, int position) {
-        String modelId = mModelIds.get(position);
-        Cursor cursor = mEnv.getModel().getItem(modelId);
-        holder.bind(cursor, modelId, mEnv.getDisplayState());
-
-        final String docMimeType = getCursorString(cursor, Document.COLUMN_MIME_TYPE);
-        final int docFlags = getCursorInt(cursor, Document.COLUMN_FLAGS);
-
-        boolean enabled = mEnv.isDocumentEnabled(docMimeType, docFlags);
-        boolean selected = mEnv.isSelected(modelId);
-        if (!enabled) {
-            assert(!selected);
-        }
-        holder.setEnabled(enabled);
-        holder.setSelected(mEnv.isSelected(modelId), false);
-
-        mEnv.onBindDocumentHolder(holder, cursor);
-    }
-
-    @Override
-    public int getItemCount() {
-        return mModelIds.size();
-    }
-
-    @Override
-    public void onModelUpdate(Model model) {
-        if (DEBUG && mHiddenIds.size() > 0) {
-            Log.d(TAG, "Updating model with hidden ids: " + mHiddenIds);
-        }
-
-        String[] modelIds = model.getModelIds();
-        mModelIds = new ArrayList<>(modelIds.length);
-        for (String id : modelIds) {
-            if (!mHiddenIds.contains(id)) {
-                mModelIds.add(id);
-            } else {
-                if (DEBUG) Log.d(TAG, "Omitting hidden id from model during update: " + id);
-            }
-        }
-
-        // Finally remove any hidden ids that aren't present in the model.
-        // This assumes that model updates represent a complete set of files.
-        mHiddenIds.retainAll(mModelIds);
-    }
-
-    @Override
-    public void onModelUpdateFailed(Exception e) {
-        Log.w(TAG, "Model update failed.", e);
-        mModelIds.clear();
-    }
-
-    @Override
-    public String getModelId(int adapterPosition) {
-        return mModelIds.get(adapterPosition);
-    }
-
-    @Override
-    public List<String> getModelIds() {
-        return mModelIds;
-    }
-
-    @Override
-    public int getItemViewType(int position) {
-        return isDirectory(mEnv.getModel(), position)
-                ? ITEM_TYPE_DIRECTORY
-                : ITEM_TYPE_DOCUMENT;
-    }
-
-    @Override
-    public void onItemSelectionChanged(String id) {
-        int position = mModelIds.indexOf(id);
-
-        if (position >= 0) {
-            notifyItemChanged(position, SELECTION_CHANGED_MARKER);
-        } else {
-            Log.w(TAG, "Item change notification received for unknown item: " + id);
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/MultiSelectManager.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/MultiSelectManager.java
deleted file mode 100644
index 9c0b967..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/MultiSelectManager.java
+++ /dev/null
@@ -1,821 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import static com.android.documentsui.Shared.DEBUG;
-
-import android.annotation.IntDef;
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.support.annotation.VisibleForTesting;
-import android.support.v7.widget.RecyclerView;
-import android.util.Log;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.annotation.Nullable;
-
-/**
- * MultiSelectManager provides support traditional multi-item selection support to RecyclerView.
- * Additionally it can be configured to restrict selection to a single element, @see
- * #setSelectMode.
- */
-public final class MultiSelectManager {
-
-    @IntDef(flag = true, value = {
-            MODE_MULTIPLE,
-            MODE_SINGLE
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface SelectionMode {}
-    public static final int MODE_MULTIPLE = 0;
-    public static final int MODE_SINGLE = 1;
-
-    private static final String TAG = "MultiSelectManager";
-
-    private final Selection mSelection = new Selection();
-
-    private final DocumentsAdapter mAdapter;
-    private final List<MultiSelectManager.Callback> mCallbacks = new ArrayList<>(1);
-
-    private @Nullable Range mRanger;
-    private boolean mSingleSelect;
-
-    public MultiSelectManager(DocumentsAdapter adapter, @SelectionMode int mode) {
-
-        assert(adapter != null);
-
-        mAdapter = adapter;
-
-        mSingleSelect = mode == MODE_SINGLE;
-        mAdapter.registerAdapterDataObserver(
-                new RecyclerView.AdapterDataObserver() {
-
-                    private List<String> mModelIds;
-
-                    @Override
-                    public void onChanged() {
-                        mModelIds = mAdapter.getModelIds();
-
-                        // Update the selection to remove any disappeared IDs.
-                        mSelection.cancelProvisionalSelection();
-                        mSelection.intersect(mModelIds);
-                    }
-
-                    @Override
-                    public void onItemRangeChanged(
-                            int startPosition, int itemCount, Object payload) {
-                        // No change in position. Ignoring.
-                    }
-
-                    @Override
-                    public void onItemRangeInserted(int startPosition, int itemCount) {
-                        mSelection.cancelProvisionalSelection();
-                    }
-
-                    @Override
-                    public void onItemRangeRemoved(int startPosition, int itemCount) {
-                        assert(startPosition >= 0);
-                        assert(itemCount > 0);
-
-                        mSelection.cancelProvisionalSelection();
-                        // Remove any disappeared IDs from the selection.
-                        mSelection.intersect(mModelIds);
-                    }
-
-                    @Override
-                    public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) {
-                        throw new UnsupportedOperationException();
-                    }
-                });
-    }
-
-    void bindContoller(BandController controller) {
-        // Provides BandController with access to private mSelection state.
-        controller.bindSelection(mSelection);
-    }
-
-    /**
-     * Adds {@code callback} such that it will be notified when {@code MultiSelectManager}
-     * events occur.
-     *
-     * @param callback
-     */
-    public void addCallback(MultiSelectManager.Callback callback) {
-        mCallbacks.add(callback);
-    }
-
-    public boolean hasSelection() {
-        return !mSelection.isEmpty();
-    }
-
-    /**
-     * Returns a Selection object that provides a live view
-     * on the current selection.
-     *
-     * @see #getSelection(Selection) on how to get a snapshot
-     *     of the selection that will not reflect future changes
-     *     to selection.
-     *
-     * @return The current selection.
-     */
-    public Selection getSelection() {
-        return mSelection;
-    }
-
-    /**
-     * Updates {@code dest} to reflect the current selection.
-     * @param dest
-     *
-     * @return The Selection instance passed in, for convenience.
-     */
-    public Selection getSelection(Selection dest) {
-        dest.copyFrom(mSelection);
-        return dest;
-    }
-
-    public void replaceSelection(Iterable<String> ids) {
-        clearSelection();
-        setItemsSelected(ids, true);
-    }
-
-    /**
-     * Returns an unordered array of selected positions, including any
-     * provisional selection currently in effect.
-     */
-    public void restoreSelection(Selection other) {
-        setItemsSelected(other.mSelection, true);
-        // NOTE: We intentionally don't restore provisional selection. It's provisional.
-    }
-
-    /**
-     * Sets the selected state of the specified items. Note that the callback will NOT
-     * be consulted to see if an item can be selected.
-     *
-     * @param ids
-     * @param selected
-     * @return
-     */
-    public boolean setItemsSelected(Iterable<String> ids, boolean selected) {
-        boolean changed = false;
-        for (String id: ids) {
-            boolean itemChanged = selected ? mSelection.add(id) : mSelection.remove(id);
-            if (itemChanged) {
-                notifyItemStateChanged(id, selected);
-            }
-            changed |= itemChanged;
-        }
-        notifySelectionChanged();
-        return changed;
-    }
-
-    /**
-     * Clears the selection and notifies (even if nothing changes).
-     */
-    public void clearSelection() {
-        clearSelectionQuietly();
-        notifySelectionChanged();
-    }
-
-    /**
-     * Clears the selection, without notifying selection listeners. UI elements still need to be
-     * notified about state changes so that they can update their appearance.
-     */
-    private void clearSelectionQuietly() {
-        mRanger = null;
-
-        if (!hasSelection()) {
-            return;
-        }
-
-        Selection oldSelection = getSelection(new Selection());
-        mSelection.clear();
-
-        for (String id: oldSelection.mSelection) {
-            notifyItemStateChanged(id, false);
-        }
-        for (String id: oldSelection.mProvisionalSelection) {
-            notifyItemStateChanged(id, false);
-        }
-    }
-
-    void snapSelection(int position) {
-        mRanger.snapSelection(position);
-
-        // We're being lazy here notifying even when something might not have changed.
-        // To make this more correct, we'd need to update the Ranger class to return
-        // information about what has changed.
-        notifySelectionChanged();
-    }
-
-    /**
-     * Toggles selection on the item with the given model ID.
-     *
-     * @param modelId
-     */
-    public void toggleSelection(String modelId) {
-        assert(modelId != null);
-
-        boolean changed = false;
-        if (mSelection.contains(modelId)) {
-            changed = attemptDeselect(modelId);
-        } else {
-            changed = attemptSelect(modelId);
-        }
-
-        if (changed) {
-            notifySelectionChanged();
-        }
-    }
-
-    /**
-     * Starts a range selection. If a range selection is already active, this will start a new range
-     * selection (which will reset the range anchor).
-     *
-     * @param pos The anchor position for the selection range.
-     */
-    void startRangeSelection(int pos) {
-        attemptSelect(mAdapter.getModelId(pos));
-        setSelectionRangeBegin(pos);
-    }
-
-    /**
-     * Sets the end point for the current range selection, started by a call to
-     * {@link #startRangeSelection(int)}. This function should only be called when a range selection
-     * is active (see {@link #isRangeSelectionActive()}. Items in the range [anchor, end] will be
-     * selected.
-     *
-     * @param pos The new end position for the selection range.
-     */
-    void snapRangeSelection(int pos) {
-        if (!isRangeSelectionActive()) {
-            throw new IllegalStateException("Range start point not set.");
-        }
-
-        mRanger.snapSelection(pos);
-        notifySelectionChanged();
-    }
-
-    /**
-     * Stops an in-progress range selection.
-     */
-    void endRangeSelection() {
-        mRanger = null;
-    }
-
-    /**
-     * @return Whether or not there is a current range selection active.
-     */
-    boolean isRangeSelectionActive() {
-        return mRanger != null;
-    }
-
-    /**
-     * Sets the magic location at which a selection range begins (the selection anchor). This value
-     * is consulted when determining how to extend, and modify selection ranges. Calling this when a
-     * range selection is active will reset the range selection.
-     *
-     * @throws IllegalStateException if {@code position} is not already be selected
-     * @param position
-     */
-    void setSelectionRangeBegin(int position) {
-        if (position == RecyclerView.NO_POSITION) {
-            return;
-        }
-
-        if (mSelection.contains(mAdapter.getModelId(position))) {
-            mRanger = new Range(position);
-        }
-    }
-
-    /**
-     * Try to set selection state for all elements in range. Not that callbacks can cancel selection
-     * of specific items, so some or even all items may not reflect the desired state after the
-     * update is complete.
-     *
-     * @param begin Adapter position for range start (inclusive).
-     * @param end Adapter position for range end (inclusive).
-     * @param selected New selection state.
-     */
-    private void updateRange(int begin, int end, boolean selected) {
-        assert(end >= begin);
-        for (int i = begin; i <= end; i++) {
-            String id = mAdapter.getModelId(i);
-            if (id == null) {
-                continue;
-            }
-
-            if (selected) {
-                boolean canSelect = notifyBeforeItemStateChange(id, true);
-                if (canSelect) {
-                    if (mSingleSelect && hasSelection()) {
-                        clearSelectionQuietly();
-                    }
-                    selectAndNotify(id);
-                }
-            } else {
-                attemptDeselect(id);
-            }
-        }
-    }
-
-    /**
-     * @param modelId
-     * @return True if the update was applied.
-     */
-    private boolean selectAndNotify(String modelId) {
-        boolean changed = mSelection.add(modelId);
-        if (changed) {
-            notifyItemStateChanged(modelId, true);
-        }
-        return changed;
-    }
-
-    /**
-     * @param id
-     * @return True if the update was applied.
-     */
-    private boolean attemptDeselect(String id) {
-        assert(id != null);
-        if (notifyBeforeItemStateChange(id, false)) {
-            mSelection.remove(id);
-            notifyItemStateChanged(id, false);
-            if (DEBUG) Log.d(TAG, "Selection after deselect: " + mSelection);
-            return true;
-        } else {
-            if (DEBUG) Log.d(TAG, "Select cancelled by listener.");
-            return false;
-        }
-    }
-
-    /**
-     * @param id
-     * @return True if the update was applied.
-     */
-    private boolean attemptSelect(String id) {
-        assert(id != null);
-        boolean canSelect = notifyBeforeItemStateChange(id, true);
-        if (!canSelect) {
-            return false;
-        }
-        if (mSingleSelect && hasSelection()) {
-            clearSelectionQuietly();
-        }
-
-        selectAndNotify(id);
-        return true;
-    }
-
-    boolean notifyBeforeItemStateChange(String id, boolean nextState) {
-        int lastListener = mCallbacks.size() - 1;
-        for (int i = lastListener; i > -1; i--) {
-            if (!mCallbacks.get(i).onBeforeItemStateChange(id, nextState)) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Notifies registered listeners when the selection status of a single item
-     * (identified by {@code position}) changes.
-     */
-    void notifyItemStateChanged(String id, boolean selected) {
-        assert(id != null);
-        int lastListener = mCallbacks.size() - 1;
-        for (int i = lastListener; i > -1; i--) {
-            mCallbacks.get(i).onItemStateChanged(id, selected);
-        }
-        mAdapter.onItemSelectionChanged(id);
-    }
-
-    /**
-     * Notifies registered listeners when the selection has changed. This
-     * notification should be sent only once a full series of changes
-     * is complete, e.g. clearingSelection, or updating the single
-     * selection from one item to another.
-     */
-    void notifySelectionChanged() {
-        int lastListener = mCallbacks.size() - 1;
-        for (int i = lastListener; i > -1; i--) {
-            mCallbacks.get(i).onSelectionChanged();
-        }
-    }
-
-    /**
-     * Class providing support for managing range selections.
-     */
-    private final class Range {
-        private static final int UNDEFINED = -1;
-
-        final int mBegin;
-        int mEnd = UNDEFINED;
-
-        public Range(int begin) {
-            if (DEBUG) Log.d(TAG, "New Ranger created beginning @ " + begin);
-            mBegin = begin;
-        }
-
-        private void snapSelection(int position) {
-            assert(mRanger != null);
-            assert(position != RecyclerView.NO_POSITION);
-
-            if (mEnd == UNDEFINED || mEnd == mBegin) {
-                // Reset mEnd so it can be established in establishRange.
-                mEnd = UNDEFINED;
-                establishRange(position);
-            } else {
-                reviseRange(position);
-            }
-        }
-
-        private void establishRange(int position) {
-            assert(mRanger.mEnd == UNDEFINED);
-
-            if (position == mBegin) {
-                mEnd = position;
-            }
-
-            if (position > mBegin) {
-                updateRange(mBegin + 1, position, true);
-            } else if (position < mBegin) {
-                updateRange(position, mBegin - 1, true);
-            }
-
-            mEnd = position;
-        }
-
-        private void reviseRange(int position) {
-            assert(mEnd != UNDEFINED);
-            assert(mBegin != mEnd);
-
-            if (position == mEnd) {
-                if (DEBUG) Log.i(TAG, "Skipping no-op revision click on mEndRange.");
-            }
-
-            if (mEnd > mBegin) {
-                reviseAscendingRange(position);
-            } else if (mEnd < mBegin) {
-                reviseDescendingRange(position);
-            }
-            // the "else" case is covered by checkState at beginning of method.
-
-            mEnd = position;
-        }
-
-        /**
-         * Updates an existing ascending seleciton.
-         * @param position
-         */
-        private void reviseAscendingRange(int position) {
-            // Reducing or reversing the range....
-            if (position < mEnd) {
-                if (position < mBegin) {
-                    updateRange(mBegin + 1, mEnd, false);
-                    updateRange(position, mBegin -1, true);
-                } else {
-                    updateRange(position + 1, mEnd, false);
-                }
-            }
-
-            // Extending the range...
-            else if (position > mEnd) {
-                updateRange(mEnd + 1, position, true);
-            }
-        }
-
-        private void reviseDescendingRange(int position) {
-            // Reducing or reversing the range....
-            if (position > mEnd) {
-                if (position > mBegin) {
-                    updateRange(mEnd, mBegin - 1, false);
-                    updateRange(mBegin + 1, position, true);
-                } else {
-                    updateRange(mEnd, position - 1, false);
-                }
-            }
-
-            // Extending the range...
-            else if (position < mEnd) {
-                updateRange(position, mEnd - 1, true);
-            }
-        }
-    }
-
-    /**
-     * Object representing the current selection. Provides read only access
-     * public access, and private write access.
-     */
-    public static final class Selection implements Iterable<String>, Parcelable {
-
-        // This class tracks selected items by managing two sets: the saved selection, and the total
-        // selection. Saved selections are those which have been completed by tapping an item or by
-        // completing a band select operation. Provisional selections are selections which have been
-        // temporarily created by an in-progress band select operation (once the user releases the
-        // mouse button during a band select operation, the selected items become saved). The total
-        // selection is the combination of both the saved selection and the provisional
-        // selection. Tracking both separately is necessary to ensure that saved selections do not
-        // become deselected when they are removed from the provisional selection; for example, if
-        // item A is tapped (and selected), then an in-progress band select covers A then uncovers
-        // A, A should still be selected as it has been saved. To ensure this behavior, the saved
-        // selection must be tracked separately.
-        private final Set<String> mSelection;
-        private final Set<String> mProvisionalSelection;
-        private String mDirectoryKey;
-
-        public Selection() {
-            mSelection = new HashSet<String>();
-            mProvisionalSelection = new HashSet<String>();
-        }
-
-        /**
-         * Used by CREATOR.
-         */
-        private Selection(String directoryKey, Set<String> selection) {
-            mDirectoryKey = directoryKey;
-            mSelection = selection;
-            mProvisionalSelection = new HashSet<String>();
-        }
-
-        /**
-         * @param id
-         * @return true if the position is currently selected.
-         */
-        public boolean contains(@Nullable String id) {
-            return mSelection.contains(id) || mProvisionalSelection.contains(id);
-        }
-
-        /**
-         * Returns an {@link Iterator} that iterators over the selection, *excluding*
-         * any provisional selection.
-         *
-         * {@inheritDoc}
-         */
-        @Override
-        public Iterator<String> iterator() {
-            return mSelection.iterator();
-        }
-
-        /**
-         * @return size of the selection including both final and provisional selected items.
-         */
-        public int size() {
-            return mSelection.size() + mProvisionalSelection.size();
-        }
-
-        /**
-         * @return true if the selection is empty.
-         */
-        public boolean isEmpty() {
-            return mSelection.isEmpty() && mProvisionalSelection.isEmpty();
-        }
-
-        /**
-         * Sets the provisional selection, which is a temporary selection that can be saved,
-         * canceled, or adjusted at a later time. When a new provision selection is applied, the old
-         * one (if it exists) is abandoned.
-         * @return Map of ids added or removed. Added ids have a value of true, removed are false.
-         */
-        @VisibleForTesting
-        protected Map<String, Boolean> setProvisionalSelection(Set<String> newSelection) {
-            Map<String, Boolean> delta = new HashMap<>();
-
-            for (String id: mProvisionalSelection) {
-                // Mark each item that used to be in the selection but is unsaved and not in the new
-                // provisional selection.
-                if (!newSelection.contains(id) && !mSelection.contains(id)) {
-                    delta.put(id, false);
-                }
-            }
-
-            for (String id: mSelection) {
-                // Mark each item that used to be in the selection but is unsaved and not in the new
-                // provisional selection.
-                if (!newSelection.contains(id)) {
-                    delta.put(id, false);
-                }
-            }
-
-            for (String id: newSelection) {
-                // Mark each item that was not previously in the selection but is in the new
-                // provisional selection.
-                if (!mSelection.contains(id) && !mProvisionalSelection.contains(id)) {
-                    delta.put(id, true);
-                }
-            }
-
-            // Now, iterate through the changes and actually add/remove them to/from the current
-            // selection. This could not be done in the previous loops because changing the size of
-            // the selection mid-iteration changes iteration order erroneously.
-            for (Map.Entry<String, Boolean> entry: delta.entrySet()) {
-                String id = entry.getKey();
-                if (entry.getValue()) {
-                    mProvisionalSelection.add(id);
-                } else {
-                    mProvisionalSelection.remove(id);
-                }
-            }
-
-            return delta;
-        }
-
-        /**
-         * Saves the existing provisional selection. Once the provisional selection is saved,
-         * subsequent provisional selections which are different from this existing one cannot
-         * cause items in this existing provisional selection to become deselected.
-         */
-        @VisibleForTesting
-        protected void applyProvisionalSelection() {
-            mSelection.addAll(mProvisionalSelection);
-            mProvisionalSelection.clear();
-        }
-
-        /**
-         * Abandons the existing provisional selection so that all items provisionally selected are
-         * now deselected.
-         */
-        @VisibleForTesting
-        void cancelProvisionalSelection() {
-            mProvisionalSelection.clear();
-        }
-
-        /** @hide */
-        @VisibleForTesting
-        boolean add(String id) {
-            if (!mSelection.contains(id)) {
-                mSelection.add(id);
-                return true;
-            }
-            return false;
-        }
-
-        /** @hide */
-        @VisibleForTesting
-        boolean remove(String id) {
-            if (mSelection.contains(id)) {
-                mSelection.remove(id);
-                return true;
-            }
-            return false;
-        }
-
-        public void clear() {
-            mSelection.clear();
-        }
-
-        /**
-         * Trims this selection to be the intersection of itself with the set of given IDs.
-         */
-        public void intersect(Collection<String> ids) {
-            mSelection.retainAll(ids);
-            mProvisionalSelection.retainAll(ids);
-        }
-
-        @VisibleForTesting
-        void copyFrom(Selection source) {
-            mSelection.clear();
-            mSelection.addAll(source.mSelection);
-
-            mProvisionalSelection.clear();
-            mProvisionalSelection.addAll(source.mProvisionalSelection);
-        }
-
-        @Override
-        public String toString() {
-            if (size() <= 0) {
-                return "size=0, items=[]";
-            }
-
-            StringBuilder buffer = new StringBuilder(size() * 28);
-            buffer.append("Selection{")
-                .append("applied{size=" + mSelection.size())
-                .append(", entries=" + mSelection)
-                .append("}, provisional{size=" + mProvisionalSelection.size())
-                .append(", entries=" + mProvisionalSelection)
-                .append("}}");
-            return buffer.toString();
-        }
-
-        @Override
-        public int hashCode() {
-            return mSelection.hashCode() ^ mProvisionalSelection.hashCode();
-        }
-
-        @Override
-        public boolean equals(Object that) {
-          if (this == that) {
-              return true;
-          }
-
-          if (!(that instanceof Selection)) {
-              return false;
-          }
-
-          return mSelection.equals(((Selection) that).mSelection) &&
-                  mProvisionalSelection.equals(((Selection) that).mProvisionalSelection);
-        }
-
-        /**
-         * Sets the state key for this selection, which allows us to match selections
-         * to particular states (of DirectoryFragment). Basically this lets us avoid
-         * loading a persisted selection in the wrong directory.
-         */
-        public void setDirectoryKey(String key) {
-            mDirectoryKey = key;
-        }
-
-        /**
-         * Sets the state key for this selection, which allows us to match selections
-         * to particular states (of DirectoryFragment). Basically this lets us avoid
-         * loading a persisted selection in the wrong directory.
-         */
-        public boolean hasDirectoryKey(String key) {
-            return key.equals(mDirectoryKey);
-        }
-
-        @Override
-        public int describeContents() {
-            return 0;
-        }
-
-        @Override
-        public void writeToParcel(Parcel dest, int flags) {
-            dest.writeString(mDirectoryKey);
-            dest.writeStringList(new ArrayList<>(mSelection));
-            // We don't include provisional selection since it is
-            // typically coupled to some other runtime state (like a band).
-        }
-
-        public static final ClassLoaderCreator<Selection> CREATOR =
-                new ClassLoaderCreator<Selection>() {
-            @Override
-            public Selection createFromParcel(Parcel in) {
-                return createFromParcel(in, null);
-            }
-
-            @Override
-            public Selection createFromParcel(Parcel in, ClassLoader loader) {
-                String directoryKey = in.readString();
-
-                ArrayList<String> selected = new ArrayList<>();
-                in.readStringList(selected);
-
-                return new Selection(directoryKey, new HashSet<String>(selected));
-            }
-
-            @Override
-            public Selection[] newArray(int size) {
-                return new Selection[size];
-            }
-        };
-    }
-
-    public interface Callback {
-        /**
-         * Called when an item is selected or unselected while in selection mode.
-         *
-         * @param position Adapter position of the item that was checked or unchecked
-         * @param selected <code>true</code> if the item is now selected, <code>false</code>
-         *                if the item is now unselected.
-         */
-        public void onItemStateChanged(String id, boolean selected);
-
-        /**
-         * Called prior to an item changing state. Callbacks can cancel
-         * the change at {@code position} by returning {@code false}.
-         *
-         * @param id Adapter position of the item that was checked or unchecked
-         * @param selected <code>true</code> if the item is to be selected, <code>false</code>
-         *                if the item is to be unselected.
-         */
-        public boolean onBeforeItemStateChange(String id, boolean selected);
-
-        /**
-         * Called immediately after completion of any set of changes.
-         */
-        public void onSelectionChanged();
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/RenameDocumentFragment.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/RenameDocumentFragment.java
deleted file mode 100644
index 73aa366..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/RenameDocumentFragment.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import static com.android.documentsui.Shared.TAG;
-
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.app.FragmentManager;
-import android.content.ContentProviderClient;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnClickListener;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.Bundle;
-import android.provider.DocumentsContract;
-import android.support.annotation.Nullable;
-import android.support.design.widget.Snackbar;
-import android.util.Log;
-import android.view.KeyEvent;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.inputmethod.EditorInfo;
-import android.widget.EditText;
-import android.widget.TextView;
-import android.widget.TextView.OnEditorActionListener;
-
-import com.android.documentsui.BaseActivity;
-import com.android.documentsui.DocumentsApplication;
-import com.android.documentsui.Metrics;
-import com.android.documentsui.R;
-import com.android.documentsui.Shared;
-import com.android.documentsui.Snackbars;
-import com.android.documentsui.model.DocumentInfo;
-
-/**
- * Dialog to rename file or directory.
- */
-public class RenameDocumentFragment extends DialogFragment {
-    private static final String TAG_RENAME_DOCUMENT = "rename_document";
-    private DocumentInfo mDocument;
-    private EditText mEditText;
-
-    public static void show(FragmentManager fm, DocumentInfo document) {
-        final RenameDocumentFragment dialog = new RenameDocumentFragment();
-        dialog.mDocument = document;
-        dialog.show(fm, TAG_RENAME_DOCUMENT);
-    }
-
-    /**
-     * Creates the dialog UI.
-     * @param savedInstanceState
-     * @return
-     */
-    @Override
-    public Dialog onCreateDialog(Bundle savedInstanceState) {
-        Context context = getActivity();
-        AlertDialog.Builder builder = new AlertDialog.Builder(context);
-        LayoutInflater dialogInflater = LayoutInflater.from(builder.getContext());
-        View view = dialogInflater.inflate(R.layout.dialog_file_name, null, false);
-
-        mEditText = (EditText) view.findViewById(android.R.id.text1);
-        builder.setTitle(R.string.menu_rename);
-        builder.setView(view);
-
-        builder.setPositiveButton(
-                android.R.string.ok,
-                new OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int which) {
-                        renameDocuments(mEditText.getText().toString());
-                    }
-                });
-
-        builder.setNegativeButton(android.R.string.cancel, null);
-
-        final AlertDialog dialog = builder.create();
-
-        // Workaround for the problem - virtual keyboard doesn't show on the phone.
-        Shared.ensureKeyboardPresent(context, dialog);
-
-        mEditText.setOnEditorActionListener(
-                new OnEditorActionListener() {
-                    @Override
-                    public boolean onEditorAction(
-                            TextView view, int actionId, @Nullable KeyEvent event) {
-                        if ((actionId == EditorInfo.IME_ACTION_DONE) || (event != null
-                                && event.getKeyCode() == KeyEvent.KEYCODE_ENTER
-                                && event.hasNoModifiers())) {
-                            renameDocuments(mEditText.getText().toString());
-                            dialog.dismiss();
-                            return true;
-                        }
-                        return false;
-                    }
-                });
-        return dialog;
-    }
-
-    /**
-     * Sets/Restores the data.
-     * @param savedInstanceState
-     * @return
-     */
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-
-        if(savedInstanceState == null) {
-            // Fragment created for the first time, we set the text.
-            // mDocument value was set in show
-            mEditText.setText(mDocument.displayName);
-        }
-        else {
-            // Fragment restored, text was restored automatically.
-            // mDocument value needs to be restored.
-            mDocument = savedInstanceState.getParcelable(Shared.EXTRA_DOC);
-        }
-        // Do selection in both cases, because we cleared it.
-        selectFileName(mEditText);
-    }
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        // Clear selection before storing state and restore it manually,
-        // because otherwise after rotation selection is displayed with cut/copy menu visible :/
-        clearFileNameSelection(mEditText);
-
-        super.onSaveInstanceState(outState);
-
-        outState.putParcelable(Shared.EXTRA_DOC, mDocument);
-    }
-
-    /**
-     * Validates if string is a proper document name.
-     * Checks if string is not empty. More rules might be added later.
-     * @param docName string representing document name
-     * @returns true if string is a valid name.
-     **/
-    private boolean isValidDocumentName(String docName) {
-        return !docName.isEmpty();
-    }
-
-    /**
-     * Fills text field with the file name and selects the name without extension.
-     *
-     * @param editText text field to be filled
-     */
-    private void selectFileName(EditText editText) {
-        String text = editText.getText().toString();
-        int separatorIndex = text.indexOf(".");
-        editText.setSelection(0,
-                (separatorIndex == -1 || mDocument.isDirectory()) ? text.length() : separatorIndex);
-    }
-
-    /**
-     * Clears selection in text field.
-     *
-     * @param editText text field to be cleared.
-     */
-    private void clearFileNameSelection(EditText editText) {
-        editText.setSelection(0, 0);
-    }
-
-    private void renameDocuments(String newDisplayName) {
-        BaseActivity activity = (BaseActivity) getActivity();
-
-        if (isValidDocumentName(newDisplayName)) {
-            new RenameDocumentsTask(activity, newDisplayName).execute(mDocument);
-        } else {
-            Log.w(TAG, "Failed to rename file - invalid name:" + newDisplayName);
-            Snackbars.makeSnackbar(getActivity(), R.string.rename_error,
-                    Snackbar.LENGTH_SHORT).show();
-        }
-
-    }
-
-    private class RenameDocumentsTask extends AsyncTask<DocumentInfo, Void, DocumentInfo> {
-        private final BaseActivity mActivity;
-        private final String mNewDisplayName;
-
-        public RenameDocumentsTask(BaseActivity activity, String newDisplayName) {
-            mActivity = activity;
-            mNewDisplayName = newDisplayName;
-        }
-
-        @Override
-        protected void onPreExecute() {
-            mActivity.setPending(true);
-        }
-
-        @Override
-        protected DocumentInfo doInBackground(DocumentInfo... document) {
-            assert(document.length == 1);
-            final ContentResolver resolver = mActivity.getContentResolver();
-            ContentProviderClient client = null;
-
-            try {
-                client = DocumentsApplication.acquireUnstableProviderOrThrow(
-                        resolver, document[0].derivedUri.getAuthority());
-                Uri newUri = DocumentsContract.renameDocument(
-                        client, document[0].derivedUri, mNewDisplayName);
-                return DocumentInfo.fromUri(resolver, newUri);
-            } catch (Exception e) {
-                Log.w(TAG, "Failed to rename file", e);
-                return null;
-            } finally {
-                ContentProviderClient.releaseQuietly(client);
-            }
-        }
-
-        @Override
-        protected void onPostExecute(DocumentInfo result) {
-            if (result != null) {
-                Metrics.logRenameFileOperation(getContext());
-            } else {
-                Snackbars.makeSnackbar(mActivity, R.string.rename_error, Snackbar.LENGTH_SHORT)
-                        .show();
-                Metrics.logRenameFileError(getContext());
-            }
-            mActivity.setPending(false);
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/SectionBreakDocumentsAdapterWrapper.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/SectionBreakDocumentsAdapterWrapper.java
deleted file mode 100644
index 55a6de7..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/SectionBreakDocumentsAdapterWrapper.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.support.v7.widget.GridLayoutManager;
-import android.support.v7.widget.RecyclerView.AdapterDataObserver;
-import android.view.ViewGroup;
-import android.widget.Space;
-
-import com.android.documentsui.R;
-import com.android.documentsui.State;
-
-import java.util.List;
-
-/**
- * Adapter wrapper that inserts a sort of line break item between directories and regular files.
- * Only needs to be used in GRID mode...at this time.
- */
-final class SectionBreakDocumentsAdapterWrapper extends DocumentsAdapter {
-
-    private static final String TAG = "SectionBreakDocumentsAdapterWrapper";
-    private static final int ITEM_TYPE_SECTION_BREAK = Integer.MAX_VALUE;
-
-    private final Environment mEnv;
-    private final DocumentsAdapter mDelegate;
-
-    private int mBreakPosition = -1;
-
-    SectionBreakDocumentsAdapterWrapper(Environment environment, DocumentsAdapter delegate) {
-        mEnv = environment;
-        mDelegate = delegate;
-
-        // Relay events published by our delegate to our listeners (presumably RecyclerView)
-        // with adjusted positions.
-        mDelegate.registerAdapterDataObserver(new EventRelay());
-    }
-
-    public GridLayoutManager.SpanSizeLookup createSpanSizeLookup() {
-        return new GridLayoutManager.SpanSizeLookup() {
-            @Override
-            public int getSpanSize(int position) {
-                // Make layout whitespace span the grid. This has the effect of breaking
-                // grid rows whenever layout whitespace is encountered.
-                if (getItemViewType(position) == ITEM_TYPE_SECTION_BREAK) {
-                    return mEnv.getColumnCount();
-                } else {
-                    return 1;
-                }
-            }
-        };
-    }
-
-    @Override
-    public DocumentHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-        if (viewType == ITEM_TYPE_SECTION_BREAK) {
-            return new EmptyDocumentHolder(mEnv.getContext());
-        } else {
-            return mDelegate.createViewHolder(parent, viewType);
-        }
-    }
-
-    @Override
-    public void onBindViewHolder(DocumentHolder holder, int p, List<Object> payload) {
-        if (holder.getItemViewType() != ITEM_TYPE_SECTION_BREAK) {
-            mDelegate.onBindViewHolder(holder, toDelegatePosition(p), payload);
-        } else {
-            ((EmptyDocumentHolder)holder).bind(mEnv.getDisplayState());
-        }
-    }
-
-    @Override
-    public void onBindViewHolder(DocumentHolder holder, int p) {
-        if (holder.getItemViewType() != ITEM_TYPE_SECTION_BREAK) {
-            mDelegate.onBindViewHolder(holder, toDelegatePosition(p));
-        } else {
-            ((EmptyDocumentHolder)holder).bind(mEnv.getDisplayState());
-        }
-    }
-
-    @Override
-    public int getItemCount() {
-        return mBreakPosition == -1
-                ? mDelegate.getItemCount()
-                : mDelegate.getItemCount() + 1;
-    }
-
-    @Override
-    public void onModelUpdate(Model model) {
-        mDelegate.onModelUpdate(model);
-        mBreakPosition = -1;
-
-        // Walk down the list of IDs till we encounter something that's not a directory, and
-        // insert a whitespace element - this introduces a visual break in the grid between
-        // folders and documents.
-        // TODO: This code makes assumptions about the model, namely, that it performs a
-        // bucketed sort where directories will always be ordered before other files. CBB.
-        List<String> modelIds = mDelegate.getModelIds();
-        for (int i = 0; i < modelIds.size(); i++) {
-            if (!isDirectory(model, i)) {
-                // If the break is the first thing in the list, then there are actually no
-                // directories. In that case, don't insert a break at all.
-                if (i > 0) {
-                    mBreakPosition = i;
-                }
-                break;
-            }
-        }
-    }
-
-    @Override
-    public void onModelUpdateFailed(Exception e) {
-        mDelegate.onModelUpdateFailed(e);
-    }
-
-    @Override
-    public int getItemViewType(int p) {
-        if (p == mBreakPosition) {
-            return ITEM_TYPE_SECTION_BREAK;
-        } else {
-            return mDelegate.getItemViewType(toDelegatePosition(p));
-        }
-    }
-
-    /**
-     * Returns the position of an item in the delegate, adjusting
-     * values that are greater than the break position.
-     *
-     * @param p Position within the view
-     * @return Position within the delegate
-     */
-    private int toDelegatePosition(int p) {
-        return (mBreakPosition != -1 && p > mBreakPosition) ? p - 1 : p;
-    }
-
-    /**
-     * Returns the position of an item in the view, adjusting
-     * values that are greater than the break position.
-     *
-     * @param p Position within the delegate
-     * @return Position within the view
-     */
-    private int toViewPosition(int p) {
-        // If position is greater than or equal to the break, increase by one.
-        return (mBreakPosition != -1 && p >= mBreakPosition) ? p + 1 : p;
-    }
-
-    @Override
-    List<String> getModelIds() {
-        return mDelegate.getModelIds();
-    }
-
-    @Override
-    String getModelId(int p) {
-        return (p == mBreakPosition) ? null : mDelegate.getModelId(toDelegatePosition(p));
-    }
-
-    @Override
-    public void onItemSelectionChanged(String id) {
-        mDelegate.onItemSelectionChanged(id);
-    }
-
-    // Listener we add to our delegate. This allows us to relay events published
-    // by the delegate to our listeners (presumably RecyclerView) with adjusted positions.
-    private final class EventRelay extends AdapterDataObserver {
-        public void onChanged() {
-            throw new UnsupportedOperationException();
-        }
-
-        public void onItemRangeChanged(int positionStart, int itemCount) {
-            throw new UnsupportedOperationException();
-        }
-
-        public void onItemRangeChanged(int positionStart, int itemCount, Object payload) {
-            assert(itemCount == 1);
-            notifyItemRangeChanged(toViewPosition(positionStart), itemCount, payload);
-        }
-
-        public void onItemRangeInserted(int positionStart, int itemCount) {
-            assert(itemCount == 1);
-            if (positionStart < mBreakPosition) {
-                mBreakPosition++;
-            }
-            notifyItemRangeInserted(toViewPosition(positionStart), itemCount);
-        }
-
-        public void onItemRangeRemoved(int positionStart, int itemCount) {
-            assert(itemCount == 1);
-            if (positionStart < mBreakPosition) {
-                mBreakPosition--;
-            }
-            notifyItemRangeRemoved(toViewPosition(positionStart), itemCount);
-        }
-
-        public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) {
-            throw new UnsupportedOperationException();
-        }
-    }
-
-    /**
-     * The most elegant transparent blank box that spans N rows ever conceived.
-     */
-    private static final class EmptyDocumentHolder extends DocumentHolder {
-        final int mVisibleHeight;
-
-        public EmptyDocumentHolder(Context context) {
-            super(context, new Space(context));
-
-            // Per UX spec, this puts a bigger gap between the folders and documents in the grid.
-            mVisibleHeight = context.getResources().getDimensionPixelSize(
-                    R.dimen.grid_item_margin);
-        }
-
-        public void bind(State state) {
-            bind(null, null, state);
-        }
-
-        @Override
-        public void bind(Cursor cursor, String modelId, State state) {
-            if (state.derivedMode == State.MODE_GRID) {
-                itemView.setMinimumHeight(mVisibleHeight);
-            } else {
-                itemView.setMinimumHeight(0);
-            }
-            return;
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/TouchSwipeRefreshLayout.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/TouchSwipeRefreshLayout.java
deleted file mode 100644
index 32bb5b1..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/TouchSwipeRefreshLayout.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.support.annotation.ColorRes;
-import android.support.v4.widget.SwipeRefreshLayout;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-
-import com.android.documentsui.Events;
-
-/**
- * A {@link SwipeRefreshLayout} that only refresh on touch events.
- */
-public class TouchSwipeRefreshLayout extends SwipeRefreshLayout {
-
-    private static final int[] COLOR_RES = new int[] { android.R.attr.colorAccent };
-    private static int COLOR_ACCENT_INDEX = 0;
-
-    public TouchSwipeRefreshLayout(Context context) {
-        this(context, null);
-    }
-
-    public TouchSwipeRefreshLayout(Context context, AttributeSet attrs) {
-        super(context, attrs);
-
-        TypedArray a = context.obtainStyledAttributes(COLOR_RES);
-        @ColorRes int colorId = a.getResourceId(COLOR_ACCENT_INDEX, -1);
-        a.recycle();
-        setColorSchemeResources(colorId);
-    }
-
-    @Override
-    public boolean onInterceptTouchEvent(MotionEvent e) {
-        return Events.isMouseEvent(e) ? false : super.onInterceptTouchEvent(e);
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/UserInputHandler.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/UserInputHandler.java
deleted file mode 100644
index 07b0cd8..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/UserInputHandler.java
+++ /dev/null
@@ -1,423 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import static com.android.documentsui.Shared.DEBUG;
-
-import android.support.annotation.VisibleForTesting;
-import android.util.Log;
-import android.view.GestureDetector;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-
-import com.android.documentsui.Events;
-import com.android.documentsui.Events.InputEvent;
-import com.android.documentsui.dirlist.DocumentHolder.KeyboardEventListener;
-
-import java.util.function.Function;
-import java.util.function.Predicate;
-
-/**
- * Grand unified-ish gesture/event listener for items in the directory list.
- */
-public final class UserInputHandler<T extends InputEvent>
-        extends GestureDetector.SimpleOnGestureListener
-        implements KeyboardEventListener {
-
-    private static final String TAG = "UserInputHandler";
-
-    private final MultiSelectManager mSelectionMgr;
-    private final FocusHandler mFocusHandler;
-    private final Function<MotionEvent, T> mEventConverter;
-    private final Function<T, DocumentDetails> mDocFinder;
-    private final Predicate<DocumentDetails> mSelectable;
-    private final EventHandler mRightClickHandler;
-    private final DocumentHandler mActivateHandler;
-    private final DocumentHandler mDeleteHandler;
-    private final TouchInputDelegate mTouchDelegate;
-    private final MouseInputDelegate mMouseDelegate;
-    private final KeyInputHandler mKeyListener;
-
-    public UserInputHandler(
-            MultiSelectManager selectionMgr,
-            FocusHandler focusHandler,
-            Function<MotionEvent, T> eventConverter,
-            Function<T, DocumentDetails> docFinder,
-            Predicate<DocumentDetails> selectable,
-            EventHandler rightClickHandler,
-            DocumentHandler activateHandler,
-            DocumentHandler deleteHandler) {
-
-        mSelectionMgr = selectionMgr;
-        mFocusHandler = focusHandler;
-        mEventConverter = eventConverter;
-        mDocFinder = docFinder;
-        mSelectable = selectable;
-        mRightClickHandler = rightClickHandler;
-        mActivateHandler = activateHandler;
-        mDeleteHandler = deleteHandler;
-
-        mTouchDelegate = new TouchInputDelegate();
-        mMouseDelegate = new MouseInputDelegate();
-        mKeyListener = new KeyInputHandler();
-    }
-
-    @Override
-    public boolean onSingleTapUp(MotionEvent e) {
-        try (T event = mEventConverter.apply(e)) {
-            return onSingleTapUp(event);
-        }
-    }
-
-    @VisibleForTesting
-    boolean onSingleTapUp(T event) {
-        return event.isMouseEvent()
-                ? mMouseDelegate.onSingleTapUp(event)
-                : mTouchDelegate.onSingleTapUp(event);
-    }
-
-    @Override
-    public boolean onSingleTapConfirmed(MotionEvent e) {
-        try (T event = mEventConverter.apply(e)) {
-            return onSingleTapConfirmed(event);
-        }
-    }
-
-    @VisibleForTesting
-    boolean onSingleTapConfirmed(T event) {
-        return event.isMouseEvent()
-                ? mMouseDelegate.onSingleTapConfirmed(event)
-                : mTouchDelegate.onSingleTapConfirmed(event);
-    }
-
-    @Override
-    public boolean onDoubleTap(MotionEvent e) {
-        try (T event = mEventConverter.apply(e)) {
-            return onDoubleTap(event);
-        }
-    }
-
-    @VisibleForTesting
-    boolean onDoubleTap(T event) {
-        return event.isMouseEvent()
-                ? mMouseDelegate.onDoubleTap(event)
-                : mTouchDelegate.onDoubleTap(event);
-    }
-
-    @Override
-    public void onLongPress(MotionEvent e) {
-        try (T event = mEventConverter.apply(e)) {
-            onLongPress(event);
-        }
-    }
-
-    @VisibleForTesting
-    void onLongPress(T event) {
-        if (event.isMouseEvent()) {
-            mMouseDelegate.onLongPress(event);
-        }
-        mTouchDelegate.onLongPress(event);
-    }
-
-    public boolean onSingleRightClickUp(MotionEvent e) {
-        try (T event = mEventConverter.apply(e)) {
-            return mMouseDelegate.onSingleRightClickUp(event);
-        }
-    }
-
-    @Override
-    public boolean onKey(DocumentHolder doc, int keyCode, KeyEvent event) {
-        return mKeyListener.onKey(doc, keyCode, event);
-    }
-
-    // TODO: Isolate this hack...see if we can't get this solved at the platform level.
-    public void setLastButtonState(int state) {
-        mMouseDelegate.setLastButtonState(state);
-    }
-
-    private boolean activateDocument(DocumentDetails doc) {
-        return mActivateHandler.accept(doc);
-    }
-
-    private boolean selectDocument(DocumentDetails doc) {
-        assert(doc != null);
-        mSelectionMgr.toggleSelection(doc.getModelId());
-        mSelectionMgr.setSelectionRangeBegin(doc.getAdapterPosition());
-        return true;
-    }
-
-    boolean isRangeExtension(T event) {
-        return event.isShiftKeyDown() && mSelectionMgr.isRangeSelectionActive();
-    }
-
-    private void extendSelectionRange(T event) {
-        mSelectionMgr.snapSelection(event.getItemPosition());
-    }
-
-    private final class TouchInputDelegate {
-
-        boolean onSingleTapUp(T event) {
-            if (!event.isOverItem()) {
-                if (DEBUG) Log.d(TAG, "Tap on non-item. Clearing selection.");
-                mSelectionMgr.clearSelection();
-                return false;
-            }
-
-            if (mSelectionMgr.hasSelection()) {
-                if (isRangeExtension(event)) {
-                    mSelectionMgr.snapSelection(event.getItemPosition());
-                } else {
-                    selectDocument(mDocFinder.apply(event));
-                }
-                return true;
-            }
-
-            // Give the DocumentHolder a crack at the event.
-            DocumentDetails doc = mDocFinder.apply(event);
-            if (doc != null) {
-                // Touch events select if they occur in the selection hotspot,
-                // otherwise they activate.
-                return doc.isInSelectionHotspot(event)
-                        ? selectDocument(doc)
-                        : activateDocument(doc);
-            }
-
-            return false;
-        }
-
-        boolean onSingleTapConfirmed(T event) {
-            return false;
-        }
-
-        boolean onDoubleTap(T event) {
-            return false;
-        }
-
-        final void onLongPress(T event) {
-            if (!event.isOverItem()) {
-                return;
-            }
-
-            if (isRangeExtension(event)) {
-                extendSelectionRange(event);
-            } else {
-                selectDocument(mDocFinder.apply(event));
-            }
-        }
-    }
-
-    private final class MouseInputDelegate {
-
-        // From the RecyclerView, we get two events sent to
-        // ListeningGestureDetector#onInterceptTouchEvent on a mouse click; we first get an
-        // ACTION_DOWN Event for clicking on the mouse, and then an ACTION_UP event from releasing
-        // the mouse click. ACTION_UP event doesn't have information regarding the button (primary
-        // vs. secondary), so we have to save that somewhere first from ACTION_DOWN, and then reuse
-        // it later. The ACTION_DOWN event doesn't get forwarded to UserInputListener,
-        // so we have open up a public set method to set it.
-        private int mLastButtonState = -1;
-
-        // true when the previous event has consumed a right click motion event
-        private boolean mAteRightClick;
-
-        // The event has been handled in onSingleTapUp
-        private boolean mHandledTapUp;
-
-        boolean onSingleTapUp(T event) {
-            if (eatRightClick()) {
-                return onSingleRightClickUp(event);
-            }
-
-            if (!event.isOverItem()) {
-                mSelectionMgr.clearSelection();
-                return false;
-            }
-
-            if (mSelectionMgr.hasSelection()) {
-                if (isRangeExtension(event)) {
-                    extendSelectionRange(event);
-                } else {
-                    selectDocument(mDocFinder.apply(event));
-                }
-                mHandledTapUp = true;
-                return true;
-            }
-
-            // We'll toggle selection in onSingleTapConfirmed
-            // This avoids flickering on/off action mode when an item is double clicked.
-            if (!mSelectionMgr.hasSelection()) {
-                return false;
-            }
-
-            DocumentDetails doc = mDocFinder.apply(event);
-            if (doc == null) {
-                return false;
-            }
-
-            mHandledTapUp = true;
-            return selectDocument(doc);
-        }
-
-        boolean onSingleTapConfirmed(T event) {
-            if (mAteRightClick) {
-                mAteRightClick = false;
-                return false;
-            }
-            if (mHandledTapUp) {
-                mHandledTapUp = false;
-                return false;
-            }
-
-            if (mSelectionMgr.hasSelection()) {
-                return false;  // should have been handled by onSingleTapUp.
-            }
-
-            DocumentDetails doc = mDocFinder.apply(event);
-            if (doc == null) {
-                return false;
-            }
-
-            return selectDocument(doc);
-        }
-
-        boolean onDoubleTap(T event) {
-            mHandledTapUp = false;
-            DocumentDetails doc = mDocFinder.apply(event);
-            if (doc != null) {
-                return mSelectionMgr.hasSelection()
-                        ? selectDocument(doc)
-                        : activateDocument(doc);
-            }
-            return false;
-        }
-
-        final void onLongPress(T event) {
-            if (!event.isOverItem()) {
-                return;
-            }
-
-            if (isRangeExtension(event)) {
-                extendSelectionRange(event);
-            } else {
-                selectDocument(mDocFinder.apply(event));
-            }
-        }
-
-        private boolean onSingleRightClickUp(T event) {
-            return mRightClickHandler.apply(event);
-        }
-
-        // hack alert from here through end of class.
-        private void setLastButtonState(int state) {
-            mLastButtonState = state;
-        }
-
-        private boolean eatRightClick() {
-            if (mLastButtonState == MotionEvent.BUTTON_SECONDARY) {
-                mLastButtonState = -1;
-                mAteRightClick = true;
-                return true;
-            }
-            return false;
-        }
-    }
-
-    private final class KeyInputHandler {
-        // TODO: Refactor FocusManager to depend only on DocumentDetails so we can eliminate
-        // difficult to test dependency on DocumentHolder.
-
-        boolean onKey(DocumentHolder doc, int keyCode, KeyEvent event) {
-            // Only handle key-down events. This is simpler, consistent with most other UIs, and
-            // enables the handling of repeated key events from holding down a key.
-            if (event.getAction() != KeyEvent.ACTION_DOWN) {
-                return false;
-            }
-
-            // Ignore tab key events.  Those should be handled by the top-level key handler.
-            if (keyCode == KeyEvent.KEYCODE_TAB) {
-                return false;
-            }
-
-            if (mFocusHandler.handleKey(doc, keyCode, event)) {
-                // Handle range selection adjustments. Extending the selection will adjust the
-                // bounds of the in-progress range selection. Each time an unshifted navigation
-                // event is received, the range selection is restarted.
-                if (shouldExtendSelection(doc, event)) {
-                    if (!mSelectionMgr.isRangeSelectionActive()) {
-                        // Start a range selection if one isn't active
-                        mSelectionMgr.startRangeSelection(doc.getAdapterPosition());
-                    }
-                    mSelectionMgr.snapRangeSelection(mFocusHandler.getFocusPosition());
-                } else {
-                    mSelectionMgr.endRangeSelection();
-                }
-                return true;
-            }
-
-            // Handle enter key events
-            switch (keyCode) {
-                case KeyEvent.KEYCODE_ENTER:
-                    if (event.isShiftPressed()) {
-                        selectDocument(doc);
-                    }
-                    // For non-shifted enter keypresses, fall through.
-                case KeyEvent.KEYCODE_DPAD_CENTER:
-                case KeyEvent.KEYCODE_BUTTON_A:
-                    return activateDocument(doc);
-                case KeyEvent.KEYCODE_FORWARD_DEL:
-                    // This has to be handled here instead of in a keyboard shortcut, because
-                    // keyboard shortcuts all have to be modified with the 'Ctrl' key.
-                    if (mSelectionMgr.hasSelection()) {
-                        mDeleteHandler.accept(doc);
-                    }
-                    // Always handle the key, even if there was nothing to delete. This is a
-                    // precaution to prevent other handlers from potentially picking up the event
-                    // and triggering extra behaviors.
-                    return true;
-            }
-
-            return false;
-        }
-
-        private boolean shouldExtendSelection(DocumentDetails doc, KeyEvent event) {
-            if (!Events.isNavigationKeyCode(event.getKeyCode()) || !event.isShiftPressed()) {
-                return false;
-            }
-
-            return mSelectable.test(doc);
-        }
-    }
-
-    /**
-     * Class providing limited access to document view info.
-     */
-    public interface DocumentDetails {
-        String getModelId();
-        int getAdapterPosition();
-        boolean isInSelectionHotspot(InputEvent event);
-    }
-
-    @FunctionalInterface
-    interface EventHandler {
-        boolean apply(InputEvent event);
-    }
-
-    @FunctionalInterface
-    interface DocumentHandler {
-        boolean accept(DocumentDetails doc);
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/ViewAutoScroller.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/ViewAutoScroller.java
deleted file mode 100644
index 5ef68ca..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/ViewAutoScroller.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-package com.android.documentsui.dirlist;
-
-import android.graphics.Point;
-import android.support.annotation.VisibleForTesting;
-
-import java.util.function.IntSupplier;
-import java.util.function.LongSupplier;
-
-/**
- * Provides auto-scrolling upon request when user's interaction with the application
- * introduces a natural intent to scroll. Used by {@link BandController} and
- * {@link DragScrollListener} to allow auto scrolling when user either does band selection, or
- * attempting to drag and drop files to somewhere off the current screen.
- */
-public final class ViewAutoScroller implements Runnable {
-    public static final int NOT_SET = -1;
-    /**
-     * The number of milliseconds of scrolling at which scroll speed continues to increase.
-     * At first, the scroll starts slowly; then, the rate of scrolling increases until it
-     * reaches its maximum value at after this many milliseconds.
-     */
-    private static final long SCROLL_ACCELERATION_LIMIT_TIME_MS = 2000;
-
-    // Top and bottom inner buffer such that user's cursor does not have to be exactly off screen
-    // for auto scrolling to begin
-    private final int mTopBottomThreshold;
-    private final ScrollDistanceDelegate mCalcDelegate;
-    private final ScrollActionDelegate mUiDelegate;
-    private final LongSupplier mCurrentTime;
-
-    private long mScrollStartTime = NOT_SET;
-
-    public ViewAutoScroller(
-            int topBottomThreshold,
-            ScrollDistanceDelegate calcDelegate,
-            ScrollActionDelegate uiDelegate) {
-        this(topBottomThreshold, calcDelegate, uiDelegate, System::currentTimeMillis);
-    }
-
-    @VisibleForTesting
-    ViewAutoScroller(
-            int topBottomThreshold,
-            ScrollDistanceDelegate calcDelegate,
-            ScrollActionDelegate uiDelegate,
-            LongSupplier clock) {
-        mTopBottomThreshold = topBottomThreshold;
-        mCalcDelegate = calcDelegate;
-        mUiDelegate = uiDelegate;
-        mCurrentTime = clock;
-    }
-
-    /**
-     * Attempts to smooth-scroll the view at the given UI frame. Application should be
-     * responsible to do any clean up (such as unsubscribing scrollListeners) after the run has
-     * finished, and re-run this method on the next UI frame if applicable.
-     */
-    @Override
-    public void run() {
-        // Compute the number of pixels the pointer's y-coordinate is past the view.
-        // Negative values mean the pointer is at or before the top of the view, and
-        // positive values mean that the pointer is at or after the bottom of the view. Note
-        // that top/bottom threshold is added here so that the view still scrolls when the
-        // pointer are in these buffer pixels.
-        int pixelsPastView = 0;
-
-        if (mCalcDelegate.getCurrentPosition().y <= mTopBottomThreshold) {
-            pixelsPastView = mCalcDelegate.getCurrentPosition().y - mTopBottomThreshold;
-        } else if (mCalcDelegate.getCurrentPosition().y >= mCalcDelegate.getViewHeight()
-                - mTopBottomThreshold) {
-            pixelsPastView = mCalcDelegate.getCurrentPosition().y - mCalcDelegate.getViewHeight()
-                    + mTopBottomThreshold;
-        }
-
-        if (!mCalcDelegate.isActive() || pixelsPastView == 0) {
-            // If the operation that started the scrolling is no longer inactive, or if it is active
-            // but not at the edge of the view, no scrolling is necessary.
-            mScrollStartTime = NOT_SET;
-            return;
-        }
-
-        if (mScrollStartTime == NOT_SET) {
-            // If the pointer was previously not at the edge of the view but now is, set the
-            // start time for the scroll.
-            mScrollStartTime = mCurrentTime.getAsLong();
-        }
-
-        // Compute the number of pixels to scroll, and scroll that many pixels.
-        final int numPixels = computeScrollDistance(
-                pixelsPastView, mCurrentTime.getAsLong() - mScrollStartTime);
-        mUiDelegate.scrollBy(numPixels);
-
-        // Remove callback to this, and then properly run at next frame again
-        mUiDelegate.removeCallback(this);
-        mUiDelegate.runAtNextFrame(this);
-    }
-
-    /**
-     * Computes the number of pixels to scroll based on how far the pointer is past the end
-     * of the view and how long it has been there. Roughly based on ItemTouchHelper's
-     * algorithm for computing the number of pixels to scroll when an item is dragged to the
-     * end of a view.
-     * @param pixelsPastView
-     * @param scrollDuration
-     * @return
-     */
-    public int computeScrollDistance(int pixelsPastView, long scrollDuration) {
-        final int maxScrollStep = mCalcDelegate.getViewHeight();
-        final int direction = (int) Math.signum(pixelsPastView);
-        final int absPastView = Math.abs(pixelsPastView);
-
-        // Calculate the ratio of how far out of the view the pointer currently resides to
-        // the entire height of the view.
-        final float outOfBoundsRatio = Math.min(
-                1.0f, (float) absPastView / mCalcDelegate.getViewHeight());
-        // Interpolate this ratio and use it to compute the maximum scroll that should be
-        // possible for this step.
-        final float cappedScrollStep =
-                direction * maxScrollStep * smoothOutOfBoundsRatio(outOfBoundsRatio);
-
-        // Likewise, calculate the ratio of the time spent in the scroll to the limit.
-        final float timeRatio = Math.min(
-                1.0f, (float) scrollDuration / SCROLL_ACCELERATION_LIMIT_TIME_MS);
-        // Interpolate this ratio and use it to compute the final number of pixels to
-        // scroll.
-        final int numPixels = (int) (cappedScrollStep * smoothTimeRatio(timeRatio));
-
-        // If the final number of pixels to scroll ends up being 0, the view should still
-        // scroll at least one pixel.
-        return numPixels != 0 ? numPixels : direction;
-    }
-
-    /**
-     * Interpolates the given out of bounds ratio on a curve which starts at (0,0) and ends
-     * at (1,1) and quickly approaches 1 near the start of that interval. This ensures that
-     * drags that are at the edge or barely past the edge of the view still cause sufficient
-     * scrolling. The equation y=(x-1)^5+1 is used, but this could also be tweaked if
-     * needed.
-     * @param ratio A ratio which is in the range [0, 1].
-     * @return A "smoothed" value, also in the range [0, 1].
-     */
-    private float smoothOutOfBoundsRatio(float ratio) {
-        return (float) Math.pow(ratio - 1.0f, 5) + 1.0f;
-    }
-
-    /**
-     * Interpolates the given time ratio on a curve which starts at (0,0) and ends at (1,1)
-     * and stays close to 0 for most input values except those very close to 1. This ensures
-     * that scrolls start out very slowly but speed up drastically after the scroll has been
-     * in progress close to SCROLL_ACCELERATION_LIMIT_TIME_MS. The equation y=x^5 is used,
-     * but this could also be tweaked if needed.
-     * @param ratio A ratio which is in the range [0, 1].
-     * @return A "smoothed" value, also in the range [0, 1].
-     */
-    private float smoothTimeRatio(float ratio) {
-        return (float) Math.pow(ratio, 5);
-    }
-
-    /**
-     * Used by {@link run} to properly calculate the proper amount of pixels to scroll given time
-     * passed since scroll started, and to properly scroll / proper listener clean up if necessary.
-     */
-    interface ScrollDistanceDelegate {
-        public Point getCurrentPosition();
-        public int getViewHeight();
-        public boolean isActive();
-    }
-
-    /**
-     * Used by {@link run} to do UI tasks, such as scrolling and rerunning at next UI cycle.
-     */
-    interface ScrollActionDelegate {
-        public void scrollBy(int dy);
-        public void runAtNextFrame(Runnable r);
-        public void removeCallback(Runnable r);
-    }
-}
\ No newline at end of file
diff --git a/packages/DocumentsUI/src/com/android/documentsui/model/DocumentInfo.java b/packages/DocumentsUI/src/com/android/documentsui/model/DocumentInfo.java
deleted file mode 100644
index b54c9bb..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/model/DocumentInfo.java
+++ /dev/null
@@ -1,347 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.model;
-
-import android.content.ContentProviderClient;
-import android.content.ContentResolver;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.provider.DocumentsContract;
-import android.provider.DocumentsContract.Document;
-import android.provider.DocumentsProvider;
-import android.support.annotation.VisibleForTesting;
-
-import com.android.documentsui.DocumentsApplication;
-import com.android.documentsui.RootCursorWrapper;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.net.ProtocolException;
-import java.util.Arrays;
-import java.util.Objects;
-import java.util.Set;
-
-import libcore.io.IoUtils;
-
-/**
- * Representation of a {@link Document}.
- */
-public class DocumentInfo implements Durable, Parcelable {
-    private static final int VERSION_INIT = 1;
-    private static final int VERSION_SPLIT_URI = 2;
-
-    public String authority;
-    public String documentId;
-    public String mimeType;
-    public String displayName;
-    public long lastModified;
-    public int flags;
-    public String summary;
-    public long size;
-    public int icon;
-
-    /** Derived fields that aren't persisted */
-    public Uri derivedUri;
-
-    public DocumentInfo() {
-        reset();
-    }
-
-    @Override
-    public void reset() {
-        authority = null;
-        documentId = null;
-        mimeType = null;
-        displayName = null;
-        lastModified = -1;
-        flags = 0;
-        summary = null;
-        size = -1;
-        icon = 0;
-        derivedUri = null;
-    }
-
-    @Override
-    public void read(DataInputStream in) throws IOException {
-        final int version = in.readInt();
-        switch (version) {
-            case VERSION_INIT:
-                throw new ProtocolException("Ignored upgrade");
-            case VERSION_SPLIT_URI:
-                authority = DurableUtils.readNullableString(in);
-                documentId = DurableUtils.readNullableString(in);
-                mimeType = DurableUtils.readNullableString(in);
-                displayName = DurableUtils.readNullableString(in);
-                lastModified = in.readLong();
-                flags = in.readInt();
-                summary = DurableUtils.readNullableString(in);
-                size = in.readLong();
-                icon = in.readInt();
-                deriveFields();
-                break;
-            default:
-                throw new ProtocolException("Unknown version " + version);
-        }
-    }
-
-    @Override
-    public void write(DataOutputStream out) throws IOException {
-        out.writeInt(VERSION_SPLIT_URI);
-        DurableUtils.writeNullableString(out, authority);
-        DurableUtils.writeNullableString(out, documentId);
-        DurableUtils.writeNullableString(out, mimeType);
-        DurableUtils.writeNullableString(out, displayName);
-        out.writeLong(lastModified);
-        out.writeInt(flags);
-        DurableUtils.writeNullableString(out, summary);
-        out.writeLong(size);
-        out.writeInt(icon);
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        DurableUtils.writeToParcel(dest, this);
-    }
-
-    public static final Creator<DocumentInfo> CREATOR = new Creator<DocumentInfo>() {
-        @Override
-        public DocumentInfo createFromParcel(Parcel in) {
-            final DocumentInfo doc = new DocumentInfo();
-            DurableUtils.readFromParcel(in, doc);
-            return doc;
-        }
-
-        @Override
-        public DocumentInfo[] newArray(int size) {
-            return new DocumentInfo[size];
-        }
-    };
-
-    public static DocumentInfo fromDirectoryCursor(Cursor cursor) {
-        assert(cursor != null);
-        final String authority = getCursorString(cursor, RootCursorWrapper.COLUMN_AUTHORITY);
-        return fromCursor(cursor, authority);
-    }
-
-    public static DocumentInfo fromCursor(Cursor cursor, String authority) {
-        assert(cursor != null);
-        final DocumentInfo info = new DocumentInfo();
-        info.updateFromCursor(cursor, authority);
-        return info;
-    }
-
-    public void updateFromCursor(Cursor cursor, String authority) {
-        this.authority = authority;
-        this.documentId = getCursorString(cursor, Document.COLUMN_DOCUMENT_ID);
-        this.mimeType = getCursorString(cursor, Document.COLUMN_MIME_TYPE);
-        this.displayName = getCursorString(cursor, Document.COLUMN_DISPLAY_NAME);
-        this.lastModified = getCursorLong(cursor, Document.COLUMN_LAST_MODIFIED);
-        this.flags = getCursorInt(cursor, Document.COLUMN_FLAGS);
-        this.summary = getCursorString(cursor, Document.COLUMN_SUMMARY);
-        this.size = getCursorLong(cursor, Document.COLUMN_SIZE);
-        this.icon = getCursorInt(cursor, Document.COLUMN_ICON);
-        this.deriveFields();
-    }
-
-    public static DocumentInfo fromUri(ContentResolver resolver, Uri uri)
-            throws FileNotFoundException {
-        final DocumentInfo info = new DocumentInfo();
-        info.updateFromUri(resolver, uri);
-        return info;
-    }
-
-    /**
-     * Update a possibly stale restored document against a live
-     * {@link DocumentsProvider}.
-     */
-    public void updateSelf(ContentResolver resolver) throws FileNotFoundException {
-        updateFromUri(resolver, derivedUri);
-    }
-
-    public void updateFromUri(ContentResolver resolver, Uri uri) throws FileNotFoundException {
-        ContentProviderClient client = null;
-        Cursor cursor = null;
-        try {
-            client = DocumentsApplication.acquireUnstableProviderOrThrow(
-                    resolver, uri.getAuthority());
-            cursor = client.query(uri, null, null, null, null);
-            if (!cursor.moveToFirst()) {
-                throw new FileNotFoundException("Missing details for " + uri);
-            }
-            updateFromCursor(cursor, uri.getAuthority());
-        } catch (Throwable t) {
-            throw asFileNotFoundException(t);
-        } finally {
-            IoUtils.closeQuietly(cursor);
-            ContentProviderClient.releaseQuietly(client);
-        }
-    }
-
-    @VisibleForTesting
-    void deriveFields() {
-        derivedUri = DocumentsContract.buildDocumentUri(authority, documentId);
-    }
-
-    @Override
-    public String toString() {
-        return "Document{"
-                + "docId=" + documentId
-                + ", name=" + displayName
-                + ", isContainer=" + isContainer()
-                + ", isDirectory=" + isDirectory()
-                + ", isArchive=" + isArchive()
-                + ", isPartial=" + isPartial()
-                + ", isVirtualDocument=" + isVirtualDocument()
-                + ", isDeleteSupported=" + isDeleteSupported()
-                + ", isCreateSupported=" + isCreateSupported()
-                + ", isRenameSupported=" + isRenameSupported()
-                + "}";
-    }
-
-    public boolean isCreateSupported() {
-        return (flags & Document.FLAG_DIR_SUPPORTS_CREATE) != 0;
-    }
-
-    public boolean isThumbnailSupported() {
-        return (flags & Document.FLAG_SUPPORTS_THUMBNAIL) != 0;
-    }
-
-    public boolean isDirectory() {
-        return Document.MIME_TYPE_DIR.equals(mimeType);
-    }
-
-    public boolean isGridPreferred() {
-        return (flags & Document.FLAG_DIR_PREFERS_GRID) != 0;
-    }
-
-    public boolean isDeleteSupported() {
-        return (flags & Document.FLAG_SUPPORTS_DELETE) != 0;
-    }
-
-    public boolean isRemoveSupported() {
-        return (flags & Document.FLAG_SUPPORTS_REMOVE) != 0;
-    }
-
-    public boolean isRenameSupported() {
-        return (flags & Document.FLAG_SUPPORTS_RENAME) != 0;
-    }
-
-    public boolean isArchive() {
-        return (flags & Document.FLAG_ARCHIVE) != 0;
-    }
-
-    public boolean isPartial() {
-        return (flags & Document.FLAG_PARTIAL) != 0;
-    }
-
-    public boolean isContainer() {
-        return isDirectory() || isArchive();
-    }
-
-    public boolean isVirtualDocument() {
-        return (flags & Document.FLAG_VIRTUAL_DOCUMENT) != 0;
-    }
-
-    @Override
-    public int hashCode() {
-        return derivedUri.hashCode() + mimeType.hashCode();
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (o == null) {
-            return false;
-        }
-
-        if (this == o) {
-            return true;
-        }
-
-        if (o instanceof DocumentInfo) {
-            DocumentInfo other = (DocumentInfo) o;
-            // Uri + mime type should be totally unique.
-            return Objects.equals(derivedUri, other.derivedUri)
-                    && Objects.equals(mimeType, other.mimeType);
-        }
-
-        return false;
-    }
-
-    public static String getCursorString(Cursor cursor, String columnName) {
-        final int index = cursor.getColumnIndex(columnName);
-        return (index != -1) ? cursor.getString(index) : null;
-    }
-
-    /**
-     * Missing or null values are returned as -1.
-     */
-    public static long getCursorLong(Cursor cursor, String columnName) {
-        final int index = cursor.getColumnIndex(columnName);
-        if (index == -1) return -1;
-        final String value = cursor.getString(index);
-        if (value == null) return -1;
-        try {
-            return Long.parseLong(value);
-        } catch (NumberFormatException e) {
-            return -1;
-        }
-    }
-
-    /**
-     * Missing or null values are returned as 0.
-     */
-    public static int getCursorInt(Cursor cursor, String columnName) {
-        final int index = cursor.getColumnIndex(columnName);
-        return (index != -1) ? cursor.getInt(index) : 0;
-    }
-
-    public static FileNotFoundException asFileNotFoundException(Throwable t)
-            throws FileNotFoundException {
-        if (t instanceof FileNotFoundException) {
-            throw (FileNotFoundException) t;
-        }
-        final FileNotFoundException fnfe = new FileNotFoundException(t.getMessage());
-        fnfe.initCause(t);
-        throw fnfe;
-    }
-
-    public static Uri getUri(Cursor cursor) {
-        return DocumentsContract.buildDocumentUri(
-            getCursorString(cursor, RootCursorWrapper.COLUMN_AUTHORITY),
-            getCursorString(cursor, Document.COLUMN_DOCUMENT_ID));
-    }
-
-    public static void addMimeTypes(ContentResolver resolver, Uri uri, Set<String> mimeTypes) {
-        assert(uri != null);
-        if ("content".equals(uri.getScheme())) {
-            mimeTypes.add(resolver.getType(uri));
-            final String[] streamTypes = resolver.getStreamTypes(uri, "*/*");
-            if (streamTypes != null) {
-                mimeTypes.addAll(Arrays.asList(streamTypes));
-            }
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/model/DocumentStack.java b/packages/DocumentsUI/src/com/android/documentsui/model/DocumentStack.java
deleted file mode 100644
index ae7e820..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/model/DocumentStack.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.model;
-
-import android.content.ContentResolver;
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.provider.DocumentsProvider;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.net.ProtocolException;
-import java.util.Collection;
-import java.util.LinkedList;
-
-/**
- * Representation of a stack of {@link DocumentInfo}, usually the result of a
- * user-driven traversal.
- */
-public class DocumentStack extends LinkedList<DocumentInfo> implements Durable, Parcelable {
-    private static final int VERSION_INIT = 1;
-    private static final int VERSION_ADD_ROOT = 2;
-
-    public RootInfo root;
-
-    public DocumentStack() {};
-
-    /**
-     * Creates an instance, and pushes all docs to it in the same order as they're passed as
-     * parameters, i.e. the last document will be at the top of the stack.
-     */
-    public DocumentStack(RootInfo root, DocumentInfo... docs) {
-        for (DocumentInfo doc : docs) {
-            push(doc);
-        }
-
-        this.root = root;
-    }
-
-    /**
-     * Makes a new copy, and pushes all docs to the new copy in the same order as they're passed
-     * as parameters, i.e. the last document will be at the top of the stack.
-     */
-    public DocumentStack(DocumentStack src, DocumentInfo... docs) {
-        super(src);
-        for (DocumentInfo doc : docs) {
-            push(doc);
-        }
-
-        root = src.root;
-    }
-
-    public String getTitle() {
-        if (size() == 1 && root != null) {
-            return root.title;
-        } else if (size() > 1) {
-            return peek().displayName;
-        } else {
-            return null;
-        }
-    }
-
-    public boolean isRecents() {
-        return size() == 0;
-    }
-
-    public void updateRoot(Collection<RootInfo> matchingRoots) throws FileNotFoundException {
-        for (RootInfo root : matchingRoots) {
-            if (root.equals(this.root)) {
-                this.root = root;
-                return;
-            }
-        }
-        throw new FileNotFoundException("Failed to find matching root for " + root);
-    }
-
-    /**
-     * Update a possibly stale restored stack against a live
-     * {@link DocumentsProvider}.
-     */
-    public void updateDocuments(ContentResolver resolver) throws FileNotFoundException {
-        for (DocumentInfo info : this) {
-            info.updateSelf(resolver);
-        }
-    }
-
-    /**
-     * Build key that uniquely identifies this stack. It omits most of the raw
-     * details included in {@link #write(DataOutputStream)}, since they change
-     * too regularly to be used as a key.
-     */
-    public String buildKey() {
-        final StringBuilder builder = new StringBuilder();
-        if (root != null) {
-            builder.append(root.authority).append('#');
-            builder.append(root.rootId).append('#');
-        } else {
-            builder.append("[null]").append('#');
-        }
-        for (DocumentInfo doc : this) {
-            builder.append(doc.documentId).append('#');
-        }
-        return builder.toString();
-    }
-
-    @Override
-    public void reset() {
-        clear();
-        root = null;
-    }
-
-    @Override
-    public void read(DataInputStream in) throws IOException {
-        final int version = in.readInt();
-        switch (version) {
-            case VERSION_INIT:
-                throw new ProtocolException("Ignored upgrade");
-            case VERSION_ADD_ROOT:
-                if (in.readBoolean()) {
-                    root = new RootInfo();
-                    root.read(in);
-                }
-                final int size = in.readInt();
-                for (int i = 0; i < size; i++) {
-                    final DocumentInfo doc = new DocumentInfo();
-                    doc.read(in);
-                    add(doc);
-                }
-                break;
-            default:
-                throw new ProtocolException("Unknown version " + version);
-        }
-    }
-
-    @Override
-    public void write(DataOutputStream out) throws IOException {
-        out.writeInt(VERSION_ADD_ROOT);
-        if (root != null) {
-            out.writeBoolean(true);
-            root.write(out);
-        } else {
-            out.writeBoolean(false);
-        }
-        final int size = size();
-        out.writeInt(size);
-        for (int i = 0; i < size; i++) {
-            final DocumentInfo doc = get(i);
-            doc.write(out);
-        }
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        DurableUtils.writeToParcel(dest, this);
-    }
-
-    public static final Creator<DocumentStack> CREATOR = new Creator<DocumentStack>() {
-        @Override
-        public DocumentStack createFromParcel(Parcel in) {
-            final DocumentStack stack = new DocumentStack();
-            DurableUtils.readFromParcel(in, stack);
-            return stack;
-        }
-
-        @Override
-        public DocumentStack[] newArray(int size) {
-            return new DocumentStack[size];
-        }
-    };
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/model/Durable.java b/packages/DocumentsUI/src/com/android/documentsui/model/Durable.java
deleted file mode 100644
index 01633ed..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/model/Durable.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.model;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-public interface Durable {
-    public void reset();
-    public void read(DataInputStream in) throws IOException;
-    public void write(DataOutputStream out) throws IOException;
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/model/DurableUtils.java b/packages/DocumentsUI/src/com/android/documentsui/model/DurableUtils.java
deleted file mode 100644
index e21dd49..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/model/DurableUtils.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.model;
-
-import static com.android.documentsui.Shared.TAG;
-
-import android.os.BadParcelableException;
-import android.os.Parcel;
-import android.util.Log;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.IOException;
-
-public class DurableUtils {
-    public static <D extends Durable> byte[] writeToArray(D d) throws IOException {
-        final ByteArrayOutputStream out = new ByteArrayOutputStream();
-        d.write(new DataOutputStream(out));
-        return out.toByteArray();
-    }
-
-    public static <D extends Durable> D readFromArray(byte[] data, D d) throws IOException {
-        if (data == null) throw new IOException("Missing data");
-        final ByteArrayInputStream in = new ByteArrayInputStream(data);
-        d.reset();
-        try {
-            d.read(new DataInputStream(in));
-        } catch (IOException e) {
-            d.reset();
-            throw e;
-        }
-        return d;
-    }
-
-    public static <D extends Durable> byte[] writeToArrayOrNull(D d) {
-        try {
-            return writeToArray(d);
-        } catch (IOException e) {
-            Log.w(TAG, "Failed to write", e);
-            return null;
-        }
-    }
-
-    public static <D extends Durable> D readFromArrayOrNull(byte[] data, D d) {
-        try {
-            return readFromArray(data, d);
-        } catch (IOException e) {
-            Log.w(TAG, "Failed to read", e);
-            return null;
-        }
-    }
-
-    public static <D extends Durable> void writeToParcel(Parcel parcel, D d) {
-        try {
-            parcel.writeByteArray(writeToArray(d));
-        } catch (IOException e) {
-            throw new BadParcelableException(e);
-        }
-    }
-
-    public static <D extends Durable> D readFromParcel(Parcel parcel, D d) {
-        try {
-            return readFromArray(parcel.createByteArray(), d);
-        } catch (IOException e) {
-            throw new BadParcelableException(e);
-        }
-    }
-
-    public static void writeNullableString(DataOutputStream out, String value) throws IOException {
-        if (value != null) {
-            out.write(1);
-            out.writeUTF(value);
-        } else {
-            out.write(0);
-        }
-    }
-
-    public static String readNullableString(DataInputStream in) throws IOException {
-        if (in.read() != 0) {
-            return in.readUTF();
-        } else {
-            return null;
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/model/RootInfo.java b/packages/DocumentsUI/src/com/android/documentsui/model/RootInfo.java
deleted file mode 100644
index e062dfb..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/model/RootInfo.java
+++ /dev/null
@@ -1,419 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.model;
-
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.Shared.compareToIgnoreCaseNullable;
-import static com.android.documentsui.model.DocumentInfo.getCursorInt;
-import static com.android.documentsui.model.DocumentInfo.getCursorLong;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
-
-import android.annotation.IntDef;
-import android.annotation.Nullable;
-import android.content.Context;
-import android.database.Cursor;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.provider.DocumentsContract;
-import android.provider.DocumentsContract.Root;
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.android.documentsui.IconUtils;
-import com.android.documentsui.R;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.net.ProtocolException;
-import java.util.Objects;
-
-/**
- * Representation of a {@link Root}.
- */
-public class RootInfo implements Durable, Parcelable, Comparable<RootInfo> {
-
-    private static final String TAG = "RootInfo";
-    private static final int VERSION_INIT = 1;
-    private static final int VERSION_DROP_TYPE = 2;
-
-    // The values of these constants determine the sort order of various roots in the RootsFragment.
-    @IntDef(flag = false, value = {
-            TYPE_IMAGES,
-            TYPE_VIDEO,
-            TYPE_AUDIO,
-            TYPE_RECENTS,
-            TYPE_DOWNLOADS,
-            TYPE_LOCAL,
-            TYPE_MTP,
-            TYPE_SD,
-            TYPE_USB,
-            TYPE_OTHER
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface RootType {}
-    public static final int TYPE_IMAGES = 1;
-    public static final int TYPE_VIDEO = 2;
-    public static final int TYPE_AUDIO = 3;
-    public static final int TYPE_RECENTS = 4;
-    public static final int TYPE_DOWNLOADS = 5;
-    public static final int TYPE_LOCAL = 6;
-    public static final int TYPE_MTP = 7;
-    public static final int TYPE_SD = 8;
-    public static final int TYPE_USB = 9;
-    public static final int TYPE_OTHER = 10;
-
-    public String authority;
-    public String rootId;
-    public int flags;
-    public int icon;
-    public String title;
-    public String summary;
-    public String documentId;
-    public long availableBytes;
-    public String mimeTypes;
-
-    /** Derived fields that aren't persisted */
-    public String[] derivedMimeTypes;
-    public int derivedIcon;
-    public @RootType int derivedType;
-    // Currently, we are not persisting this and we should be asking Provider whether a Root
-    // is in the process of eject. Provider does not have this available yet.
-    public transient boolean ejecting;
-
-    public RootInfo() {
-        reset();
-    }
-
-    @Override
-    public void reset() {
-        authority = null;
-        rootId = null;
-        flags = 0;
-        icon = 0;
-        title = null;
-        summary = null;
-        documentId = null;
-        availableBytes = -1;
-        mimeTypes = null;
-        ejecting = false;
-
-        derivedMimeTypes = null;
-        derivedIcon = 0;
-        derivedType = 0;
-    }
-
-    @Override
-    public void read(DataInputStream in) throws IOException {
-        final int version = in.readInt();
-        switch (version) {
-            case VERSION_DROP_TYPE:
-                authority = DurableUtils.readNullableString(in);
-                rootId = DurableUtils.readNullableString(in);
-                flags = in.readInt();
-                icon = in.readInt();
-                title = DurableUtils.readNullableString(in);
-                summary = DurableUtils.readNullableString(in);
-                documentId = DurableUtils.readNullableString(in);
-                availableBytes = in.readLong();
-                mimeTypes = DurableUtils.readNullableString(in);
-                deriveFields();
-                break;
-            default:
-                throw new ProtocolException("Unknown version " + version);
-        }
-    }
-
-    @Override
-    public void write(DataOutputStream out) throws IOException {
-        out.writeInt(VERSION_DROP_TYPE);
-        DurableUtils.writeNullableString(out, authority);
-        DurableUtils.writeNullableString(out, rootId);
-        out.writeInt(flags);
-        out.writeInt(icon);
-        DurableUtils.writeNullableString(out, title);
-        DurableUtils.writeNullableString(out, summary);
-        DurableUtils.writeNullableString(out, documentId);
-        out.writeLong(availableBytes);
-        DurableUtils.writeNullableString(out, mimeTypes);
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        DurableUtils.writeToParcel(dest, this);
-    }
-
-    public static final Creator<RootInfo> CREATOR = new Creator<RootInfo>() {
-        @Override
-        public RootInfo createFromParcel(Parcel in) {
-            final RootInfo root = new RootInfo();
-            DurableUtils.readFromParcel(in, root);
-            return root;
-        }
-
-        @Override
-        public RootInfo[] newArray(int size) {
-            return new RootInfo[size];
-        }
-    };
-
-    public static RootInfo fromRootsCursor(String authority, Cursor cursor) {
-        final RootInfo root = new RootInfo();
-        root.authority = authority;
-        root.rootId = getCursorString(cursor, Root.COLUMN_ROOT_ID);
-        root.flags = getCursorInt(cursor, Root.COLUMN_FLAGS);
-        root.icon = getCursorInt(cursor, Root.COLUMN_ICON);
-        root.title = getCursorString(cursor, Root.COLUMN_TITLE);
-        root.summary = getCursorString(cursor, Root.COLUMN_SUMMARY);
-        root.documentId = getCursorString(cursor, Root.COLUMN_DOCUMENT_ID);
-        root.availableBytes = getCursorLong(cursor, Root.COLUMN_AVAILABLE_BYTES);
-        root.mimeTypes = getCursorString(cursor, Root.COLUMN_MIME_TYPES);
-        root.deriveFields();
-        return root;
-    }
-
-    private void deriveFields() {
-        derivedMimeTypes = (mimeTypes != null) ? mimeTypes.split("\n") : null;
-
-        if (isHome()) {
-            derivedType = TYPE_LOCAL;
-            derivedIcon = R.drawable.ic_root_documents;
-        } else if (isMtp()) {
-            derivedType = TYPE_MTP;
-            derivedIcon = R.drawable.ic_usb_storage;
-        } else if (isUsb()) {
-            derivedType = TYPE_USB;
-            derivedIcon = R.drawable.ic_usb_storage;
-        } else if (isSd()) {
-            derivedType = TYPE_SD;
-            derivedIcon = R.drawable.ic_sd_storage;
-        } else if (isExternalStorage()) {
-            derivedType = TYPE_LOCAL;
-            derivedIcon = R.drawable.ic_root_smartphone;
-        } else if (isDownloads()) {
-            derivedType = TYPE_DOWNLOADS;
-            derivedIcon = R.drawable.ic_root_download;
-        } else if (isImages()) {
-            derivedType = TYPE_IMAGES;
-            derivedIcon = com.android.internal.R.drawable.ic_doc_image;
-        } else if (isVideos()) {
-            derivedType = TYPE_VIDEO;
-            derivedIcon = com.android.internal.R.drawable.ic_doc_video;
-        } else if (isAudio()) {
-            derivedType = TYPE_AUDIO;
-            derivedIcon = com.android.internal.R.drawable.ic_doc_audio;
-        } else if (isRecents()) {
-            derivedType = TYPE_RECENTS;
-        } else {
-            derivedType = TYPE_OTHER;
-        }
-
-        if (DEBUG) Log.d(TAG, "Finished deriving fields: " + this);
-    }
-
-    public Uri getUri() {
-        return DocumentsContract.buildRootUri(authority, rootId);
-    }
-
-    public boolean isRecents() {
-        return authority == null && rootId == null;
-    }
-
-    public boolean isHome() {
-        // Note that "home" is the expected root id for the auto-created
-        // user home directory on external storage. The "home" value should
-        // match ExternalStorageProvider.ROOT_ID_HOME.
-        return isExternalStorage() && "home".equals(rootId);
-    }
-
-    public boolean isExternalStorage() {
-        return "com.android.externalstorage.documents".equals(authority);
-    }
-
-    public boolean isDownloads() {
-        return "com.android.providers.downloads.documents".equals(authority);
-    }
-
-    public boolean isImages() {
-        return "com.android.providers.media.documents".equals(authority)
-                && "images_root".equals(rootId);
-    }
-
-    public boolean isVideos() {
-        return "com.android.providers.media.documents".equals(authority)
-                && "videos_root".equals(rootId);
-    }
-
-    public boolean isAudio() {
-        return "com.android.providers.media.documents".equals(authority)
-                && "audio_root".equals(rootId);
-    }
-
-    public boolean isMtp() {
-        return "com.android.mtp.documents".equals(authority);
-    }
-
-    public boolean isLibrary() {
-        return derivedType == TYPE_IMAGES
-                || derivedType == TYPE_VIDEO
-                || derivedType == TYPE_AUDIO
-                || derivedType == TYPE_RECENTS;
-    }
-
-    public boolean hasSettings() {
-        return (flags & Root.FLAG_HAS_SETTINGS) != 0;
-    }
-
-    public boolean supportsChildren() {
-        return (flags & Root.FLAG_SUPPORTS_IS_CHILD) != 0;
-    }
-
-    public boolean supportsCreate() {
-        return (flags & Root.FLAG_SUPPORTS_CREATE) != 0;
-    }
-
-    public boolean supportsRecents() {
-        return (flags & Root.FLAG_SUPPORTS_RECENTS) != 0;
-    }
-
-    public boolean supportsSearch() {
-        return (flags & Root.FLAG_SUPPORTS_SEARCH) != 0;
-    }
-
-    public boolean supportsEject() {
-        return (flags & Root.FLAG_SUPPORTS_EJECT) != 0;
-    }
-
-    public boolean isAdvanced() {
-        return (flags & Root.FLAG_ADVANCED) != 0;
-    }
-
-    public boolean isLocalOnly() {
-        return (flags & Root.FLAG_LOCAL_ONLY) != 0;
-    }
-
-    public boolean isEmpty() {
-        return (flags & Root.FLAG_EMPTY) != 0;
-    }
-
-    public boolean isSd() {
-        return (flags & Root.FLAG_REMOVABLE_SD) != 0;
-    }
-
-    public boolean isUsb() {
-        return (flags & Root.FLAG_REMOVABLE_USB) != 0;
-    }
-
-    public Drawable loadIcon(Context context) {
-        if (derivedIcon != 0) {
-            return context.getDrawable(derivedIcon);
-        } else {
-            return IconUtils.loadPackageIcon(context, authority, icon);
-        }
-    }
-
-    public Drawable loadDrawerIcon(Context context) {
-        if (derivedIcon != 0) {
-            return IconUtils.applyTintColor(context, derivedIcon, R.color.item_root_icon);
-        } else {
-            return IconUtils.loadPackageIcon(context, authority, icon);
-        }
-    }
-
-    public Drawable loadEjectIcon(Context context) {
-        return IconUtils.applyTintColor(context, R.drawable.ic_eject, R.color.item_eject_icon);
-    }
-
-    /**
-     * Gets the {@link DocumentInfo} of the root folder of this root.
-     */
-    public @Nullable DocumentInfo getRootDocumentBlocking(Context context) {
-        try {
-            final Uri uri = DocumentsContract.buildDocumentUri(authority, documentId);
-            return DocumentInfo.fromUri(context.getContentResolver(), uri);
-        } catch (FileNotFoundException e) {
-            Log.w(TAG, "Failed to find root", e);
-            return null;
-        }
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (o == null) {
-            return false;
-        }
-
-        if (this == o) {
-            return true;
-        }
-
-        if (o instanceof RootInfo) {
-            RootInfo other = (RootInfo) o;
-            return Objects.equals(authority, other.authority)
-                    && Objects.equals(rootId, other.rootId);
-        }
-
-        return false;
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(authority, rootId);
-    }
-
-    @Override
-    public int compareTo(RootInfo other) {
-        // Sort by root type, then title, then summary.
-        int score = derivedType - other.derivedType;
-        if (score != 0) {
-            return score;
-        }
-
-        score = compareToIgnoreCaseNullable(title, other.title);
-        if (score != 0) {
-            return score;
-        }
-
-        return compareToIgnoreCaseNullable(summary, other.summary);
-    }
-
-    @Override
-    public String toString() {
-        return "Root{"
-                + "authority=" + authority
-                + ", rootId=" + rootId
-                + ", title=" + title
-                + ", isUsb=" + isUsb()
-                + ", isSd=" + isSd()
-                + ", isMtp=" + isMtp()
-                + "}";
-    }
-
-    public String getDirectoryString() {
-        return !TextUtils.isEmpty(summary) ? summary : title;
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/CopyJob.java b/packages/DocumentsUI/src/com/android/documentsui/services/CopyJob.java
deleted file mode 100644
index 8eabbe4..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/services/CopyJob.java
+++ /dev/null
@@ -1,727 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.services;
-
-import static android.os.SystemClock.elapsedRealtime;
-import static android.provider.DocumentsContract.buildChildDocumentsUri;
-import static android.provider.DocumentsContract.buildDocumentUri;
-import static android.provider.DocumentsContract.getDocumentId;
-import static android.provider.DocumentsContract.isChildDocument;
-
-import static com.android.documentsui.OperationDialogFragment.DIALOG_TYPE_CONVERTED;
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.model.DocumentInfo.getCursorLong;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
-import static com.android.documentsui.services.FileOperationService.EXTRA_DIALOG_TYPE;
-import static com.android.documentsui.services.FileOperationService.EXTRA_OPERATION_TYPE;
-import static com.android.documentsui.services.FileOperationService.EXTRA_SRC_LIST;
-import static com.android.documentsui.services.FileOperationService.OPERATION_COPY;
-
-import android.annotation.StringRes;
-import android.app.Notification;
-import android.app.Notification.Builder;
-import android.app.PendingIntent;
-import android.content.ContentProviderClient;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.res.AssetFileDescriptor;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.CancellationSignal;
-import android.os.ParcelFileDescriptor;
-import android.os.RemoteException;
-import android.provider.DocumentsContract;
-import android.provider.DocumentsContract.Document;
-import android.text.format.DateUtils;
-import android.util.Log;
-import android.webkit.MimeTypeMap;
-
-import com.android.documentsui.DocumentsApplication;
-import com.android.documentsui.Metrics;
-import com.android.documentsui.R;
-import com.android.documentsui.RootsCache;
-import com.android.documentsui.clipping.UrisSupplier;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
-import com.android.documentsui.model.RootInfo;
-import com.android.documentsui.services.FileOperationService.OpType;
-
-import libcore.io.IoUtils;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.text.NumberFormat;
-import java.util.ArrayList;
-import java.util.List;
-
-class CopyJob extends Job {
-
-    private static final String TAG = "CopyJob";
-
-    final List<DocumentInfo> mSrcs;
-    final ArrayList<DocumentInfo> convertedFiles = new ArrayList<>();
-
-    private long mStartTime = -1;
-
-    private long mBatchSize;
-    private volatile long mBytesCopied;
-    // Speed estimation
-    private long mBytesCopiedSample;
-    private long mSampleTime;
-    private long mSpeed;
-    private long mRemainingTime;
-
-    /**
-     * @see @link {@link Job} constructor for most param descriptions.
-     */
-    CopyJob(Context service, Listener listener, String id, DocumentStack destination,
-            UrisSupplier srcs) {
-        this(service, listener, id, OPERATION_COPY, destination, srcs);
-    }
-
-    CopyJob(Context service, Listener listener, String id, @OpType int opType,
-            DocumentStack destination, UrisSupplier srcs) {
-        super(service, listener, id, opType, destination, srcs);
-
-        assert(srcs.getItemCount() > 0);
-
-        // delay the initialization of it to setUp() because it may be IO extensive.
-        mSrcs = new ArrayList<>(srcs.getItemCount());
-    }
-
-    @Override
-    Builder createProgressBuilder() {
-        return super.createProgressBuilder(
-                service.getString(R.string.copy_notification_title),
-                R.drawable.ic_menu_copy,
-                service.getString(android.R.string.cancel),
-                R.drawable.ic_cab_cancel);
-    }
-
-    @Override
-    public Notification getSetupNotification() {
-        return getSetupNotification(service.getString(R.string.copy_preparing));
-    }
-
-    Notification getProgressNotification(@StringRes int msgId) {
-        updateRemainingTimeEstimate();
-
-        if (mBatchSize >= 0) {
-            double completed = (double) this.mBytesCopied / mBatchSize;
-            mProgressBuilder.setProgress(100, (int) (completed * 100), false);
-            mProgressBuilder.setSubText(
-                    NumberFormat.getPercentInstance().format(completed));
-        } else {
-            // If the total file size failed to compute on some files, then show
-            // an indeterminate spinner. CopyJob would most likely fail on those
-            // files while copying, but would continue with another files.
-            // Also, if the total size is 0 bytes, show an indeterminate spinner.
-            mProgressBuilder.setProgress(0, 0, true);
-        }
-
-        if (mRemainingTime > 0) {
-            mProgressBuilder.setContentText(service.getString(msgId,
-                    DateUtils.formatDuration(mRemainingTime)));
-        } else {
-            mProgressBuilder.setContentText(null);
-        }
-
-        return mProgressBuilder.build();
-    }
-
-    @Override
-    public Notification getProgressNotification() {
-        return getProgressNotification(R.string.copy_remaining);
-    }
-
-    void onBytesCopied(long numBytes) {
-        this.mBytesCopied += numBytes;
-    }
-
-    /**
-     * Generates an estimate of the remaining time in the copy.
-     */
-    private void updateRemainingTimeEstimate() {
-        long elapsedTime = elapsedRealtime() - mStartTime;
-
-        // mBytesCopied is modified in worker thread, but this method is called in monitor thread,
-        // so take a snapshot of mBytesCopied to make sure the updated estimate is consistent.
-        final long bytesCopied = mBytesCopied;
-        final long sampleDuration = Math.max(elapsedTime - mSampleTime, 1L); // avoid dividing 0
-        final long sampleSpeed = ((bytesCopied - mBytesCopiedSample) * 1000) / sampleDuration;
-        if (mSpeed == 0) {
-            mSpeed = sampleSpeed;
-        } else {
-            mSpeed = ((3 * mSpeed) + sampleSpeed) / 4;
-        }
-
-        if (mSampleTime > 0 && mSpeed > 0) {
-            mRemainingTime = ((mBatchSize - bytesCopied) * 1000) / mSpeed;
-        } else {
-            mRemainingTime = 0;
-        }
-
-        mSampleTime = elapsedTime;
-        mBytesCopiedSample = bytesCopied;
-    }
-
-    @Override
-    Notification getFailureNotification() {
-        return getFailureNotification(
-                R.plurals.copy_error_notification_title, R.drawable.ic_menu_copy);
-    }
-
-    @Override
-    Notification getWarningNotification() {
-        final Intent navigateIntent = buildNavigateIntent(INTENT_TAG_WARNING);
-        navigateIntent.putExtra(EXTRA_DIALOG_TYPE, DIALOG_TYPE_CONVERTED);
-        navigateIntent.putExtra(EXTRA_OPERATION_TYPE, operationType);
-
-        navigateIntent.putParcelableArrayListExtra(EXTRA_SRC_LIST, convertedFiles);
-
-        // TODO: Consider adding a dialog on tapping the notification with a list of
-        // converted files.
-        final Notification.Builder warningBuilder = new Notification.Builder(service)
-                .setContentTitle(service.getResources().getString(
-                        R.string.notification_copy_files_converted_title))
-                .setContentText(service.getString(
-                        R.string.notification_touch_for_details))
-                .setContentIntent(PendingIntent.getActivity(appContext, 0, navigateIntent,
-                        PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT))
-                .setCategory(Notification.CATEGORY_ERROR)
-                .setSmallIcon(R.drawable.ic_menu_copy)
-                .setAutoCancel(true);
-        return warningBuilder.build();
-    }
-
-    @Override
-    boolean setUp() {
-        try {
-            buildDocumentList();
-        } catch (ResourceException e) {
-            Log.e(TAG, "Failed to get the list of docs.", e);
-            return false;
-        }
-
-        // Check if user has canceled this task.
-        if (isCanceled()) {
-            return false;
-        }
-
-        try {
-            mBatchSize = calculateSize(mSrcs);
-        } catch (ResourceException e) {
-            Log.w(TAG, "Failed to calculate total size. Copying without progress.", e);
-            mBatchSize = -1;
-        }
-
-        // Check if user has canceled this task. We should check it again here as user cancels
-        // tasks in main thread, but this is running in a worker thread. calculateSize() may
-        // take a long time during which user can cancel this task, and we don't want to waste
-        // resources doing useless large chunk of work.
-        if (isCanceled()) {
-            return false;
-        }
-
-        return checkSpace();
-    }
-
-    @Override
-    void start() {
-        mStartTime = elapsedRealtime();
-        DocumentInfo srcInfo;
-        DocumentInfo dstInfo = stack.peek();
-        for (int i = 0; i < mSrcs.size() && !isCanceled(); ++i) {
-            srcInfo = mSrcs.get(i);
-
-            if (DEBUG) Log.d(TAG,
-                    "Copying " + srcInfo.displayName + " (" + srcInfo.derivedUri + ")"
-                    + " to " + dstInfo.displayName + " (" + dstInfo.derivedUri + ")");
-
-            try {
-                if (dstInfo.equals(srcInfo) || isDescendentOf(srcInfo, dstInfo)) {
-                    Log.e(TAG, "Skipping recursive copy of " + srcInfo.derivedUri);
-                    onFileFailed(srcInfo);
-                } else {
-                    processDocument(srcInfo, null, dstInfo);
-                }
-            } catch (ResourceException e) {
-                Log.e(TAG, "Failed to copy " + srcInfo.derivedUri, e);
-                onFileFailed(srcInfo);
-            }
-        }
-        Metrics.logFileOperation(service, operationType, mSrcs, dstInfo);
-    }
-
-    private void buildDocumentList() throws ResourceException {
-        try {
-            final ContentResolver resolver = appContext.getContentResolver();
-            final Iterable<Uri> uris = srcs.getUris(appContext);
-
-            int docProcessed = 0;
-            for (Uri uri : uris) {
-                DocumentInfo doc = DocumentInfo.fromUri(resolver, uri);
-                if (canCopy(doc, stack.root)) {
-                    mSrcs.add(doc);
-                } else {
-                    onFileFailed(doc);
-                }
-                ++docProcessed;
-
-                if (isCanceled()) {
-                    return;
-                }
-            }
-
-            // If docProcessed is different than the count claimed by UrisSupplier, add the number
-            // to failedFileCount.
-            failedFileCount += (srcs.getItemCount() - docProcessed);
-        } catch(IOException e) {
-            failedFileCount += srcs.getItemCount();
-            throw new ResourceException("Failed to open the list of docs to copy.", e);
-        }
-    }
-
-    private static boolean canCopy(DocumentInfo doc, RootInfo root) {
-        // Can't copy folders to downloads, because we don't show folders there.
-        return !root.isDownloads() || !doc.isDirectory();
-    }
-
-    /**
-     * Checks whether the destination folder has enough space to take all source files.
-     * @return true if the root has enough space or doesn't provide free space info; otherwise false
-     */
-    boolean checkSpace() {
-        return checkSpace(mBatchSize);
-    }
-
-    /**
-     * Checks whether the destination folder has enough space to take files of batchSize
-     * @param batchSize the total size of files
-     * @return true if the root has enough space or doesn't provide free space info; otherwise false
-     */
-    final boolean checkSpace(long batchSize) {
-        // Default to be true because if batchSize or available space is invalid, we still let the
-        // copy start anyway.
-        boolean result = true;
-        if (batchSize >= 0) {
-            RootsCache cache = DocumentsApplication.getRootsCache(appContext);
-
-            // Query root info here instead of using stack.root because the number there may be
-            // stale.
-            RootInfo root = cache.getRootOneshot(stack.root.authority, stack.root.rootId, true);
-            if (root.availableBytes >= 0) {
-                result = (batchSize <= root.availableBytes);
-            } else {
-                Log.w(TAG, root.toString() + " doesn't provide available bytes.");
-            }
-        }
-
-        if (!result) {
-            failedFileCount += mSrcs.size();
-            failedFiles.addAll(mSrcs);
-        }
-
-        return result;
-    }
-
-    @Override
-    boolean hasWarnings() {
-        return !convertedFiles.isEmpty();
-    }
-
-    /**
-     * Logs progress on the current copy operation. Displays/Updates the progress notification.
-     *
-     * @param bytesCopied
-     */
-    private void makeCopyProgress(long bytesCopied) {
-        onBytesCopied(bytesCopied);
-    }
-
-    /**
-     * Copies a the given document to the given location.
-     *
-     * @param src DocumentInfos for the documents to copy.
-     * @param srcParent DocumentInfo for the parent of the document to process.
-     * @param dstDirInfo The destination directory.
-     * @throws ResourceException
-     *
-     * TODO: Stop passing srcParent, as it's not used for copy, but for move only.
-     */
-    void processDocument(DocumentInfo src, DocumentInfo srcParent,
-            DocumentInfo dstDirInfo) throws ResourceException {
-
-        // TODO: When optimized copy kicks in, we'll not making any progress updates.
-        // For now. Local storage isn't using optimized copy.
-
-        // When copying within the same provider, try to use optimized copying.
-        // If not supported, then fallback to byte-by-byte copy/move.
-        if (src.authority.equals(dstDirInfo.authority)) {
-            if ((src.flags & Document.FLAG_SUPPORTS_COPY) != 0) {
-                try {
-                    if (DocumentsContract.copyDocument(getClient(src), src.derivedUri,
-                            dstDirInfo.derivedUri) != null) {
-                        return;
-                    }
-                } catch (RemoteException | RuntimeException e) {
-                    Log.e(TAG, "Provider side copy failed for: " + src.derivedUri
-                            + " due to an exception.", e);
-                }
-
-                // If optimized copy fails, then fallback to byte-by-byte copy.
-                if (DEBUG) Log.d(TAG, "Fallback to byte-by-byte copy for: " + src.derivedUri);
-            }
-        }
-
-        // If we couldn't do an optimized copy...we fall back to vanilla byte copy.
-        byteCopyDocument(src, dstDirInfo);
-    }
-
-    void byteCopyDocument(DocumentInfo src, DocumentInfo dest) throws ResourceException {
-        final String dstMimeType;
-        final String dstDisplayName;
-
-        if (DEBUG) Log.d(TAG, "Doing byte copy of document: " + src);
-        // If the file is virtual, but can be converted to another format, then try to copy it
-        // as such format. Also, append an extension for the target mime type (if known).
-        if (src.isVirtualDocument()) {
-            String[] streamTypes = null;
-            try {
-                streamTypes = getContentResolver().getStreamTypes(src.derivedUri, "*/*");
-            } catch (RuntimeException e) {
-                throw new ResourceException(
-                        "Failed to obtain streamable types for %s due to an exception.",
-                        src.derivedUri, e);
-            }
-            if (streamTypes != null && streamTypes.length > 0) {
-                dstMimeType = streamTypes[0];
-                final String extension = MimeTypeMap.getSingleton().
-                        getExtensionFromMimeType(dstMimeType);
-                dstDisplayName = src.displayName +
-                        (extension != null ? "." + extension : src.displayName);
-            } else {
-                throw new ResourceException("Cannot copy virtual file %s. No streamable formats "
-                        + "available.", src.derivedUri);
-            }
-        } else {
-            dstMimeType = src.mimeType;
-            dstDisplayName = src.displayName;
-        }
-
-        // Create the target document (either a file or a directory), then copy recursively the
-        // contents (bytes or children).
-        Uri dstUri = null;
-        try {
-            dstUri = DocumentsContract.createDocument(
-                    getClient(dest), dest.derivedUri, dstMimeType, dstDisplayName);
-        } catch (RemoteException | RuntimeException e) {
-            throw new ResourceException(
-                    "Couldn't create destination document " + dstDisplayName + " in directory %s "
-                    + "due to an exception.", dest.derivedUri, e);
-        }
-        if (dstUri == null) {
-            // If this is a directory, the entire subdir will not be copied over.
-            throw new ResourceException(
-                    "Couldn't create destination document " + dstDisplayName + " in directory %s.",
-                    dest.derivedUri);
-        }
-
-        DocumentInfo dstInfo = null;
-        try {
-            dstInfo = DocumentInfo.fromUri(getContentResolver(), dstUri);
-        } catch (FileNotFoundException | RuntimeException e) {
-            throw new ResourceException("Could not load DocumentInfo for newly created file %s.",
-                    dstUri);
-        }
-
-        if (Document.MIME_TYPE_DIR.equals(src.mimeType)) {
-            copyDirectoryHelper(src, dstInfo);
-        } else {
-            copyFileHelper(src, dstInfo, dest, dstMimeType);
-        }
-    }
-
-    /**
-     * Handles recursion into a directory and copying its contents. Note that in linux terms, this
-     * does the equivalent of "cp src/* dst", not "cp -r src dst".
-     *
-     * @param srcDir Info of the directory to copy from. The routine will copy the directory's
-     *            contents, not the directory itself.
-     * @param destDir Info of the directory to copy to. Must be created beforehand.
-     * @throws ResourceException
-     */
-    private void copyDirectoryHelper(DocumentInfo srcDir, DocumentInfo destDir)
-            throws ResourceException {
-        // Recurse into directories. Copy children into the new subdirectory.
-        final String queryColumns[] = new String[] {
-                Document.COLUMN_DISPLAY_NAME,
-                Document.COLUMN_DOCUMENT_ID,
-                Document.COLUMN_MIME_TYPE,
-                Document.COLUMN_SIZE,
-                Document.COLUMN_FLAGS
-        };
-        Cursor cursor = null;
-        boolean success = true;
-        // Iterate over srcs in the directory; copy to the destination directory.
-        final Uri queryUri = buildChildDocumentsUri(srcDir.authority, srcDir.documentId);
-        try {
-            try {
-                cursor = getClient(srcDir).query(queryUri, queryColumns, null, null, null);
-            } catch (RemoteException | RuntimeException e) {
-                throw new ResourceException("Failed to query children of %s due to an exception.",
-                        srcDir.derivedUri, e);
-            }
-
-            DocumentInfo src;
-            while (cursor.moveToNext() && !isCanceled()) {
-                try {
-                    src = DocumentInfo.fromCursor(cursor, srcDir.authority);
-                    processDocument(src, srcDir, destDir);
-                } catch (RuntimeException e) {
-                    Log.e(TAG, String.format(
-                            "Failed to recursively process a file %s due to an exception.",
-                            srcDir.derivedUri.toString()), e);
-                    success = false;
-                }
-            }
-        } catch (RuntimeException e) {
-            Log.e(TAG, String.format(
-                    "Failed to copy a file %s to %s. ",
-                    srcDir.derivedUri.toString(), destDir.derivedUri.toString()), e);
-            success = false;
-        } finally {
-            IoUtils.closeQuietly(cursor);
-        }
-
-        if (!success) {
-            throw new RuntimeException("Some files failed to copy during a recursive "
-                    + "directory copy.");
-        }
-    }
-
-    /**
-     * Handles copying a single file.
-     *
-     * @param src Info of the file to copy from.
-     * @param dest Info of the *file* to copy to. Must be created beforehand.
-     * @param destParent Info of the parent of the destination.
-     * @param mimeType Mime type for the target. Can be different than source for virtual files.
-     * @throws ResourceException
-     */
-    private void copyFileHelper(DocumentInfo src, DocumentInfo dest, DocumentInfo destParent,
-            String mimeType) throws ResourceException {
-        CancellationSignal canceller = new CancellationSignal();
-        AssetFileDescriptor srcFileAsAsset = null;
-        ParcelFileDescriptor srcFile = null;
-        ParcelFileDescriptor dstFile = null;
-        InputStream in = null;
-        ParcelFileDescriptor.AutoCloseOutputStream out = null;
-        boolean success = false;
-
-        try {
-            // If the file is virtual, but can be converted to another format, then try to copy it
-            // as such format.
-            if (src.isVirtualDocument()) {
-                try {
-                    srcFileAsAsset = getClient(src).openTypedAssetFileDescriptor(
-                                src.derivedUri, mimeType, null, canceller);
-                } catch (FileNotFoundException | RemoteException | RuntimeException e) {
-                    throw new ResourceException("Failed to open a file as asset for %s due to an "
-                            + "exception.", src.derivedUri, e);
-                }
-                srcFile = srcFileAsAsset.getParcelFileDescriptor();
-                try {
-                    in = new AssetFileDescriptor.AutoCloseInputStream(srcFileAsAsset);
-                } catch (IOException e) {
-                    throw new ResourceException("Failed to open a file input stream for %s due "
-                            + "an exception.", src.derivedUri, e);
-                }
-            } else {
-                try {
-                    srcFile = getClient(src).openFile(src.derivedUri, "r", canceller);
-                } catch (FileNotFoundException | RemoteException | RuntimeException e) {
-                    throw new ResourceException(
-                            "Failed to open a file for %s due to an exception.", src.derivedUri, e);
-                }
-                in = new ParcelFileDescriptor.AutoCloseInputStream(srcFile);
-            }
-
-            try {
-                dstFile = getClient(dest).openFile(dest.derivedUri, "w", canceller);
-            } catch (FileNotFoundException | RemoteException | RuntimeException e) {
-                throw new ResourceException("Failed to open the destination file %s for writing "
-                        + "due to an exception.", dest.derivedUri, e);
-            }
-            out = new ParcelFileDescriptor.AutoCloseOutputStream(dstFile);
-
-            byte[] buffer = new byte[32 * 1024];
-            int len;
-            try {
-                while ((len = in.read(buffer)) != -1) {
-                    if (isCanceled()) {
-                        if (DEBUG) Log.d(TAG, "Canceled copy mid-copy of: " + src.derivedUri);
-                        return;
-                    }
-                    out.write(buffer, 0, len);
-                    makeCopyProgress(len);
-                }
-
-                // Need to invoke IoUtils.close explicitly to avoid from ignoring errors at flush.
-                IoUtils.close(dstFile.getFileDescriptor());
-                srcFile.checkError();
-            } catch (IOException e) {
-                throw new ResourceException(
-                        "Failed to copy bytes from %s to %s due to an IO exception.",
-                        src.derivedUri, dest.derivedUri, e);
-            }
-
-            if (src.isVirtualDocument()) {
-               convertedFiles.add(src);
-            }
-
-            success = true;
-        } finally {
-            if (!success) {
-                if (dstFile != null) {
-                    try {
-                        dstFile.closeWithError("Error copying bytes.");
-                    } catch (IOException closeError) {
-                        Log.w(TAG, "Error closing destination.", closeError);
-                    }
-                }
-
-                if (DEBUG) Log.d(TAG, "Cleaning up failed operation leftovers.");
-                canceller.cancel();
-                try {
-                    deleteDocument(dest, destParent);
-                } catch (ResourceException e) {
-                    Log.w(TAG, "Failed to cleanup after copy error: " + src.derivedUri, e);
-                }
-            }
-
-            // This also ensures the file descriptors are closed.
-            IoUtils.closeQuietly(in);
-            IoUtils.closeQuietly(out);
-        }
-    }
-
-    /**
-     * Calculates the cumulative size of all the documents in the list. Directories are recursed
-     * into and totaled up.
-     *
-     * @param srcs
-     * @return Size in bytes.
-     * @throws ResourceException
-     */
-    private long calculateSize(List<DocumentInfo> srcs) throws ResourceException {
-        long result = 0;
-
-        for (DocumentInfo src : srcs) {
-            if (src.isDirectory()) {
-                // Directories need to be recursed into.
-                try {
-                    result += calculateFileSizesRecursively(getClient(src), src.derivedUri);
-                } catch (RemoteException e) {
-                    throw new ResourceException("Failed to obtain the client for %s.",
-                            src.derivedUri, e);
-                }
-            } else {
-                result += src.size;
-            }
-
-            if (isCanceled()) {
-                return result;
-            }
-        }
-        return result;
-    }
-
-    /**
-     * Calculates (recursively) the cumulative size of all the files under the given directory.
-     *
-     * @throws ResourceException
-     */
-    long calculateFileSizesRecursively(
-            ContentProviderClient client, Uri uri) throws ResourceException {
-        final String authority = uri.getAuthority();
-        final Uri queryUri = buildChildDocumentsUri(authority, getDocumentId(uri));
-        final String queryColumns[] = new String[] {
-                Document.COLUMN_DOCUMENT_ID,
-                Document.COLUMN_MIME_TYPE,
-                Document.COLUMN_SIZE
-        };
-
-        long result = 0;
-        Cursor cursor = null;
-        try {
-            cursor = client.query(queryUri, queryColumns, null, null, null);
-            while (cursor.moveToNext() && !isCanceled()) {
-                if (Document.MIME_TYPE_DIR.equals(
-                        getCursorString(cursor, Document.COLUMN_MIME_TYPE))) {
-                    // Recurse into directories.
-                    final Uri dirUri = buildDocumentUri(authority,
-                            getCursorString(cursor, Document.COLUMN_DOCUMENT_ID));
-                    result += calculateFileSizesRecursively(client, dirUri);
-                } else {
-                    // This may return -1 if the size isn't defined. Ignore those cases.
-                    long size = getCursorLong(cursor, Document.COLUMN_SIZE);
-                    result += size > 0 ? size : 0;
-                }
-            }
-        } catch (RemoteException | RuntimeException e) {
-            throw new ResourceException(
-                    "Failed to calculate size for %s due to an exception.", uri, e);
-        } finally {
-            IoUtils.closeQuietly(cursor);
-        }
-
-        return result;
-    }
-
-    /**
-     * Returns true if {@code doc} is a descendant of {@code parentDoc}.
-     * @throws ResourceException
-     */
-    boolean isDescendentOf(DocumentInfo doc, DocumentInfo parent)
-            throws ResourceException {
-        if (parent.isDirectory() && doc.authority.equals(parent.authority)) {
-            try {
-                return isChildDocument(getClient(doc), doc.derivedUri, parent.derivedUri);
-            } catch (RemoteException | RuntimeException e) {
-                throw new ResourceException(
-                        "Failed to check if %s is a child of %s due to an exception.",
-                        doc.derivedUri, parent.derivedUri, e);
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public String toString() {
-        return new StringBuilder()
-                .append("CopyJob")
-                .append("{")
-                .append("id=" + id)
-                .append(", docs=" + srcs)
-                .append(", destination=" + stack)
-                .append("}")
-                .toString();
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/DeleteJob.java b/packages/DocumentsUI/src/com/android/documentsui/services/DeleteJob.java
deleted file mode 100644
index 5a36818..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/services/DeleteJob.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.services;
-
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.services.FileOperationService.OPERATION_DELETE;
-
-import android.app.Notification;
-import android.app.Notification.Builder;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.net.Uri;
-import android.util.Log;
-
-import com.android.documentsui.clipping.UrisSupplier;
-import com.android.documentsui.Metrics;
-import com.android.documentsui.R;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-final class DeleteJob extends Job {
-
-    private static final String TAG = "DeleteJob";
-
-    private volatile int mDocsProcessed = 0;
-
-    Uri mSrcParent;
-    /**
-     * Moves files to a destination identified by {@code destination}.
-     * Performs most work by delegating to CopyJob, then deleting
-     * a file after it has been copied.
-     *
-     * @see @link {@link Job} constructor for most param descriptions.
-     */
-    DeleteJob(Context service, Listener listener, String id, Uri srcParent, DocumentStack stack,
-            UrisSupplier srcs) {
-        super(service, listener, id, OPERATION_DELETE, stack, srcs);
-        mSrcParent = srcParent;
-    }
-
-    @Override
-    Builder createProgressBuilder() {
-        return super.createProgressBuilder(
-                service.getString(R.string.delete_notification_title),
-                R.drawable.ic_menu_delete,
-                service.getString(android.R.string.cancel),
-                R.drawable.ic_cab_cancel);
-    }
-
-    @Override
-    public Notification getSetupNotification() {
-        return getSetupNotification(service.getString(R.string.delete_preparing));
-    }
-
-    @Override
-    public Notification getProgressNotification() {
-        mProgressBuilder.setProgress(srcs.getItemCount(), mDocsProcessed, false);
-        String format = service.getString(R.string.delete_progress);
-        mProgressBuilder.setSubText(String.format(format, mDocsProcessed, srcs.getItemCount()));
-
-        mProgressBuilder.setContentText(null);
-
-        return mProgressBuilder.build();
-    }
-
-    @Override
-    Notification getFailureNotification() {
-        return getFailureNotification(
-                R.plurals.delete_error_notification_title, R.drawable.ic_menu_delete);
-    }
-
-    @Override
-    Notification getWarningNotification() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    void start() {
-        try {
-            final List<DocumentInfo> srcs = new ArrayList<>(this.srcs.getItemCount());
-
-            final Iterable<Uri> uris = this.srcs.getUris(appContext);
-
-            final ContentResolver resolver = appContext.getContentResolver();
-            final DocumentInfo srcParent = DocumentInfo.fromUri(resolver, mSrcParent);
-            for (Uri uri : uris) {
-                DocumentInfo doc = DocumentInfo.fromUri(resolver, uri);
-                srcs.add(doc);
-
-                if (DEBUG) Log.d(TAG, "Deleting document @ " + doc.derivedUri);
-                try {
-                    deleteDocument(doc, srcParent);
-
-                    if (isCanceled()) {
-                        // Canceled, dump the rest of the work. Deleted docs are not recoverable.
-                        return;
-                    }
-                } catch (ResourceException e) {
-                    Log.e(TAG, "Failed to delete document @ " + doc.derivedUri, e);
-                    onFileFailed(doc);
-                }
-
-                ++mDocsProcessed;
-            }
-
-            // If mDocProcessed is different than the count claimed by UrisSupplier, add the number
-            // to failedFileCount.
-            failedFileCount += (this.srcs.getItemCount() - mDocsProcessed);
-            Metrics.logFileOperation(service, operationType, srcs, null);
-        } catch(IOException e) {
-            Log.e(TAG, "Failed to get list of docs or parent source.", e);
-            failedFileCount += srcs.getItemCount();
-        }
-    }
-
-    @Override
-    public String toString() {
-        return new StringBuilder()
-                .append("DeleteJob")
-                .append("{")
-                .append("id=" + id)
-                .append(", docs=" + srcs)
-                .append(", srcParent=" + mSrcParent)
-                .append(", location=" + stack)
-                .append("}")
-                .toString();
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/FileOperation.java b/packages/DocumentsUI/src/com/android/documentsui/services/FileOperation.java
deleted file mode 100644
index 43c3bd7..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/services/FileOperation.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.services;
-
-import static com.android.documentsui.services.FileOperationService.OPERATION_COPY;
-import static com.android.documentsui.services.FileOperationService.OPERATION_DELETE;
-import static com.android.documentsui.services.FileOperationService.OPERATION_MOVE;
-import static com.android.documentsui.services.FileOperationService.OPERATION_UNKNOWN;
-
-import android.content.Context;
-import android.net.Uri;
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.support.annotation.VisibleForTesting;
-
-import com.android.documentsui.clipping.UrisSupplier;
-import com.android.documentsui.model.DocumentStack;
-import com.android.documentsui.services.FileOperationService.OpType;
-
-/**
- * FileOperation describes a file operation, such as move/copy/delete etc.
- */
-public abstract class FileOperation implements Parcelable {
-    private final @OpType int mOpType;
-
-    private final UrisSupplier mSrcs;
-    private DocumentStack mDestination;
-
-    @VisibleForTesting
-    FileOperation(@OpType int opType, UrisSupplier srcs, DocumentStack destination) {
-        assert(opType != OPERATION_UNKNOWN);
-        assert(srcs.getItemCount() > 0);
-
-        mOpType = opType;
-        mSrcs = srcs;
-        mDestination = destination;
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    public @OpType int getOpType() {
-        return mOpType;
-    }
-
-    public UrisSupplier getSrc() {
-        return mSrcs;
-    }
-
-    public DocumentStack getDestination() {
-        return mDestination;
-    }
-
-    public void setDestination(DocumentStack destination) {
-        mDestination = destination;
-    }
-
-    public void dispose() {
-        mSrcs.dispose();
-    }
-
-    abstract Job createJob(Context service, Job.Listener listener, String id);
-
-    private void appendInfoTo(StringBuilder builder) {
-        builder.append("opType=").append(mOpType);
-        builder.append(", srcs=").append(mSrcs.toString());
-        builder.append(", destination=").append(mDestination.toString());
-    }
-
-    @Override
-    public void writeToParcel(Parcel out, int flag) {
-        out.writeInt(mOpType);
-        out.writeParcelable(mSrcs, flag);
-        out.writeParcelable(mDestination, flag);
-    }
-
-    private FileOperation(Parcel in) {
-        mOpType = in.readInt();
-        mSrcs = in.readParcelable(FileOperation.class.getClassLoader());
-        mDestination = in.readParcelable(FileOperation.class.getClassLoader());
-    }
-
-    public static class CopyOperation extends FileOperation {
-        private CopyOperation(UrisSupplier srcs, DocumentStack destination) {
-            super(OPERATION_COPY, srcs, destination);
-        }
-
-        @Override
-        public String toString() {
-            StringBuilder builder = new StringBuilder();
-
-            builder.append("CopyOperation{");
-            super.appendInfoTo(builder);
-            builder.append("}");
-
-            return builder.toString();
-        }
-
-        CopyJob createJob(Context service, Job.Listener listener, String id) {
-            return new CopyJob(service, listener, id, getDestination(), getSrc());
-        }
-
-        private CopyOperation(Parcel in) {
-            super(in);
-        }
-
-        public static final Parcelable.Creator<CopyOperation> CREATOR =
-                new Parcelable.Creator<CopyOperation>() {
-
-                    @Override
-                    public CopyOperation createFromParcel(Parcel source) {
-                        return new CopyOperation(source);
-                    }
-
-                    @Override
-                    public CopyOperation[] newArray(int size) {
-                        return new CopyOperation[size];
-                    }
-                };
-    }
-
-    public static class MoveDeleteOperation extends FileOperation {
-        private final Uri mSrcParent;
-
-        private MoveDeleteOperation(
-                @OpType int opType, UrisSupplier srcs, Uri srcParent, DocumentStack destination) {
-            super(opType, srcs, destination);
-
-            assert(srcParent != null);
-            mSrcParent = srcParent;
-        }
-
-        @Override
-        Job createJob(Context service, Job.Listener listener, String id) {
-            switch(getOpType()) {
-                case OPERATION_MOVE:
-                    return new MoveJob(
-                            service, listener, id, mSrcParent, getDestination(), getSrc());
-                case OPERATION_DELETE:
-                    return new DeleteJob(
-                            service, listener, id, mSrcParent, getDestination(), getSrc());
-                default:
-                    throw new UnsupportedOperationException("Unsupported op type: " + getOpType());
-            }
-        }
-
-        @Override
-        public String toString() {
-            StringBuilder builder = new StringBuilder();
-
-            builder.append("MoveDeleteOperation{");
-            super.appendInfoTo(builder);
-            builder.append(", srcParent=").append(mSrcParent.toString());
-            builder.append("}");
-
-            return builder.toString();
-        }
-
-        @Override
-        public void writeToParcel(Parcel out, int flag) {
-            super.writeToParcel(out, flag);
-            out.writeParcelable(mSrcParent, flag);
-        }
-
-        private MoveDeleteOperation(Parcel in) {
-            super(in);
-            mSrcParent = in.readParcelable(null);
-        }
-
-        public static final Parcelable.Creator<MoveDeleteOperation> CREATOR =
-                new Parcelable.Creator<MoveDeleteOperation>() {
-
-
-            @Override
-            public MoveDeleteOperation createFromParcel(Parcel source) {
-                return new MoveDeleteOperation(source);
-            }
-
-            @Override
-            public MoveDeleteOperation[] newArray(int size) {
-                return new MoveDeleteOperation[size];
-            }
-        };
-    }
-
-    public static class Builder {
-        private @OpType int mOpType;
-        private Uri mSrcParent;
-        private UrisSupplier mSrcs;
-        private DocumentStack mDestination;
-
-        public Builder withOpType(@OpType int opType) {
-            mOpType = opType;
-            return this;
-        }
-
-        public Builder withSrcParent(Uri srcParent) {
-            mSrcParent = srcParent;
-            return this;
-        }
-
-        public Builder withSrcs(UrisSupplier srcs) {
-            mSrcs = srcs;
-            return this;
-        }
-
-        public Builder withDestination(DocumentStack destination) {
-            mDestination = destination;
-            return this;
-        }
-
-        public FileOperation build() {
-            switch (mOpType) {
-                case OPERATION_COPY:
-                    return new CopyOperation(mSrcs, mDestination);
-                case OPERATION_MOVE:
-                case OPERATION_DELETE:
-                    return new MoveDeleteOperation(mOpType, mSrcs, mSrcParent, mDestination);
-                default:
-                    throw new UnsupportedOperationException("Unsupported op type: " + mOpType);
-            }
-        }
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/FileOperationService.java b/packages/DocumentsUI/src/com/android/documentsui/services/FileOperationService.java
deleted file mode 100644
index b61c1c9..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/services/FileOperationService.java
+++ /dev/null
@@ -1,372 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.services;
-
-import static com.android.documentsui.Shared.DEBUG;
-
-import android.annotation.IntDef;
-import android.app.NotificationManager;
-import android.app.Service;
-import android.content.Intent;
-import android.os.Handler;
-import android.os.IBinder;
-import android.os.PowerManager;
-import android.support.annotation.VisibleForTesting;
-import android.util.Log;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-
-import javax.annotation.concurrent.GuardedBy;
-
-public class FileOperationService extends Service implements Job.Listener {
-
-    private static final int POOL_SIZE = 2;  // "pool size", not *max* "pool size".
-    private static final int NOTIFICATION_ID_PROGRESS = 0;
-    private static final int NOTIFICATION_ID_FAILURE = 1;
-    private static final int NOTIFICATION_ID_WARNING = 2;
-
-    public static final String TAG = "FileOperationService";
-
-    // Extra used for OperationDialogFragment, Notifications and picking copy destination.
-    public static final String EXTRA_OPERATION_TYPE = "com.android.documentsui.OPERATION_TYPE";
-
-    // Extras used for OperationDialogFragment...
-    public static final String EXTRA_DIALOG_TYPE = "com.android.documentsui.DIALOG_TYPE";
-    public static final String EXTRA_SRC_LIST = "com.android.documentsui.SRC_LIST";
-
-    // Extras used to start or cancel a file operation...
-    public static final String EXTRA_JOB_ID = "com.android.documentsui.JOB_ID";
-    public static final String EXTRA_OPERATION = "com.android.documentsui.OPERATION";
-    public static final String EXTRA_CANCEL = "com.android.documentsui.CANCEL";
-
-    @IntDef(flag = true, value = {
-            OPERATION_UNKNOWN,
-            OPERATION_COPY,
-            OPERATION_MOVE,
-            OPERATION_DELETE
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface OpType {}
-    public static final int OPERATION_UNKNOWN = -1;
-    public static final int OPERATION_COPY = 1;
-    public static final int OPERATION_MOVE = 2;
-    public static final int OPERATION_DELETE = 3;
-
-    // TODO: Move it to a shared file when more operations are implemented.
-    public static final int FAILURE_COPY = 1;
-
-    // The executor and job factory are visible for testing and non-final
-    // so we'll have a way to inject test doubles from the test. It's
-    // a sub-optimal arrangement.
-    @VisibleForTesting ExecutorService executor;
-
-    // Use a separate thread pool to prioritize deletions.
-    @VisibleForTesting ExecutorService deletionExecutor;
-
-    // Use a handler to schedule monitor tasks.
-    @VisibleForTesting Handler handler;
-
-    private PowerManager mPowerManager;
-    private PowerManager.WakeLock mWakeLock;  // the wake lock, if held.
-    private NotificationManager mNotificationManager;
-
-    @GuardedBy("mRunning")
-    private final Map<String, JobRecord> mRunning = new HashMap<>();
-
-    private int mLastServiceId;
-
-    @Override
-    public void onCreate() {
-        // Allow tests to pre-set these with test doubles.
-        if (executor == null) {
-            executor = Executors.newFixedThreadPool(POOL_SIZE);
-        }
-
-        if (deletionExecutor == null) {
-            deletionExecutor = Executors.newCachedThreadPool();
-        }
-
-        if (handler == null) {
-            // Monitor tasks are small enough to schedule them on main thread.
-            handler = new Handler();
-        }
-
-        if (DEBUG) Log.d(TAG, "Created.");
-        mPowerManager = getSystemService(PowerManager.class);
-        mNotificationManager = getSystemService(NotificationManager.class);
-    }
-
-    @Override
-    public void onDestroy() {
-        if (DEBUG) Log.d(TAG, "Shutting down executor.");
-
-        List<Runnable> unfinishedCopies = executor.shutdownNow();
-        List<Runnable> unfinishedDeletions = deletionExecutor.shutdownNow();
-        List<Runnable> unfinished =
-                new ArrayList<>(unfinishedCopies.size() + unfinishedDeletions.size());
-        unfinished.addAll(unfinishedCopies);
-        unfinished.addAll(unfinishedDeletions);
-        if (!unfinished.isEmpty()) {
-            Log.w(TAG, "Shutting down, but executor reports running jobs: " + unfinished);
-        }
-
-        executor = null;
-        deletionExecutor = null;
-        handler = null;
-
-        if (DEBUG) Log.d(TAG, "Destroyed.");
-    }
-
-    @Override
-    public int onStartCommand(Intent intent, int flags, int serviceId) {
-        // TODO: Ensure we're not being called with retry or redeliver.
-        // checkArgument(flags == 0);  // retry and redeliver are not supported.
-
-        String jobId = intent.getStringExtra(EXTRA_JOB_ID);
-        assert(jobId != null);
-
-        if (DEBUG) Log.d(TAG, "onStartCommand: " + jobId + " with serviceId " + serviceId);
-
-        if (intent.hasExtra(EXTRA_CANCEL)) {
-            handleCancel(intent);
-        } else {
-            FileOperation operation = intent.getParcelableExtra(EXTRA_OPERATION);
-            handleOperation(jobId, operation);
-        }
-
-        // Track the service supplied id so we can stop the service once we're out of work to do.
-        mLastServiceId = serviceId;
-
-        return START_NOT_STICKY;
-    }
-
-    private void handleOperation(String jobId, FileOperation operation) {
-        synchronized (mRunning) {
-            if (mWakeLock == null) {
-                mWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
-            }
-
-            if (mRunning.containsKey(jobId)) {
-                Log.w(TAG, "Duplicate job id: " + jobId
-                        + ". Ignoring job request for operation: " + operation + ".");
-                return;
-            }
-
-            Job job = operation.createJob(this, this, jobId);
-
-            if (job == null) {
-                return;
-            }
-
-            mWakeLock.acquire();
-
-            assert (job != null);
-            if (DEBUG) Log.d(TAG, "Scheduling job " + job.id + ".");
-            Future<?> future = getExecutorService(operation.getOpType()).submit(job);
-            mRunning.put(jobId, new JobRecord(job, future));
-        }
-    }
-
-    /**
-     * Cancels the operation corresponding to job id, identified in "EXTRA_JOB_ID".
-     *
-     * @param intent The cancellation intent.
-     */
-    private void handleCancel(Intent intent) {
-        assert(intent.hasExtra(EXTRA_CANCEL));
-        assert(intent.getStringExtra(EXTRA_JOB_ID) != null);
-
-        String jobId = intent.getStringExtra(EXTRA_JOB_ID);
-
-        if (DEBUG) Log.d(TAG, "handleCancel: " + jobId);
-
-        synchronized (mRunning) {
-            // Do nothing if the cancelled ID doesn't match the current job ID. This prevents racey
-            // cancellation requests from affecting unrelated copy jobs.  However, if the current job ID
-            // is null, the service most likely crashed and was revived by the incoming cancel intent.
-            // In that case, always allow the cancellation to proceed.
-            JobRecord record = mRunning.get(jobId);
-            if (record != null) {
-                record.job.cancel();
-            }
-        }
-
-        // Dismiss the progress notification here rather than in the copy loop. This preserves
-        // interactivity for the user in case the copy loop is stalled.
-        // Try to cancel it even if we don't have a job id...in case there is some sad
-        // orphan notification.
-        mNotificationManager.cancel(jobId, NOTIFICATION_ID_PROGRESS);
-
-        // TODO: Guarantee the job is being finalized
-    }
-
-    private ExecutorService getExecutorService(@OpType int operationType) {
-        switch (operationType) {
-            case OPERATION_COPY:
-            case OPERATION_MOVE:
-                return executor;
-            case OPERATION_DELETE:
-                return deletionExecutor;
-            default:
-                throw new UnsupportedOperationException();
-        }
-    }
-
-    @GuardedBy("mRunning")
-    private void deleteJob(Job job) {
-        if (DEBUG) Log.d(TAG, "deleteJob: " + job.id);
-
-        JobRecord record = mRunning.remove(job.id);
-        assert(record != null);
-        record.job.cleanup();
-
-        if (mRunning.isEmpty()) {
-            shutdown();
-        }
-    }
-
-    /**
-     * Most likely shuts down. Won't shut down if service has a pending
-     * message. Thread pool is deal with in onDestroy.
-     */
-    private void shutdown() {
-        if (DEBUG) Log.d(TAG, "Shutting down. Last serviceId was " + mLastServiceId);
-        mWakeLock.release();
-        mWakeLock = null;
-
-        // Turns out, for us, stopSelfResult always returns false in tests,
-        // so we can't guard executor shutdown. For this reason we move
-        // executor shutdown to #onDestroy.
-        boolean gonnaStop = stopSelfResult(mLastServiceId);
-        if (DEBUG) Log.d(TAG, "Stopping service: " + gonnaStop);
-        if (!gonnaStop) {
-            Log.w(TAG, "Service should be stopping, but reports otherwise.");
-        }
-    }
-
-    @VisibleForTesting
-    boolean holdsWakeLock() {
-        return mWakeLock != null && mWakeLock.isHeld();
-    }
-
-    @Override
-    public void onStart(Job job) {
-        if (DEBUG) Log.d(TAG, "onStart: " + job.id);
-
-        // Show start up notification
-        mNotificationManager.notify(
-                job.id, NOTIFICATION_ID_PROGRESS, job.getSetupNotification());
-
-        // Set up related monitor
-        JobMonitor monitor = new JobMonitor(job, mNotificationManager, handler);
-        monitor.start();
-    }
-
-    @Override
-    public void onFinished(Job job) {
-        assert(job.isFinished());
-        if (DEBUG) Log.d(TAG, "onFinished: " + job.id);
-
-        // Use the same thread of monitors to tackle notifications to avoid race conditions.
-        // Otherwise we may fail to dismiss progress notification.
-        handler.post(() -> {
-            // Dismiss the ongoing copy notification when the copy is done.
-            mNotificationManager.cancel(job.id, NOTIFICATION_ID_PROGRESS);
-
-            if (job.hasFailures()) {
-                Log.e(TAG, "Job failed on files: " + job.failedFileCount + ".");
-                mNotificationManager.notify(
-                        job.id, NOTIFICATION_ID_FAILURE, job.getFailureNotification());
-            }
-
-            if (job.hasWarnings()) {
-                if (DEBUG) Log.d(TAG, "Job finished with warnings.");
-                mNotificationManager.notify(
-                        job.id, NOTIFICATION_ID_WARNING, job.getWarningNotification());
-            }
-        });
-
-        synchronized (mRunning) {
-            deleteJob(job);
-        }
-    }
-
-    private static final class JobRecord {
-        private final Job job;
-        private final Future<?> future;
-
-        public JobRecord(Job job, Future<?> future) {
-            this.job = job;
-            this.future = future;
-        }
-    }
-
-    /**
-     * A class used to periodically polls state of a job.
-     *
-     * <p>It's possible that jobs hang because underlying document providers stop responding. We
-     * still need to update notifications if jobs hang, so instead of jobs pushing their states,
-     * we poll states of jobs.
-     */
-    private static final class JobMonitor implements Runnable {
-        private static final long PROGRESS_INTERVAL_MILLIS = 500L;
-
-        private final Job mJob;
-        private final NotificationManager mNotificationManager;
-        private final Handler mHandler;
-
-        private JobMonitor(Job job, NotificationManager notificationManager, Handler handler) {
-            mJob = job;
-            mNotificationManager = notificationManager;
-            mHandler = handler;
-        }
-
-        private void start() {
-            mHandler.post(this);
-        }
-
-        @Override
-        public void run() {
-            if (mJob.isFinished()) {
-                // Finish notification is already shown. Progress notification is removed.
-                // Just finish itself.
-                return;
-            }
-
-            // Only job in set up state has progress bar
-            if (mJob.getState() == Job.STATE_SET_UP) {
-                mNotificationManager.notify(
-                        mJob.id, NOTIFICATION_ID_PROGRESS, mJob.getProgressNotification());
-            }
-
-            mHandler.postDelayed(this, PROGRESS_INTERVAL_MILLIS);
-        }
-    }
-
-    @Override
-    public IBinder onBind(Intent intent) {
-        return null;  // Boilerplate. See super#onBind
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/FileOperations.java b/packages/DocumentsUI/src/com/android/documentsui/services/FileOperations.java
deleted file mode 100644
index 01956a1..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/services/FileOperations.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.services;
-
-import static android.os.SystemClock.elapsedRealtime;
-
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.services.FileOperationService.EXTRA_CANCEL;
-import static com.android.documentsui.services.FileOperationService.EXTRA_JOB_ID;
-import static com.android.documentsui.services.FileOperationService.EXTRA_OPERATION;
-
-import android.annotation.IntDef;
-import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
-import android.support.annotation.VisibleForTesting;
-import android.util.Log;
-
-import com.android.documentsui.services.FileOperationService.OpType;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/**
- * Helper functions for starting various file operations.
- */
-public final class FileOperations {
-
-    private static final String TAG = "FileOperations";
-
-    private static final IdBuilder idBuilder = new IdBuilder();
-
-    private FileOperations() {}
-
-    public static String createJobId() {
-        return idBuilder.getNext();
-    }
-
-    /**
-     * Tries to start the activity. Returns the job id.
-     */
-    public static String start(Context context, FileOperation operation, Callback callback) {
-
-        if (DEBUG) Log.d(TAG, "Handling generic 'start' call.");
-
-        String jobId = createJobId();
-        Intent intent = createBaseIntent(context, jobId, operation);
-
-        callback.onOperationResult(Callback.STATUS_ACCEPTED, operation.getOpType(),
-                operation.getSrc().getItemCount());
-
-        context.startService(intent);
-
-        return jobId;
-    }
-
-    @VisibleForTesting
-    public static void cancel(Activity activity, String jobId) {
-        if (DEBUG) Log.d(TAG, "Attempting to canceling operation: " + jobId);
-
-        Intent intent = new Intent(activity, FileOperationService.class);
-        intent.putExtra(EXTRA_CANCEL, true);
-        intent.putExtra(EXTRA_JOB_ID, jobId);
-
-        activity.startService(intent);
-    }
-
-    /**
-     * Starts the service for an operation.
-     *
-     * @param jobId A unique jobid for this job.
-     *     Use {@link #createJobId} if you don't have one handy.
-     * @return Id of the job.
-     */
-    public static Intent createBaseIntent(
-            Context context, String jobId, FileOperation operation) {
-
-        Intent intent = new Intent(context, FileOperationService.class);
-        intent.putExtra(EXTRA_JOB_ID, jobId);
-        intent.putExtra(EXTRA_OPERATION, operation);
-
-        return intent;
-    }
-
-    private static final class IdBuilder {
-
-        // Remember last job time so we can guard against collisions.
-        private long mLastJobTime;
-
-        // If we detect a collision, use subId to make distinct.
-        private int mSubId;
-
-        public synchronized String getNext() {
-            long time = elapsedRealtime();
-            if (time == mLastJobTime) {
-                mSubId++;
-            } else {
-                mSubId = 0;
-            }
-            mLastJobTime = time;
-            return String.valueOf(mLastJobTime) + "-" + String.valueOf(mSubId);
-        }
-    }
-
-    /**
-     * A functional callback called when the file operation starts or fails to start.
-     */
-    @FunctionalInterface
-    public interface Callback {
-        @Retention(RetentionPolicy.SOURCE)
-        @IntDef({STATUS_ACCEPTED, STATUS_REJECTED})
-        @interface Status {}
-        static final int STATUS_ACCEPTED = 0;
-        static final int STATUS_REJECTED = 1;
-
-        /**
-         * Performs operation when the file operation starts or fails to start.
-         *
-         * @param status {@link Status} of this operation
-         * @param opType file operation type {@link OpType}.
-         * @param docCount number of documents operated.
-         */
-        void onOperationResult(@Status int status, @OpType int opType, int docCount);
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/Job.java b/packages/DocumentsUI/src/com/android/documentsui/services/Job.java
deleted file mode 100644
index 14ae66e..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/services/Job.java
+++ /dev/null
@@ -1,334 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.services;
-
-import static com.android.documentsui.DocumentsApplication.acquireUnstableProviderOrThrow;
-import static com.android.documentsui.services.FileOperationService.EXTRA_CANCEL;
-import static com.android.documentsui.services.FileOperationService.EXTRA_DIALOG_TYPE;
-import static com.android.documentsui.services.FileOperationService.EXTRA_JOB_ID;
-import static com.android.documentsui.services.FileOperationService.EXTRA_OPERATION_TYPE;
-import static com.android.documentsui.services.FileOperationService.EXTRA_SRC_LIST;
-import static com.android.documentsui.services.FileOperationService.OPERATION_UNKNOWN;
-
-import android.annotation.DrawableRes;
-import android.annotation.IntDef;
-import android.annotation.PluralsRes;
-import android.app.Notification;
-import android.app.Notification.Builder;
-import android.app.PendingIntent;
-import android.content.ContentProviderClient;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Parcelable;
-import android.os.RemoteException;
-import android.provider.DocumentsContract;
-import android.util.Log;
-
-import com.android.documentsui.clipping.UrisSupplier;
-import com.android.documentsui.FilesActivity;
-import com.android.documentsui.Metrics;
-import com.android.documentsui.OperationDialogFragment;
-import com.android.documentsui.R;
-import com.android.documentsui.Shared;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
-import com.android.documentsui.services.FileOperationService.OpType;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * A mashup of work item and ui progress update factory. Used by {@link FileOperationService}
- * to do work and show progress relating to this work.
- */
-abstract public class Job implements Runnable {
-    private static final String TAG = "Job";
-
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef({STATE_CREATED, STATE_STARTED, STATE_SET_UP, STATE_COMPLETED, STATE_CANCELED})
-    @interface State {}
-    static final int STATE_CREATED = 0;
-    static final int STATE_STARTED = 1;
-    static final int STATE_SET_UP = 2;
-    static final int STATE_COMPLETED = 3;
-    /**
-     * A job is in canceled state as long as {@link #cancel()} is called on it, even after it is
-     * completed.
-     */
-    static final int STATE_CANCELED = 4;
-
-    static final String INTENT_TAG_WARNING = "warning";
-    static final String INTENT_TAG_FAILURE = "failure";
-    static final String INTENT_TAG_PROGRESS = "progress";
-    static final String INTENT_TAG_CANCEL = "cancel";
-
-    final Context service;
-    final Context appContext;
-    final Listener listener;
-
-    final @OpType int operationType;
-    final String id;
-    final DocumentStack stack;
-    final UrisSupplier srcs;
-
-    int failedFileCount = 0;
-    final ArrayList<DocumentInfo> failedFiles = new ArrayList<>();
-    final Notification.Builder mProgressBuilder;
-
-    private final Map<String, ContentProviderClient> mClients = new HashMap<>();
-    private volatile @State int mState = STATE_CREATED;
-
-    /**
-     * A simple progressable job, much like an AsyncTask, but with support
-     * for providing various related notification, progress and navigation information.
-     * @param service The service context in which this job is running.
-     * @param listener
-     * @param id Arbitrary string ID
-     * @param stack The documents stack context relating to this request. This is the
-     *     destination in the Files app where the user will be take when the
-     *     navigation intent is invoked (presumably from notification).
-     * @param srcs the list of docs to operate on
-     */
-    Job(Context service, Listener listener, String id,
-            @OpType int opType, DocumentStack stack, UrisSupplier srcs) {
-
-        assert(opType != OPERATION_UNKNOWN);
-
-        this.service = service;
-        this.appContext = service.getApplicationContext();
-        this.listener = listener;
-        this.operationType = opType;
-
-        this.id = id;
-        this.stack = stack;
-        this.srcs = srcs;
-
-        mProgressBuilder = createProgressBuilder();
-    }
-
-    @Override
-    public final void run() {
-        if (isCanceled()) {
-            // Canceled before running
-            return;
-        }
-
-        mState = STATE_STARTED;
-        listener.onStart(this);
-        try {
-            boolean result = setUp();
-            if (result && !isCanceled()) {
-                mState = STATE_SET_UP;
-                start();
-            }
-        } catch (RuntimeException e) {
-            // No exceptions should be thrown here, as all calls to the provider must be
-            // handled within Job implementations. However, just in case catch them here.
-            Log.e(TAG, "Operation failed due to an unhandled runtime exception.", e);
-            Metrics.logFileOperationErrors(service, operationType, failedFiles);
-        } finally {
-            mState = (mState == STATE_STARTED || mState == STATE_SET_UP) ? STATE_COMPLETED : mState;
-            listener.onFinished(this);
-
-            // NOTE: If this details is a JumboClipDetails, and it's still referred in primary clip
-            // at this point, user won't be able to paste it to anywhere else because the underlying
-            srcs.dispose();
-        }
-    }
-
-    boolean setUp() {
-        return true;
-    }
-    abstract void start();
-
-    abstract Notification getSetupNotification();
-    abstract Notification getProgressNotification();
-    abstract Notification getFailureNotification();
-
-    abstract Notification getWarningNotification();
-
-    Uri getDataUriForIntent(String tag) {
-        return Uri.parse(String.format("data,%s-%s", tag, id));
-    }
-
-    ContentProviderClient getClient(DocumentInfo doc) throws RemoteException {
-        ContentProviderClient client = mClients.get(doc.authority);
-        if (client == null) {
-            // Acquire content providers.
-            client = acquireUnstableProviderOrThrow(
-                    getContentResolver(),
-                    doc.authority);
-
-            mClients.put(doc.authority, client);
-        }
-
-        assert(client != null);
-        return client;
-    }
-
-    final void cleanup() {
-        for (ContentProviderClient client : mClients.values()) {
-            ContentProviderClient.releaseQuietly(client);
-        }
-    }
-
-    final @State int getState() {
-        return mState;
-    }
-
-    final void cancel() {
-        mState = STATE_CANCELED;
-        Metrics.logFileOperationCancelled(service, operationType);
-    }
-
-    final boolean isCanceled() {
-        return mState == STATE_CANCELED;
-    }
-
-    final boolean isFinished() {
-        return mState == STATE_CANCELED || mState == STATE_COMPLETED;
-    }
-
-    final ContentResolver getContentResolver() {
-        return service.getContentResolver();
-    }
-
-    void onFileFailed(DocumentInfo file) {
-        ++failedFileCount;
-        failedFiles.add(file);
-    }
-
-    final boolean hasFailures() {
-        return failedFileCount > 0;
-    }
-
-    boolean hasWarnings() {
-        return false;
-    }
-
-    final void deleteDocument(DocumentInfo doc, DocumentInfo parent) throws ResourceException {
-        try {
-            if (doc.isRemoveSupported()) {
-                DocumentsContract.removeDocument(getClient(doc), doc.derivedUri, parent.derivedUri);
-            } else if (doc.isDeleteSupported()) {
-                DocumentsContract.deleteDocument(getClient(doc), doc.derivedUri);
-            } else {
-                throw new ResourceException("Unable to delete source document as the file is " +
-                        "not deletable nor removable: %s.", doc.derivedUri);
-            }
-        } catch (RemoteException | RuntimeException e) {
-            throw new ResourceException("Failed to delete file %s due to an exception.",
-                    doc.derivedUri, e);
-        }
-    }
-
-    Notification getSetupNotification(String content) {
-        mProgressBuilder.setProgress(0, 0, true)
-                .setContentText(content);
-        return mProgressBuilder.build();
-    }
-
-    Notification getFailureNotification(@PluralsRes int titleId, @DrawableRes int icon) {
-        final Intent navigateIntent = buildNavigateIntent(INTENT_TAG_FAILURE);
-        navigateIntent.putExtra(EXTRA_DIALOG_TYPE, OperationDialogFragment.DIALOG_TYPE_FAILURE);
-        navigateIntent.putExtra(EXTRA_OPERATION_TYPE, operationType);
-        navigateIntent.putParcelableArrayListExtra(EXTRA_SRC_LIST, failedFiles);
-
-        final Notification.Builder errorBuilder = new Notification.Builder(service)
-                .setContentTitle(service.getResources().getQuantityString(titleId,
-                        failedFileCount, failedFileCount))
-                .setContentText(service.getString(R.string.notification_touch_for_details))
-                .setContentIntent(PendingIntent.getActivity(appContext, 0, navigateIntent,
-                        PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT))
-                .setCategory(Notification.CATEGORY_ERROR)
-                .setSmallIcon(icon)
-                .setAutoCancel(true);
-
-        return errorBuilder.build();
-    }
-
-    abstract Builder createProgressBuilder();
-
-    final Builder createProgressBuilder(
-            String title, @DrawableRes int icon,
-            String actionTitle, @DrawableRes int actionIcon) {
-        Notification.Builder progressBuilder = new Notification.Builder(service)
-                .setContentTitle(title)
-                .setContentIntent(
-                        PendingIntent.getActivity(appContext, 0,
-                                buildNavigateIntent(INTENT_TAG_PROGRESS), 0))
-                .setCategory(Notification.CATEGORY_PROGRESS)
-                .setSmallIcon(icon)
-                .setOngoing(true);
-
-        final Intent cancelIntent = createCancelIntent();
-
-        progressBuilder.addAction(
-                actionIcon,
-                actionTitle,
-                PendingIntent.getService(
-                        service,
-                        0,
-                        cancelIntent,
-                        PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_CANCEL_CURRENT));
-
-        return progressBuilder;
-    }
-
-    /**
-     * Creates an intent for navigating back to the destination directory.
-     */
-    Intent buildNavigateIntent(String tag) {
-        Intent intent = new Intent(service, FilesActivity.class);
-        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        intent.setAction(DocumentsContract.ACTION_BROWSE);
-        intent.setData(getDataUriForIntent(tag));
-        intent.putExtra(Shared.EXTRA_STACK, (Parcelable) stack);
-        return intent;
-    }
-
-    Intent createCancelIntent() {
-        final Intent cancelIntent = new Intent(service, FileOperationService.class);
-        cancelIntent.setData(getDataUriForIntent(INTENT_TAG_CANCEL));
-        cancelIntent.putExtra(EXTRA_CANCEL, true);
-        cancelIntent.putExtra(EXTRA_JOB_ID, id);
-        return cancelIntent;
-    }
-
-    @Override
-    public String toString() {
-        return new StringBuilder()
-                .append("Job")
-                .append("{")
-                .append("id=" + id)
-                .append("}")
-                .toString();
-    }
-
-    /**
-     * Listener interface employed by the service that owns us as well as tests.
-     */
-    interface Listener {
-        void onStart(Job job);
-        void onFinished(Job job);
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/MoveJob.java b/packages/DocumentsUI/src/com/android/documentsui/services/MoveJob.java
deleted file mode 100644
index ab0fae1..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/services/MoveJob.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.services;
-
-import static com.android.documentsui.Shared.DEBUG;
-import static com.android.documentsui.services.FileOperationService.OPERATION_MOVE;
-
-import android.app.Notification;
-import android.app.Notification.Builder;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.net.Uri;
-import android.os.RemoteException;
-import android.provider.DocumentsContract;
-import android.provider.DocumentsContract.Document;
-import android.util.Log;
-
-import com.android.documentsui.R;
-import com.android.documentsui.clipping.UrisSupplier;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
-
-import java.io.FileNotFoundException;
-
-// TODO: Stop extending CopyJob.
-final class MoveJob extends CopyJob {
-
-    private static final String TAG = "MoveJob";
-
-    Uri mSrcParentUri;
-    DocumentInfo mSrcParent;
-
-    /**
-     * Moves files to a destination identified by {@code destination}.
-     * Performs most work by delegating to CopyJob, then deleting
-     * a file after it has been copied.
-     *
-     * @see @link {@link Job} constructor for most param descriptions.
-     */
-    MoveJob(Context service, Listener listener,
-            String id, Uri srcParent, DocumentStack destination, UrisSupplier srcs) {
-        super(service, listener, id, OPERATION_MOVE, destination, srcs);
-        mSrcParentUri = srcParent;
-    }
-
-    @Override
-    Builder createProgressBuilder() {
-        return super.createProgressBuilder(
-                service.getString(R.string.move_notification_title),
-                R.drawable.ic_menu_copy,
-                service.getString(android.R.string.cancel),
-                R.drawable.ic_cab_cancel);
-    }
-
-    @Override
-    public Notification getSetupNotification() {
-        return getSetupNotification(service.getString(R.string.move_preparing));
-    }
-
-    @Override
-    public Notification getProgressNotification() {
-        return getProgressNotification(R.string.copy_remaining);
-    }
-
-    @Override
-    Notification getFailureNotification() {
-        return getFailureNotification(
-                R.plurals.move_error_notification_title, R.drawable.ic_menu_copy);
-    }
-
-    @Override
-    public boolean setUp() {
-        final ContentResolver resolver = appContext.getContentResolver();
-        try {
-            mSrcParent = DocumentInfo.fromUri(resolver, mSrcParentUri);
-        } catch(FileNotFoundException e) {
-            Log.e(TAG, "Failed to create srcParent.", e);
-            failedFileCount += srcs.getItemCount();
-            return false;
-        }
-
-        return super.setUp();
-    }
-
-    /**
-     * {@inheritDoc}
-     *
-     * Only check space for moves across authorities. For now we don't know if the doc in
-     * {@link #mSrcs} is in the same root of destination, and if it's optimized move in the same
-     * root it should succeed regardless of free space, but it's for sure a failure if there is no
-     * enough free space if docs are moved from another authority.
-     */
-    @Override
-    boolean checkSpace() {
-        long size = 0;
-        for (DocumentInfo src : mSrcs) {
-            if (!src.authority.equals(stack.root.authority)) {
-                if (src.isDirectory()) {
-                    try {
-                        size += calculateFileSizesRecursively(getClient(src), src.derivedUri);
-                    } catch (RemoteException|ResourceException e) {
-                        Log.w(TAG, "Failed to obtain client for %s" + src.derivedUri + ".", e);
-
-                        // Failed to calculate size, but move may still succeed.
-                        return true;
-                    }
-                } else {
-                    size += src.size;
-                }
-            }
-        }
-
-        return checkSpace(size);
-    }
-
-    void processDocument(DocumentInfo src, DocumentInfo srcParent, DocumentInfo dest)
-            throws ResourceException {
-
-        // TODO: When optimized move kicks in, we're not making any progress updates. FIX IT!
-
-        // When moving within the same provider, try to use optimized moving.
-        // If not supported, then fallback to byte-by-byte copy/move.
-        if (src.authority.equals(dest.authority)) {
-            if ((src.flags & Document.FLAG_SUPPORTS_MOVE) != 0) {
-                try {
-                    if (DocumentsContract.moveDocument(getClient(src), src.derivedUri,
-                            srcParent != null ? srcParent.derivedUri : mSrcParent.derivedUri,
-                            dest.derivedUri) != null) {
-                        return;
-                    }
-                } catch (RemoteException | RuntimeException e) {
-                    Log.e(TAG, "Provider side move failed for: " + src.derivedUri
-                            + " due to an exception: ", e);
-                }
-                // If optimized move fails, then fallback to byte-by-byte copy.
-                if (DEBUG) Log.d(TAG, "Fallback to byte-by-byte move for: " + src.derivedUri);
-            }
-        }
-
-        // Moving virtual files by bytes is not supported. This is because, it would involve
-        // conversion, and the source file should not be deleted in such case (as it's a different
-        // file).
-        if (src.isVirtualDocument()) {
-            throw new ResourceException("Cannot move virtual file %s byte by byte.",
-                    src.derivedUri);
-        }
-
-        // If we couldn't do an optimized copy...we fall back to vanilla byte copy.
-        byteCopyDocument(src, dest);
-
-        // Remove the source document.
-        deleteDocument(src, srcParent);
-    }
-
-    @Override
-    public String toString() {
-        return new StringBuilder()
-                .append("MoveJob")
-                .append("{")
-                .append("id=" + id)
-                .append(", srcs=" + mSrcs)
-                .append(", srcParent=" + mSrcParent)
-                .append(", destination=" + stack)
-                .append("}")
-                .toString();
-    }
-}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/services/ResourceException.java b/packages/DocumentsUI/src/com/android/documentsui/services/ResourceException.java
deleted file mode 100644
index 7d3d91a..0000000
--- a/packages/DocumentsUI/src/com/android/documentsui/services/ResourceException.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.services;
-
-import android.net.Uri;
-
-public class ResourceException extends Exception {
-    public ResourceException(String message, Exception e) {
-        super(message, e);
-    }
-
-    public ResourceException(String message, Uri uri1, Exception e) {
-        super(String.format(message, uri1.toString()), e);
-    }
-
-    public ResourceException(String message, Uri uri1, Uri uri2, Exception e) {
-        super(String.format(message, uri1.toString(), uri2.toString()), e);
-    }
-
-    public ResourceException(String message) {
-        super(message);
-    }
-
-    public ResourceException(String message, Uri uri1) {
-        super(String.format(message, uri1.toString()));
-    }
-
-    public ResourceException(String message, Uri uri1, Uri uri2) {
-        super(message.format(uri1.toString(), uri2.toString()));
-    }
-}
diff --git a/packages/DocumentsUI/tests/Android.mk b/packages/DocumentsUI/tests/Android.mk
deleted file mode 100644
index febc542..0000000
--- a/packages/DocumentsUI/tests/Android.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-#LOCAL_SDK_VERSION := current
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner
-LOCAL_STATIC_JAVA_LIBRARIES := mockito-target ub-uiautomator espresso-core guava
-LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt
-
-LOCAL_PACKAGE_NAME := DocumentsUITests
-LOCAL_INSTRUMENTATION_FOR := DocumentsUI
-
-LOCAL_CERTIFICATE := platform
-
-include $(BUILD_PACKAGE)
-
diff --git a/packages/DocumentsUI/tests/AndroidManifest.xml b/packages/DocumentsUI/tests/AndroidManifest.xml
deleted file mode 100644
index 0b76766..0000000
--- a/packages/DocumentsUI/tests/AndroidManifest.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.documentsui.tests">
-
-    <uses-permission android:name="android.permission.INTERNET" />
-
-    <application>
-        <uses-library android:name="android.test.runner" />
-        <provider
-            android:name="com.android.documentsui.StubProvider"
-            android:authorities="com.android.documentsui.stubprovider"
-            android:exported="true"
-            android:grantUriPermissions="true"
-            android:permission="android.permission.MANAGE_DOCUMENTS"
-            android:enabled="true">
-            <intent-filter>
-                <action android:name="android.content.action.DOCUMENTS_PROVIDER" />
-            </intent-filter>
-       </provider>
-    </application>
-
-    <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
-        android:targetPackage="com.android.documentsui"
-        android:label="Tests for DocumentsUI" />
-
-</manifest>
diff --git a/packages/DocumentsUI/tests/jarjar-rules.txt b/packages/DocumentsUI/tests/jarjar-rules.txt
deleted file mode 100644
index 360b69b..0000000
--- a/packages/DocumentsUI/tests/jarjar-rules.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-rule com.google.common.** docsui.@0
-rule android.support.annotation.** docsui.@0
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/ActivityTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/ActivityTest.java
deleted file mode 100644
index 1400fe6..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/ActivityTest.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.StubProvider.DEFAULT_AUTHORITY;
-import static com.android.documentsui.StubProvider.ROOT_0_ID;
-import static com.android.documentsui.StubProvider.ROOT_1_ID;
-
-import android.app.Activity;
-import android.content.ContentProviderClient;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.os.RemoteException;
-import android.provider.DocumentsContract.Document;
-import android.support.test.uiautomator.Configurator;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObjectNotFoundException;
-import android.test.ActivityInstrumentationTestCase2;
-import android.view.MotionEvent;
-
-import com.android.documentsui.bots.Bots;
-import com.android.documentsui.bots.UiBot;
-import com.android.documentsui.model.RootInfo;
-
-import javax.annotation.Nullable;
-
-/**
- * Provides basic test environment for UI tests:
- * - Launches activity
- * - Creates and gives access to test root directories and test files
- * - Cleans up the test environment
- */
-public abstract class ActivityTest<T extends Activity> extends ActivityInstrumentationTestCase2<T> {
-
-    static final int TIMEOUT = 5000;
-
-    // Testing files. For custom ones, override initTestFiles().
-    public static final String dirName1 = "Dir1";
-    public static final String childDir1 = "ChildDir1";
-    public static final String fileName1 = "file1.log";
-    public static final String fileName2 = "file12.png";
-    public static final String fileName3 = "anotherFile0.log";
-    public static final String fileName4 = "poodles.text";
-    public static final String fileNameNoRename = "NO_RENAMEfile.txt";
-
-    public Bots bots;
-    public UiDevice device;
-    public Context context;
-
-    public RootInfo rootDir0;
-    public RootInfo rootDir1;
-    ContentResolver mResolver;
-    DocumentsProviderHelper mDocsHelper;
-    ContentProviderClient mClient;
-
-    public ActivityTest(Class<T> activityClass) {
-        super(activityClass);
-    }
-
-    /*
-     * Returns the root that will be opened within the activity.
-     * By default tests are started with one of the test roots.
-     * Override the method if you want to open different root on start.
-     * @return Root that will be opened. Return null if you want to open activity's default root.
-     */
-    protected @Nullable RootInfo getInitialRoot() {
-        return rootDir0;
-    }
-
-    /**
-     * Returns the authority of the testing provider begin used.
-     * By default it's StubProvider's authority.
-     * @return Authority of the provider.
-     */
-    protected String getTestingProviderAuthority() {
-        return DEFAULT_AUTHORITY;
-    }
-
-    /**
-     * Resolves testing roots.
-     */
-    protected void setupTestingRoots() throws RemoteException {
-        rootDir0 = mDocsHelper.getRoot(ROOT_0_ID);
-        rootDir1 = mDocsHelper.getRoot(ROOT_1_ID);
-    }
-
-    @Override
-    public void setUp() throws Exception {
-        device = UiDevice.getInstance(getInstrumentation());
-        // NOTE: Must be the "target" context, else security checks in content provider will fail.
-        context = getInstrumentation().getTargetContext();
-
-        bots = new Bots(device, context, TIMEOUT);
-
-        Configurator.getInstance().setToolType(MotionEvent.TOOL_TYPE_MOUSE);
-
-        mResolver = context.getContentResolver();
-        mClient = mResolver.acquireUnstableContentProviderClient(getTestingProviderAuthority());
-        mDocsHelper = new DocumentsProviderHelper(getTestingProviderAuthority(), mClient);
-
-        device.setOrientationNatural();
-        setupTestingRoots();
-
-        launchActivity();
-        resetStorage();
-
-        // Since at the launch of activity, ROOT_0 and ROOT_1 have no files, drawer will
-        // automatically open for phone devices. Espresso register click() as (x, y) MotionEvents,
-        // so if a drawer is on top of a file we want to select, it will actually click the drawer.
-        // Thus to start a clean state, we always try to close first.
-        bots.roots.closeDrawer();
-    }
-
-    @Override
-    public void tearDown() throws Exception {
-        device.unfreezeRotation();
-        mClient.release();
-        super.tearDown();
-    }
-
-    void launchActivity() {
-        final Intent intent = context.getPackageManager().getLaunchIntentForPackage(
-                UiBot.TARGET_PKG);
-        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
-        if (getInitialRoot() != null) {
-            intent.setData(getInitialRoot().getUri());
-        }
-        setActivityIntent(intent);
-        getActivity();  // Launch the activity.
-    }
-
-    void resetStorage() throws RemoteException {
-        mClient.call("clear", null, null);
-        device.waitForIdle();
-    }
-
-    void initTestFiles() throws RemoteException {
-        mDocsHelper.createFolder(rootDir0, dirName1);
-        mDocsHelper.createDocument(rootDir0, "text/plain", fileName1);
-        mDocsHelper.createDocument(rootDir0, "image/png", fileName2);
-        mDocsHelper.createDocumentWithFlags(rootDir0.documentId, "text/plain", fileNameNoRename,
-                Document.FLAG_SUPPORTS_WRITE);
-
-        mDocsHelper.createDocument(rootDir1, "text/plain", fileName3);
-        mDocsHelper.createDocument(rootDir1, "text/plain", fileName4);
-    }
-
-    void assertDefaultContentOfTestDir0() throws UiObjectNotFoundException {
-        bots.directory.waitForDocument(fileName1);
-        bots.directory.waitForDocument(fileName2);
-        bots.directory.waitForDocument(dirName1);
-        bots.directory.waitForDocument(fileNameNoRename);
-        bots.directory.assertDocumentsCount(4);
-    }
-
-    void assertDefaultContentOfTestDir1() throws UiObjectNotFoundException {
-        bots.directory.waitForDocument(fileName3);
-        bots.directory.waitForDocument(fileName4);
-        bots.directory.assertDocumentsCount(2);
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/DocumentsMenuManagerTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/DocumentsMenuManagerTest.java
deleted file mode 100644
index ec03173..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/DocumentsMenuManagerTest.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.State.ACTION_CREATE;
-import static com.android.documentsui.State.ACTION_OPEN;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import android.provider.DocumentsContract.Root;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
-
-import com.android.documentsui.model.RootInfo;
-import com.android.documentsui.testing.TestDirectoryDetails;
-import com.android.documentsui.testing.TestMenu;
-import com.android.documentsui.testing.TestMenuItem;
-import com.android.documentsui.testing.TestSearchViewManager;
-import com.android.documentsui.testing.TestSelectionDetails;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public final class DocumentsMenuManagerTest {
-
-    private TestMenu testMenu;
-    private TestMenuItem open;
-    private TestMenuItem share;
-    private TestMenuItem delete;
-    private TestMenuItem rename;
-    private TestMenuItem selectAll;
-    private TestMenuItem createDir;
-    private TestMenuItem fileSize;
-    private TestMenuItem grid;
-    private TestMenuItem list;
-    private TestMenuItem cut;
-    private TestMenuItem copy;
-    private TestMenuItem paste;
-    private TestMenuItem sort;
-    private TestMenuItem sortSize;
-    private TestMenuItem advanced;
-    private TestMenuItem settings;
-    private TestMenuItem eject;
-
-    private TestSelectionDetails selectionDetails;
-    private TestDirectoryDetails directoryDetails;
-    private TestSearchViewManager testSearchManager;
-    private State state = new State();
-    private RootInfo testRootInfo;
-
-    @Before
-    public void setUp() {
-        testMenu = TestMenu.create();
-        open = testMenu.findItem(R.id.menu_open);
-        share = testMenu.findItem(R.id.menu_share);
-        delete = testMenu.findItem(R.id.menu_delete);
-        rename =  testMenu.findItem(R.id.menu_rename);
-        selectAll = testMenu.findItem(R.id.menu_select_all);
-        createDir = testMenu.findItem(R.id.menu_create_dir);
-        fileSize = testMenu.findItem(R.id.menu_file_size);
-        grid = testMenu.findItem(R.id.menu_grid);
-        list = testMenu.findItem(R.id.menu_list);
-        cut = testMenu.findItem(R.id.menu_cut_to_clipboard);
-        copy = testMenu.findItem(R.id.menu_copy_to_clipboard);
-        paste = testMenu.findItem(R.id.menu_paste_from_clipboard);
-        sort = testMenu.findItem(R.id.menu_sort);
-        sortSize = testMenu.findItem(R.id.menu_sort_size);
-        advanced = testMenu.findItem(R.id.menu_advanced);
-        settings = testMenu.findItem(R.id.menu_settings);
-        eject = testMenu.findItem(R.id.menu_eject_root);
-
-        selectionDetails = new TestSelectionDetails();
-        directoryDetails = new TestDirectoryDetails();
-        testSearchManager = new TestSearchViewManager();
-        testRootInfo = new RootInfo();
-        state.action = ACTION_CREATE;
-        state.allowMultiple = true;
-    }
-
-    @Test
-    public void testActionMenu() {
-        DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
-        mgr.updateActionMenu(testMenu, selectionDetails);
-
-        open.assertInvisible();
-        delete.assertInvisible();
-        share.assertInvisible();
-        rename.assertInvisible();
-        selectAll.assertVisible();
-    }
-
-    @Test
-    public void testActionMenu_openAction() {
-        state.action = ACTION_OPEN;
-        DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
-        mgr.updateActionMenu(testMenu, selectionDetails);
-
-        open.assertVisible();
-    }
-
-
-    @Test
-    public void testActionMenu_notAllowMultiple() {
-        state.allowMultiple = false;
-        DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
-        mgr.updateActionMenu(testMenu, selectionDetails);
-
-        selectAll.assertInvisible();
-    }
-
-    @Test
-    public void testOptionMenu() {
-        DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
-        mgr.updateOptionMenu(testMenu, directoryDetails);
-
-        sort.assertEnabled();
-        sortSize.assertInvisible();
-        advanced.assertInvisible();
-        advanced.assertTitle(R.string.menu_advanced_show);
-        createDir.assertDisabled();
-        fileSize.assertInvisible();
-        assertTrue(testSearchManager.showMenuCalled());
-    }
-
-    @Test
-    public void testOptionMenu_hideSize() {
-        state.showSize = true;
-        DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
-        mgr.updateOptionMenu(testMenu, directoryDetails);
-
-        sortSize.assertVisible();
-    }
-
-    @Test
-    public void testOptionMenu_notPicking() {
-        state.action = ACTION_OPEN;
-        state.derivedMode = State.MODE_LIST;
-        DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
-        mgr.updateOptionMenu(testMenu, directoryDetails);
-
-        createDir.assertInvisible();
-        grid.assertVisible();
-        list.assertInvisible();
-        assertFalse(testSearchManager.showMenuCalled());
-    }
-
-    @Test
-    public void testOptionMenu_canCreateDirectory() {
-        directoryDetails.canCreateDirectory = true;
-        DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
-        mgr.updateOptionMenu(testMenu, directoryDetails);
-
-        createDir.assertEnabled();
-    }
-
-    @Test
-    public void testOptionMenu_showAdvanced() {
-        state.showAdvanced = true;
-        state.showAdvancedOption = true;
-        DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
-        mgr.updateOptionMenu(testMenu, directoryDetails);
-
-        advanced.assertVisible();
-        advanced.assertTitle(R.string.menu_advanced_hide);
-    }
-
-    @Test
-    public void testOptionMenu_inRecents() {
-        directoryDetails.isInRecents = true;
-        DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
-        mgr.updateOptionMenu(testMenu, directoryDetails);
-
-        sort.assertDisabled();
-        grid.assertInvisible();
-        list.assertInvisible();
-    }
-
-    @Test
-    public void testContextMenu_NoSelection() {
-        DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
-        mgr.updateContextMenu(testMenu, null, directoryDetails);
-        cut.assertVisible();
-        copy.assertVisible();
-        cut.assertDisabled();
-        copy.assertDisabled();
-        paste.assertVisible();
-        createDir.assertVisible();
-        delete.assertVisible();
-    }
-
-    @Test
-    public void testContextMenu_Selection() {
-        DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
-        mgr.updateContextMenu(testMenu, selectionDetails, directoryDetails);
-        cut.assertVisible();
-        copy.assertVisible();
-        paste.assertVisible();
-        rename.assertInvisible();
-        createDir.assertVisible();
-        delete.assertVisible();
-    }
-
-    @Test
-    public void testRootContextMenu() {
-        DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
-        mgr.updateRootContextMenu(testMenu, testRootInfo);
-
-        eject.assertInvisible();
-        settings.assertInvisible();
-    }
-
-    @Test
-    public void testRootContextMenu_hasRootSettings() {
-        testRootInfo.flags = Root.FLAG_HAS_SETTINGS;
-        DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
-        mgr.updateRootContextMenu(testMenu, testRootInfo);
-
-        settings.assertInvisible();
-    }
-
-    @Test
-    public void testRootContextMenu_canEject() {
-        testRootInfo.flags = Root.FLAG_SUPPORTS_EJECT;
-        DocumentsMenuManager mgr = new DocumentsMenuManager(testSearchManager, state);
-        mgr.updateRootContextMenu(testMenu, testRootInfo);
-
-        eject.assertInvisible();
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/DocumentsProviderHelper.java b/packages/DocumentsUI/tests/src/com/android/documentsui/DocumentsProviderHelper.java
deleted file mode 100644
index 16ed2d9..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/DocumentsProviderHelper.java
+++ /dev/null
@@ -1,306 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static android.provider.DocumentsContract.buildChildDocumentsUri;
-import static android.provider.DocumentsContract.buildDocumentUri;
-import static android.provider.DocumentsContract.buildRootsUri;
-import static com.android.documentsui.model.DocumentInfo.getCursorString;
-import static com.android.internal.util.Preconditions.checkArgument;
-import static junit.framework.Assert.assertEquals;
-import static junit.framework.Assert.assertNotNull;
-import static junit.framework.Assert.fail;
-
-import android.content.ContentProviderClient;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.ParcelFileDescriptor;
-import android.os.ParcelFileDescriptor.AutoCloseInputStream;
-import android.os.ParcelFileDescriptor.AutoCloseOutputStream;
-import android.os.RemoteException;
-import android.provider.DocumentsContract;
-import android.provider.DocumentsContract.Document;
-import android.provider.DocumentsContract.Root;
-import android.support.annotation.Nullable;
-import android.test.MoreAsserts;
-import android.text.TextUtils;
-
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.RootInfo;
-
-import com.google.android.collect.Lists;
-
-import libcore.io.IoUtils;
-import libcore.io.Streams;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Provides support for creation of documents in a test settings.
- */
-public class DocumentsProviderHelper {
-
-    private final String mAuthority;
-    private final ContentProviderClient mClient;
-
-    public DocumentsProviderHelper(String authority, ContentProviderClient client) {
-        checkArgument(!TextUtils.isEmpty(authority));
-        mAuthority = authority;
-        mClient = client;
-    }
-
-    public RootInfo getRoot(String documentId) throws RemoteException {
-        final Uri rootsUri = buildRootsUri(mAuthority);
-        Cursor cursor = null;
-        try {
-            cursor = mClient.query(rootsUri, null, null, null, null);
-            while (cursor.moveToNext()) {
-                if (documentId.equals(getCursorString(cursor, Root.COLUMN_ROOT_ID))) {
-                    return RootInfo.fromRootsCursor(mAuthority, cursor);
-                }
-            }
-            throw new IllegalArgumentException("Can't find matching root for id=" + documentId);
-        } catch (Exception e) {
-            throw new RuntimeException("Can't load root for id=" + documentId , e);
-        } finally {
-            IoUtils.closeQuietly(cursor);
-        }
-    }
-
-    public Uri createDocument(Uri parentUri, String mimeType, String name) {
-        if (name.contains("/")) {
-            throw new IllegalArgumentException("Name and mimetype probably interposed.");
-        }
-        try {
-            Uri uri = DocumentsContract.createDocument(mClient, parentUri, mimeType, name);
-            return uri;
-        } catch (RemoteException e) {
-            throw new RuntimeException("Couldn't create document: " + name + " with mimetype "
-                    + mimeType, e);
-        }
-    }
-
-    public Uri createDocument(String parentId, String mimeType, String name) {
-        Uri parentUri = buildDocumentUri(mAuthority, parentId);
-        return createDocument(parentUri, mimeType, name);
-    }
-
-    public Uri createDocument(RootInfo root, String mimeType, String name) {
-        return createDocument(root.documentId, mimeType, name);
-    }
-
-    public Uri createDocumentWithFlags(String documentId, String mimeType, String name, int flags,
-            String... streamTypes)
-            throws RemoteException {
-        Bundle in = new Bundle();
-        in.putInt(StubProvider.EXTRA_FLAGS, flags);
-        in.putString(StubProvider.EXTRA_PARENT_ID, documentId);
-        in.putString(Document.COLUMN_MIME_TYPE, mimeType);
-        in.putString(Document.COLUMN_DISPLAY_NAME, name);
-        in.putStringArrayList(StubProvider.EXTRA_STREAM_TYPES, Lists.newArrayList(streamTypes));
-
-        Bundle out = mClient.call("createDocumentWithFlags", null, in);
-        Uri uri = out.getParcelable(DocumentsContract.EXTRA_URI);
-        return uri;
-    }
-
-    public Uri createFolder(Uri parentUri, String name) {
-        return createDocument(parentUri, Document.MIME_TYPE_DIR, name);
-    }
-
-    public Uri createFolder(String parentId, String name) {
-        Uri parentUri = buildDocumentUri(mAuthority, parentId);
-        return createDocument(parentUri, Document.MIME_TYPE_DIR, name);
-    }
-
-    public Uri createFolder(RootInfo root, String name) {
-        return createDocument(root, Document.MIME_TYPE_DIR, name);
-    }
-
-    public void writeDocument(Uri documentUri, byte[] contents)
-            throws RemoteException, IOException {
-        ParcelFileDescriptor file = mClient.openFile(documentUri, "w", null);
-        try (AutoCloseOutputStream out = new AutoCloseOutputStream(file)) {
-            out.write(contents, 0, contents.length);
-        }
-    }
-
-    public byte[] readDocument(Uri documentUri) throws RemoteException, IOException {
-        ParcelFileDescriptor file = mClient.openFile(documentUri, "r", null);
-        byte[] buf = null;
-        try (AutoCloseInputStream in = new AutoCloseInputStream(file)) {
-            buf = Streams.readFully(in);
-        }
-        return buf;
-    }
-
-    public void assertChildCount(Uri parentUri, int expected) throws Exception {
-        List<DocumentInfo> children = listChildren(parentUri);
-        assertEquals("Incorrect file count after copy", expected, children.size());
-    }
-
-    public void assertChildCount(String parentId, int expected) throws Exception {
-        List<DocumentInfo> children = listChildren(parentId);
-        assertEquals("Incorrect file count after copy", expected, children.size());
-    }
-
-    public void assertChildCount(RootInfo root, int expected) throws Exception {
-        assertChildCount(root.documentId, expected);
-    }
-
-    public void assertHasFile(Uri parentUri, String name) throws Exception {
-        List<DocumentInfo> children = listChildren(parentUri);
-        for (DocumentInfo child : children) {
-            if (name.equals(child.displayName) && !child.isDirectory()) {
-                return;
-            }
-        }
-        fail("Could not find file named=" + name + " in children " + children);
-    }
-
-    public void assertHasFile(String parentId, String name) throws Exception {
-        Uri parentUri = buildDocumentUri(mAuthority, parentId);
-        assertHasFile(parentUri, name);
-    }
-
-    public void assertHasFile(RootInfo root, String name) throws Exception {
-        assertHasFile(root.documentId, name);
-    }
-
-    public void assertHasDirectory(Uri parentUri, String name) throws Exception {
-        List<DocumentInfo> children = listChildren(parentUri);
-        for (DocumentInfo child : children) {
-            if (name.equals(child.displayName) && child.isDirectory()) {
-                return;
-            }
-        }
-        fail("Could not find name=" + name + " in children " + children);
-    }
-
-    public void assertHasDirectory(String parentId, String name) throws Exception {
-        Uri parentUri = buildDocumentUri(mAuthority, parentId);
-        assertHasDirectory(parentUri, name);
-    }
-
-    public void assertHasDirectory(RootInfo root, String name) throws Exception {
-        assertHasDirectory(root.documentId, name);
-    }
-
-    public void assertDoesNotExist(Uri parentUri, String name) throws Exception {
-        List<DocumentInfo> children = listChildren(parentUri);
-        for (DocumentInfo child : children) {
-            if (name.equals(child.displayName)) {
-                fail("Found name=" + name + " in children " + children);
-            }
-        }
-    }
-
-    public void assertDoesNotExist(String parentId, String name) throws Exception {
-        Uri parentUri = buildDocumentUri(mAuthority, parentId);
-        assertDoesNotExist(parentUri, name);
-    }
-
-    public void assertDoesNotExist(RootInfo root, String name) throws Exception {
-        assertDoesNotExist(root.getUri(), name);
-    }
-
-    public @Nullable DocumentInfo findFile(String parentId, String name)
-            throws Exception {
-        List<DocumentInfo> children = listChildren(parentId);
-        for (DocumentInfo child : children) {
-            if (name.equals(child.displayName)) {
-                return child;
-            }
-        }
-        return null;
-    }
-
-    public DocumentInfo findDocument(String parentId, String name) throws Exception {
-        List<DocumentInfo> children = listChildren(parentId);
-        for (DocumentInfo child : children) {
-            if (name.equals(child.displayName)) {
-                return child;
-            }
-        }
-        return null;
-    }
-
-    public DocumentInfo findDocument(Uri parentUri, String name) throws Exception {
-        List<DocumentInfo> children = listChildren(parentUri);
-        for (DocumentInfo child : children) {
-            if (name.equals(child.displayName)) {
-                return child;
-            }
-        }
-        return null;
-    }
-
-    public List<DocumentInfo> listChildren(Uri parentUri) throws Exception {
-        String id = DocumentsContract.getDocumentId(parentUri);
-        return listChildren(id);
-    }
-
-    public List<DocumentInfo> listChildren(String documentId) throws Exception {
-        Uri uri = buildChildDocumentsUri(mAuthority, documentId);
-        List<DocumentInfo> children = new ArrayList<>();
-        try (Cursor cursor = mClient.query(uri, null, null, null, null, null)) {
-            Cursor wrapper = new RootCursorWrapper(mAuthority, "totally-fake", cursor, 100);
-            while (wrapper.moveToNext()) {
-                children.add(DocumentInfo.fromDirectoryCursor(wrapper));
-            }
-        }
-        return children;
-    }
-
-    public void assertFileContents(Uri documentUri, byte[] expected) throws Exception {
-        MoreAsserts.assertEquals(
-                "Copied file contents differ",
-                expected, readDocument(documentUri));
-    }
-
-    public void assertFileContents(String parentId, String fileName, byte[] expected)
-            throws Exception {
-        DocumentInfo file = findFile(parentId, fileName);
-        assertNotNull(file);
-        assertFileContents(file.derivedUri, expected);
-    }
-
-    /**
-     * A helper method for StubProvider only. Won't work with other providers.
-     * @throws RemoteException
-     */
-    public Uri createVirtualFile(
-            RootInfo root, String path, String mimeType, byte[] content, String... streamTypes)
-                    throws RemoteException {
-
-        Bundle args = new Bundle();
-        args.putString(StubProvider.EXTRA_ROOT, root.rootId);
-        args.putString(StubProvider.EXTRA_PATH, path);
-        args.putString(Document.COLUMN_MIME_TYPE, mimeType);
-        args.putStringArrayList(StubProvider.EXTRA_STREAM_TYPES, Lists.newArrayList(streamTypes));
-        args.putByteArray(StubProvider.EXTRA_CONTENT, content);
-
-        Bundle result = mClient.call("createVirtualFile", null, args);
-        String documentId = result.getString(Document.COLUMN_DOCUMENT_ID);
-
-        return DocumentsContract.buildDocumentUri(mAuthority, documentId);
-    }
-
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/FileManagementUiTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/FileManagementUiTest.java
deleted file mode 100644
index 44f417d..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/FileManagementUiTest.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.StubProvider.ROOT_0_ID;
-import static com.android.documentsui.StubProvider.ROOT_1_ID;
-
-import android.net.Uri;
-import android.os.RemoteException;
-import android.support.test.filters.Suppress;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.view.KeyEvent;
-
-@LargeTest
-public class FileManagementUiTest extends ActivityTest<FilesActivity> {
-
-    public FileManagementUiTest() {
-        super(FilesActivity.class);
-    }
-
-    @Override
-    public void setUp() throws Exception {
-        super.setUp();
-        initTestFiles();
-    }
-
-    @Override
-    public void initTestFiles() throws RemoteException {
-        Uri uri = mDocsHelper.createFolder(rootDir0, dirName1);
-        mDocsHelper.createFolder(uri, childDir1);
-
-        mDocsHelper.createDocument(rootDir0, "text/plain", "file0.log");
-        mDocsHelper.createDocument(rootDir0, "image/png", "file1.png");
-        mDocsHelper.createDocument(rootDir0, "text/csv", "file2.csv");
-
-        mDocsHelper.createDocument(rootDir1, "text/plain", "anotherFile0.log");
-        mDocsHelper.createDocument(rootDir1, "text/plain", "poodles.text");
-    }
-
-    @Suppress
-    public void testCreateDirectory() throws Exception {
-        bots.main.openOverflowMenu();
-        device.waitForIdle();
-
-        bots.main.clickToolbarOverflowItem("New folder");
-        device.waitForIdle();
-
-        bots.main.setDialogText("Kung Fu Panda");
-        device.waitForIdle();
-
-        bots.keyboard.pressEnter();
-
-        bots.directory.waitForDocument("Kung Fu Panda");
-    }
-
-    public void testKeyboard_CutDocument() throws Exception {
-        bots.directory.clickDocument("file1.png");
-        device.waitForIdle();
-        bots.keyboard.pressKey(KeyEvent.KEYCODE_X, KeyEvent.META_CTRL_ON);
-
-        device.waitForIdle();
-
-        bots.roots.openRoot(ROOT_1_ID);
-        bots.keyboard.pressKey(KeyEvent.KEYCODE_V, KeyEvent.META_CTRL_ON);
-
-        bots.directory.waitForDocument("file1.png");
-        bots.directory.assertDocumentsPresent("file1.png");
-
-        bots.roots.openRoot(ROOT_0_ID);
-        bots.directory.assertDocumentsAbsent("file1.png");
-    }
-
-    public void testKeyboard_CopyDocument() throws Exception {
-        bots.directory.clickDocument("file1.png");
-        device.waitForIdle();
-        bots.keyboard.pressKey(KeyEvent.KEYCODE_C, KeyEvent.META_CTRL_ON);
-
-        device.waitForIdle();
-
-        bots.roots.openRoot(ROOT_1_ID);
-        bots.keyboard.pressKey(KeyEvent.KEYCODE_V, KeyEvent.META_CTRL_ON);
-
-        bots.directory.waitForDocument("file1.png");
-
-        bots.roots.openRoot(ROOT_0_ID);
-        bots.directory.waitForDocument("file1.png");
-    }
-
-    public void testDeleteDocument_Cancel_ThenOK() throws Exception {
-        bots.directory.clickDocument("file1.png");
-        device.waitForIdle();
-        bots.main.clickToolbarItem(R.id.menu_delete);
-
-        bots.main.clickDialogCancelButton();
-
-        bots.directory.waitForDocument("file1.png");
-
-        device.waitForIdle();
-        bots.main.clickToolbarItem(R.id.menu_delete);
-
-        bots.main.clickDialogOkButton();
-        device.waitForIdle();
-
-        bots.directory.assertDocumentsAbsent("file1.png");
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/FilesActivityDefaultsUiTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/FilesActivityDefaultsUiTest.java
deleted file mode 100644
index d0ec9d7..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/FilesActivityDefaultsUiTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.StubProvider.ROOT_0_ID;
-import static com.android.documentsui.StubProvider.ROOT_1_ID;
-
-import android.content.Intent;
-import android.provider.DocumentsContract;
-import android.test.suitebuilder.annotation.LargeTest;
-
-import com.android.documentsui.model.RootInfo;
-
-@LargeTest
-public class FilesActivityDefaultsUiTest extends ActivityTest<FilesActivity> {
-
-    public FilesActivityDefaultsUiTest() {
-        super(FilesActivity.class);
-    }
-
-    @Override
-    protected RootInfo getInitialRoot() {
-        return null;  // test the default, unaffected state of the app.
-    }
-
-    public void testDefaultDirectory() throws Exception {
-        device.waitForIdle();
-
-        // Separate logic for "Documents" root, which presence depends on the config setting
-        if (docsRootEnabled()) {
-            bots.main.assertWindowTitle("Documents");
-        } else {
-            bots.main.assertWindowTitle("Downloads");
-        }
-    }
-
-    public void testDefaultRoots() throws Exception {
-        device.waitForIdle();
-
-        // Should also have Drive, but that requires pre-configuration of devices
-        // We omit for now.
-        bots.roots.assertRootsPresent(
-                "Images",
-                "Videos",
-                "Audio",
-                "Downloads",
-                ROOT_0_ID,
-                ROOT_1_ID);
-
-        // Separate logic for "Documents" root, which presence depends on the config setting
-        if (docsRootEnabled()) {
-            bots.roots.assertRootsPresent("Documents");
-        } else {
-            bots.roots.assertRootsAbsent("Documents");
-        }
-    }
-
-    private boolean docsRootEnabled() {
-        return Shared.shouldShowDocumentsRoot(context, new Intent(DocumentsContract.ACTION_BROWSE));
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/FilesActivityUiTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/FilesActivityUiTest.java
deleted file mode 100644
index 1b47705..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/FilesActivityUiTest.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.net.Uri;
-import android.os.RemoteException;
-import android.test.suitebuilder.annotation.LargeTest;
-
-@LargeTest
-public class FilesActivityUiTest extends ActivityTest<FilesActivity> {
-
-    public FilesActivityUiTest() {
-        super(FilesActivity.class);
-    }
-
-    @Override
-    public void setUp() throws Exception {
-        super.setUp();
-        initTestFiles();
-    }
-
-    @Override
-    public void initTestFiles() throws RemoteException {
-        Uri uri = mDocsHelper.createFolder(rootDir0, dirName1);
-        mDocsHelper.createFolder(uri, childDir1);
-
-        mDocsHelper.createDocument(rootDir0, "text/plain", "file0.log");
-        mDocsHelper.createDocument(rootDir0, "image/png", "file1.png");
-        mDocsHelper.createDocument(rootDir0, "text/csv", "file2.csv");
-
-        mDocsHelper.createDocument(rootDir1, "text/plain", "anotherFile0.log");
-        mDocsHelper.createDocument(rootDir1, "text/plain", "poodles.text");
-    }
-
-    public void testFilesListed() throws Exception {
-        bots.directory.assertDocumentsPresent("file0.log", "file1.png", "file2.csv");
-    }
-
-    public void testRootClick_SetsWindowTitle() throws Exception {
-        bots.roots.openRoot("Images");
-        bots.main.assertWindowTitle("Images");
-    }
-
-    public void testFilesList_LiveUpdate() throws Exception {
-        mDocsHelper.createDocument(rootDir0, "yummers/sandwich", "Ham & Cheese.sandwich");
-
-        bots.directory.waitForDocument("Ham & Cheese.sandwich");
-        bots.directory.assertDocumentsPresent(
-                "file0.log", "file1.png", "file2.csv", "Ham & Cheese.sandwich");
-    }
-
-    public void testNavigateByBreadcrumb() throws Exception {
-        bots.directory.openDocument(dirName1);
-        bots.directory.waitForDocument(childDir1);  // wait for known content
-        bots.directory.assertDocumentsPresent(childDir1);
-
-        bots.breadcrumb.revealAsNeeded();
-        device.waitForIdle();
-        bots.breadcrumb.assertItemsPresent(dirName1, "TEST_ROOT_0");
-
-        bots.breadcrumb.clickItem("TEST_ROOT_0");
-        bots.directory.waitForDocument(dirName1);
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/FilesMenuManagerTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/FilesMenuManagerTest.java
deleted file mode 100644
index 3644abc..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/FilesMenuManagerTest.java
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static org.junit.Assert.assertTrue;
-
-import android.provider.DocumentsContract.Root;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
-
-import com.android.documentsui.model.RootInfo;
-import com.android.documentsui.testing.TestDirectoryDetails;
-import com.android.documentsui.testing.TestMenu;
-import com.android.documentsui.testing.TestMenuItem;
-import com.android.documentsui.testing.TestSearchViewManager;
-import com.android.documentsui.testing.TestSelectionDetails;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public final class FilesMenuManagerTest {
-
-    private TestMenu testMenu;
-    private TestMenuItem rename;
-    private TestMenuItem moveTo;
-    private TestMenuItem copyTo;
-    private TestMenuItem share;
-    private TestMenuItem delete;
-    private TestMenuItem createDir;
-    private TestMenuItem fileSize;
-    private TestMenuItem settings;
-    private TestMenuItem newWindow;
-    private TestMenuItem cut;
-    private TestMenuItem copy;
-    private TestMenuItem paste;
-    private TestMenuItem sort;
-    private TestMenuItem sortSize;
-    private TestMenuItem advanced;
-    private TestMenuItem eject;
-    private TestSelectionDetails selectionDetails;
-    private TestDirectoryDetails directoryDetails;
-    private TestSearchViewManager testSearchManager;
-    private RootInfo testRootInfo;
-    private State state = new State();
-
-    @Before
-    public void setUp() {
-        testMenu = TestMenu.create();
-        rename = testMenu.findItem(R.id.menu_rename);
-        moveTo = testMenu.findItem(R.id.menu_move_to);
-        copyTo = testMenu.findItem(R.id.menu_copy_to);
-        share = testMenu.findItem(R.id.menu_share);
-        delete = testMenu.findItem(R.id.menu_delete);
-        createDir = testMenu.findItem(R.id.menu_create_dir);
-        fileSize = testMenu.findItem(R.id.menu_file_size);
-        settings = testMenu.findItem(R.id.menu_settings);
-        newWindow = testMenu.findItem(R.id.menu_new_window);
-        cut = testMenu.findItem(R.id.menu_cut_to_clipboard);
-        copy = testMenu.findItem(R.id.menu_copy_to_clipboard);
-        paste = testMenu.findItem(R.id.menu_paste_from_clipboard);
-        sort = testMenu.findItem(R.id.menu_sort);
-        sortSize = testMenu.findItem(R.id.menu_sort_size);
-        advanced = testMenu.findItem(R.id.menu_advanced);
-        eject = testMenu.findItem(R.id.menu_eject_root);
-
-        // These items by default are visible
-        testMenu.findItem(R.id.menu_select_all).setVisible(true);
-        testMenu.findItem(R.id.menu_list).setVisible(true);
-        testMenu.findItem(R.id.menu_file_size).setVisible(true);
-
-        selectionDetails = new TestSelectionDetails();
-        directoryDetails = new TestDirectoryDetails();
-        testSearchManager = new TestSearchViewManager();
-        testRootInfo = new RootInfo();
-    }
-
-    @Test
-    public void testActionMenu() {
-        selectionDetails.canDelete = true;
-        selectionDetails.canRename = true;
-
-        FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
-        mgr.updateActionMenu(testMenu, selectionDetails);
-
-        rename.assertEnabled();
-        delete.assertVisible();
-        share.assertVisible();
-        copyTo.assertEnabled();
-        moveTo.assertEnabled();
-    }
-
-    @Test
-    public void testActionMenu_containsPartial() {
-        selectionDetails.containPartial = true;
-        FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
-        mgr.updateActionMenu(testMenu, selectionDetails);
-
-        rename.assertDisabled();
-        share.assertInvisible();
-        copyTo.assertDisabled();
-        moveTo.assertDisabled();
-    }
-
-    @Test
-    public void testActionMenu_cantRename() {
-        selectionDetails.canRename = false;
-        FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
-        mgr.updateActionMenu(testMenu, selectionDetails);
-
-        rename.assertDisabled();
-    }
-
-    @Test
-    public void testActionMenu_cantDelete() {
-        selectionDetails.canDelete = false;
-        FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
-        mgr.updateActionMenu(testMenu, selectionDetails);
-
-        delete.assertInvisible();
-        // We shouldn't be able to move files if we can't delete them
-        moveTo.assertDisabled();
-    }
-
-    @Test
-    public void testActionMenu_containsDirectory() {
-        selectionDetails.containDirectories = true;
-        FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
-        mgr.updateActionMenu(testMenu, selectionDetails);
-
-        // We can't share directories
-        share.assertInvisible();
-    }
-
-    @Test
-    public void testOptionMenu() {
-        FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
-        mgr.updateOptionMenu(testMenu, directoryDetails);
-
-        sort.assertEnabled();
-        sortSize.assertInvisible();
-        advanced.assertInvisible();
-        advanced.assertTitle(R.string.menu_advanced_show);
-        createDir.assertDisabled();
-        fileSize.assertVisible();
-        assertTrue(testSearchManager.updateMenuCalled());
-    }
-
-    @Test
-    public void testOptionMenu_hideSize() {
-        state.showSize = true;
-        FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
-        mgr.updateOptionMenu(testMenu, directoryDetails);
-
-        sortSize.assertVisible();
-    }
-
-    @Test
-    public void testOptionMenu_showAdvanced() {
-        state.showAdvanced = true;
-        state.showAdvancedOption = true;
-        FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
-        mgr.updateOptionMenu(testMenu, directoryDetails);
-
-        advanced.assertVisible();
-        advanced.assertTitle(R.string.menu_advanced_hide);
-    }
-
-    @Test
-    public void testOptionMenu_inRecents() {
-        directoryDetails.isInRecents = true;
-        FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
-        mgr.updateOptionMenu(testMenu, directoryDetails);
-
-        sort.assertDisabled();
-    }
-
-    @Test
-    public void testOptionMenu_canCreateDirectory() {
-        directoryDetails.canCreateDirectory = true;
-        FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
-        mgr.updateOptionMenu(testMenu, directoryDetails);
-
-        createDir.assertEnabled();
-    }
-
-    @Test
-    public void testOptionMenu_hasRootSettings() {
-        directoryDetails.hasRootSettings = true;
-        FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
-        mgr.updateOptionMenu(testMenu, directoryDetails);
-
-        settings.assertVisible();
-    }
-
-    @Test
-    public void testOptionMenu_shouldShowFancyFeatures() {
-        directoryDetails.shouldShowFancyFeatures = true;
-        FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
-        mgr.updateOptionMenu(testMenu, directoryDetails);
-
-        newWindow.assertVisible();
-    }
-
-    @Test
-    public void testContextMenu_NoSelection() {
-        FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
-        mgr.updateContextMenu(testMenu, null, directoryDetails);
-        cut.assertVisible();
-        copy.assertVisible();
-        cut.assertDisabled();
-        copy.assertDisabled();
-        paste.assertVisible();
-        createDir.assertVisible();
-        delete.assertVisible();
-    }
-
-    @Test
-    public void testContextMenu_Selection() {
-        FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
-        mgr.updateContextMenu(testMenu, selectionDetails, directoryDetails);
-        cut.assertVisible();
-        copy.assertVisible();
-        paste.assertVisible();
-        rename.assertVisible();
-        createDir.assertVisible();
-        delete.assertVisible();
-    }
-
-    @Test
-    public void testRootContextMenu() {
-        FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
-        mgr.updateRootContextMenu(testMenu, testRootInfo);
-
-        eject.assertVisible();
-        eject.assertDisabled();
-
-        settings.assertVisible();
-        settings.assertDisabled();
-    }
-
-    @Test
-    public void testRootContextMenu_hasRootSettings() {
-        testRootInfo.flags = Root.FLAG_HAS_SETTINGS;
-        FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
-        mgr.updateRootContextMenu(testMenu, testRootInfo);
-
-        settings.assertEnabled();
-    }
-
-    @Test
-    public void testRootContextMenu_eject() {
-        testRootInfo.flags = Root.FLAG_SUPPORTS_EJECT;
-        FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
-        mgr.updateRootContextMenu(testMenu, testRootInfo);
-
-        eject.assertEnabled();
-    }
-
-    @Test
-    public void testRootContextMenu_ejectInProcess() {
-        testRootInfo.flags = Root.FLAG_SUPPORTS_EJECT;
-        testRootInfo.ejecting = true;
-        FilesMenuManager mgr = new FilesMenuManager(testSearchManager, state);
-        mgr.updateRootContextMenu(testMenu, testRootInfo);
-
-        eject.assertDisabled();
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/IntegratedDownloadsUiTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/IntegratedDownloadsUiTest.java
deleted file mode 100644
index ef4a68d..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/IntegratedDownloadsUiTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.app.DownloadManager;
-import android.app.DownloadManager.Request;
-import android.content.Context;
-import android.net.Uri;
-import android.support.test.uiautomator.Configurator;
-import android.support.test.uiautomator.UiObject;
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.Suppress;
-import android.view.MotionEvent;
-
-// TODO: As of this writing all tests in this class are disabled. Please fix.
-@LargeTest
-public class IntegratedDownloadsUiTest extends ActivityTest<FilesActivity> {
-
-    public IntegratedDownloadsUiTest() {
-        super(FilesActivity.class);
-    }
-
-    // We don't really need to test the entirety of download support
-    // since downloads is (almost) just another provider.
-    @Suppress
-    public void testDownload_Queued() throws Exception {
-        DownloadManager dm = (DownloadManager) context.getSystemService(
-                Context.DOWNLOAD_SERVICE);
-        // This downloads ends up being queued (because DNS can't be resolved).
-        // We'll still see an entry in the downloads UI with a "Queued" label.
-        dm.enqueue(new Request(Uri.parse("http://hammychamp.toodles")));
-
-        bots.roots.openRoot("Downloads");
-        bots.directory.assertDocumentsPresent("Queued");
-    }
-
-    @Suppress
-    public void testDownload_RetryUnsuccessful() throws Exception {
-        DownloadManager dm = (DownloadManager) context.getSystemService(
-                Context.DOWNLOAD_SERVICE);
-        // This downloads fails! But it'll still show up.
-        dm.enqueue(new Request(Uri.parse("http://www.google.com/hamfancy")));
-
-        bots.roots.openRoot("Downloads");
-        UiObject doc = bots.directory.findDocument("Unsuccessful");
-        doc.waitForExists(TIMEOUT);
-
-        int toolType = Configurator.getInstance().getToolType();
-        Configurator.getInstance().setToolType(MotionEvent.TOOL_TYPE_FINGER);
-        doc.click();
-        Configurator.getInstance().setToolType(toolType);
-
-        assertTrue(bots.main.findDownloadRetryDialog().exists());
-
-        device.pressBack(); // to clear the dialog.
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/ItemDragListenerTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/ItemDragListenerTest.java
deleted file mode 100644
index 37f6532..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/ItemDragListenerTest.java
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-
-import android.content.ClipData;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
-import android.view.DragEvent;
-import android.view.View;
-
-import com.android.documentsui.testing.ClipDatas;
-import com.android.documentsui.testing.DragEvents;
-import com.android.documentsui.testing.TestDrawable;
-import com.android.documentsui.testing.TestTimer;
-import com.android.documentsui.testing.Views;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.Timer;
-import java.util.TimerTask;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class ItemDragListenerTest {
-
-    private static final long DELAY_AFTER_HOVERING = ItemDragListener.SPRING_TIMEOUT + 1;
-
-    private View mTestView;
-    private TestDrawable mTestBackground;
-    private TestDragHost mTestDragHost;
-    private TestTimer mTestTimer;
-
-    private TestDragListener mListener;
-
-    @Before
-    public void setUp() {
-        mTestView = Views.createTestView();
-        mTestBackground = new TestDrawable();
-        mTestTimer = new TestTimer();
-        mTestDragHost = new TestDragHost();
-
-        mListener = new TestDragListener(mTestDragHost, mTestTimer);
-    }
-
-    @Test
-    public void testDragStarted_ReturnsTrue() {
-        assertTrue(triggerDragEvent(DragEvent.ACTION_DRAG_STARTED));
-    }
-
-    @Test
-    public void testDragEntered_HighlightsView() {
-        triggerDragEvent(DragEvent.ACTION_DRAG_ENTERED);
-        assertSame(mTestView, mTestDragHost.mHighlightedView);
-    }
-
-    @Test
-    public void testDragExited_UnhighlightsView() {
-        triggerDragEvent(DragEvent.ACTION_DRAG_ENTERED);
-
-        triggerDragEvent(DragEvent.ACTION_DRAG_EXITED);
-        assertNull(mTestDragHost.mHighlightedView);
-    }
-
-    @Test
-    public void testDragEnded_UnhighlightsView() {
-        triggerDragEvent(DragEvent.ACTION_DRAG_ENTERED);
-
-        triggerDragEvent(DragEvent.ACTION_DRAG_ENDED);
-        assertNull(mTestDragHost.mHighlightedView);
-    }
-
-    @Test
-    public void testDragLocation_notCrashWithoutBackground() {
-        DragEvent locationEvent = DragEvents.createTestLocationEvent(3, 4);
-        mListener.onDrag(mTestView, locationEvent);
-    }
-
-    @Test
-    public void testDragLocation_setHotSpotOnBackground() {
-        Views.setBackground(mTestView, mTestBackground);
-
-        final float x = 2;
-        final float y = 4;
-        DragEvent locationEvent = DragEvents.createTestLocationEvent(x, y);
-        mListener.onDrag(mTestView, locationEvent);
-
-        assertEquals(x, mTestBackground.hotspotX, 0);
-        assertEquals(y, mTestBackground.hotspotY, 0);
-    }
-
-    @Test
-    public void testHover_OpensView() {
-        triggerDragEvent(DragEvent.ACTION_DRAG_ENTERED);
-
-        mTestTimer.fastForwardTo(DELAY_AFTER_HOVERING);
-
-        assertSame(mTestView, mTestDragHost.mLastOpenedView);
-    }
-
-    @Test
-    public void testDragExited_CancelsHoverTask() {
-        triggerDragEvent(DragEvent.ACTION_DRAG_ENTERED);
-
-        triggerDragEvent(DragEvent.ACTION_DRAG_EXITED);
-
-        mTestTimer.fastForwardTo(DELAY_AFTER_HOVERING);
-
-        assertNull(mTestDragHost.mLastOpenedView);
-    }
-
-    @Test
-    public void testDragEnded_CancelsHoverTask() {
-        triggerDragEvent(DragEvent.ACTION_DRAG_ENTERED);
-
-        triggerDragEvent(DragEvent.ACTION_DRAG_ENDED);
-
-        mTestTimer.fastForwardTo(DELAY_AFTER_HOVERING);
-
-        assertNull(mTestDragHost.mLastOpenedView);
-    }
-
-    @Test
-    public void testNoDropWithoutClipData() {
-        triggerDragEvent(DragEvent.ACTION_DRAG_ENTERED);
-
-        final DragEvent dropEvent = DragEvents.createTestDropEvent(null);
-        assertFalse(mListener.onDrag(mTestView, dropEvent));
-    }
-
-    @Test
-    public void testDoDropWithClipData() {
-        triggerDragEvent(DragEvent.ACTION_DRAG_ENTERED);
-
-        final ClipData data = ClipDatas.createTestClipData();
-        final DragEvent dropEvent = DragEvents.createTestDropEvent(data);
-        mListener.onDrag(mTestView, dropEvent);
-
-        assertSame(mTestView, mListener.mLastDropOnView);
-        assertSame(dropEvent, mListener.mLastDropEvent);
-    }
-
-    protected boolean triggerDragEvent(int actionId) {
-        final DragEvent testEvent = DragEvents.createTestDragEvent(actionId);
-
-        return mListener.onDrag(mTestView, testEvent);
-    }
-
-    private static class TestDragListener extends ItemDragListener<TestDragHost> {
-
-        private View mLastDropOnView;
-        private DragEvent mLastDropEvent;
-
-        protected TestDragListener(TestDragHost dragHost, Timer timer) {
-            super(dragHost, timer);
-        }
-
-        @Override
-        public TimerTask createOpenTask(View v) {
-            TimerTask task = super.createOpenTask(v);
-            TestTimer.Task testTask = new TestTimer.Task(task);
-
-            return testTask;
-        }
-
-        @Override
-        public boolean handleDropEventChecked(View v, DragEvent event) {
-            mLastDropOnView = v;
-            mLastDropEvent = event;
-            return true;
-        }
-
-    }
-
-    private static class TestDragHost implements ItemDragListener.DragHost {
-        private View mHighlightedView;
-        private View mLastOpenedView;
-
-        @Override
-        public void setDropTargetHighlight(View v, boolean highlight) {
-            mHighlightedView = highlight ? v : null;
-        }
-
-        @Override
-        public void runOnUiThread(Runnable runnable) {
-            runnable.run();
-        }
-
-        @Override
-        public void onViewHovered(View v) {
-            mLastOpenedView = v;
-        }
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/KeyboardNavigationUiTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/KeyboardNavigationUiTest.java
deleted file mode 100644
index 1657a87..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/KeyboardNavigationUiTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.Suppress;
-import android.view.KeyEvent;
-
-@LargeTest
-public class KeyboardNavigationUiTest extends ActivityTest<FilesActivity> {
-
-    public KeyboardNavigationUiTest() {
-        super(FilesActivity.class);
-    }
-
-    // Tests that pressing tab switches focus between the roots and directory listings.
-    @Suppress
-    public void testKeyboard_tab() throws Exception {
-        bots.keyboard.pressKey(KeyEvent.KEYCODE_TAB);
-        bots.roots.assertHasFocus();
-        bots.keyboard.pressKey(KeyEvent.KEYCODE_TAB);
-        bots.directory.assertHasFocus();
-    }
-
-    // Tests that arrow keys do not switch focus away from the dir list.
-    @Suppress
-    public void testKeyboard_arrowsDirList() throws Exception {
-        for (int i = 0; i < 10; i++) {
-            bots.keyboard.pressKey(KeyEvent.KEYCODE_DPAD_LEFT);
-            bots.directory.assertHasFocus();
-        }
-        for (int i = 0; i < 10; i++) {
-            bots.keyboard.pressKey(KeyEvent.KEYCODE_DPAD_RIGHT);
-            bots.directory.assertHasFocus();
-        }
-    }
-
-    // Tests that arrow keys do not switch focus away from the roots list.
-    public void testKeyboard_arrowsRootsList() throws Exception {
-        bots.keyboard.pressKey(KeyEvent.KEYCODE_TAB);
-        for (int i = 0; i < 10; i++) {
-            bots.keyboard.pressKey(KeyEvent.KEYCODE_DPAD_RIGHT);
-            bots.roots.assertHasFocus();
-        }
-        for (int i = 0; i < 10; i++) {
-            bots.keyboard.pressKey(KeyEvent.KEYCODE_DPAD_LEFT);
-            bots.roots.assertHasFocus();
-        }
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/RenameDocumentUiTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/RenameDocumentUiTest.java
deleted file mode 100644
index e7ac293..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/RenameDocumentUiTest.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.support.test.uiautomator.UiObjectNotFoundException;
-import android.test.suitebuilder.annotation.LargeTest;
-
-@LargeTest
-public class RenameDocumentUiTest extends ActivityTest<FilesActivity> {
-
-    private final String newName = "kitties.log";
-
-    public RenameDocumentUiTest() {
-        super(FilesActivity.class);
-    }
-
-    @Override
-    public void setUp() throws Exception {
-        super.setUp();
-        initTestFiles();
-        bots.roots.closeDrawer();
-    }
-
-    // TODO: Move this over to the FilesMenuManagerTest.
-    public void testRenameEnabled_SingleSelection() throws Exception {
-        bots.directory.selectDocument(fileName1);
-        bots.main.openOverflowMenu();
-        bots.main.assertMenuEnabled(R.string.menu_rename, true);
-
-        // Dismiss more options window
-        device.pressBack();
-    }
-
-    // TODO: Move this over to the FilesMenuManagerTest.
-    public void testNoRenameSupport_SingleSelection() throws Exception {
-        bots.directory.selectDocument(fileNameNoRename);
-        bots.main.openOverflowMenu();
-        bots.main.assertMenuEnabled(R.string.menu_rename, false);
-
-        // Dismiss more options window
-        device.pressBack();
-    }
-
-    // TODO: Move this over to the FilesMenuManagerTest.
-    public void testOneHasRenameSupport_MultipleSelection() throws Exception {
-        bots.directory.selectDocument(fileName1);
-        bots.directory.selectDocument(fileNameNoRename);
-        bots.main.openOverflowMenu();
-        bots.main.assertMenuEnabled(R.string.menu_rename, false);
-
-        // Dismiss more options window
-        device.pressBack();
-    }
-
-    // TODO: Move this over to the FilesMenuManagerTest.
-    public void testRenameDisabled_MultipleSelection() throws Exception {
-        bots.directory.selectDocument(fileName1);
-        bots.directory.selectDocument(fileName2);
-        bots.main.openOverflowMenu();
-        bots.main.assertMenuEnabled(R.string.menu_rename, false);
-
-        // Dismiss more options window
-        device.pressBack();
-    }
-
-    public void testRenameFile_OkButton() throws Exception {
-        bots.directory.selectDocument(fileName1);
-
-        clickRename();
-
-        device.waitForIdle();
-        bots.main.setDialogText(newName);
-
-        device.waitForIdle();
-        bots.main.clickDialogOkButton();
-
-        bots.directory.waitForDocument(newName);
-        bots.directory.assertDocumentsAbsent(fileName1);
-        bots.directory.assertDocumentsCount(4);
-    }
-
-    public void testRenameFile_Enter() throws Exception {
-        bots.directory.selectDocument(fileName1);
-
-        clickRename();
-
-        device.waitForIdle();
-        bots.main.setDialogText(newName);
-
-        device.waitForIdle();
-        bots.keyboard.pressEnter();
-
-        bots.directory.waitForDocument(newName);
-        bots.directory.assertDocumentsAbsent(fileName1);
-        bots.directory.assertDocumentsCount(4);
-    }
-
-    public void testRenameFile_Cancel() throws Exception {
-        bots.directory.selectDocument(fileName1);
-
-        clickRename();
-
-        bots.main.setDialogText(newName);
-
-        bots.main.clickDialogCancelButton();
-
-        bots.directory.assertDocumentsPresent(fileName1);
-        bots.directory.assertDocumentsAbsent(newName);
-        bots.directory.assertDocumentsCount(4);
-    }
-
-    public void testRenameDir() throws Exception {
-        String oldName = "Dir1";
-        String newName = "Dir123";
-        bots.directory.selectDocument(oldName);
-
-        clickRename();
-
-        bots.main.setDialogText(newName);
-
-        bots.keyboard.pressEnter();
-
-        bots.directory.assertDocumentsAbsent(oldName);
-        bots.directory.assertDocumentsPresent(newName);
-        bots.directory.assertDocumentsCount(4);
-    }
-
-    public void testRename_NameExists() throws Exception {
-        // Check that document with the new name exists
-        bots.directory.assertDocumentsPresent(fileName2);
-        bots.directory.selectDocument(fileName1);
-
-        clickRename();
-
-        bots.main.setDialogText(fileName2);
-
-        bots.keyboard.pressEnter();
-
-        bots.directory.assertSnackbar(R.string.rename_error);
-        bots.directory.assertDocumentsPresent(fileName1);
-        bots.directory.assertDocumentsPresent(fileName2);
-        bots.directory.assertDocumentsCount(4);
-    }
-
-    private void clickRename() throws UiObjectNotFoundException {
-        bots.main.clickActionbarOverflowItem("Rename");
-        device.waitForIdle();
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/RootsCacheTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/RootsCacheTest.java
deleted file mode 100644
index 2e81545..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/RootsCacheTest.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.RootsCache.getMatchingRoots;
-import static com.google.common.collect.Lists.newArrayList;
-
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.documentsui.model.RootInfo;
-
-import com.google.common.collect.Lists;
-
-import java.util.List;
-
-@SmallTest
-public class RootsCacheTest extends AndroidTestCase {
-
-    private static RootInfo mNull = new RootInfo();
-    private static RootInfo mEmpty = buildForMimeTypes();
-    private static RootInfo mWild = buildForMimeTypes("*/*");
-    private static RootInfo mImages = buildForMimeTypes("image/*");
-    private static RootInfo mAudio = buildForMimeTypes(
-            "audio/*", "application/ogg", "application/x-flac");
-    private static RootInfo mDocs = buildForMimeTypes(
-            "application/msword", "application/vnd.ms-excel");
-    private static RootInfo mMalformed1 = buildForMimeTypes("meow");
-    private static RootInfo mMalformed2 = buildForMimeTypes("*/meow");
-
-    private List<RootInfo> mRoots;
-
-    private State mState;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        mRoots = Lists.newArrayList(
-                mNull, mWild, mEmpty, mImages, mAudio, mDocs, mMalformed1, mMalformed2);
-
-        mState = new State();
-        mState.action = State.ACTION_OPEN;
-        mState.showAdvanced = true;
-        mState.localOnly = false;
-    }
-
-    public void testMatchingRoots_Everything() throws Exception {
-        mState.acceptMimes = new String[] { "*/*" };
-        assertContainsExactly(
-                newArrayList(mNull, mWild, mImages, mAudio, mDocs, mMalformed1, mMalformed2),
-                getMatchingRoots(mRoots, mState));
-    }
-
-    public void testMatchingRoots_DirectoryCopy() throws Exception {
-        RootInfo downloads = buildForMimeTypes("*/*");
-        downloads.authority = "com.android.providers.downloads.documents";
-        mRoots.add(downloads);
-
-        mState.acceptMimes = new String[] { "*/*" };
-        mState.directoryCopy = true;
-
-        // basically we're asserting that the results don't contain downloads
-        assertContainsExactly(
-                newArrayList(mNull, mWild, mImages, mAudio, mDocs, mMalformed1, mMalformed2),
-                getMatchingRoots(mRoots, mState));
-    }
-
-    public void testMatchingRoots_PngOrWild() throws Exception {
-        mState.acceptMimes = new String[] { "image/png", "*/*" };
-        assertContainsExactly(
-                newArrayList(mNull, mWild, mImages, mAudio, mDocs, mMalformed1, mMalformed2),
-                getMatchingRoots(mRoots, mState));
-    }
-
-    public void testMatchingRoots_AudioWild() throws Exception {
-        mState.acceptMimes = new String[] { "audio/*" };
-        assertContainsExactly(
-                newArrayList(mNull, mWild, mAudio),
-                getMatchingRoots(mRoots, mState));
-    }
-
-    public void testMatchingRoots_AudioWildOrImageWild() throws Exception {
-        mState.acceptMimes = new String[] { "audio/*", "image/*" };
-        assertContainsExactly(
-                newArrayList(mNull, mWild, mAudio, mImages),
-                getMatchingRoots(mRoots, mState));
-    }
-
-    public void testMatchingRoots_AudioSpecific() throws Exception {
-        mState.acceptMimes = new String[] { "audio/mpeg" };
-        assertContainsExactly(
-                newArrayList(mNull, mWild, mAudio),
-                getMatchingRoots(mRoots, mState));
-    }
-
-    public void testMatchingRoots_Document() throws Exception {
-        mState.acceptMimes = new String[] { "application/msword" };
-        assertContainsExactly(
-                newArrayList(mNull, mWild, mDocs),
-                getMatchingRoots(mRoots, mState));
-    }
-
-    public void testMatchingRoots_Application() throws Exception {
-        mState.acceptMimes = new String[] { "application/*" };
-        assertContainsExactly(
-                newArrayList(mNull, mWild, mAudio, mDocs),
-                getMatchingRoots(mRoots, mState));
-    }
-
-    public void testMatchingRoots_FlacOrPng() throws Exception {
-        mState.acceptMimes = new String[] { "application/x-flac", "image/png" };
-        assertContainsExactly(
-                newArrayList(mNull, mWild, mAudio, mImages),
-                getMatchingRoots(mRoots, mState));
-    }
-
-    public void testExcludedAuthorities() throws Exception {
-        final List<RootInfo> roots = newArrayList();
-
-        // Set up some roots
-        for (int i = 0; i < 5; ++i) {
-            RootInfo root = new RootInfo();
-            root.authority = "authority" + i;
-            roots.add(root);
-        }
-        // Make some allowed authorities
-        List<RootInfo> allowedRoots = newArrayList(
-            roots.get(0), roots.get(2), roots.get(4));
-        // Set up the excluded authority list
-        for (RootInfo root: roots) {
-            if (!allowedRoots.contains(root)) {
-                mState.excludedAuthorities.add(root.authority);
-            }
-        }
-        mState.acceptMimes = new String[] { "*/*" };
-
-        assertContainsExactly(
-            allowedRoots,
-            getMatchingRoots(roots, mState));
-    }
-
-    private static void assertContainsExactly(List<?> expected, List<?> actual) {
-        assertEquals(expected.size(), actual.size());
-        for (Object o : expected) {
-            assertTrue(actual.contains(o));
-        }
-    }
-
-    private static RootInfo buildForMimeTypes(String... mimeTypes) {
-        final RootInfo root = new RootInfo();
-        root.derivedMimeTypes = mimeTypes;
-        return root;
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/RootsUiTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/RootsUiTest.java
deleted file mode 100644
index 4edfd8a..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/RootsUiTest.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.StubProvider.ROOT_0_ID;
-import static com.android.documentsui.StubProvider.ROOT_1_ID;
-
-import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.Suppress;
-
-@LargeTest
-public class RootsUiTest extends ActivityTest<FilesActivity> {
-
-    private static final String TAG = "RootUiTest";
-
-    public RootsUiTest() {
-        super(FilesActivity.class);
-    }
-
-    @Override
-    public void setUp() throws Exception {
-        super.setUp();
-        initTestFiles();
-    }
-
-    public void testRootTapped_GoToRootFromChildDir() throws Exception {
-        bots.directory.openDocument(dirName1);
-        bots.breadcrumb.assertTitle(dirName1);
-        bots.roots.openRoot(ROOT_0_ID);
-        bots.main.assertWindowTitle(ROOT_0_ID);
-        assertDefaultContentOfTestDir0();
-    }
-
-    @Suppress
-    public void testRootChanged_ClearSelection() throws Exception {
-        bots.directory.selectDocument(fileName1);
-        bots.main.assertInActionMode(true);
-
-        bots.roots.openRoot(ROOT_1_ID);
-        bots.main.assertInActionMode(false);
-    }
-
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/SearchViewUiTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/SearchViewUiTest.java
deleted file mode 100644
index 01c6e1e..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/SearchViewUiTest.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static com.android.documentsui.StubProvider.ROOT_0_ID;
-import static com.android.documentsui.StubProvider.ROOT_1_ID;
-
-import android.support.test.filters.Suppress;
-import android.support.v7.recyclerview.R;
-import android.test.suitebuilder.annotation.LargeTest;
-
-@LargeTest
-public class SearchViewUiTest extends ActivityTest<FilesActivity> {
-
-    public SearchViewUiTest() {
-        super(FilesActivity.class);
-    }
-
-    @Override
-    public void setUp() throws Exception {
-      super.setUp();
-      initTestFiles();
-      // Drawer interferes with a lot of search action; going to try to close any opened ones
-      bots.roots.closeDrawer();
-
-      // wait for a file to be present in default dir.
-      bots.directory.waitForDocument(fileName1);
-    }
-
-    public void testSearchIconVisible() throws Exception {
-        // The default root (root 0) supports search
-        bots.search.assertInputExists(false);
-        bots.search.assertIconVisible(true);
-    }
-
-    public void testSearchIconHidden() throws Exception {
-        bots.roots.openRoot(ROOT_1_ID);  // root 1 doesn't support search
-
-        bots.search.assertIconVisible(false);
-        bots.search.assertInputExists(false);
-    }
-
-    public void testSearchView_ExpandsOnClick() throws Exception {
-        bots.search.clickIcon();
-        device.waitForIdle();
-
-        bots.search.assertInputExists(true);
-        bots.search.assertInputFocused(true);
-
-        // FIXME: Matchers fail the not-present check if we've ever clicked this.
-        // bots.search.assertIconVisible(false);
-    }
-
-    public void testSearchView_CollapsesOnBack() throws Exception {
-        bots.search.clickIcon();
-        device.pressBack();
-
-        bots.search.assertIconVisible(true);
-        bots.search.assertInputExists(false);
-    }
-
-    public void testSearchView_ClearsTextOnBack() throws Exception {
-        bots.search.clickIcon();
-        bots.search.setInputText("file2");
-
-        device.pressBack();
-
-        // Wait for a file in the default directory to be listed.
-        bots.directory.waitForDocument(dirName1);
-
-        bots.search.assertIconVisible(true);
-        bots.search.assertInputExists(false);
-    }
-
-    public void testSearchView_StateAfterSearch() throws Exception {
-        bots.search.clickIcon();
-        bots.search.setInputText("file1");
-        bots.keyboard.pressEnter();
-        device.waitForIdle();
-
-        bots.search.assertInputEquals("file1");
-        bots.search.assertInputFocused(false);
-    }
-
-    public void testSearch_ResultsFound() throws Exception {
-        bots.search.clickIcon();
-        bots.search.setInputText("file1");
-        bots.keyboard.pressEnter();
-
-        bots.directory.assertDocumentsCountOnList(true, 2);
-        bots.directory.assertDocumentsPresent(fileName1, fileName2);
-    }
-
-    public void testSearch_NoResults() throws Exception {
-        bots.search.clickIcon();
-        bots.search.setInputText("chocolate");
-
-        bots.keyboard.pressEnter();
-
-        String msg = String.valueOf(context.getString(R.string.no_results));
-        bots.directory.assertMessageTextView(String.format(msg, "TEST_ROOT_0"));
-    }
-
-    @Suppress
-    public void testSearchResultsFound_ClearsOnBack() throws Exception {
-        bots.search.clickIcon();
-        bots.search.setInputText(fileName1);
-
-        bots.keyboard.pressEnter();
-        device.pressBack();
-        device.waitForIdle();
-
-        assertDefaultContentOfTestDir0();
-    }
-
-    @Suppress
-    public void testSearchNoResults_ClearsOnBack() throws Exception {
-        bots.search.clickIcon();
-        bots.search.setInputText("chocolate bunny");
-
-        bots.keyboard.pressEnter();
-        device.pressBack();
-        device.waitForIdle();
-
-        assertDefaultContentOfTestDir0();
-    }
-
-    @Suppress
-    public void testSearchResultsFound_ClearsOnDirectoryChange() throws Exception {
-        // Skipping this test for phones since currently there's no way to open the drawer on
-        // phones after doing a search (it's a back button instead of a hamburger button)
-        if (!bots.main.inFixedLayout()) {
-            return;
-        }
-
-        bots.search.clickIcon();
-
-        bots.search.setInputText(fileName1);
-
-        bots.keyboard.pressEnter();
-
-        bots.roots.openRoot(ROOT_1_ID);
-        device.waitForIdle();
-        assertDefaultContentOfTestDir1();
-
-        bots.roots.openRoot(ROOT_0_ID);
-        device.waitForIdle();
-
-        assertDefaultContentOfTestDir0();
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/StateTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/StateTest.java
deleted file mode 100644
index f057850..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/StateTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.documentsui.model.DocumentInfo;
-
-@SmallTest
-public class StateTest extends AndroidTestCase {
-
-    private static final DocumentInfo DIR_1;
-    private static final DocumentInfo DIR_2;
-
-    private State mState;
-
-    static {
-        DIR_1 = new DocumentInfo();
-        DIR_1.displayName = "firstDirectory";
-        DIR_2 = new DocumentInfo();
-        DIR_2.displayName = "secondDirectory";
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        mState = new State();
-    }
-
-    public void testInitialStateEmpty() {
-        assertFalse(mState.hasLocationChanged());
-    }
-
-    public void testPushDocument_ChangesLocation() {
-        mState.pushDocument(DIR_1);
-        mState.pushDocument(DIR_2);
-        assertTrue(mState.hasLocationChanged());
-    }
-
-    public void testPushDocument_ModifiesStack() {
-        mState.pushDocument(DIR_1);
-        mState.pushDocument(DIR_2);
-        assertEquals(DIR_2, mState.stack.getFirst());
-    }
-
-    public void testPopDocument_ModifiesStack() {
-        mState.pushDocument(DIR_1);
-        mState.pushDocument(DIR_2);
-        mState.popDocument();
-        assertEquals(DIR_1, mState.stack.getFirst());
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/StubProvider.java b/packages/DocumentsUI/tests/src/com/android/documentsui/StubProvider.java
deleted file mode 100644
index f71ce5d..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/StubProvider.java
+++ /dev/null
@@ -1,820 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.content.pm.ProviderInfo;
-import android.content.res.AssetFileDescriptor;
-import android.database.Cursor;
-import android.database.MatrixCursor;
-import android.database.MatrixCursor.RowBuilder;
-import android.graphics.Point;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.CancellationSignal;
-import android.os.FileUtils;
-import android.os.ParcelFileDescriptor;
-import android.provider.DocumentsContract;
-import android.provider.DocumentsContract.Document;
-import android.provider.DocumentsContract.Root;
-import android.provider.DocumentsProvider;
-import android.support.annotation.VisibleForTesting;
-import android.text.TextUtils;
-import android.util.Log;
-
-import libcore.io.IoUtils;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-public class StubProvider extends DocumentsProvider {
-
-    public static final String DEFAULT_AUTHORITY = "com.android.documentsui.stubprovider";
-    public static final String ROOT_0_ID = "TEST_ROOT_0";
-    public static final String ROOT_1_ID = "TEST_ROOT_1";
-
-    public static final String EXTRA_SIZE = "com.android.documentsui.stubprovider.SIZE";
-    public static final String EXTRA_ROOT = "com.android.documentsui.stubprovider.ROOT";
-    public static final String EXTRA_PATH = "com.android.documentsui.stubprovider.PATH";
-    public static final String EXTRA_STREAM_TYPES
-            = "com.android.documentsui.stubprovider.STREAM_TYPES";
-    public static final String EXTRA_CONTENT = "com.android.documentsui.stubprovider.CONTENT";
-
-    public static final String EXTRA_FLAGS = "com.android.documentsui.stubprovider.FLAGS";
-    public static final String EXTRA_PARENT_ID = "com.android.documentsui.stubprovider.PARENT";
-
-    private static final String TAG = "StubProvider";
-
-    private static final String STORAGE_SIZE_KEY = "documentsui.stubprovider.size";
-    private static int DEFAULT_ROOT_SIZE = 1024 * 1024 * 100; // 100 MB.
-
-    private static final String[] DEFAULT_ROOT_PROJECTION = new String[] {
-            Root.COLUMN_ROOT_ID, Root.COLUMN_FLAGS, Root.COLUMN_TITLE, Root.COLUMN_DOCUMENT_ID,
-            Root.COLUMN_AVAILABLE_BYTES
-    };
-    private static final String[] DEFAULT_DOCUMENT_PROJECTION = new String[] {
-            Document.COLUMN_DOCUMENT_ID, Document.COLUMN_MIME_TYPE, Document.COLUMN_DISPLAY_NAME,
-            Document.COLUMN_LAST_MODIFIED, Document.COLUMN_FLAGS, Document.COLUMN_SIZE,
-    };
-
-    private final Map<String, StubDocument> mStorage = new HashMap<>();
-    private final Map<String, RootInfo> mRoots = new HashMap<>();
-    private final Object mWriteLock = new Object();
-
-    private String mAuthority = DEFAULT_AUTHORITY;
-    private SharedPreferences mPrefs;
-    private Set<String> mSimulateReadErrorIds = new HashSet<>();
-
-    @Override
-    public void attachInfo(Context context, ProviderInfo info) {
-        mAuthority = info.authority;
-        super.attachInfo(context, info);
-    }
-
-    @Override
-    public boolean onCreate() {
-        clearCacheAndBuildRoots();
-        return true;
-    }
-
-    @VisibleForTesting
-    public void clearCacheAndBuildRoots() {
-        Log.d(TAG, "Resetting storage.");
-        removeChildrenRecursively(getContext().getCacheDir());
-        mStorage.clear();
-        mSimulateReadErrorIds.clear();
-
-        mPrefs = getContext().getSharedPreferences(
-                "com.android.documentsui.stubprovider.preferences", Context.MODE_PRIVATE);
-        Collection<String> rootIds = mPrefs.getStringSet("roots", null);
-        if (rootIds == null) {
-            rootIds = Arrays.asList(new String[] { ROOT_0_ID, ROOT_1_ID });
-        }
-
-        mRoots.clear();
-        for (String rootId : rootIds) {
-            // Make a subdir in the cache dir for each root.
-            final File file = new File(getContext().getCacheDir(), rootId);
-            if (file.mkdir()) {
-                Log.i(TAG, "Created new root directory @ " + file.getPath());
-            }
-            final RootInfo rootInfo = new RootInfo(file, getSize(rootId));
-
-            if(rootId.equals(ROOT_1_ID)) {
-                rootInfo.setSearchEnabled(false);
-            }
-
-            mStorage.put(rootInfo.document.documentId, rootInfo.document);
-            mRoots.put(rootId, rootInfo);
-        }
-    }
-
-    /**
-     * @return Storage size, in bytes.
-     */
-    private long getSize(String rootId) {
-        final String key = STORAGE_SIZE_KEY + "." + rootId;
-        return mPrefs.getLong(key, DEFAULT_ROOT_SIZE);
-    }
-
-    @Override
-    public Cursor queryRoots(String[] projection) throws FileNotFoundException {
-        final MatrixCursor result = new MatrixCursor(projection != null ? projection
-                : DEFAULT_ROOT_PROJECTION);
-        for (Map.Entry<String, RootInfo> entry : mRoots.entrySet()) {
-            final String id = entry.getKey();
-            final RootInfo info = entry.getValue();
-            final RowBuilder row = result.newRow();
-            row.add(Root.COLUMN_ROOT_ID, id);
-            row.add(Root.COLUMN_FLAGS, info.flags);
-            row.add(Root.COLUMN_TITLE, id);
-            row.add(Root.COLUMN_DOCUMENT_ID, info.document.documentId);
-            row.add(Root.COLUMN_AVAILABLE_BYTES, info.getRemainingCapacity());
-        }
-        return result;
-    }
-
-    @Override
-    public Cursor queryDocument(String documentId, String[] projection)
-            throws FileNotFoundException {
-        final MatrixCursor result = new MatrixCursor(projection != null ? projection
-                : DEFAULT_DOCUMENT_PROJECTION);
-        final StubDocument file = mStorage.get(documentId);
-        if (file == null) {
-            throw new FileNotFoundException();
-        }
-        includeDocument(result, file);
-        return result;
-    }
-
-    @Override
-    public boolean isChildDocument(String parentDocId, String docId) {
-        final StubDocument parentDocument = mStorage.get(parentDocId);
-        final StubDocument childDocument = mStorage.get(docId);
-        return FileUtils.contains(parentDocument.file, childDocument.file);
-    }
-
-    @Override
-    public String createDocument(String parentId, String mimeType, String displayName)
-            throws FileNotFoundException {
-        StubDocument parent = mStorage.get(parentId);
-        File file = createFile(parent, mimeType, displayName);
-
-        final StubDocument document = StubDocument.createRegularDocument(file, mimeType, parent);
-        mStorage.put(document.documentId, document);
-        Log.d(TAG, "Created document " + document.documentId);
-        notifyParentChanged(document.parentId);
-        getContext().getContentResolver().notifyChange(
-                DocumentsContract.buildDocumentUri(mAuthority, document.documentId),
-                null, false);
-
-        return document.documentId;
-    }
-
-    @Override
-    public void deleteDocument(String documentId)
-            throws FileNotFoundException {
-        final StubDocument document = mStorage.get(documentId);
-        final long fileSize = document.file.length();
-        if (document == null || !document.file.delete())
-            throw new FileNotFoundException();
-        synchronized (mWriteLock) {
-            document.rootInfo.size -= fileSize;
-            mStorage.remove(documentId);
-        }
-        Log.d(TAG, "Document deleted: " + documentId);
-        notifyParentChanged(document.parentId);
-        getContext().getContentResolver().notifyChange(
-                DocumentsContract.buildDocumentUri(mAuthority, document.documentId),
-                null, false);
-    }
-
-    @Override
-    public Cursor queryChildDocumentsForManage(String parentDocumentId, String[] projection,
-            String sortOrder) throws FileNotFoundException {
-        return queryChildDocuments(parentDocumentId, projection, sortOrder);
-    }
-
-    @Override
-    public Cursor queryChildDocuments(String parentDocumentId, String[] projection, String sortOrder)
-            throws FileNotFoundException {
-        final StubDocument parentDocument = mStorage.get(parentDocumentId);
-        if (parentDocument == null || parentDocument.file.isFile()) {
-            throw new FileNotFoundException();
-        }
-        final MatrixCursor result = new MatrixCursor(projection != null ? projection
-                : DEFAULT_DOCUMENT_PROJECTION);
-        result.setNotificationUri(getContext().getContentResolver(),
-                DocumentsContract.buildChildDocumentsUri(mAuthority, parentDocumentId));
-        StubDocument document;
-        for (File file : parentDocument.file.listFiles()) {
-            document = mStorage.get(getDocumentIdForFile(file));
-            if (document != null) {
-                includeDocument(result, document);
-            }
-        }
-        return result;
-    }
-
-    @Override
-    public Cursor queryRecentDocuments(String rootId, String[] projection)
-            throws FileNotFoundException {
-        final MatrixCursor result = new MatrixCursor(projection != null ? projection
-                : DEFAULT_DOCUMENT_PROJECTION);
-        return result;
-    }
-
-    @Override
-    public Cursor querySearchDocuments(String rootId, String query, String[] projection)
-            throws FileNotFoundException {
-
-        StubDocument parentDocument = mRoots.get(rootId).document;
-        if (parentDocument == null || parentDocument.file.isFile()) {
-            throw new FileNotFoundException();
-        }
-
-        final MatrixCursor result = new MatrixCursor(
-                projection != null ? projection : DEFAULT_DOCUMENT_PROJECTION);
-
-        for (File file : parentDocument.file.listFiles()) {
-            if (file.getName().toLowerCase().contains(query)) {
-                StubDocument document = mStorage.get(getDocumentIdForFile(file));
-                if (document != null) {
-                    includeDocument(result, document);
-                }
-            }
-        }
-        return result;
-    }
-
-    @Override
-    public String renameDocument(String documentId, String displayName)
-            throws FileNotFoundException {
-
-        StubDocument oldDoc = mStorage.get(documentId);
-
-        File before = oldDoc.file;
-        File after = new File(before.getParentFile(), displayName);
-
-        if (after.exists()) {
-            throw new IllegalStateException("Already exists " + after);
-        }
-
-        boolean result = before.renameTo(after);
-
-        if (!result) {
-            throw new IllegalStateException("Failed to rename to " + after);
-        }
-
-        StubDocument newDoc = StubDocument.createRegularDocument(after, oldDoc.mimeType,
-                mStorage.get(oldDoc.parentId));
-
-        mStorage.remove(documentId);
-        notifyParentChanged(oldDoc.parentId);
-        getContext().getContentResolver().notifyChange(
-                DocumentsContract.buildDocumentUri(mAuthority, oldDoc.documentId), null, false);
-
-        mStorage.put(newDoc.documentId, newDoc);
-        notifyParentChanged(newDoc.parentId);
-        getContext().getContentResolver().notifyChange(
-                DocumentsContract.buildDocumentUri(mAuthority, newDoc.documentId), null, false);
-
-        if (!TextUtils.equals(documentId, newDoc.documentId)) {
-            return newDoc.documentId;
-        } else {
-            return null;
-        }
-    }
-
-    @Override
-    public ParcelFileDescriptor openDocument(String docId, String mode, CancellationSignal signal)
-            throws FileNotFoundException {
-
-        final StubDocument document = mStorage.get(docId);
-        if (document == null || !document.file.isFile()) {
-            throw new FileNotFoundException();
-        }
-        if ((document.flags & Document.FLAG_VIRTUAL_DOCUMENT) != 0) {
-            throw new IllegalStateException("Tried to open a virtual file.");
-        }
-
-        if ("r".equals(mode)) {
-            if (mSimulateReadErrorIds.contains(docId)) {
-                Log.d(TAG, "Simulated errs enabled. Open in the wrong mode.");
-                return ParcelFileDescriptor.open(
-                        document.file, ParcelFileDescriptor.MODE_WRITE_ONLY);
-            }
-            return ParcelFileDescriptor.open(document.file, ParcelFileDescriptor.MODE_READ_ONLY);
-        }
-        if ("w".equals(mode)) {
-            return startWrite(document);
-        }
-
-        throw new FileNotFoundException();
-    }
-
-    @VisibleForTesting
-    public void simulateReadErrorsForFile(Uri uri) {
-        simulateReadErrorsForFile(DocumentsContract.getDocumentId(uri));
-    }
-
-    public void simulateReadErrorsForFile(String id) {
-        mSimulateReadErrorIds.add(id);
-    }
-
-    @Override
-    public AssetFileDescriptor openDocumentThumbnail(
-            String docId, Point sizeHint, CancellationSignal signal) throws FileNotFoundException {
-        throw new FileNotFoundException();
-    }
-
-    @Override
-    public AssetFileDescriptor openTypedDocument(
-            String docId, String mimeTypeFilter, Bundle opts, CancellationSignal signal)
-            throws FileNotFoundException {
-        final StubDocument document = mStorage.get(docId);
-        if (document == null || !document.file.isFile() || document.streamTypes == null) {
-            throw new FileNotFoundException();
-        }
-        for (final String mimeType : document.streamTypes) {
-            // Strict compare won't accept wildcards, but that's OK for tests, as DocumentsUI
-            // doesn't use them for getStreamTypes nor openTypedDocument.
-            if (mimeType.equals(mimeTypeFilter)) {
-                ParcelFileDescriptor pfd = ParcelFileDescriptor.open(
-                            document.file, ParcelFileDescriptor.MODE_READ_ONLY);
-                if (mSimulateReadErrorIds.contains(docId)) {
-                    pfd = new ParcelFileDescriptor(pfd) {
-                        @Override
-                        public void checkError() throws IOException {
-                            throw new IOException("Test error");
-                        }
-                    };
-                }
-                return new AssetFileDescriptor(pfd, 0, document.file.length());
-            }
-        }
-        throw new IllegalArgumentException("Invalid MIME type filter for openTypedDocument().");
-    }
-
-    @Override
-    public String[] getStreamTypes(Uri uri, String mimeTypeFilter) {
-        final StubDocument document = mStorage.get(DocumentsContract.getDocumentId(uri));
-        if (document == null) {
-            throw new IllegalArgumentException(
-                    "The provided Uri is incorrect, or the file is gone.");
-        }
-        if (!"*/*".equals(mimeTypeFilter)) {
-            // Not used by DocumentsUI, so don't bother implementing it.
-            throw new UnsupportedOperationException();
-        }
-        if (document.streamTypes == null) {
-            return null;
-        }
-        return document.streamTypes.toArray(new String[document.streamTypes.size()]);
-    }
-
-    private ParcelFileDescriptor startWrite(final StubDocument document)
-            throws FileNotFoundException {
-        ParcelFileDescriptor[] pipe;
-        try {
-            pipe = ParcelFileDescriptor.createReliablePipe();
-        } catch (IOException exception) {
-            throw new FileNotFoundException();
-        }
-        final ParcelFileDescriptor readPipe = pipe[0];
-        final ParcelFileDescriptor writePipe = pipe[1];
-
-        new Thread() {
-            @Override
-            public void run() {
-                InputStream inputStream = null;
-                OutputStream outputStream = null;
-                try {
-                    Log.d(TAG, "Opening write stream on file " + document.documentId);
-                    inputStream = new ParcelFileDescriptor.AutoCloseInputStream(readPipe);
-                    outputStream = new FileOutputStream(document.file);
-                    byte[] buffer = new byte[32 * 1024];
-                    int bytesToRead;
-                    int bytesRead = 0;
-                    while (bytesRead != -1) {
-                        synchronized (mWriteLock) {
-                            // This cast is safe because the max possible value is buffer.length.
-                            bytesToRead = (int) Math.min(document.rootInfo.getRemainingCapacity(),
-                                    buffer.length);
-                            if (bytesToRead == 0) {
-                                closePipeWithErrorSilently(readPipe, "Not enough space.");
-                                break;
-                            }
-                            bytesRead = inputStream.read(buffer, 0, bytesToRead);
-                            if (bytesRead == -1) {
-                                break;
-                            }
-                            outputStream.write(buffer, 0, bytesRead);
-                            document.rootInfo.size += bytesRead;
-                        }
-                    }
-                } catch (IOException e) {
-                    Log.e(TAG, "Error on close", e);
-                    closePipeWithErrorSilently(readPipe, e.getMessage());
-                } finally {
-                    IoUtils.closeQuietly(inputStream);
-                    IoUtils.closeQuietly(outputStream);
-                    Log.d(TAG, "Closing write stream on file " + document.documentId);
-                    notifyParentChanged(document.parentId);
-                    getContext().getContentResolver().notifyChange(
-                            DocumentsContract.buildDocumentUri(mAuthority, document.documentId),
-                            null, false);
-                }
-            }
-        }.start();
-
-        return writePipe;
-    }
-
-    private void closePipeWithErrorSilently(ParcelFileDescriptor pipe, String error) {
-        try {
-            pipe.closeWithError(error);
-        } catch (IOException ignore) {
-        }
-    }
-
-    @Override
-    public Bundle call(String method, String arg, Bundle extras) {
-        // We're not supposed to override any of the default DocumentsProvider
-        // methods that are supported by "call", so javadoc asks that we
-        // always call super.call first and return if response is not null.
-        Bundle result = super.call(method, arg, extras);
-        if (result != null) {
-            return result;
-        }
-
-        switch (method) {
-            case "clear":
-                clearCacheAndBuildRoots();
-                return null;
-            case "configure":
-                configure(arg, extras);
-                return null;
-            case "createVirtualFile":
-                return createVirtualFileFromBundle(extras);
-            case "simulateReadErrorsForFile":
-                simulateReadErrorsForFile(arg);
-                return null;
-            case "createDocumentWithFlags":
-                return dispatchCreateDocumentWithFlags(extras);
-        }
-
-        return null;
-    }
-
-    private Bundle createVirtualFileFromBundle(Bundle extras) {
-        try {
-            Uri uri = createVirtualFile(
-                    extras.getString(EXTRA_ROOT),
-                    extras.getString(EXTRA_PATH),
-                    extras.getString(Document.COLUMN_MIME_TYPE),
-                    extras.getStringArrayList(EXTRA_STREAM_TYPES),
-                    extras.getByteArray(EXTRA_CONTENT));
-
-            String documentId = DocumentsContract.getDocumentId(uri);
-            Bundle result = new Bundle();
-            result.putString(Document.COLUMN_DOCUMENT_ID, documentId);
-            return result;
-        } catch (IOException e) {
-            Log.e(TAG, "Couldn't create virtual file.");
-        }
-
-        return null;
-    }
-
-    private Bundle dispatchCreateDocumentWithFlags(Bundle extras) {
-        String rootId = extras.getString(EXTRA_PARENT_ID);
-        String mimeType = extras.getString(Document.COLUMN_MIME_TYPE);
-        String name = extras.getString(Document.COLUMN_DISPLAY_NAME);
-        List<String> streamTypes = extras.getStringArrayList(EXTRA_STREAM_TYPES);
-        int flags = extras.getInt(EXTRA_FLAGS);
-
-        Bundle out = new Bundle();
-        String documentId = null;
-        try {
-            documentId = createDocument(rootId, mimeType, name, flags, streamTypes);
-            Uri uri = DocumentsContract.buildDocumentUri(mAuthority, documentId);
-            out.putParcelable(DocumentsContract.EXTRA_URI, uri);
-        } catch (FileNotFoundException e) {
-            Log.d(TAG, "Creating document with flags failed" + name);
-        }
-        return out;
-    }
-
-    public String createDocument(String parentId, String mimeType, String displayName, int flags,
-            List<String> streamTypes) throws FileNotFoundException {
-
-        StubDocument parent = mStorage.get(parentId);
-        File file = createFile(parent, mimeType, displayName);
-
-        final StubDocument document = StubDocument.createDocumentWithFlags(file, mimeType, parent,
-                flags, streamTypes);
-        mStorage.put(document.documentId, document);
-        Log.d(TAG, "Created document " + document.documentId);
-        notifyParentChanged(document.parentId);
-        getContext().getContentResolver().notifyChange(
-                DocumentsContract.buildDocumentUri(mAuthority, document.documentId),
-                null, false);
-
-        return document.documentId;
-    }
-
-    private File createFile(StubDocument parent, String mimeType, String displayName)
-            throws FileNotFoundException {
-        if (parent == null) {
-            throw new IllegalArgumentException(
-                    "Can't create file " + displayName + " in null parent.");
-        }
-        if (!parent.file.isDirectory()) {
-            throw new IllegalArgumentException(
-                    "Can't create file " + displayName + " inside non-directory parent "
-                            + parent.file.getName());
-        }
-
-        final File file = new File(parent.file, displayName);
-        if (file.exists()) {
-            throw new FileNotFoundException(
-                    "Duplicate file names not supported for " + file);
-        }
-
-        if (mimeType.equals(Document.MIME_TYPE_DIR)) {
-            if (!file.mkdirs()) {
-                throw new FileNotFoundException("Failed to create directory(s): " + file);
-            }
-            Log.i(TAG, "Created new directory: " + file);
-        } else {
-            boolean created = false;
-            try {
-                created = file.createNewFile();
-            } catch (IOException e) {
-                // We'll throw an FNF exception later :)
-                Log.e(TAG, "createNewFile operation failed for file: " + file, e);
-            }
-            if (!created) {
-                throw new FileNotFoundException("createNewFile operation failed for: " + file);
-            }
-            Log.i(TAG, "Created new file: " + file);
-        }
-        return file;
-    }
-
-    private void configure(String arg, Bundle extras) {
-        Log.d(TAG, "Configure " + arg);
-        String rootName = extras.getString(EXTRA_ROOT, ROOT_0_ID);
-        long rootSize = extras.getLong(EXTRA_SIZE, 1) * 1024 * 1024;
-        setSize(rootName, rootSize);
-    }
-
-    private void notifyParentChanged(String parentId) {
-        getContext().getContentResolver().notifyChange(
-                DocumentsContract.buildChildDocumentsUri(mAuthority, parentId), null, false);
-        // Notify also about possible change in remaining space on the root.
-        getContext().getContentResolver().notifyChange(DocumentsContract.buildRootsUri(mAuthority),
-                null, false);
-    }
-
-    private void includeDocument(MatrixCursor result, StubDocument document) {
-        final RowBuilder row = result.newRow();
-        row.add(Document.COLUMN_DOCUMENT_ID, document.documentId);
-        row.add(Document.COLUMN_DISPLAY_NAME, document.file.getName());
-        row.add(Document.COLUMN_SIZE, document.file.length());
-        row.add(Document.COLUMN_MIME_TYPE, document.mimeType);
-        row.add(Document.COLUMN_FLAGS, document.flags);
-        row.add(Document.COLUMN_LAST_MODIFIED, document.file.lastModified());
-    }
-
-    private void removeChildrenRecursively(File file) {
-        for (File childFile : file.listFiles()) {
-            if (childFile.isDirectory()) {
-                removeChildrenRecursively(childFile);
-            }
-            childFile.delete();
-        }
-    }
-
-    public void setSize(String rootId, long rootSize) {
-        RootInfo root = mRoots.get(rootId);
-        if (root != null) {
-            final String key = STORAGE_SIZE_KEY + "." + rootId;
-            Log.d(TAG, "Set size of " + key + " : " + rootSize);
-
-            // Persist the size.
-            SharedPreferences.Editor editor = mPrefs.edit();
-            editor.putLong(key, rootSize);
-            editor.apply();
-            // Apply the size in the current instance of this provider.
-            root.capacity = rootSize;
-            getContext().getContentResolver().notifyChange(
-                    DocumentsContract.buildRootsUri(mAuthority),
-                    null, false);
-        } else {
-            Log.e(TAG, "Attempt to configure non-existent root: " + rootId);
-        }
-    }
-
-    @VisibleForTesting
-    public Uri createRegularFile(String rootId, String path, String mimeType, byte[] content)
-            throws FileNotFoundException, IOException {
-        final File file = createFile(rootId, path, mimeType, content);
-        final StubDocument parent = mStorage.get(getDocumentIdForFile(file.getParentFile()));
-        if (parent == null) {
-            throw new FileNotFoundException("Parent not found.");
-        }
-        final StubDocument document = StubDocument.createRegularDocument(file, mimeType, parent);
-        mStorage.put(document.documentId, document);
-        return DocumentsContract.buildDocumentUri(mAuthority, document.documentId);
-    }
-
-    @VisibleForTesting
-    public Uri createVirtualFile(
-            String rootId, String path, String mimeType, List<String> streamTypes, byte[] content)
-            throws FileNotFoundException, IOException {
-
-        final File file = createFile(rootId, path, mimeType, content);
-        final StubDocument parent = mStorage.get(getDocumentIdForFile(file.getParentFile()));
-        if (parent == null) {
-            throw new FileNotFoundException("Parent not found.");
-        }
-        final StubDocument document = StubDocument.createVirtualDocument(
-                file, mimeType, streamTypes, parent);
-        mStorage.put(document.documentId, document);
-        return DocumentsContract.buildDocumentUri(mAuthority, document.documentId);
-    }
-
-    @VisibleForTesting
-    public File getFile(String rootId, String path) throws FileNotFoundException {
-        StubDocument root = mRoots.get(rootId).document;
-        if (root == null) {
-            throw new FileNotFoundException("No roots with the ID " + rootId + " were found");
-        }
-        // Convert the path string into a path that's relative to the root.
-        File needle = new File(root.file, path.substring(1));
-
-        StubDocument found = mStorage.get(getDocumentIdForFile(needle));
-        if (found == null) {
-            return null;
-        }
-        return found.file;
-    }
-
-    private File createFile(String rootId, String path, String mimeType, byte[] content)
-            throws FileNotFoundException, IOException {
-        Log.d(TAG, "Creating test file " + rootId + " : " + path);
-        StubDocument root = mRoots.get(rootId).document;
-        if (root == null) {
-            throw new FileNotFoundException("No roots with the ID " + rootId + " were found");
-        }
-        final File file = new File(root.file, path.substring(1));
-        if (DocumentsContract.Document.MIME_TYPE_DIR.equals(mimeType)) {
-            if (!file.mkdirs()) {
-                throw new FileNotFoundException("Couldn't create directory " + file.getPath());
-            }
-        } else {
-            if (!file.createNewFile()) {
-                throw new FileNotFoundException("Couldn't create file " + file.getPath());
-            }
-            try (final FileOutputStream fout = new FileOutputStream(file)) {
-                fout.write(content);
-            }
-        }
-        return file;
-    }
-
-    final static class RootInfo {
-        private static final int DEFAULT_ROOTS_FLAGS = Root.FLAG_SUPPORTS_SEARCH
-                | Root.FLAG_SUPPORTS_CREATE | Root.FLAG_SUPPORTS_IS_CHILD;
-
-        public final String name;
-        public final StubDocument document;
-        public long capacity;
-        public long size;
-        public int flags;
-
-        RootInfo(File file, long capacity) {
-            this.name = file.getName();
-            this.capacity = 1024 * 1024;
-            this.flags = DEFAULT_ROOTS_FLAGS;
-            this.capacity = capacity;
-            this.size = 0;
-            this.document = StubDocument.createRootDocument(file, this);
-        }
-
-        public long getRemainingCapacity() {
-            return capacity - size;
-        }
-
-        public void setSearchEnabled(boolean enabled) {
-            flags = enabled ? (flags | Root.FLAG_SUPPORTS_SEARCH)
-                    : (flags & ~Root.FLAG_SUPPORTS_SEARCH);
-        }
-
-    }
-
-    final static class StubDocument {
-        public final File file;
-        public final String documentId;
-        public final String mimeType;
-        public final List<String> streamTypes;
-        public final int flags;
-        public final String parentId;
-        public final RootInfo rootInfo;
-
-        private StubDocument(File file, String mimeType, List<String> streamTypes, int flags,
-                StubDocument parent) {
-            this.file = file;
-            this.documentId = getDocumentIdForFile(file);
-            this.mimeType = mimeType;
-            this.streamTypes = streamTypes;
-            this.flags = flags;
-            this.parentId = parent.documentId;
-            this.rootInfo = parent.rootInfo;
-        }
-
-        private StubDocument(File file, RootInfo rootInfo) {
-            this.file = file;
-            this.documentId = getDocumentIdForFile(file);
-            this.mimeType = Document.MIME_TYPE_DIR;
-            this.streamTypes = new ArrayList<String>();
-            this.flags = Document.FLAG_DIR_SUPPORTS_CREATE | Document.FLAG_SUPPORTS_RENAME;
-            this.parentId = null;
-            this.rootInfo = rootInfo;
-        }
-
-        public static StubDocument createRootDocument(File file, RootInfo rootInfo) {
-            return new StubDocument(file, rootInfo);
-        }
-
-        public static StubDocument createRegularDocument(
-                File file, String mimeType, StubDocument parent) {
-            int flags = Document.FLAG_SUPPORTS_DELETE | Document.FLAG_SUPPORTS_RENAME;
-            if (file.isDirectory()) {
-                flags |= Document.FLAG_DIR_SUPPORTS_CREATE;
-            } else {
-                flags |= Document.FLAG_SUPPORTS_WRITE;
-            }
-            return new StubDocument(file, mimeType, new ArrayList<String>(), flags, parent);
-        }
-
-        public static StubDocument createDocumentWithFlags(
-                File file, String mimeType, StubDocument parent, int flags,
-                List<String> streamTypes) {
-            return new StubDocument(file, mimeType, streamTypes, flags, parent);
-        }
-
-        public static StubDocument createVirtualDocument(
-                File file, String mimeType, List<String> streamTypes, StubDocument parent) {
-            int flags = Document.FLAG_SUPPORTS_DELETE | Document.FLAG_SUPPORTS_WRITE
-                    | Document.FLAG_VIRTUAL_DOCUMENT;
-            return new StubDocument(file, mimeType, streamTypes, flags, parent);
-        }
-
-        @Override
-        public String toString() {
-            return "StubDocument{"
-                    + "path:" + file.getPath()
-                    + ", documentId:" + documentId
-                    + ", mimeType:" + mimeType
-                    + ", streamTypes:" + streamTypes.toString()
-                    + ", flags:" + flags
-                    + ", parentId:" + parentId
-                    + ", rootInfo:" + rootInfo
-                    + "}";
-        }
-    }
-
-    private static String getDocumentIdForFile(File file) {
-        return file.getAbsolutePath();
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/TestInputEvent.java b/packages/DocumentsUI/tests/src/com/android/documentsui/TestInputEvent.java
deleted file mode 100644
index e6936d6..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/TestInputEvent.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package com.android.documentsui;
-
-import android.graphics.Point;
-import android.support.v7.widget.RecyclerView;
-
-public class TestInputEvent implements Events.InputEvent {
-
-    public boolean mouseEvent;
-    public boolean primaryButtonPressed;
-    public boolean secondaryButtonPressed;
-    public boolean shiftKeyDow;
-    public boolean actionDown;
-    public boolean actionUp;
-    public Point location;
-    public Point rawLocation;
-    public int position = Integer.MIN_VALUE;
-
-    public TestInputEvent() {}
-
-    public TestInputEvent(int position) {
-        this.position = position;
-    }
-
-    @Override
-    public boolean isMouseEvent() {
-        return mouseEvent;
-    }
-
-    @Override
-    public boolean isPrimaryButtonPressed() {
-        return primaryButtonPressed;
-    }
-
-    @Override
-    public boolean isSecondaryButtonPressed() {
-        return secondaryButtonPressed;
-    }
-
-    @Override
-    public boolean isShiftKeyDown() {
-        return shiftKeyDow;
-    }
-
-    @Override
-    public boolean isActionDown() {
-        return actionDown;
-    }
-
-    @Override
-    public boolean isActionUp() {
-        return actionUp;
-    }
-
-    @Override
-    public Point getOrigin() {
-        return location;
-    }
-
-    @Override
-    public float getX() {
-        return location.x;
-    }
-
-    @Override
-    public float getY() {
-        return location.y;
-    }
-
-    @Override
-    public float getRawX() {
-        return rawLocation.x;
-    }
-
-    @Override
-    public float getRawY() {
-        return rawLocation.y;
-    }
-
-    @Override
-    public boolean isOverItem() {
-        return position != Integer.MIN_VALUE && position != RecyclerView.NO_POSITION;
-    }
-
-    @Override
-    public int getItemPosition() {
-        return position;
-    }
-
-    @Override
-    public void close() {}
-
-    public static TestInputEvent tap(int position) {
-        return new TestInputEvent(position);
-    }
-
-    public static TestInputEvent shiftTap(int position) {
-        TestInputEvent e = new TestInputEvent(position);
-        e.shiftKeyDow = true;
-        return e;
-    }
-
-    public static TestInputEvent click(int position) {
-        TestInputEvent e = new TestInputEvent(position);
-        e.mouseEvent = true;
-        return e;
-    }
-
-    public static TestInputEvent shiftClick(int position) {
-        TestInputEvent e = new TestInputEvent(position);
-        e.mouseEvent = true;
-        e.shiftKeyDow = true;
-        return e;
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/ThumbnailCacheTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/ThumbnailCacheTest.java
deleted file mode 100644
index ee6ab01..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/ThumbnailCacheTest.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-
-import android.content.ComponentCallbacks2;
-import android.graphics.Bitmap;
-import android.graphics.Point;
-import android.net.Uri;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
-
-import com.android.documentsui.ThumbnailCache.Result;
-import com.android.documentsui.testing.Bitmaps;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class ThumbnailCacheTest {
-
-    private static final Uri URI_0 = Uri.parse("content://authority/document/0");
-    private static final Uri URI_1 = Uri.parse("content://authority/document/1");
-
-    private static final Point SMALL_SIZE = new Point(1, 1);
-    private static final Point MID_SIZE = new Point(2, 2);
-    private static final Point LARGE_SIZE = new Point(3, 3);
-
-    private static final Bitmap SMALL_BITMAP = Bitmaps.createTestBitmap(1, 1);
-    private static final Bitmap MIDSIZE_BITMAP = Bitmaps.createTestBitmap(2, 2);
-    private static final Bitmap LARGE_BITMAP = Bitmaps.createTestBitmap(3, 3);
-
-    private static final long LAST_MODIFIED = 100;
-
-    private static final int CACHE_SIZE_LIMIT =
-            MIDSIZE_BITMAP.getByteCount() + LARGE_BITMAP.getByteCount();
-
-    private ThumbnailCache mCache;
-
-    @Before
-    public void setUp() {
-        mCache = new ThumbnailCache(CACHE_SIZE_LIMIT);
-    }
-
-    @Test
-    public void testMiss() {
-        mCache.putThumbnail(URI_0, MID_SIZE, MIDSIZE_BITMAP, LAST_MODIFIED);
-
-        Result result = mCache.getThumbnail(URI_1, MID_SIZE);
-
-        assertMiss(result);
-    }
-
-    @Test
-    public void testHit_Exact() {
-        mCache.putThumbnail(URI_0, MID_SIZE, MIDSIZE_BITMAP, LAST_MODIFIED);
-
-        Result result = mCache.getThumbnail(URI_0, MID_SIZE);
-
-        assertHitExact(result);
-        assertSame(MIDSIZE_BITMAP, result.getThumbnail());
-    }
-
-    @Test
-    public void testHit_Smaller() {
-        mCache.putThumbnail(URI_0, MID_SIZE, MIDSIZE_BITMAP, LAST_MODIFIED);
-
-        Result result = mCache.getThumbnail(URI_0, LARGE_SIZE);
-
-        assertHitSmaller(result);
-        assertSame(MIDSIZE_BITMAP, result.getThumbnail());
-    }
-
-    @Test
-    public void testHit_Larger() {
-        mCache.putThumbnail(URI_0, MID_SIZE, MIDSIZE_BITMAP, LAST_MODIFIED);
-
-        Result result = mCache.getThumbnail(URI_0, SMALL_SIZE);
-
-        assertHitLarger(result);
-        assertSame(MIDSIZE_BITMAP, result.getThumbnail());
-    }
-
-    @Test
-    public void testHit_Larger_HasBothSize() {
-        mCache.putThumbnail(URI_0, LARGE_SIZE, LARGE_BITMAP, LAST_MODIFIED);
-        mCache.putThumbnail(URI_0, SMALL_SIZE, SMALL_BITMAP, LAST_MODIFIED);
-
-        Result result = mCache.getThumbnail(URI_0, MID_SIZE);
-
-        assertHitLarger(result);
-        assertSame(LARGE_BITMAP, result.getThumbnail());
-    }
-
-    @Test
-    public void testHit_Exact_MultiplePut() {
-        mCache.putThumbnail(URI_0, MID_SIZE, MIDSIZE_BITMAP, LAST_MODIFIED);
-
-        Bitmap localBitmap = Bitmaps.createTestBitmap(MID_SIZE.x, MID_SIZE.y);
-        long localLastModified = LAST_MODIFIED + 100;
-        mCache.putThumbnail(URI_0, MID_SIZE, localBitmap, localLastModified);
-
-        Result result = mCache.getThumbnail(URI_0, MID_SIZE);
-
-        assertHitExact(result);
-        assertSame(localBitmap, result.getThumbnail());
-    }
-
-    @Test
-    public void testHit_EqualLastModified() {
-        mCache.putThumbnail(URI_0, MID_SIZE, MIDSIZE_BITMAP, LAST_MODIFIED);
-
-        Result result = mCache.getThumbnail(URI_0, MID_SIZE);
-
-        assertEquals(LAST_MODIFIED, result.getLastModified());
-    }
-
-    @Test
-    public void testEvictOldest_SizeExceeded() {
-        mCache.putThumbnail(URI_0, MID_SIZE, MIDSIZE_BITMAP, LAST_MODIFIED);
-        mCache.putThumbnail(URI_1, SMALL_SIZE, SMALL_BITMAP, LAST_MODIFIED);
-        mCache.putThumbnail(URI_1, LARGE_SIZE, LARGE_BITMAP, LAST_MODIFIED);
-
-        Result result = mCache.getThumbnail(URI_0, MID_SIZE);
-
-        assertMiss(result);
-    }
-
-    @Test
-    public void testCacheShrink_OnTrimMemory_Moderate() {
-        mCache.putThumbnail(URI_0, MID_SIZE, MIDSIZE_BITMAP, LAST_MODIFIED);
-        mCache.putThumbnail(URI_0, SMALL_SIZE, SMALL_BITMAP, LAST_MODIFIED);
-        mCache.putThumbnail(URI_0, LARGE_SIZE, LARGE_BITMAP, LAST_MODIFIED);
-
-        mCache.onTrimMemory(ComponentCallbacks2.TRIM_MEMORY_MODERATE);
-
-        Result result = mCache.getThumbnail(URI_0, MID_SIZE);
-        assertMiss(result);
-    }
-
-    @Test
-    public void testCacheShrink_OnTrimMemory_Background() {
-        mCache.putThumbnail(URI_0, LARGE_SIZE, LARGE_BITMAP, LAST_MODIFIED);
-        mCache.putThumbnail(URI_0, SMALL_SIZE, SMALL_BITMAP, LAST_MODIFIED);
-
-        mCache.onTrimMemory(ComponentCallbacks2.TRIM_MEMORY_BACKGROUND);
-
-        // Math here (size of each pixel omitted):
-        // Limit = midSize + largeSize = 2 * 2 + 3 * 3 = 13, so after all putThumbnail the cache is
-        // full.
-        //
-        // HalfLimit = Limit / 2 = 5. After evicting largeSize bitmap, cache size decreases to 4,
-        // which is smaller than 5. Then smallSize bitmap remains.
-        Result result = mCache.getThumbnail(URI_0, MID_SIZE);
-        assertHitSmaller(result);
-        assertSame(SMALL_BITMAP, result.getThumbnail());
-    }
-
-    @Test
-    public void testRemoveUri() {
-        mCache.putThumbnail(URI_0, MID_SIZE, MIDSIZE_BITMAP, LAST_MODIFIED);
-        mCache.putThumbnail(URI_0, SMALL_SIZE, SMALL_BITMAP, LAST_MODIFIED);
-        mCache.putThumbnail(URI_1, MID_SIZE, MIDSIZE_BITMAP, LAST_MODIFIED);
-
-        mCache.removeUri(URI_0);
-
-        assertMiss(mCache.getThumbnail(URI_0, MID_SIZE));
-        assertHitExact(mCache.getThumbnail(URI_1, MID_SIZE));
-    }
-
-    private static void assertMiss(Result result) {
-        assertEquals(Result.CACHE_MISS, result.getStatus());
-        assertFalse(result.isExactHit());
-        assertFalse(result.isHit());
-    }
-
-    private static void assertHitExact(Result result) {
-        assertEquals(Result.CACHE_HIT_EXACT, result.getStatus());
-        assertTrue(result.isExactHit());
-        assertTrue(result.isHit());
-    }
-
-    private static void assertHitSmaller(Result result) {
-        assertEquals(Result.CACHE_HIT_SMALLER, result.getStatus());
-        assertFalse(result.isExactHit());
-        assertTrue(result.isHit());
-    }
-
-    private static void assertHitLarger(Result result) {
-        assertEquals(Result.CACHE_HIT_LARGER, result.getStatus());
-        assertFalse(result.isExactHit());
-        assertTrue(result.isHit());
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/bots/Bots.java b/packages/DocumentsUI/tests/src/com/android/documentsui/bots/Bots.java
deleted file mode 100644
index 4bda531..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/bots/Bots.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.bots;
-
-import static junit.framework.Assert.assertNotNull;
-
-import android.content.Context;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.BySelector;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject;
-import android.support.test.uiautomator.UiObject2;
-import android.support.test.uiautomator.UiSelector;
-import android.support.test.uiautomator.Until;
-
-/**
- * Handy collection of bots for working with Files app.
- */
-public final class Bots {
-
-    private static final int TIMEOUT = 5000;
-
-    public final BreadBot breadcrumb;
-    public final DirectoryListBot directory;
-    public final KeyboardBot keyboard;
-    public final RootsListBot roots;
-    public final SearchBot search;
-    public final UiBot main;
-
-    public Bots(UiDevice device, Context context, int timeout) {
-        main = new UiBot(device, context, TIMEOUT);
-        breadcrumb = new BreadBot(device, context, TIMEOUT, main);
-        roots = new RootsListBot(device, context, TIMEOUT);
-        directory = new DirectoryListBot(device, context, TIMEOUT);
-        keyboard = new KeyboardBot(device, context, TIMEOUT);
-        search = new SearchBot(device, context, TIMEOUT);
-    }
-
-    /**
-     * A test helper class that provides support for controlling directory list
-     * and making assertions against the state of it.
-     */
-    static abstract class BaseBot {
-        final UiDevice mDevice;
-        final Context mContext;
-        final int mTimeout;
-
-        BaseBot(UiDevice device, Context context, int timeout) {
-            mDevice = device;
-            mContext = context;
-            mTimeout = timeout;
-        }
-
-        /**
-         * Asserts that the specified view or one of its descendents has focus.
-         */
-        protected void assertHasFocus(String resourceName) {
-            UiObject2 candidate = mDevice.findObject(By.res(resourceName));
-            assertNotNull("Expected " + resourceName + " to have focus, but it didn't.",
-                candidate.findObject(By.focused(true)));
-        }
-
-        protected UiObject2 find(BySelector selector) {
-            mDevice.wait(Until.findObject(selector), mTimeout);
-            return mDevice.findObject(selector);
-        }
-
-        protected UiObject findObject(String resourceId) {
-            final UiSelector object = new UiSelector().resourceId(resourceId);
-            return mDevice.findObject(object);
-        }
-
-        protected UiObject findObject(String parentResourceId, String childResourceId) {
-            final UiSelector selector = new UiSelector()
-                    .resourceId(parentResourceId)
-                    .childSelector(new UiSelector().resourceId(childResourceId));
-            return mDevice.findObject(selector);
-        }
-
-        protected void waitForIdle() {
-            mDevice.waitForIdle(mTimeout);
-        }
-    }
-
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/bots/BreadBot.java b/packages/DocumentsUI/tests/src/com/android/documentsui/bots/BreadBot.java
deleted file mode 100644
index 2683e6c..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/bots/BreadBot.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.bots;
-
-import static android.support.test.espresso.Espresso.onView;
-import static android.support.test.espresso.action.ViewActions.click;
-import static android.support.test.espresso.assertion.ViewAssertions.matches;
-import static android.support.test.espresso.matcher.ViewMatchers.isAssignableFrom;
-import static android.support.test.espresso.matcher.ViewMatchers.withId;
-import static android.support.test.espresso.matcher.ViewMatchers.withText;
-import static org.hamcrest.CoreMatchers.allOf;
-import static org.hamcrest.CoreMatchers.anyOf;
-import static org.hamcrest.CoreMatchers.is;
-
-import android.content.Context;
-import android.support.test.espresso.ViewInteraction;
-import android.support.test.espresso.matcher.BoundedMatcher;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObjectNotFoundException;
-import android.view.View;
-
-import com.android.documentsui.DragOverTextView;
-import com.android.documentsui.DropdownBreadcrumb;
-import com.android.documentsui.R;
-import com.android.documentsui.model.DocumentInfo;
-
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.function.Predicate;
-
-import junit.framework.Assert;
-
-/**
- * A test helper class that provides support for controlling the UI Breadcrumb
- * programmatically, and making assertions against the state of the UI.
- * <p>
- * Support for working directly with Roots and Directory view can be found in the respective bots.
- */
-public class BreadBot extends Bots.BaseBot {
-
-    public static final String TARGET_PKG = "com.android.documentsui";
-
-    private static final Matcher<View> DROPDOWN_BREADCRUMB = withId(
-            R.id.dropdown_breadcrumb);
-
-    private static final Matcher<View> HORIZONTAL_BREADCRUMB = withId(
-            R.id.horizontal_breadcrumb);
-
-    // When any 'ol breadcrumb will do. Could be dropdown or horizontal.
-    @SuppressWarnings("unchecked")
-    private static final Matcher<View> BREADCRUMB = anyOf(
-            DROPDOWN_BREADCRUMB, HORIZONTAL_BREADCRUMB);
-
-    private UiBot mMain;
-
-    public BreadBot(UiDevice device, Context context, int timeout, UiBot main) {
-        super(device, context, timeout);
-        mMain = main;
-    }
-
-    public void assertTitle(String expected) {
-        // There is no discrete title part on the horizontal breadcrumb...
-        // so we only test on dropdown.
-        if (mMain.inDrawerLayout()) {
-            Matcher<Object> titleMatcher = dropdownTitleMatcher(expected);
-            onView(BREADCRUMB)
-                    .check(matches(titleMatcher));
-        }
-    }
-
-    /**
-     * Reveals the bread crumb if it was hidden. This will likely be the case
-     * when the app is in drawer mode.
-     */
-    public void revealAsNeeded() throws Exception {
-        if (mMain.inDrawerLayout()) {
-            onView(DROPDOWN_BREADCRUMB).perform(click());
-        }
-    }
-
-    public void clickItem(String label) throws UiObjectNotFoundException {
-        if (mMain.inFixedLayout()) {
-            findHorizontalEntry(label).perform(click());
-        } else {
-            mMain.findMenuWithName(label).click();
-        }
-    }
-
-    public void assertItemsPresent(String... items) {
-        Predicate<String> checker = mMain.inFixedLayout()
-                    ? this::hasHorizontalEntry
-                    : mMain::hasMenuWithName;
-
-        assertItemsPresent(items, checker);
-    }
-
-    public void assertItemsPresent(String[] items, Predicate<String> predicate) {
-        List<String> absent = new ArrayList<>();
-        for (String item : items) {
-            if (!predicate.test(item)) {
-                absent.add(item);
-            }
-        }
-        if (!absent.isEmpty()) {
-            Assert.fail("Expected iteams " + Arrays.asList(items)
-                    + ", but missing " + absent);
-        }
-    }
-
-    public boolean hasHorizontalEntry(String label) {
-        return Matchers.present(findHorizontalEntry(label), withText(label));
-    }
-
-    @SuppressWarnings("unchecked")
-    public ViewInteraction findHorizontalEntry(String label) {
-        return onView(allOf(isAssignableFrom(DragOverTextView.class), withText(label)));
-    }
-
-    private static Matcher<Object> dropdownTitleMatcher(String expected) {
-        final Matcher<String> textMatcher = is(expected);
-        return new BoundedMatcher<Object, DropdownBreadcrumb>(DropdownBreadcrumb.class) {
-            @Override
-            public boolean matchesSafely(DropdownBreadcrumb breadcrumb) {
-                DocumentInfo selectedDoc = (DocumentInfo) breadcrumb.getSelectedItem();
-                return textMatcher.matches(selectedDoc.displayName);
-            }
-
-            @Override
-            public void describeTo(Description description) {
-                description.appendText("with breadcrumb title: ");
-                textMatcher.describeTo(description);
-            }
-        };
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/bots/DirectoryListBot.java b/packages/DocumentsUI/tests/src/com/android/documentsui/bots/DirectoryListBot.java
deleted file mode 100644
index fa1e09c..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/bots/DirectoryListBot.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.bots;
-
-import static junit.framework.Assert.assertEquals;
-import static junit.framework.Assert.assertNotNull;
-import static junit.framework.Assert.assertTrue;
-
-import android.content.Context;
-import android.support.test.espresso.Espresso;
-import android.support.test.espresso.matcher.ViewMatchers;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.BySelector;
-import android.support.test.uiautomator.Configurator;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject;
-import android.support.test.uiautomator.UiObject2;
-import android.support.test.uiautomator.UiObjectNotFoundException;
-import android.support.test.uiautomator.UiSelector;
-import android.support.test.uiautomator.Until;
-import android.support.v7.widget.RecyclerView;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-
-import com.android.documentsui.R;
-
-import junit.framework.Assert;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.regex.Pattern;
-
-/**
- * A test helper class that provides support for controlling directory list
- * and making assertions against the state of it.
- */
-public class DirectoryListBot extends Bots.BaseBot {
-    private static final String DIR_LIST_ID = "com.android.documentsui:id/dir_list";
-
-    private static final BySelector SNACK_DELETE =
-            By.desc(Pattern.compile("^Deleting [0-9]+ file.+"));
-
-    public DirectoryListBot(UiDevice device, Context context, int timeout) {
-        super(device, context, timeout);
-    }
-
-    public void assertDocumentsCount(int count) throws UiObjectNotFoundException {
-        UiObject docsList = findDocumentsList();
-        assertEquals(count, docsList.getChildCount());
-    }
-
-    public void assertDocumentsPresent(String... labels) throws UiObjectNotFoundException {
-        List<String> absent = new ArrayList<>();
-        for (String label : labels) {
-            if (!findDocument(label).exists()) {
-                absent.add(label);
-            }
-        }
-        if (!absent.isEmpty()) {
-            Assert.fail("Expected documents " + Arrays.asList(labels)
-                    + ", but missing " + absent);
-        }
-    }
-
-    public void assertDocumentsAbsent(String... labels) throws UiObjectNotFoundException {
-        List<String> found = new ArrayList<>();
-        for (String label : labels) {
-            if (findDocument(label).exists()) {
-                found.add(label);
-            }
-        }
-        if (!found.isEmpty()) {
-            Assert.fail("Expected documents not present" + Arrays.asList(labels)
-                    + ", but present " + found);
-        }
-    }
-
-    public void assertDocumentsCountOnList(boolean exists, int count) throws UiObjectNotFoundException {
-        UiObject docsList = findDocumentsList();
-        assertEquals(exists, docsList.exists());
-        if(docsList.exists()) {
-            assertEquals(count, docsList.getChildCount());
-        }
-    }
-
-    public void assertMessageTextView(String message) throws UiObjectNotFoundException {
-        UiObject messageTextView = findMessageTextView();
-        assertTrue(messageTextView.exists());
-
-        String msg = String.valueOf(message);
-        assertEquals(String.format(msg, "TEST_ROOT_0"), messageTextView.getText());
-
-    }
-
-    private UiObject findMessageTextView() {
-        return findObject(
-                "com.android.documentsui:id/container_directory",
-                "com.android.documentsui:id/message");
-    }
-
-    public void assertSnackbar(int id) {
-        assertNotNull(getSnackbar(mContext.getString(id)));
-    }
-
-    public void openDocument(String label) throws UiObjectNotFoundException {
-        int toolType = Configurator.getInstance().getToolType();
-        Configurator.getInstance().setToolType(MotionEvent.TOOL_TYPE_FINGER);
-        UiObject doc = findDocument(label);
-        doc.click();
-        Configurator.getInstance().setToolType(toolType);
-    }
-
-    public void clickDocument(String label) throws UiObjectNotFoundException {
-        findDocument(label).click();
-    }
-
-    public UiObject selectDocument(String label) throws UiObjectNotFoundException {
-        waitForDocument(label);
-        UiObject doc = findDocument(label);
-        doc.longClick();
-        return doc;
-    }
-
-    public void copyFilesToClipboard(String...labels) throws UiObjectNotFoundException {
-        for (String label: labels) {
-            clickDocument(label);
-        }
-        mDevice.pressKeyCode(KeyEvent.KEYCODE_C, KeyEvent.META_CTRL_ON);
-    }
-
-    public void pasteFilesFromClipboard() {
-        mDevice.pressKeyCode(KeyEvent.KEYCODE_V, KeyEvent.META_CTRL_ON);
-    }
-
-    public UiObject2 getSnackbar(String message) {
-        return mDevice.wait(Until.findObject(By.text(message)), mTimeout);
-    }
-
-    public void waitForDeleteSnackbar() {
-        mDevice.wait(Until.findObject(SNACK_DELETE), mTimeout);
-    }
-
-    public void waitForDeleteSnackbarGone() {
-        // wait a little longer for snackbar to go away, as it disappears after a timeout.
-        mDevice.wait(Until.gone(SNACK_DELETE), mTimeout * 2);
-    }
-
-    public void waitForDocument(String label) throws UiObjectNotFoundException {
-        findDocument(label).waitForExists(mTimeout);
-    }
-
-    public UiObject findDocument(String label) throws UiObjectNotFoundException {
-        final UiSelector docList = new UiSelector().resourceId(
-                "com.android.documentsui:id/container_directory").childSelector(
-                        new UiSelector().resourceId(DIR_LIST_ID));
-
-        // Wait for the first list item to appear
-        new UiObject(docList.childSelector(new UiSelector())).waitForExists(mTimeout);
-
-        // new UiScrollable(docList).scrollIntoView(new UiSelector().text(label));
-        return mDevice.findObject(docList.childSelector(new UiSelector().text(label)));
-    }
-
-    public boolean hasDocuments(String... labels) throws UiObjectNotFoundException {
-        for (String label : labels) {
-            if (!findDocument(label).exists()) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    public UiObject findDocumentsList() {
-        return findObject(
-                "com.android.documentsui:id/container_directory",
-                DIR_LIST_ID);
-    }
-
-    public void assertHasFocus() {
-        assertHasFocus(DIR_LIST_ID);
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/bots/KeyboardBot.java b/packages/DocumentsUI/tests/src/com/android/documentsui/bots/KeyboardBot.java
deleted file mode 100644
index 2e71577..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/bots/KeyboardBot.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.bots;
-
-import static android.support.test.espresso.Espresso.onView;
-import static android.support.test.espresso.action.ViewActions.pressImeActionButton;
-import static android.support.test.espresso.matcher.ViewMatchers.isAssignableFrom;
-
-import android.content.Context;
-import android.support.test.uiautomator.UiDevice;
-import android.view.inputmethod.InputMethodManager;
-import android.widget.EditText;
-
-/**
- * A test helper class that provides support for keyboard manipulation.
- */
-public class KeyboardBot extends Bots.BaseBot {
-
-    public KeyboardBot(UiDevice device, Context context, int timeout) {
-        super(device, context, timeout);
-    }
-
-    public void dismissKeyboardIfPresent() {
-        if(isKeyboardPresent()) {
-            mDevice.pressBack();
-        }
-    }
-
-    // Indirect way to detect the keyboard.
-    private boolean isKeyboardPresent() {
-        InputMethodManager inputManager = (InputMethodManager) mContext
-                .getSystemService(Context.INPUT_METHOD_SERVICE);
-        return inputManager.isAcceptingText();
-    }
-
-    public void pressEnter() {
-      //TODO: There seems to be a bug on N/Espresso that makes pressing Enter not work
-      // This is a temporary workaround that somehow works
-      // See b/28399576
-        onView(isAssignableFrom(EditText.class)).perform(pressImeActionButton());
-    }
-
-    public void pressKey(int keyCode) {
-        mDevice.pressKeyCode(keyCode);
-    }
-
-    public void pressKey(int keyCode, int metaState) {
-        mDevice.pressKeyCode(keyCode, metaState);
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/bots/Matchers.java b/packages/DocumentsUI/tests/src/com/android/documentsui/bots/Matchers.java
deleted file mode 100644
index fb3cd0c..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/bots/Matchers.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.bots;
-
-import static android.support.test.espresso.Espresso.onView;
-import static android.support.test.espresso.assertion.ViewAssertions.matches;
-import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
-
-import android.support.test.espresso.ViewInteraction;
-import android.view.View;
-
-import org.hamcrest.Matcher;
-
-/**
- * Support methods for working with Espresso related matchers 'n stuff.
- */
-public final class Matchers {
-
-    private Matchers() {}
-
-    public static boolean present(Matcher<View> matcher) {
-        return present(onView(matcher), isDisplayed());
-    }
-
-    public static boolean present(ViewInteraction vi, Matcher<View> matcher) {
-        try {
-            vi.check(matches(matcher));
-            vi.check(matches(isDisplayed()));
-            return true;
-        } catch (Exception e) {
-            return false;
-        }
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/bots/RootsListBot.java b/packages/DocumentsUI/tests/src/com/android/documentsui/bots/RootsListBot.java
deleted file mode 100644
index c73cec2..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/bots/RootsListBot.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.bots;
-
-import static android.support.test.espresso.Espresso.onView;
-import static android.support.test.espresso.action.ViewActions.swipeLeft;
-import static android.support.test.espresso.action.ViewActions.swipeRight;
-import static android.support.test.espresso.matcher.ViewMatchers.withId;
-
-import android.content.Context;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject;
-import android.support.test.uiautomator.UiObjectNotFoundException;
-import android.support.test.uiautomator.UiScrollable;
-import android.support.test.uiautomator.UiSelector;
-import android.util.Log;
-import android.view.View;
-
-import com.android.documentsui.R;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import junit.framework.Assert;
-
-/**
- * A test helper class that provides support for controlling and asserting against
- * the roots list drawer.
- */
-public class RootsListBot extends Bots.BaseBot {
-    private static final String ROOTS_LIST_ID = "com.android.documentsui:id/roots_list";
-    private static final String TAG = "RootsListBot";
-
-    public RootsListBot(UiDevice device, Context context, int timeout) {
-        super(device, context, timeout);
-    }
-
-    private UiObject findRoot(String label) throws UiObjectNotFoundException {
-        final UiSelector rootsList = new UiSelector().resourceId(
-                "com.android.documentsui:id/container_roots").childSelector(
-                new UiSelector().resourceId(ROOTS_LIST_ID));
-
-        // We might need to expand drawer if not visible
-        if (!new UiObject(rootsList).waitForExists(mTimeout)) {
-            Log.d(TAG, "Failed to find roots list; trying to expand");
-            final UiSelector hamburger = new UiSelector().resourceId(
-                    "com.android.documentsui:id/toolbar").childSelector(
-                    new UiSelector().className("android.widget.ImageButton").clickable(true));
-            new UiObject(hamburger).click();
-        }
-
-        // Wait for the first list item to appear
-        new UiObject(rootsList.childSelector(new UiSelector())).waitForExists(mTimeout);
-
-        // Now scroll around to find our item
-        new UiScrollable(rootsList).scrollIntoView(new UiSelector().text(label));
-        return new UiObject(rootsList.childSelector(new UiSelector().text(label)));
-    }
-
-    public void openRoot(String label) throws UiObjectNotFoundException {
-        findRoot(label).click();
-        // Close the drawer in case we select a pre-selected root already
-        closeDrawer();
-    }
-
-    public void closeDrawer() {
-      // Espresso will try to close the drawer if it's opened
-      // But if no drawer exists (Tablet devices), we will have to catch the exception
-      // and continue on the test
-      // Why can't we do something like .exist() first?
-      // http://stackoverflow.com/questions/20807131/espresso-return-boolean-if-view-exists
-      try {
-        if (mContext.getResources().getConfiguration()
-            .getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) {
-            onView(withId(R.id.drawer_layout)).perform(swipeRight());
-        } else {
-          onView(withId(R.id.drawer_layout)).perform(swipeLeft());
-        }
-      } catch (Exception e) {
-      }
-    }
-
-    public void assertRootsPresent(String... labels) throws UiObjectNotFoundException {
-        List<String> missing = new ArrayList<>();
-        for (String label : labels) {
-            if (!findRoot(label).exists()) {
-                missing.add(label);
-            }
-        }
-        if (!missing.isEmpty()) {
-            Assert.fail(
-                    "Expected roots " + Arrays.asList(labels) + ", but missing " + missing);
-        }
-    }
-
-    public void assertRootsAbsent(String... labels) throws UiObjectNotFoundException {
-        List<String> unexpected = new ArrayList<>();
-        for (String label : labels) {
-            if (findRoot(label).exists()) {
-                unexpected.add(label);
-            }
-        }
-        if (!unexpected.isEmpty()) {
-            Assert.fail("Unexpected roots " + unexpected);
-        }
-    }
-
-    public void assertHasFocus() {
-        assertHasFocus(ROOTS_LIST_ID);
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/bots/SearchBot.java b/packages/DocumentsUI/tests/src/com/android/documentsui/bots/SearchBot.java
deleted file mode 100644
index 66be677..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/bots/SearchBot.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.bots;
-
-import static android.support.test.espresso.Espresso.onView;
-import static android.support.test.espresso.action.ViewActions.typeText;
-import static android.support.test.espresso.matcher.ViewMatchers.hasDescendant;
-import static android.support.test.espresso.matcher.ViewMatchers.isClickable;
-import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
-import static android.support.test.espresso.matcher.ViewMatchers.withId;
-import static junit.framework.Assert.assertEquals;
-import static junit.framework.Assert.assertFalse;
-import static junit.framework.Assert.assertTrue;
-import static org.hamcrest.CoreMatchers.allOf;
-import static org.hamcrest.CoreMatchers.anyOf;
-
-import android.content.Context;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject;
-import android.support.test.uiautomator.UiObjectNotFoundException;
-import android.support.v7.recyclerview.R;
-import android.view.View;
-
-import org.hamcrest.Matcher;
-
-/**
- * A test helper class that provides support for controlling the search UI
- * programmatically, and making assertions against the state of the UI.
- * <p>
- * Support for working directly with Roots and Directory view can be found in the respective bots.
- */
-public class SearchBot extends Bots.BaseBot {
-
-    public static final String TARGET_PKG = "com.android.documentsui";
-
-    // Dumb search layout changes substantially between Ryu and Angler.
-    @SuppressWarnings("unchecked")
-    private static final Matcher<View> SEARCH_WIDGET = allOf(
-            withId(R.id.menu_search),
-            anyOf(isClickable(), hasDescendant(isClickable())));
-
-    // Note that input is visible when the clicky button is not
-    // present. So to clearly qualify the two...we explicitly
-    // require this input be not clickable.
-    @SuppressWarnings("unchecked")
-    private static final Matcher<View> SEARCH_INPUT = allOf(
-            withId(R.id.menu_search),
-            isDisplayed());
-
-    public SearchBot(UiDevice device, Context context, int timeout) {
-        super(device, context, timeout);
-    }
-
-    public void clickIcon() throws UiObjectNotFoundException {
-        UiObject searchView = findSearchView();
-        searchView.click();
-        assertTrue(searchView.exists());
-    }
-
-    public void setInputText(String query) throws UiObjectNotFoundException {
-        onView(SEARCH_INPUT).perform(typeText(query));
-    }
-
-    public void assertIconVisible(boolean visible) {
-        if (visible) {
-            assertTrue(
-                    "Search icon should be visible.",
-                    Matchers.present(SEARCH_WIDGET));
-        } else {
-            assertFalse(
-                    "Search icon should not be visible.",
-                    Matchers.present(SEARCH_WIDGET));
-        }
-    }
-
-    public void assertInputEquals(String query)
-            throws UiObjectNotFoundException {
-        UiObject textField = findSearchViewTextField();
-
-        assertTrue(textField.exists());
-        assertEquals(query, textField.getText());
-    }
-
-    public void assertInputFocused(boolean focused)
-            throws UiObjectNotFoundException {
-        UiObject textField = findSearchViewTextField();
-
-        assertTrue(textField.exists());
-        assertEquals(focused, textField.isFocused());
-    }
-
-    public void assertInputExists(boolean exists)
-            throws UiObjectNotFoundException {
-        assertEquals(exists, findSearchViewTextField().exists());
-    }
-
-    private UiObject findSearchView() {
-        return findObject("com.android.documentsui:id/menu_search");
-    }
-
-    private UiObject findSearchViewTextField() {
-        return findObject("com.android.documentsui:id/menu_search", "android:id/search_src_text");
-    }
-
-    private UiObject findSearchViewIcon() {
-        return mContext.getResources().getBoolean(R.bool.full_bar_search_view)
-                ? findObject("com.android.documentsui:id/menu_search")
-                : findObject("com.android.documentsui:id/menu_search", "android:id/search_button");
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/bots/UiBot.java b/packages/DocumentsUI/tests/src/com/android/documentsui/bots/UiBot.java
deleted file mode 100644
index d1b73e2..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/bots/UiBot.java
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.bots;
-
-import static android.support.test.espresso.Espresso.onView;
-import static android.support.test.espresso.action.ViewActions.click;
-import static android.support.test.espresso.assertion.ViewAssertions.matches;
-import static android.support.test.espresso.matcher.ViewMatchers.isAssignableFrom;
-import static android.support.test.espresso.matcher.ViewMatchers.withClassName;
-import static android.support.test.espresso.matcher.ViewMatchers.withId;
-import static android.support.test.espresso.matcher.ViewMatchers.withText;
-import static junit.framework.Assert.assertEquals;
-import static junit.framework.Assert.assertNotNull;
-import static org.hamcrest.CoreMatchers.allOf;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.Matchers.endsWith;
-
-import android.content.Context;
-import android.support.test.espresso.Espresso;
-import android.support.test.espresso.action.ViewActions;
-import android.support.test.espresso.matcher.BoundedMatcher;
-import android.support.test.espresso.matcher.ViewMatchers;
-import android.support.test.uiautomator.By;
-import android.support.test.uiautomator.UiDevice;
-import android.support.test.uiautomator.UiObject;
-import android.support.test.uiautomator.UiObject2;
-import android.support.test.uiautomator.UiObjectNotFoundException;
-import android.support.test.uiautomator.UiSelector;
-import android.util.TypedValue;
-import android.view.View;
-import android.widget.Toolbar;
-
-import com.android.documentsui.R;
-
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * A test helper class that provides support for controlling DocumentsUI activities
- * programmatically, and making assertions against the state of the UI.
- * <p>
- * Support for working directly with Roots and Directory view can be found in the respective bots.
- */
-public class UiBot extends Bots.BaseBot {
-
-    public static final String TARGET_PKG = "com.android.documentsui";
-
-    @SuppressWarnings("unchecked")
-    private static final Matcher<View> TOOLBAR = allOf(
-            isAssignableFrom(Toolbar.class),
-            withId(R.id.toolbar));
-
-    @SuppressWarnings("unchecked")
-    private static final Matcher<View> ACTIONBAR = allOf(
-            withClassName(endsWith("ActionBarContextView")));
-
-    @SuppressWarnings("unchecked")
-    private static final Matcher<View> TEXT_ENTRY = allOf(
-            withClassName(endsWith("EditText")));
-
-    @SuppressWarnings("unchecked")
-    private static final Matcher<View> TOOLBAR_OVERFLOW = allOf(
-            withClassName(endsWith("OverflowMenuButton")),
-            ViewMatchers.isDescendantOfA(TOOLBAR));
-
-    @SuppressWarnings("unchecked")
-    private static final Matcher<View> ACTIONBAR_OVERFLOW = allOf(
-            withClassName(endsWith("OverflowMenuButton")),
-            ViewMatchers.isDescendantOfA(ACTIONBAR));
-
-    public UiBot(UiDevice device, Context context, int timeout) {
-        super(device, context, timeout);
-    }
-
-    public void assertWindowTitle(String expected) {
-        onView(TOOLBAR)
-                .check(matches(withToolbarTitle(is(expected))));
-    }
-
-    public void assertMenuEnabled(int id, boolean enabled) {
-        UiObject2 menu = findMenuWithName(mContext.getString(id));
-        assertNotNull(menu);
-        assertEquals(enabled, menu.isEnabled());
-    }
-
-    public void assertInActionMode(boolean inActionMode) {
-        UiObject actionModeBar = findActionModeBar();
-        assertEquals(inActionMode, actionModeBar.exists());
-    }
-
-    public UiObject openOverflowMenu() throws UiObjectNotFoundException {
-        UiObject obj = findMenuMoreOptions();
-        obj.click();
-        mDevice.waitForIdle(mTimeout);
-        return obj;
-    }
-
-    public void setDialogText(String text) throws UiObjectNotFoundException {
-        onView(TEXT_ENTRY)
-                .perform(ViewActions.replaceText(text));
-    }
-
-    public boolean inFixedLayout() {
-        TypedValue val = new TypedValue();
-        // We alias files_activity to either fixed or drawer layouts based
-        // on screen dimensions. In order to determine which layout
-        // has been selected, we check the resolved value.
-        mContext.getResources().getValue(R.layout.files_activity, val, true);
-        return val.resourceId == R.layout.fixed_layout;
-    }
-
-    public boolean inDrawerLayout() {
-        return !inFixedLayout();
-    }
-
-    void switchViewMode() {
-        UiObject2 mode = menuGridMode();
-        if (mode != null) {
-            mode.click();
-        } else {
-            menuListMode().click();
-        }
-    }
-
-    UiObject2 menuGridMode() {
-        // Note that we're using By.desc rather than By.res, because of b/25285770
-        return find(By.desc("Grid view"));
-    }
-
-    UiObject2 menuListMode() {
-        // Note that we're using By.desc rather than By.res, because of b/25285770
-        return find(By.desc("List view"));
-    }
-
-    public void clickToolbarItem(int id) {
-        onView(withId(id)).perform(click());
-    }
-
-    public void clickNewFolder() {
-        onView(ACTIONBAR_OVERFLOW).perform(click());
-
-        // Click the item by label, since Espresso doesn't support lookup by id on overflow.
-        onView(withText("New folder")).perform(click());
-    }
-
-    public void clickActionbarOverflowItem(String label) {
-        onView(ACTIONBAR_OVERFLOW).perform(click());
-        // Click the item by label, since Espresso doesn't support lookup by id on overflow.
-        onView(withText(label)).perform(click());
-    }
-
-    public void clickToolbarOverflowItem(String label) {
-        onView(TOOLBAR_OVERFLOW).perform(click());
-        // Click the item by label, since Espresso doesn't support lookup by id on overflow.
-        onView(withText(label)).perform(click());
-    }
-
-    UiObject findActionModeBar() {
-        UiObject bar = findObject("android:id/action_mode_bar");
-        bar.waitForExists(mTimeout);
-        return bar;
-    }
-
-    public UiObject findDownloadRetryDialog() {
-        UiSelector selector = new UiSelector().text("Couldn't download");
-        UiObject title = mDevice.findObject(selector);
-        title.waitForExists(mTimeout);
-        return title;
-    }
-
-    public void clickDialogOkButton() {
-        // Espresso has flaky results when keyboard shows up, so hiding it for now
-        // before trying to click on any dialog button
-        Espresso.closeSoftKeyboard();
-        onView(withId(android.R.id.button1)).perform(click());
-    }
-
-    public void clickDialogCancelButton() throws UiObjectNotFoundException {
-        // Espresso has flaky results when keyboard shows up, so hiding it for now
-        // before trying to click on any dialog button
-        Espresso.closeSoftKeyboard();
-        onView(withId(android.R.id.button2)).perform(click());
-    }
-
-    UiObject findMenuLabelWithName(String label) {
-        UiSelector selector = new UiSelector().text(label);
-        return mDevice.findObject(selector);
-    }
-
-    UiObject2 findMenuWithName(String label) {
-        List<UiObject2> menuItems = mDevice.findObjects(By.clazz("android.widget.LinearLayout"));
-        Iterator<UiObject2> it = menuItems.iterator();
-
-        UiObject2 menuItem = null;
-        while (it.hasNext()) {
-            menuItem = it.next();
-            UiObject2 text = menuItem.findObject(By.text(label));
-            if (text != null) {
-                break;
-            }
-        }
-        return menuItem;
-    }
-
-    boolean hasMenuWithName(String label) {
-        return findMenuWithName(label) != null;
-    }
-
-    UiObject findMenuMoreOptions() {
-        UiSelector selector = new UiSelector().className("android.widget.ImageButton")
-                .descriptionContains("More options");
-        // TODO: use the system string ? android.R.string.action_menu_overflow_description
-        return mDevice.findObject(selector);
-    }
-
-    private static Matcher<Object> withToolbarTitle(
-            final Matcher<CharSequence> textMatcher) {
-        return new BoundedMatcher<Object, Toolbar>(Toolbar.class) {
-            @Override
-            public boolean matchesSafely(Toolbar toolbar) {
-                return textMatcher.matches(toolbar.getTitle());
-            }
-
-            @Override
-            public void describeTo(Description description) {
-                description.appendText("with toolbar title: ");
-                textMatcher.describeTo(description);
-            }
-        };
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/clipping/ClipStorageTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/clipping/ClipStorageTest.java
deleted file mode 100644
index 73366f8..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/clipping/ClipStorageTest.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.clipping;
-
-import static com.android.documentsui.clipping.ClipStorage.NUM_OF_SLOTS;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import android.content.SharedPreferences;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
-
-import com.android.documentsui.testing.TestScheduledExecutorService;
-
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
-import org.junit.runner.RunWith;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class ClipStorageTest {
-    private static final String PREF_NAME = "pref";
-    private static final List<Uri> TEST_URIS = createList(
-            "content://ham/fancy",
-            "content://poodle/monkey/giraffe");
-
-    @Rule
-    public TemporaryFolder folder = new TemporaryFolder();
-
-    private SharedPreferences mPref;
-    private TestScheduledExecutorService mExecutor;
-    private ClipStorage mStorage;
-
-    private int mTag;
-
-    @Before
-    public void setUp() {
-        mPref = InstrumentationRegistry.getContext().getSharedPreferences(PREF_NAME, 0);
-        File clipDir = ClipStorage.prepareStorage(folder.getRoot());
-        mStorage = new ClipStorage(clipDir, mPref);
-
-        mExecutor = new TestScheduledExecutorService();
-        AsyncTask.setDefaultExecutor(mExecutor);
-
-        mTag = mStorage.claimStorageSlot();
-    }
-
-    @AfterClass
-    public static void tearDownOnce() {
-        AsyncTask.setDefaultExecutor(AsyncTask.SERIAL_EXECUTOR);
-    }
-
-    @Test
-    public void testWrite() throws Exception {
-        writeAll(mTag, TEST_URIS);
-    }
-
-    @Test
-    public void testRead() throws Exception {
-        writeAll(mTag, TEST_URIS);
-        List<Uri> uris = new ArrayList<>();
-
-        File copy = mStorage.getFile(mTag);
-        try(ClipStorageReader provider = mStorage.createReader(copy)) {
-            for (Uri uri : provider) {
-                uris.add(uri);
-            }
-        }
-        assertEquals(TEST_URIS, uris);
-    }
-
-    @Test
-    public void testClaimStorageSlot_NoAvailableSlot() throws Exception {
-        int firstTag = mStorage.claimStorageSlot();
-        writeAll(firstTag, TEST_URIS);
-        mStorage.getFile(firstTag);
-        for (int i = 0; i < NUM_OF_SLOTS - 1; ++i) {
-            int tag = mStorage.claimStorageSlot();
-            writeAll(tag, TEST_URIS);
-            mStorage.getFile(tag);
-        }
-
-        assertEquals(firstTag, mStorage.claimStorageSlot());
-    }
-
-    @Test
-    public void testReadConcurrently() throws Exception {
-        writeAll(mTag, TEST_URIS);
-        List<Uri> uris = new ArrayList<>();
-        List<Uri> uris2 = new ArrayList<>();
-
-        File copy = mStorage.getFile(mTag);
-        File copy2 = mStorage.getFile(mTag);
-        try(ClipStorageReader reader = mStorage.createReader(copy)) {
-            try(ClipStorageReader reader2 = mStorage.createReader(copy2)){
-                Iterator<Uri> iter = reader.iterator();
-                Iterator<Uri> iter2 = reader2.iterator();
-
-                while (iter.hasNext() && iter2.hasNext()) {
-                    uris.add(iter.next());
-                    uris2.add(iter2.next());
-                }
-
-                assertFalse(iter.hasNext());
-                assertFalse(iter2.hasNext());
-            }
-        }
-        assertEquals(TEST_URIS, uris);
-        assertEquals(TEST_URIS, uris2);
-    }
-
-    @Test
-    public void testPrepareStorage_CreatesDir() throws Exception {
-        File clipDir = ClipStorage.prepareStorage(folder.getRoot());
-        assertTrue(clipDir.exists());
-        assertTrue(clipDir.isDirectory());
-        assertFalse(clipDir.equals(folder.getRoot()));
-    }
-
-    private void writeAll(int tag, List<Uri> uris) {
-        new ClipStorage.PersistTask(mStorage, uris, tag).execute();
-        mExecutor.runAll();
-    }
-
-    private static List<Uri> createList(String... values) {
-        List<Uri> uris = new ArrayList<>(values.length);
-        for (int i = 0; i < values.length; i++) {
-            uris.add(i, Uri.parse(values[i]));
-        }
-        return uris;
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/clipping/UrisSupplierTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/clipping/UrisSupplierTest.java
deleted file mode 100644
index 9815d0e..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/clipping/UrisSupplierTest.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.clipping;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
-import android.content.SharedPreferences;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.provider.DocumentsContract;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.MediumTest;
-import android.support.test.runner.AndroidJUnit4;
-
-import com.android.documentsui.Shared;
-import com.android.documentsui.testing.TestScheduledExecutorService;
-
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
-import org.junit.runner.RunWith;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-@RunWith(AndroidJUnit4.class)
-@MediumTest
-public class UrisSupplierTest {
-
-    private static final String PREF_NAME = "pref";
-    private static final String AUTHORITY = "foo";
-    private static final List<Uri> SHORT_URI_LIST = createList(3);
-    private static final List<Uri> LONG_URI_LIST = createList(Shared.MAX_DOCS_IN_INTENT + 5);
-
-    @Rule
-    public TemporaryFolder folder = new TemporaryFolder();
-
-    private SharedPreferences mPref;
-    private TestScheduledExecutorService mExecutor;
-    private ClipStorage mStorage;
-
-    @Before
-    public void setUp() {
-        mExecutor = new TestScheduledExecutorService();
-        AsyncTask.setDefaultExecutor(mExecutor);
-
-        mPref = InstrumentationRegistry.getContext().getSharedPreferences(PREF_NAME, 0);
-        mStorage = new ClipStorage(folder.getRoot(), mPref);
-    }
-
-    @AfterClass
-    public static void tearDownOnce() {
-        AsyncTask.setDefaultExecutor(AsyncTask.SERIAL_EXECUTOR);
-    }
-
-    @Test
-    public void testItemCountEquals_shortList() throws Exception {
-        UrisSupplier uris = createWithShortList();
-
-        assertEquals(SHORT_URI_LIST.size(), uris.getItemCount());
-    }
-
-    @Test
-    public void testItemCountEquals_longList() throws Exception {
-        UrisSupplier uris = createWithLongList();
-
-        assertEquals(LONG_URI_LIST.size(), uris.getItemCount());
-    }
-
-    @Test
-    public void testGetDocsEquals_shortList() throws Exception {
-        UrisSupplier uris = createWithShortList();
-
-        assertIterableEquals(SHORT_URI_LIST, uris.getUris(mStorage));
-    }
-
-    @Test
-    public void testGetDocsEquals_longList() throws Exception {
-        UrisSupplier uris = createWithLongList();
-
-        assertIterableEquals(LONG_URI_LIST, uris.getUris(mStorage));
-    }
-
-    @Test
-    public void testDispose_shortList() throws Exception {
-        UrisSupplier uris = createWithShortList();
-
-        uris.dispose();
-    }
-
-    @Test
-    public void testDispose_longList() throws Exception {
-        UrisSupplier uris = createWithLongList();
-
-        uris.dispose();
-    }
-
-    private UrisSupplier createWithShortList() throws Exception {
-        return UrisSupplier.create(SHORT_URI_LIST, mStorage);
-    }
-
-    private UrisSupplier createWithLongList() throws Exception {
-        UrisSupplier uris =
-                UrisSupplier.create(LONG_URI_LIST, mStorage);
-
-        mExecutor.runAll();
-
-        return uris;
-    }
-
-    private void assertIterableEquals(Iterable<Uri> expected, Iterable<Uri> value) {
-        Iterator<Uri> expectedIter = expected.iterator();
-        Iterator<Uri> valueIter = value.iterator();
-
-        while (expectedIter.hasNext() && valueIter.hasNext()) {
-            assertEquals(expectedIter.next(), valueIter.next());
-        }
-
-        assertFalse(expectedIter.hasNext());
-        assertFalse(expectedIter.hasNext());
-    }
-
-    private static List<Uri> createList(int count) {
-        List<Uri> uris = new ArrayList<>(count);
-
-        for (int i = 0; i < count; ++i) {
-            uris.add(DocumentsContract.buildDocumentUri(AUTHORITY, Integer.toString(i)));
-        }
-
-        return uris;
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/BandController_GridModelTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/BandController_GridModelTest.java
deleted file mode 100644
index 59547ad..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/BandController_GridModelTest.java
+++ /dev/null
@@ -1,470 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import static com.android.documentsui.dirlist.BandController.GridModel.NOT_SET;
-
-import android.graphics.Point;
-import android.graphics.Rect;
-import android.support.v7.widget.RecyclerView.OnScrollListener;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.documentsui.dirlist.BandController.GridModel;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-@SmallTest
-public class BandController_GridModelTest extends AndroidTestCase {
-
-    private static final int VIEW_PADDING_PX = 5;
-    private static final int CHILD_VIEW_EDGE_PX = 100;
-    private static final int VIEWPORT_HEIGHT = 500;
-
-    private GridModel model;
-    private TestEnvironment env;
-    private TestDocumentsAdapter adapter;
-    private Set<String> lastSelection;
-    private int viewWidth;
-
-    // TLDR: Don't call model.{start|resize}Selection; use the local #startSelection and
-    // #resizeSelection methods instead.
-    //
-    // The reason for this is that selection is stateful and involves operations that take the
-    // current UI state (e.g scrolling) into account. This test maintains its own copy of the
-    // selection bounds as control data for verifying selections. Keep this data in sync by calling
-    // #startSelection and
-    // #resizeSelection.
-    private Point mSelectionOrigin;
-    private Point mSelectionPoint;
-
-    private void initData(final int numChildren, int numColumns) {
-        env = new TestEnvironment(numChildren, numColumns);
-        adapter = new TestDocumentsAdapter(new ArrayList<String>()) {
-            @Override
-            public String getModelId(int position) {
-                return Integer.toString(position);
-            }
-
-            @Override
-            public int getItemCount() {
-                return numChildren;
-            }
-        };
-
-        viewWidth = VIEW_PADDING_PX + numColumns * (VIEW_PADDING_PX + CHILD_VIEW_EDGE_PX);
-        model = new GridModel(env, adapter);
-        model.addOnSelectionChangedListener(
-                new GridModel.OnSelectionChangedListener() {
-                    @Override
-                    public void onSelectionChanged(Set<String> updatedSelection) {
-                        lastSelection = updatedSelection;
-                    }
-
-                    @Override
-                    public boolean onBeforeItemStateChange(String id, boolean nextState) {
-                        return true;
-                    }
-                });
-    }
-
-    @Override
-    public void tearDown() {
-        model = null;
-        env = null;
-        lastSelection = null;
-    }
-
-    public void testSelectionLeftOfItems() {
-        initData(20, 5);
-        startSelection(new Point(0, 10));
-        resizeSelection(new Point(1, 11));
-        assertNoSelection();
-        assertEquals(NOT_SET, model.getPositionNearestOrigin());
-    }
-
-    public void testSelectionRightOfItems() {
-        initData(20, 4);
-        startSelection(new Point(viewWidth - 1, 10));
-        resizeSelection(new Point(viewWidth - 2, 11));
-        assertNoSelection();
-        assertEquals(NOT_SET, model.getPositionNearestOrigin());
-    }
-
-    public void testSelectionAboveItems() {
-        initData(20, 4);
-        startSelection(new Point(10, 0));
-        resizeSelection(new Point(11, 1));
-        assertNoSelection();
-        assertEquals(NOT_SET, model.getPositionNearestOrigin());
-    }
-
-    public void testSelectionBelowItems() {
-        initData(5, 4);
-        startSelection(new Point(10, VIEWPORT_HEIGHT - 1));
-        resizeSelection(new Point(11, VIEWPORT_HEIGHT - 2));
-        assertNoSelection();
-        assertEquals(NOT_SET, model.getPositionNearestOrigin());
-    }
-
-    public void testVerticalSelectionBetweenItems() {
-        initData(20, 4);
-        startSelection(new Point(106, 0));
-        resizeSelection(new Point(107, 200));
-        assertNoSelection();
-        assertEquals(NOT_SET, model.getPositionNearestOrigin());
-    }
-
-    public void testHorizontalSelectionBetweenItems() {
-        initData(20, 4);
-        startSelection(new Point(0, 105));
-        resizeSelection(new Point(200, 106));
-        assertNoSelection();
-        assertEquals(NOT_SET, model.getPositionNearestOrigin());
-    }
-
-    public void testGrowingAndShrinkingSelection() {
-        initData(20, 4);
-        startSelection(new Point(0, 0));
-
-        resizeSelection(new Point(5, 5));
-        verifySelection();
-
-        resizeSelection(new Point(109, 109));
-        verifySelection();
-
-        resizeSelection(new Point(110, 109));
-        verifySelection();
-
-        resizeSelection(new Point(110, 110));
-        verifySelection();
-
-        resizeSelection(new Point(214, 214));
-        verifySelection();
-
-        resizeSelection(new Point(215, 214));
-        verifySelection();
-
-        resizeSelection(new Point(214, 214));
-        verifySelection();
-
-        resizeSelection(new Point(110, 110));
-        verifySelection();
-
-        resizeSelection(new Point(110, 109));
-        verifySelection();
-
-        resizeSelection(new Point(109, 109));
-        verifySelection();
-
-        resizeSelection(new Point(5, 5));
-        verifySelection();
-
-        resizeSelection(new Point(0, 0));
-        verifySelection();
-
-        assertEquals(NOT_SET, model.getPositionNearestOrigin());
-    }
-
-    public void testSelectionMovingAroundOrigin() {
-        initData(16, 4);
-
-        startSelection(new Point(210, 210));
-        resizeSelection(new Point(viewWidth - 1, 0));
-        verifySelection();
-
-        resizeSelection(new Point(0, 0));
-        verifySelection();
-
-        resizeSelection(new Point(0, 420));
-        verifySelection();
-
-        resizeSelection(new Point(viewWidth - 1, 420));
-        verifySelection();
-
-        // This is manually figured and will need to be adjusted if the separator position is
-        // changed.
-        assertEquals(7, model.getPositionNearestOrigin());
-    }
-
-    public void testScrollingBandSelect() {
-        initData(40, 4);
-
-        startSelection(new Point(0, 0));
-        resizeSelection(new Point(100, VIEWPORT_HEIGHT - 1));
-        verifySelection();
-
-        scroll(CHILD_VIEW_EDGE_PX);
-        verifySelection();
-
-        resizeSelection(new Point(200, VIEWPORT_HEIGHT - 1));
-        verifySelection();
-
-        scroll(CHILD_VIEW_EDGE_PX);
-        verifySelection();
-
-        scroll(-2 * CHILD_VIEW_EDGE_PX);
-        verifySelection();
-
-        resizeSelection(new Point(100, VIEWPORT_HEIGHT - 1));
-        verifySelection();
-
-        assertEquals(0, model.getPositionNearestOrigin());
-    }
-
-    /** Returns the current selection area as a Rect. */
-    private Rect getSelectionArea() {
-        // Construct a rect from the two selection points.
-        Rect selectionArea = new Rect(
-                mSelectionOrigin.x, mSelectionOrigin.y, mSelectionOrigin.x, mSelectionOrigin.y);
-        selectionArea.union(mSelectionPoint.x, mSelectionPoint.y);
-        // Rect intersection tests are exclusive of bounds, while the MSM's selection code is
-        // inclusive. Expand the rect by 1 pixel in all directions to account for this.
-        selectionArea.inset(-1, -1);
-
-        return selectionArea;
-    }
-
-    /** Asserts that the selection is currently empty. */
-    private void assertNoSelection() {
-        assertEquals("Unexpected items " + lastSelection + " in selection " + getSelectionArea(),
-                0, lastSelection.size());
-    }
-
-    /** Verifies the selection using actual bbox checks. */
-    private void verifySelection() {
-        Rect selectionArea = getSelectionArea();
-        for (TestEnvironment.Item item: env.items) {
-            if (Rect.intersects(selectionArea, item.rect)) {
-                assertTrue("Expected item " + item + " was not in selection " + selectionArea,
-                        lastSelection.contains(item.name));
-            } else {
-                assertFalse("Unexpected item " + item + " in selection" + selectionArea,
-                        lastSelection.contains(item.name));
-            }
-        }
-    }
-
-    private void startSelection(Point p) {
-        model.startSelection(p);
-        mSelectionOrigin = env.createAbsolutePoint(p);
-    }
-
-    private void resizeSelection(Point p) {
-        model.resizeSelection(p);
-        mSelectionPoint = env.createAbsolutePoint(p);
-    }
-
-    private void scroll(int dy) {
-        assertTrue(env.verticalOffset + VIEWPORT_HEIGHT + dy <= env.getTotalHeight());
-        env.verticalOffset += dy;
-        // Correct the cached selection point as well.
-        mSelectionPoint.y += dy;
-        model.onScrolled(null, 0, dy);
-    }
-
-    private static final class TestEnvironment implements BandController.SelectionEnvironment {
-
-        private final int mNumColumns;
-        private final int mNumRows;
-        private final int mNumChildren;
-        private final int mSeparatorPosition;
-
-        public int horizontalOffset = 0;
-        public int verticalOffset = 0;
-        private List<Item> items = new ArrayList<>();
-
-        public TestEnvironment(int numChildren, int numColumns) {
-            mNumChildren = numChildren;
-            mNumColumns = numColumns;
-            mSeparatorPosition = mNumColumns + 1;
-            mNumRows = setupGrid();
-        }
-
-        private int setupGrid() {
-            // Split the input set into folders and documents. Do this such that there is a
-            // partially-populated row in the middle of the grid, to test corner cases in layout
-            // code.
-            int y = VIEW_PADDING_PX;
-            int i = 0;
-            int numRows = 0;
-            while (i < mNumChildren) {
-                int top = y;
-                int height = CHILD_VIEW_EDGE_PX;
-                int width = CHILD_VIEW_EDGE_PX;
-                for (int j = 0; j < mNumColumns && i < mNumChildren; j++) {
-                    int left = VIEW_PADDING_PX + (j * (width + VIEW_PADDING_PX));
-                    items.add(new Item(
-                            Integer.toString(i),
-                            new Rect(
-                                    left,
-                                    top,
-                                    left + width - 1,
-                                    top + height - 1)));
-
-                    // Create a partially populated row at the separator position.
-                    if (++i == mSeparatorPosition) {
-                        break;
-                    }
-                }
-                y += height + VIEW_PADDING_PX;
-                numRows++;
-            }
-
-            return numRows;
-        }
-
-        private int getTotalHeight() {
-            return CHILD_VIEW_EDGE_PX * mNumRows + VIEW_PADDING_PX * (mNumRows + 1);
-        }
-
-        private int getFirstVisibleRowIndex() {
-            return verticalOffset / (CHILD_VIEW_EDGE_PX + VIEW_PADDING_PX);
-        }
-
-        private int getLastVisibleRowIndex() {
-            int lastVisibleRowUncapped =
-                    (VIEWPORT_HEIGHT + verticalOffset - 1) / (CHILD_VIEW_EDGE_PX + VIEW_PADDING_PX);
-            return Math.min(lastVisibleRowUncapped, mNumRows - 1);
-        }
-
-        private int getNumItemsInRow(int index) {
-            assertTrue(index >= 0 && index < mNumRows);
-            int mod = mSeparatorPosition % mNumColumns;
-            if (index == (mSeparatorPosition / mNumColumns)) {
-                // The row containing the separator may be incomplete
-                return mod > 0 ? mod : mNumColumns;
-            }
-            // Account for the partial separator row in the final row tally.
-            if (index == mNumRows - 1) {
-                // The last row may be incomplete
-                int finalRowCount = (mNumChildren - mod) % mNumColumns;
-                return finalRowCount > 0 ? finalRowCount : mNumColumns;
-            }
-
-            return mNumColumns;
-        }
-
-        @Override
-        public void addOnScrollListener(OnScrollListener listener) {}
-
-        @Override
-        public void removeOnScrollListener(OnScrollListener listener) {}
-
-        @Override
-        public Point createAbsolutePoint(Point relativePoint) {
-            return new Point(
-                    relativePoint.x + horizontalOffset, relativePoint.y + verticalOffset);
-        }
-
-        @Override
-        public int getVisibleChildCount() {
-            int childCount = 0;
-            for (int i = getFirstVisibleRowIndex(); i <= getLastVisibleRowIndex(); i++) {
-                childCount += getNumItemsInRow(i);
-            }
-            return childCount;
-        }
-
-        @Override
-        public int getAdapterPositionAt(int index) {
-            // Account for partial rows by actually tallying up the items in hidden rows.
-            int hiddenCount = 0;
-            for (int i = 0; i < getFirstVisibleRowIndex(); i++) {
-                hiddenCount += getNumItemsInRow(i);
-            }
-            return index + hiddenCount;
-        }
-
-        @Override
-        public Rect getAbsoluteRectForChildViewAt(int index) {
-            int adapterPosition = getAdapterPositionAt(index);
-            return items.get(adapterPosition).rect;
-        }
-
-        @Override
-        public int getChildCount() {
-            return mNumChildren;
-        }
-
-        @Override
-        public int getColumnCount() {
-            return mNumColumns;
-        }
-
-        @Override
-        public void showBand(Rect rect) {
-            throw new UnsupportedOperationException();
-        }
-
-        @Override
-        public void hideBand() {
-            throw new UnsupportedOperationException();
-        }
-
-        @Override
-        public void scrollBy(int dy) {
-            throw new UnsupportedOperationException();
-        }
-
-        @Override
-        public int getHeight() {
-            throw new UnsupportedOperationException();
-        }
-
-        @Override
-        public void invalidateView() {
-            throw new UnsupportedOperationException();
-        }
-
-        @Override
-        public void runAtNextFrame(Runnable r) {
-            throw new UnsupportedOperationException();
-        }
-
-        @Override
-        public void removeCallback(Runnable r) {
-            throw new UnsupportedOperationException();
-        }
-
-        @Override
-        public boolean isLayoutItem(int adapterPosition) {
-            return false;
-        }
-
-        @Override
-        public boolean hasView(int adapterPosition) {
-            return true;
-        }
-
-        public static final class Item {
-            public String name;
-            public Rect rect;
-
-            public Item(String n, Rect r) {
-                name = n;
-                rect = r;
-            }
-
-            public String toString() {
-                return name + ": " + rect;
-            }
-        }
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/DocumentHolderTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/DocumentHolderTest.java
deleted file mode 100644
index 949f6b7..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/DocumentHolderTest.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.graphics.Rect;
-import android.os.SystemClock;
-import android.support.test.filters.Suppress;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.view.KeyEvent;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.MotionEvent.PointerCoords;
-import android.view.MotionEvent.PointerProperties;
-
-import com.android.documentsui.R;
-import com.android.documentsui.State;
-
-@SmallTest
-public class DocumentHolderTest extends AndroidTestCase {
-
-    DocumentHolder mHolder;
-    TestListener mListener;
-
-    @Override
-    public void setUp() throws Exception {
-        Context context = getContext();
-        LayoutInflater inflater = LayoutInflater.from(context);
-        mHolder = new DocumentHolder(getContext(), inflater.inflate(R.layout.item_doc_list, null)) {
-            @Override
-            public void bind(Cursor cursor, String modelId, State state) {}
-        };
-
-        mListener = new TestListener();
-        mHolder.addKeyEventListener(mListener);
-
-        mHolder.itemView.requestLayout();
-        mHolder.itemView.invalidate();
-    }
-
-    @Suppress
-    public void testIsInSelectionHotspot() {
-        fail();
-    }
-
-    @Suppress
-    public void testDelegatesKeyEvents() {
-        fail();
-    }
-
-    public MotionEvent createEvent(int tooltype) {
-        long time = SystemClock.uptimeMillis();
-
-        PointerProperties properties[] = new PointerProperties[] {
-                new PointerProperties()
-        };
-        properties[0].toolType = tooltype;
-
-        PointerCoords coords[] = new PointerCoords[] {
-                new PointerCoords()
-        };
-
-        Rect rect = new Rect();
-        mHolder.itemView.getHitRect(rect);
-        coords[0].x = rect.left;
-        coords[0].y = rect.top;
-
-        return MotionEvent.obtain(
-                time, // down time
-                time, // event time
-                MotionEvent.ACTION_UP, // action
-                1, // pointer count
-                properties, // pointer properties
-                coords, // pointer coords
-                0, // metastate
-                0, // button state
-                0, // xprecision
-                0, // yprecision
-                0, // deviceid
-                0, // edgeflags
-                0, // source
-                0 // flags
-                );
-    }
-
-    private class TestListener implements DocumentHolder.KeyboardEventListener {
-        @Override
-        public boolean onKey(DocumentHolder doc, int keyCode, KeyEvent event) {
-            return false;
-        }
-
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/ModelBackedDocumentsAdapterTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/ModelBackedDocumentsAdapterTest.java
deleted file mode 100644
index 236621f..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/ModelBackedDocumentsAdapterTest.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.support.v7.widget.RecyclerView;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.view.ViewGroup;
-
-import com.android.documentsui.State;
-
-@SmallTest
-public class ModelBackedDocumentsAdapterTest extends AndroidTestCase {
-
-    private static final String AUTHORITY = "test_authority";
-    private static final String[] NAMES = new String[] {
-            "4",
-            "foo",
-            "1",
-            "bar",
-            "*(Ljifl;a",
-            "0",
-            "baz",
-            "2",
-            "3",
-            "%$%VD"
-    };
-
-    private TestModel mModel;
-    private ModelBackedDocumentsAdapter mAdapter;
-
-    public void setUp() {
-
-        final Context testContext = TestContext.createStorageTestContext(getContext(), AUTHORITY);
-        mModel = new TestModel(AUTHORITY);
-        mModel.update(NAMES);
-
-        DocumentsAdapter.Environment env = new TestEnvironment(testContext);
-
-        mAdapter = new ModelBackedDocumentsAdapter(
-                env, new IconHelper(testContext, State.MODE_GRID));
-        mAdapter.onModelUpdate(mModel);
-    }
-
-    // Tests that the item count is correct.
-    public void testItemCount() {
-        assertEquals(mModel.getItemCount(), mAdapter.getItemCount());
-    }
-
-    private final class TestEnvironment implements DocumentsAdapter.Environment {
-        private final Context testContext;
-
-        private TestEnvironment(Context testContext) {
-            this.testContext = testContext;
-        }
-
-        @Override
-        public boolean isSelected(String id) {
-            return false;
-        }
-
-        @Override
-        public boolean isDocumentEnabled(String mimeType, int flags) {
-            return true;
-        }
-
-        @Override
-        public void initDocumentHolder(DocumentHolder holder) {}
-
-        @Override
-        public Model getModel() {
-            return mModel;
-        }
-
-        @Override
-        public State getDisplayState() {
-            return null;
-        }
-
-        @Override
-        public Context getContext() {
-            return testContext;
-        }
-
-        @Override
-        public int getColumnCount() {
-            return 4;
-        }
-
-        @Override
-        public void onBindDocumentHolder(DocumentHolder holder, Cursor cursor) {}
-    }
-
-    private static class DummyListener implements Model.UpdateListener {
-        public void onModelUpdate(Model model) {}
-        public void onModelUpdateFailed(Exception e) {}
-    }
-
-    private static class DummyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
-        public int getItemCount() { return 0; }
-        public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {}
-        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-            return null;
-        }
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/ModelTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/ModelTest.java
deleted file mode 100644
index b816287..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/ModelTest.java
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.ContextWrapper;
-import android.database.Cursor;
-import android.database.MatrixCursor;
-import android.database.MergeCursor;
-import android.provider.DocumentsContract.Document;
-import android.test.AndroidTestCase;
-import android.test.mock.MockContentResolver;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.documentsui.DirectoryResult;
-import com.android.documentsui.RootCursorWrapper;
-import com.android.documentsui.Shared;
-import com.android.documentsui.State;
-import com.android.documentsui.dirlist.MultiSelectManager.Selection;
-import com.android.documentsui.model.DocumentInfo;
-
-import java.util.ArrayList;
-import java.util.BitSet;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Random;
-import java.util.Set;
-
-@SmallTest
-public class ModelTest extends AndroidTestCase {
-
-    private static final int ITEM_COUNT = 10;
-    private static final String AUTHORITY = "test_authority";
-
-    private static final String[] COLUMNS = new String[]{
-        RootCursorWrapper.COLUMN_AUTHORITY,
-        Document.COLUMN_DOCUMENT_ID,
-        Document.COLUMN_FLAGS,
-        Document.COLUMN_DISPLAY_NAME,
-        Document.COLUMN_SIZE,
-        Document.COLUMN_LAST_MODIFIED,
-        Document.COLUMN_MIME_TYPE
-    };
-
-    private static final String[] NAMES = new String[] {
-            "4",
-            "foo",
-            "1",
-            "bar",
-            "*(Ljifl;a",
-            "0",
-            "baz",
-            "2",
-            "3",
-            "%$%VD"
-        };
-
-    private Cursor cursor;
-    private Context context;
-    private Model model;
-    private TestContentProvider provider;
-
-    public void setUp() {
-        setupTestContext();
-
-        Random rand = new Random();
-
-        MatrixCursor c = new MatrixCursor(COLUMNS);
-        for (int i = 0; i < ITEM_COUNT; ++i) {
-            MatrixCursor.RowBuilder row = c.newRow();
-            row.add(RootCursorWrapper.COLUMN_AUTHORITY, AUTHORITY);
-            row.add(Document.COLUMN_DOCUMENT_ID, Integer.toString(i));
-            row.add(Document.COLUMN_FLAGS, Document.FLAG_SUPPORTS_DELETE);
-            // Generate random document names and sizes. This forces the model's internal sort code
-            // to actually do something.
-            row.add(Document.COLUMN_DISPLAY_NAME, NAMES[i]);
-            row.add(Document.COLUMN_SIZE, rand.nextInt());
-        }
-        cursor = c;
-
-        DirectoryResult r = new DirectoryResult();
-        r.cursor = cursor;
-
-        // Instantiate the model with a dummy view adapter and listener that (for now) do nothing.
-        model = new Model();
-        model.addUpdateListener(new DummyListener());
-        model.update(r);
-    }
-
-    // Tests that the model is properly emptied out after a null update.
-    public void testNullUpdate() {
-        model.update(null);
-
-        assertTrue(model.isEmpty());
-        assertEquals(0, model.getItemCount());
-        assertEquals(0, model.getModelIds().length);
-    }
-
-    // Tests that the item count is correct.
-    public void testItemCount() {
-        assertEquals(ITEM_COUNT, model.getItemCount());
-    }
-
-    // Tests multiple authorities with clashing document IDs.
-    public void testModelIdIsUnique() {
-        MatrixCursor cIn1 = new MatrixCursor(COLUMNS);
-        MatrixCursor cIn2 = new MatrixCursor(COLUMNS);
-
-        // Make two sets of items with the same IDs, under different authorities.
-        final String AUTHORITY0 = "auth0";
-        final String AUTHORITY1 = "auth1";
-
-        for (int i = 0; i < ITEM_COUNT; ++i) {
-            MatrixCursor.RowBuilder row0 = cIn1.newRow();
-            row0.add(RootCursorWrapper.COLUMN_AUTHORITY, AUTHORITY0);
-            row0.add(Document.COLUMN_DOCUMENT_ID, Integer.toString(i));
-
-            MatrixCursor.RowBuilder row1 = cIn2.newRow();
-            row1.add(RootCursorWrapper.COLUMN_AUTHORITY, AUTHORITY1);
-            row1.add(Document.COLUMN_DOCUMENT_ID, Integer.toString(i));
-        }
-
-        Cursor cIn = new MergeCursor(new Cursor[] { cIn1, cIn2 });
-
-        // Update the model, then make sure it contains all the expected items.
-        DirectoryResult r = new DirectoryResult();
-        r.cursor = cIn;
-        model.update(r);
-
-        assertEquals(ITEM_COUNT * 2, model.getItemCount());
-        BitSet b0 = new BitSet(ITEM_COUNT);
-        BitSet b1 = new BitSet(ITEM_COUNT);
-
-        for (String id: model.getModelIds()) {
-            Cursor cOut = model.getItem(id);
-            String authority =
-                    DocumentInfo.getCursorString(cOut, RootCursorWrapper.COLUMN_AUTHORITY);
-            String docId = DocumentInfo.getCursorString(cOut, Document.COLUMN_DOCUMENT_ID);
-
-            switch (authority) {
-                case AUTHORITY0:
-                    b0.set(Integer.parseInt(docId));
-                    break;
-                case AUTHORITY1:
-                    b1.set(Integer.parseInt(docId));
-                    break;
-                default:
-                    fail("Unrecognized authority string");
-            }
-        }
-
-        assertEquals(ITEM_COUNT, b0.cardinality());
-        assertEquals(ITEM_COUNT, b1.cardinality());
-    }
-
-    // Tests the base case for Model.getItem.
-    public void testGetItem() {
-        String[] ids = model.getModelIds();
-        assertEquals(ITEM_COUNT, ids.length);
-        for (int i = 0; i < ITEM_COUNT; ++i) {
-            Cursor c = model.getItem(ids[i]);
-            assertEquals(i, c.getPosition());
-        }
-    }
-
-    // Tests sorting by item name.
-    public void testSort_names() {
-        BitSet seen = new BitSet(ITEM_COUNT);
-        List<String> names = new ArrayList<>();
-
-        DirectoryResult r = new DirectoryResult();
-        r.cursor = cursor;
-        r.sortOrder = State.SORT_ORDER_DISPLAY_NAME;
-        model.update(r);
-
-        for (String id: model.getModelIds()) {
-            Cursor c = model.getItem(id);
-            seen.set(c.getPosition());
-            names.add(DocumentInfo.getCursorString(c, Document.COLUMN_DISPLAY_NAME));
-        }
-
-        assertEquals(ITEM_COUNT, seen.cardinality());
-        for (int i = 0; i < names.size()-1; ++i) {
-            assertTrue(Shared.compareToIgnoreCaseNullable(names.get(i), names.get(i+1)) <= 0);
-        }
-    }
-
-    // Tests sorting by item size.
-    public void testSort_sizes() {
-        DirectoryResult r = new DirectoryResult();
-        r.cursor = cursor;
-        r.sortOrder = State.SORT_ORDER_SIZE;
-        model.update(r);
-
-        BitSet seen = new BitSet(ITEM_COUNT);
-        int previousSize = Integer.MAX_VALUE;
-        for (String id: model.getModelIds()) {
-            Cursor c = model.getItem(id);
-            seen.set(c.getPosition());
-            // Check sort order - descending numerical
-            int size = DocumentInfo.getCursorInt(c, Document.COLUMN_SIZE);
-            assertTrue(previousSize >= size);
-            previousSize = size;
-        }
-        // Check that all items were accounted for.
-        assertEquals(ITEM_COUNT, seen.cardinality());
-    }
-
-    // Tests that directories and files are properly bucketed when sorting by size
-    public void testSort_sizesWithBucketing() {
-        MatrixCursor c = new MatrixCursor(COLUMNS);
-
-        for (int i = 0; i < ITEM_COUNT; ++i) {
-            MatrixCursor.RowBuilder row = c.newRow();
-            row.add(RootCursorWrapper.COLUMN_AUTHORITY, AUTHORITY);
-            row.add(Document.COLUMN_DOCUMENT_ID, Integer.toString(i));
-            row.add(Document.COLUMN_SIZE, i);
-            // Interleave directories and text files.
-            String mimeType =(i % 2 == 0) ? Document.MIME_TYPE_DIR : "text/*";
-            row.add(Document.COLUMN_MIME_TYPE, mimeType);
-        }
-
-        DirectoryResult r = new DirectoryResult();
-        r.cursor = c;
-        r.sortOrder = State.SORT_ORDER_SIZE;
-        model.update(r);
-
-        boolean seenAllDirs = false;
-        int previousSize = Integer.MAX_VALUE;
-        BitSet seen = new BitSet(ITEM_COUNT);
-        // Iterate over items in sort order. Once we've encountered a document (i.e. not a
-        // directory), all subsequent items must also be documents. That is, all directories are
-        // bucketed at the front of the list, sorted by size, followed by documents, sorted by size.
-        for (String id: model.getModelIds()) {
-            Cursor cOut = model.getItem(id);
-            seen.set(cOut.getPosition());
-
-            String mimeType = DocumentInfo.getCursorString(cOut, Document.COLUMN_MIME_TYPE);
-            if (seenAllDirs) {
-                assertFalse(Document.MIME_TYPE_DIR.equals(mimeType));
-            } else {
-                if (!Document.MIME_TYPE_DIR.equals(mimeType)) {
-                    seenAllDirs = true;
-                    // Reset the previous size seen, because documents are bucketed separately by
-                    // the sort.
-                    previousSize = Integer.MAX_VALUE;
-                }
-            }
-            // Check sort order - descending numerical
-            int size = DocumentInfo.getCursorInt(c, Document.COLUMN_SIZE);
-            assertTrue(previousSize >= size);
-            previousSize = size;
-        }
-
-        // Check that all items were accounted for.
-        assertEquals(ITEM_COUNT, seen.cardinality());
-    }
-
-    public void testSort_time() {
-        final int DL_COUNT = 3;
-        MatrixCursor c = new MatrixCursor(COLUMNS);
-        Set<String> currentDownloads = new HashSet<>();
-
-        // Add some files
-        for (int i = 0; i < ITEM_COUNT; i++) {
-            MatrixCursor.RowBuilder row = c.newRow();
-            row.add(RootCursorWrapper.COLUMN_AUTHORITY, AUTHORITY);
-            row.add(Document.COLUMN_DOCUMENT_ID, Integer.toString(i));
-            row.add(Document.COLUMN_LAST_MODIFIED, System.currentTimeMillis());
-        }
-        // Add some current downloads (no timestamp)
-        for (int i = ITEM_COUNT; i < ITEM_COUNT + DL_COUNT; i++) {
-            MatrixCursor.RowBuilder row = c.newRow();
-            String id = Integer.toString(i);
-            row.add(RootCursorWrapper.COLUMN_AUTHORITY, AUTHORITY);
-            row.add(Document.COLUMN_DOCUMENT_ID, id);
-            currentDownloads.add(id);
-        }
-
-        DirectoryResult r = new DirectoryResult();
-        r.cursor = c;
-        r.sortOrder = State.SORT_ORDER_LAST_MODIFIED;
-        model.update(r);
-
-        String[] ids = model.getModelIds();
-
-        // Check that all items were accounted for
-        assertEquals(ITEM_COUNT + DL_COUNT, ids.length);
-
-        // Check that active downloads are sorted to the top.
-        for (int i = 0; i < DL_COUNT; i++) {
-            assertTrue(currentDownloads.contains(ids[i]));
-        }
-    }
-
-    private void setupTestContext() {
-        final MockContentResolver resolver = new MockContentResolver();
-        context = new ContextWrapper(getContext()) {
-            @Override
-            public ContentResolver getContentResolver() {
-                return resolver;
-            }
-        };
-        provider = new TestContentProvider();
-        resolver.addProvider(AUTHORITY, provider);
-    }
-
-    private Selection positionToSelection(int... positions) {
-        String[] ids = model.getModelIds();
-        Selection s = new Selection();
-        // Construct a selection of the given positions.
-        for (int p: positions) {
-            s.add(ids[p]);
-        }
-        return s;
-    }
-
-    private static class DummyListener implements Model.UpdateListener {
-        public void onModelUpdate(Model model) {}
-        public void onModelUpdateFailed(Exception e) {}
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/MultiSelectManagerTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/MultiSelectManagerTest.java
deleted file mode 100644
index 57b9f92..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/MultiSelectManagerTest.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.util.SparseBooleanArray;
-
-import com.android.documentsui.dirlist.MultiSelectManager.Selection;
-import com.android.documentsui.testing.dirlist.SelectionProbe;
-import com.android.documentsui.testing.dirlist.TestSelectionListener;
-
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-@SmallTest
-public class MultiSelectManagerTest extends AndroidTestCase {
-
-    private static final List<String> ITEMS = TestData.create(100);
-
-    private MultiSelectManager mManager;
-    private TestSelectionListener mCallback;
-    private TestDocumentsAdapter mAdapter;
-    private SelectionProbe mSelection;
-
-    @Override
-    public void setUp() throws Exception {
-        mCallback = new TestSelectionListener();
-        mAdapter = new TestDocumentsAdapter(ITEMS);
-        mManager = new MultiSelectManager(mAdapter, MultiSelectManager.MODE_MULTIPLE);
-        mManager.addCallback(mCallback);
-
-        mSelection = new SelectionProbe(mManager);
-    }
-
-    public void testSelection() {
-        // Check selection.
-        mManager.toggleSelection(ITEMS.get(7));
-        mSelection.assertSelection(7);
-        // Check deselection.
-        mManager.toggleSelection(ITEMS.get(7));
-        mSelection.assertNoSelection();
-    }
-
-    public void testSelection_NotifiesSelectionChanged() {
-        // Selection should notify.
-        mManager.toggleSelection(ITEMS.get(7));
-        mCallback.assertSelectionChanged();
-        // Deselection should notify.
-        mManager.toggleSelection(ITEMS.get(7));
-        mCallback.assertSelectionChanged();
-    }
-
-    public void testRangeSelection() {
-        mManager.startRangeSelection(15);
-        mManager.snapRangeSelection(19);
-        mSelection.assertRangeSelection(15, 19);
-    }
-
-    public void testRangeSelection_snapExpand() {
-        mManager.startRangeSelection(15);
-        mManager.snapRangeSelection(19);
-        mManager.snapRangeSelection(27);
-        mSelection.assertRangeSelection(15, 27);
-    }
-
-    public void testRangeSelection_snapContract() {
-        mManager.startRangeSelection(15);
-        mManager.snapRangeSelection(27);
-        mManager.snapRangeSelection(19);
-        mSelection.assertRangeSelection(15, 19);
-    }
-
-    public void testRangeSelection_snapInvert() {
-        mManager.startRangeSelection(15);
-        mManager.snapRangeSelection(27);
-        mManager.snapRangeSelection(3);
-        mSelection.assertRangeSelection(3, 15);
-    }
-
-    public void testRangeSelection_multiple() {
-        mManager.startRangeSelection(15);
-        mManager.snapRangeSelection(27);
-        mManager.endRangeSelection();
-        mManager.startRangeSelection(42);
-        mManager.snapRangeSelection(57);
-        mSelection.assertSelectionSize(29);
-        mSelection.assertRangeSelected(15, 27);
-        mSelection.assertRangeSelected(42, 57);
-
-    }
-
-    public void testProvisionalSelection() {
-        Selection s = mManager.getSelection();
-        mSelection.assertNoSelection();
-
-        SparseBooleanArray provisional = new SparseBooleanArray();
-        provisional.append(1, true);
-        provisional.append(2, true);
-        s.setProvisionalSelection(getItemIds(provisional));
-        mSelection.assertSelection(1, 2);
-    }
-
-    public void testProvisionalSelection_Replace() {
-        Selection s = mManager.getSelection();
-
-        SparseBooleanArray provisional = new SparseBooleanArray();
-        provisional.append(1, true);
-        provisional.append(2, true);
-        s.setProvisionalSelection(getItemIds(provisional));
-
-        provisional.clear();
-        provisional.append(3, true);
-        provisional.append(4, true);
-        s.setProvisionalSelection(getItemIds(provisional));
-        mSelection.assertSelection(3, 4);
-    }
-
-    public void testProvisionalSelection_IntersectsExistingProvisionalSelection() {
-        Selection s = mManager.getSelection();
-
-        SparseBooleanArray provisional = new SparseBooleanArray();
-        provisional.append(1, true);
-        provisional.append(2, true);
-        s.setProvisionalSelection(getItemIds(provisional));
-
-        provisional.clear();
-        provisional.append(1, true);
-        s.setProvisionalSelection(getItemIds(provisional));
-        mSelection.assertSelection(1);
-    }
-
-    public void testProvisionalSelection_Apply() {
-        Selection s = mManager.getSelection();
-
-        SparseBooleanArray provisional = new SparseBooleanArray();
-        provisional.append(1, true);
-        provisional.append(2, true);
-        s.setProvisionalSelection(getItemIds(provisional));
-        s.applyProvisionalSelection();
-        mSelection.assertSelection(1, 2);
-    }
-
-    public void testProvisionalSelection_Cancel() {
-        mManager.toggleSelection(ITEMS.get(1));
-        mManager.toggleSelection(ITEMS.get(2));
-        Selection s = mManager.getSelection();
-
-        SparseBooleanArray provisional = new SparseBooleanArray();
-        provisional.append(3, true);
-        provisional.append(4, true);
-        s.setProvisionalSelection(getItemIds(provisional));
-        s.cancelProvisionalSelection();
-
-        // Original selection should remain.
-        mSelection.assertSelection(1, 2);
-    }
-
-    public void testProvisionalSelection_IntersectsAppliedSelection() {
-        mManager.toggleSelection(ITEMS.get(1));
-        mManager.toggleSelection(ITEMS.get(2));
-        Selection s = mManager.getSelection();
-
-        SparseBooleanArray provisional = new SparseBooleanArray();
-        provisional.append(2, true);
-        provisional.append(3, true);
-        s.setProvisionalSelection(getItemIds(provisional));
-        mSelection.assertSelection(1, 2, 3);
-    }
-
-    private static Set<String> getItemIds(SparseBooleanArray selection) {
-        Set<String> ids = new HashSet<>();
-
-        int count = selection.size();
-        for (int i = 0; i < count; ++i) {
-            ids.add(ITEMS.get(selection.keyAt(i)));
-        }
-
-        return ids;
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/MultiSelectManager_SelectionTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/MultiSelectManager_SelectionTest.java
deleted file mode 100644
index 444b2dc..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/MultiSelectManager_SelectionTest.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.documentsui.dirlist.MultiSelectManager.Selection;
-import com.google.common.collect.Sets;
-
-import java.util.HashSet;
-import java.util.Set;
-
-@SmallTest
-public class MultiSelectManager_SelectionTest extends AndroidTestCase {
-
-    private Selection selection;
-
-    private String[] ids = new String[]{
-            "foo",
-            "43",
-            "auth|id=@53di*/f3#d"
-    };
-
-    @Override
-    public void setUp() throws Exception {
-        selection = new Selection();
-        selection.add(ids[0]);
-        selection.add(ids[1]);
-        selection.add(ids[2]);
-    }
-
-    public void testAdd() {
-        // We added in setUp.
-        assertEquals(3, selection.size());
-        assertContains(ids[0]);
-        assertContains(ids[1]);
-        assertContains(ids[2]);
-    }
-
-    public void testRemove() {
-        selection.remove(ids[0]);
-        selection.remove(ids[2]);
-        assertEquals(1, selection.size());
-        assertContains(ids[1]);
-    }
-
-    public void testClear() {
-        selection.clear();
-        assertEquals(0, selection.size());
-    }
-
-    public void testIsEmpty() {
-        assertTrue(new Selection().isEmpty());
-        selection.clear();
-        assertTrue(selection.isEmpty());
-    }
-
-    public void testSize() {
-        Selection other = new Selection();
-        for (int i = 0; i < selection.size(); i++) {
-            other.add(ids[i]);
-        }
-        assertEquals(selection.size(), other.size());
-    }
-
-    public void testEqualsSelf() {
-        assertEquals(selection, selection);
-    }
-
-    public void testEqualsOther() {
-        Selection other = new Selection();
-        other.add(ids[0]);
-        other.add(ids[1]);
-        other.add(ids[2]);
-        assertEquals(selection, other);
-        assertEquals(selection.hashCode(), other.hashCode());
-    }
-
-    public void testEqualsCopy() {
-        Selection other = new Selection();
-        other.copyFrom(selection);
-        assertEquals(selection, other);
-        assertEquals(selection.hashCode(), other.hashCode());
-    }
-
-    public void testNotEquals() {
-        Selection other = new Selection();
-        other.add("foobar");
-        assertFalse(selection.equals(other));
-    }
-
-    public void testIntersection_empty0() {
-        Selection testSelection = new Selection();
-        testSelection.intersect(new HashSet<String>());
-        assertTrue(testSelection.isEmpty());
-    }
-
-    public void testIntersection_empty1() {
-        Selection testSelection = new Selection();
-        testSelection.intersect(Sets.newHashSet("foo"));
-        assertTrue(testSelection.isEmpty());
-    }
-
-    public void testIntersection_empty2() {
-        assertFalse(selection.isEmpty());
-        selection.intersect(new HashSet<String>());
-        assertTrue(selection.isEmpty());
-    }
-
-    public void testIntersection_exclusive() {
-        String[] ids0 = new String[]{"foo", "bar", "baz"};
-        String[] ids1 = new String[]{"0", "1", "2"};
-
-        Selection testSelection = new Selection();
-        testSelection.add(ids0[0]);
-        testSelection.add(ids0[1]);
-        testSelection.add(ids0[2]);
-
-        Set<String> set = Sets.newHashSet(ids1);
-        testSelection.intersect(set);
-
-        assertTrue(testSelection.isEmpty());
-    }
-
-    public void testIntersection_subset() {
-        String[] ids0 = new String[]{"foo", "bar", "baz"};
-        String[] ids1 = new String[]{"0", "baz", "1", "foo", "2"};
-
-        Selection testSelection = new Selection();
-        testSelection.add(ids0[0]);
-        testSelection.add(ids0[1]);
-        testSelection.add(ids0[2]);
-
-        testSelection.intersect(Sets.newHashSet(ids1));
-
-        assertTrue(testSelection.contains("foo"));
-        assertFalse(testSelection.contains("bar"));
-        assertTrue(testSelection.contains("baz"));
-    }
-
-    public void testIntersection_all() {
-        String[] ids0 = new String[]{"foo", "bar", "baz"};
-        String[] ids1 = new String[]{"0", "baz", "1", "foo", "2", "bar"};
-
-        Selection testSelection = new Selection();
-        testSelection.add(ids0[0]);
-        testSelection.add(ids0[1]);
-        testSelection.add(ids0[2]);
-
-        Selection control = new Selection();
-        control.copyFrom(testSelection);
-
-        testSelection.intersect(Sets.newHashSet(ids1));
-
-        assertTrue(testSelection.equals(control));
-    }
-
-    private void assertContains(String id) {
-        String err = String.format("Selection %s does not contain %s", selection, id);
-        assertTrue(err, selection.contains(id));
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/MultiSelectManager_SingleSelectTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/MultiSelectManager_SingleSelectTest.java
deleted file mode 100644
index 62cb1b0..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/MultiSelectManager_SingleSelectTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.documentsui.testing.dirlist.SelectionProbe;
-import com.android.documentsui.testing.dirlist.TestSelectionListener;
-
-import java.util.List;
-
-@SmallTest
-public class MultiSelectManager_SingleSelectTest extends AndroidTestCase {
-
-    private static final List<String> ITEMS = TestData.create(100);
-
-    private MultiSelectManager mManager;
-    private TestSelectionListener mCallback;
-    private TestDocumentsAdapter mAdapter;
-    private SelectionProbe mSelection;
-
-    @Override
-    public void setUp() throws Exception {
-        mCallback = new TestSelectionListener();
-        mAdapter = new TestDocumentsAdapter(ITEMS);
-        mManager = new MultiSelectManager(mAdapter, MultiSelectManager.MODE_SINGLE);
-        mManager.addCallback(mCallback);
-
-        mSelection = new SelectionProbe(mManager);
-    }
-
-    public void testSimpleSelect() {
-        mManager.toggleSelection(ITEMS.get(3));
-        mManager.toggleSelection(ITEMS.get(4));
-        mCallback.assertSelectionChanged();
-        mSelection.assertSelection(4);
-    }
-
-    public void testRangeSelectionNotEstablished() {
-        mManager.toggleSelection(ITEMS.get(3));
-        mCallback.reset();
-
-        try {
-            mManager.snapRangeSelection(10);
-            fail("Should have thrown.");
-        } catch (Exception expected) {}
-
-        mCallback.assertSelectionUnchanged();
-        mSelection.assertSelection(3);
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/SectionBreakDocumentsAdapterWrapperTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/SectionBreakDocumentsAdapterWrapperTest.java
deleted file mode 100644
index 7c324e7..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/SectionBreakDocumentsAdapterWrapperTest.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.database.MatrixCursor;
-import android.provider.DocumentsContract.Document;
-import android.support.v7.widget.RecyclerView;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-import android.view.ViewGroup;
-
-import com.android.documentsui.DirectoryResult;
-import com.android.documentsui.RootCursorWrapper;
-import com.android.documentsui.State;
-
-@SmallTest
-public class SectionBreakDocumentsAdapterWrapperTest extends AndroidTestCase {
-
-    private static final String AUTHORITY = "test_authority";
-    private static final String[] NAMES = new String[] {
-            "4",
-            "foo",
-            "1",
-            "bar",
-            "*(Ljifl;a",
-            "0",
-            "baz",
-            "2",
-            "3",
-            "%$%VD"
-    };
-
-    private TestModel mModel;
-    private SectionBreakDocumentsAdapterWrapper mAdapter;
-
-    public void setUp() {
-
-        final Context testContext = TestContext.createStorageTestContext(getContext(), AUTHORITY);
-        DocumentsAdapter.Environment env = new TestEnvironment(testContext);
-
-        mModel = new TestModel(AUTHORITY);
-        mAdapter = new SectionBreakDocumentsAdapterWrapper(
-            env,
-            new ModelBackedDocumentsAdapter(
-                env, new IconHelper(testContext, State.MODE_GRID)));
-
-        mModel.addUpdateListener(mAdapter);
-    }
-
-    // Tests that the item count is correct for a directory containing only subdirs.
-    public void testItemCount_allDirs() {
-        MatrixCursor c = new MatrixCursor(TestModel.COLUMNS);
-
-        for (int i = 0; i < 5; ++i) {
-            MatrixCursor.RowBuilder row = c.newRow();
-            row.add(RootCursorWrapper.COLUMN_AUTHORITY, AUTHORITY);
-            row.add(Document.COLUMN_DOCUMENT_ID, Integer.toString(i));
-            row.add(Document.COLUMN_SIZE, i);
-            row.add(Document.COLUMN_MIME_TYPE, Document.MIME_TYPE_DIR);
-        }
-        DirectoryResult r = new DirectoryResult();
-        r.cursor = c;
-        r.sortOrder = State.SORT_ORDER_SIZE;
-        mModel.update(r);
-
-        assertEquals(mModel.getItemCount(), mAdapter.getItemCount());
-    }
-
-    // Tests that the item count is correct for a directory containing only files.
-    public void testItemCount_allFiles() {
-        mModel.update(NAMES);
-        assertEquals(mModel.getItemCount(), mAdapter.getItemCount());
-    }
-
-    // Tests that the item count is correct for a directory containing files and subdirs.
-    public void testItemCount_mixed() {
-        MatrixCursor c = new MatrixCursor(TestModel.COLUMNS);
-
-        for (int i = 0; i < 5; ++i) {
-            MatrixCursor.RowBuilder row = c.newRow();
-            row.add(RootCursorWrapper.COLUMN_AUTHORITY, AUTHORITY);
-            row.add(Document.COLUMN_DOCUMENT_ID, Integer.toString(i));
-            row.add(Document.COLUMN_SIZE, i);
-            String mimeType =(i < 2) ? Document.MIME_TYPE_DIR : "text/*";
-            row.add(Document.COLUMN_MIME_TYPE, mimeType);
-        }
-        DirectoryResult r = new DirectoryResult();
-        r.cursor = c;
-        r.sortOrder = State.SORT_ORDER_SIZE;
-        mModel.update(r);
-
-        assertEquals(mModel.getItemCount() + 1, mAdapter.getItemCount());
-    }
-
-    private final class TestEnvironment implements DocumentsAdapter.Environment {
-        private final Context testContext;
-
-        private TestEnvironment(Context testContext) {
-            this.testContext = testContext;
-        }
-
-        @Override
-        public boolean isSelected(String id) {
-            return false;
-        }
-
-        @Override
-        public boolean isDocumentEnabled(String mimeType, int flags) {
-            return true;
-        }
-
-        @Override
-        public void initDocumentHolder(DocumentHolder holder) {}
-
-        @Override
-        public Model getModel() {
-            return mModel;
-        }
-
-        @Override
-        public State getDisplayState() {
-            return null;
-        }
-
-        @Override
-        public Context getContext() {
-            return testContext;
-        }
-
-        @Override
-        public int getColumnCount() {
-            return 4;
-        }
-
-        @Override
-        public void onBindDocumentHolder(DocumentHolder holder, Cursor cursor) {}
-    }
-
-    private static class DummyListener implements Model.UpdateListener {
-        public void onModelUpdate(Model model) {}
-        public void onModelUpdateFailed(Exception e) {}
-    }
-
-    private static class DummyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
-        public int getItemCount() { return 0; }
-        public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {}
-        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-            return null;
-        }
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestContentProvider.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestContentProvider.java
deleted file mode 100644
index c8d424f..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestContentProvider.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.net.Uri;
-import android.os.Bundle;
-import android.provider.DocumentsContract;
-import android.test.mock.MockContentProvider;
-
-import com.android.documentsui.model.DocumentInfo;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * A very simple test double for ContentProvider. Useful in this package only.
- */
-class TestContentProvider extends MockContentProvider {
-    List<Uri> mDeleted = new ArrayList<>();
-
-    @Override
-    public Bundle call(String method, String arg, Bundle extras) {
-        // Intercept and log delete method calls.
-        if (DocumentsContract.METHOD_DELETE_DOCUMENT.equals(method)) {
-            final Uri documentUri = extras.getParcelable(DocumentsContract.EXTRA_URI);
-            mDeleted.add(documentUri);
-            return new Bundle();
-        } else {
-            return super.call(method, arg, extras);
-        }
-    }
-
-    public void assertWasDeleted(DocumentInfo doc) {
-        ModelTest.assertTrue(mDeleted.contains(doc.derivedUri));
-    }
-}
\ No newline at end of file
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestContext.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestContext.java
deleted file mode 100644
index 714062d..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestContext.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.ContextWrapper;
-import android.test.mock.MockContentResolver;
-
-public final class TestContext {
-
-    /**
-     * Returns a Context configured with test provider for authority.
-     */
-    static Context createStorageTestContext(Context context, String authority) {
-        final MockContentResolver testResolver = new MockContentResolver();
-        TestContentProvider provider = new TestContentProvider();
-        testResolver.addProvider(authority, provider);
-
-        return new ContextWrapper(context) {
-            @Override
-            public ContentResolver getContentResolver() {
-                return testResolver;
-            }
-        };
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestData.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestData.java
deleted file mode 100644
index 5c1d987..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestData.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class TestData {
-    public static List<String> create(int num) {
-        List<String> items = new ArrayList<String>(num);
-        for (int i = 0; i < num; ++i) {
-            items.add(Integer.toString(i));
-        }
-        return items;
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestDocumentsAdapter.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestDocumentsAdapter.java
deleted file mode 100644
index 4df0fa1..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestDocumentsAdapter.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.view.ViewGroup;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * A skeletal {@link DocumentsAdapter} test double.
- */
-public class TestDocumentsAdapter extends DocumentsAdapter {
-
-    List<String> mModelIds = new ArrayList<>();
-
-    public TestDocumentsAdapter(List<String> modelIds) {
-        mModelIds = modelIds;
-    }
-
-    @Override
-    public void onModelUpdate(Model model) {
-    }
-
-    @Override
-    public void onModelUpdateFailed(Exception e) {
-    }
-
-    @Override
-    List<String> getModelIds() {
-        return mModelIds;
-    }
-
-    @Override
-    void onItemSelectionChanged(String id) {
-    }
-
-    @Override
-    String getModelId(int position) {
-        return mModelIds.get(position);
-    }
-
-    @Override
-    public DocumentHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void onBindViewHolder(DocumentHolder holder, int position) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public int getItemCount() {
-        return mModelIds.size();
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestFocusHandler.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestFocusHandler.java
deleted file mode 100644
index 0585b9f..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestFocusHandler.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.view.KeyEvent;
-import android.view.View;
-
-/**
- * A purely dummy instance of FocusHandler.
- */
-public final class TestFocusHandler implements FocusHandler {
-
-    @Override
-    public boolean handleKey(DocumentHolder doc, int keyCode, KeyEvent event) {
-        return false;
-    }
-
-    @Override
-    public void onFocusChange(View v, boolean hasFocus) {
-    }
-
-    @Override
-    public void restoreLastFocus() {
-    }
-
-    @Override
-    public int getFocusPosition() {
-        return 0;
-    }
-}
\ No newline at end of file
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestModel.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestModel.java
deleted file mode 100644
index 2d819ff..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestModel.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.database.MatrixCursor;
-import android.provider.DocumentsContract.Document;
-
-import com.android.documentsui.DirectoryResult;
-import com.android.documentsui.RootCursorWrapper;
-
-import java.util.Random;
-
-public class TestModel extends Model {
-
-    static final String[] COLUMNS = new String[]{
-        RootCursorWrapper.COLUMN_AUTHORITY,
-        Document.COLUMN_DOCUMENT_ID,
-        Document.COLUMN_FLAGS,
-        Document.COLUMN_DISPLAY_NAME,
-        Document.COLUMN_SIZE,
-        Document.COLUMN_MIME_TYPE
-    };
-
-    private final String mAuthority;
-
-    public TestModel(String authority) {
-        super();
-        mAuthority = authority;
-    }
-
-    void update(String... names) {
-        Random rand = new Random();
-
-        MatrixCursor c = new MatrixCursor(COLUMNS);
-        for (int i = 0; i < names.length; i++) {
-            MatrixCursor.RowBuilder row = c.newRow();
-            row.add(RootCursorWrapper.COLUMN_AUTHORITY, mAuthority);
-            row.add(Document.COLUMN_DOCUMENT_ID, Integer.toString(i));
-            row.add(Document.COLUMN_FLAGS, Document.FLAG_SUPPORTS_DELETE);
-            // Generate random document names and sizes. This forces the model's internal sort code
-            // to actually do something.
-            row.add(Document.COLUMN_DISPLAY_NAME, names[i]);
-            row.add(Document.COLUMN_SIZE, rand.nextInt());
-        }
-
-        DirectoryResult r = new DirectoryResult();
-        r.cursor = c;
-        update(r);
-    }
-
-    String idForPosition(int p) {
-        return Integer.toString(p);
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestSelectionEnvironment.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestSelectionEnvironment.java
deleted file mode 100644
index b69787c..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/TestSelectionEnvironment.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.graphics.Point;
-import android.graphics.Rect;
-import android.support.v7.widget.RecyclerView.OnScrollListener;
-
-import com.android.documentsui.dirlist.BandController.SelectionEnvironment;
-
-import java.util.List;
-
-public class TestSelectionEnvironment implements SelectionEnvironment {
-
-    public TestSelectionEnvironment(List<String> items) {
-    }
-
-    @Override
-    public void showBand(Rect rect) {
-    }
-
-    @Override
-    public void hideBand() {
-    }
-
-    @Override
-    public void addOnScrollListener(OnScrollListener listener) {
-    }
-
-    @Override
-    public void removeOnScrollListener(OnScrollListener listener) {
-    }
-
-    @Override
-    public void scrollBy(int dy) {
-    }
-
-    @Override
-    public int getHeight() {
-        return 0;
-    }
-
-    @Override
-    public void invalidateView() {
-    }
-
-    @Override
-    public void runAtNextFrame(Runnable r) {
-    }
-
-    @Override
-    public void removeCallback(Runnable r) {
-    }
-
-    @Override
-    public Point createAbsolutePoint(Point relativePoint) {
-        return null;
-    }
-
-    @Override
-    public Rect getAbsoluteRectForChildViewAt(int index) {
-        return null;
-    }
-
-    @Override
-    public int getAdapterPositionAt(int index) {
-        return 0;
-    }
-
-    @Override
-    public int getColumnCount() {
-        return 0;
-    }
-
-    @Override
-    public int getChildCount() {
-        return 0;
-    }
-
-    @Override
-    public int getVisibleChildCount() {
-        return 0;
-    }
-
-    @Override
-    public boolean isLayoutItem(int adapterPosition) {
-        return false;
-    }
-
-    @Override
-    public boolean hasView(int adapterPosition) {
-        return true;
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/UserInputHandler_MouseTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/UserInputHandler_MouseTest.java
deleted file mode 100644
index 4c34546..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/UserInputHandler_MouseTest.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
-import android.support.v7.widget.RecyclerView;
-import android.view.MotionEvent;
-
-import com.android.documentsui.Events.InputEvent;
-import com.android.documentsui.dirlist.UserInputHandler.DocumentDetails;
-import com.android.documentsui.testing.TestEvent;
-import com.android.documentsui.testing.TestEvent.Builder;
-import com.android.documentsui.testing.TestPredicate;
-import com.android.documentsui.testing.dirlist.SelectionProbe;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.List;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public final class UserInputHandler_MouseTest {
-
-    private static final List<String> ITEMS = TestData.create(100);
-
-    private UserInputHandler<TestEvent> mInputHandler;
-
-    private TestDocumentsAdapter mAdapter;
-    private SelectionProbe mSelection;
-    private TestPredicate<DocumentDetails> mCanSelect;
-    private TestPredicate<InputEvent> mRightClickHandler;
-    private TestPredicate<DocumentDetails> mActivateHandler;
-    private TestPredicate<DocumentDetails> mDeleteHandler;
-
-    private Builder mEvent;
-
-    @Before
-    public void setUp() {
-
-        mAdapter = new TestDocumentsAdapter(ITEMS);
-        MultiSelectManager selectionMgr =
-                new MultiSelectManager(mAdapter, MultiSelectManager.MODE_MULTIPLE);
-
-        mSelection = new SelectionProbe(selectionMgr);
-        mCanSelect = new TestPredicate<>();
-        mRightClickHandler = new TestPredicate<>();
-        mActivateHandler = new TestPredicate<>();
-        mDeleteHandler = new TestPredicate<>();
-
-        mInputHandler = new UserInputHandler<>(
-                selectionMgr,
-                new TestFocusHandler(),
-                (MotionEvent event) -> {
-                    throw new UnsupportedOperationException("Not exercised in tests.");
-                },
-                (TestEvent event) -> {
-                    return event.getDocument();
-                },
-                mCanSelect,
-                mRightClickHandler::test,
-                mActivateHandler::test,
-                mDeleteHandler::test);
-
-        mEvent = TestEvent.builder().mouse();
-    }
-
-    @Test
-    public void testConfirmedClick_StartsSelection() {
-        mInputHandler.onSingleTapConfirmed(mEvent.at(11).build());
-        mSelection.assertSelection(11);
-    }
-
-    @Test
-    public void testUnconfirmedClick_AddsToExistingSelection() {
-        mInputHandler.onSingleTapConfirmed(mEvent.at(7).build());
-
-        mInputHandler.onSingleTapUp(mEvent.at(11).build());
-        mSelection.assertSelection(7, 11);
-    }
-
-    @Test
-    public void testDoubleClick_Activates() {
-        mInputHandler.onDoubleTap(mEvent.at(11).build());
-        mActivateHandler.assertLastArgument(mEvent.build());
-    }
-
-    @Test
-    public void testClickOff_ClearsSelection() {
-        mInputHandler.onSingleTapConfirmed(mEvent.at(11).build());
-        mInputHandler.onSingleTapUp(mEvent.at(RecyclerView.NO_POSITION).build());
-        mSelection.assertNoSelection();
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/UserInputHandler_RangeTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/UserInputHandler_RangeTest.java
deleted file mode 100644
index 1d763f9..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/UserInputHandler_RangeTest.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
-import android.view.MotionEvent;
-
-import com.android.documentsui.Events.InputEvent;
-import com.android.documentsui.dirlist.UserInputHandler.DocumentDetails;
-import com.android.documentsui.testing.TestEvent;
-import com.android.documentsui.testing.TestEvent.Builder;
-import com.android.documentsui.testing.TestPredicate;
-import com.android.documentsui.testing.dirlist.SelectionProbe;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.List;
-
-/**
- * UserInputHandler / MultiSelectManager integration test covering the shared
- * responsibility of range selection.
- */
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public final class UserInputHandler_RangeTest {
-
-    private static final List<String> ITEMS = TestData.create(100);
-
-    private UserInputHandler<TestEvent> mInputHandler;
-
-    private TestDocumentsAdapter mAdapter;
-    private SelectionProbe mSelection;
-    private TestPredicate<DocumentDetails> mCanSelect;
-    private TestPredicate<InputEvent> mRightClickHandler;
-    private TestPredicate<DocumentDetails> mActivateHandler;
-    private TestPredicate<DocumentDetails> mDeleteHandler;
-    private Builder mEvent;
-
-    @Before
-    public void setUp() {
-
-        mAdapter = new TestDocumentsAdapter(ITEMS);
-        MultiSelectManager selectionMgr =
-                new MultiSelectManager(mAdapter, MultiSelectManager.MODE_MULTIPLE);
-
-        mSelection = new SelectionProbe(selectionMgr);
-        mCanSelect = new TestPredicate<>();
-        mRightClickHandler = new TestPredicate<>();
-        mActivateHandler = new TestPredicate<>();
-        mDeleteHandler = new TestPredicate<>();
-
-        mInputHandler = new UserInputHandler<>(
-                selectionMgr,
-                new TestFocusHandler(),
-                (MotionEvent event) -> {
-                    throw new UnsupportedOperationException("Not exercised in tests.");
-                },
-                (TestEvent event) -> {
-                    return event.getDocument();
-                },
-                mCanSelect,
-                mRightClickHandler::test,
-                mActivateHandler::test,
-                mDeleteHandler::test);
-
-        mEvent = TestEvent.builder().mouse();
-    }
-
-    @Test
-    public void testExtendRange() {
-        mInputHandler.onSingleTapConfirmed(mEvent.at(7).build());
-        mInputHandler.onSingleTapUp(mEvent.at(11).shift().build());
-        mSelection.assertRangeSelection(7, 11);
-    }
-
-    @Test
-    public void testExtendRangeContinues() {
-        mInputHandler.onSingleTapConfirmed(mEvent.at(7).build());
-        mInputHandler.onSingleTapUp(mEvent.at(11).shift().build());
-        mInputHandler.onSingleTapUp(mEvent.at(21).shift().build());
-        mSelection.assertRangeSelection(7, 21);
-    }
-
-    @Test
-    public void testMultipleContiguousRanges() {
-        mInputHandler.onSingleTapConfirmed(mEvent.at(7).build());
-        mInputHandler.onSingleTapUp(mEvent.at(11).shift().build());
-
-        // click without shift sets a new range start point.
-        mInputHandler.onSingleTapUp(mEvent.at(20).unshift().build());
-        mInputHandler.onSingleTapUp(mEvent.at(25).shift().build());
-
-        mSelection.assertRangeSelected(7, 11);
-        mSelection.assertRangeSelected(20, 25);
-
-        mSelection.assertRangeNotSelected(12, 19);
-        mSelection.assertSelectionSize(11);
-    }
-
-    @Test
-    public void testReducesSelectionRange() {
-        mInputHandler.onSingleTapConfirmed(mEvent.at(7).build());
-        mInputHandler.onSingleTapUp(mEvent.at(17).shift().build());
-        mInputHandler.onSingleTapUp(mEvent.at(10).shift().build());
-        mSelection.assertRangeSelection(7, 10);
-    }
-
-    @Test
-    public void testReducesSelectionRange_Reverse() {
-        mInputHandler.onSingleTapConfirmed(mEvent.at(17).build());
-        mInputHandler.onSingleTapUp(mEvent.at(7).shift().build());
-        mInputHandler.onSingleTapUp(mEvent.at(14).shift().build());
-        mSelection.assertRangeSelection(14, 17);
-    }
-
-    @Test
-    public void testExtendsRange_Reverse() {
-        mInputHandler.onSingleTapConfirmed(mEvent.at(12).build());
-        mInputHandler.onSingleTapUp(mEvent.at(5).shift().build());
-        mSelection.assertRangeSelection(5, 12);
-    }
-
-    @Test
-    public void testExtendsRange_ReversesAfterForwardClick() {
-        mInputHandler.onSingleTapConfirmed(mEvent.at(7).build());
-        mInputHandler.onSingleTapUp(mEvent.at(11).shift().build());
-        mInputHandler.onSingleTapUp(mEvent.at(0).shift().build());
-        mSelection.assertRangeSelection(0, 7);
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/UserInputHandler_TouchTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/UserInputHandler_TouchTest.java
deleted file mode 100644
index 2d1453e..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/UserInputHandler_TouchTest.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
-import android.support.v7.widget.RecyclerView;
-import android.view.MotionEvent;
-
-import com.android.documentsui.Events.InputEvent;
-import com.android.documentsui.dirlist.UserInputHandler.DocumentDetails;
-import com.android.documentsui.testing.TestEvent;
-import com.android.documentsui.testing.TestEvent.Builder;
-import com.android.documentsui.testing.TestPredicate;
-import com.android.documentsui.testing.dirlist.SelectionProbe;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.List;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public final class UserInputHandler_TouchTest {
-
-    private static final List<String> ITEMS = TestData.create(100);
-
-    private UserInputHandler<TestEvent> mInputHandler;
-
-    private TestDocumentsAdapter mAdapter;
-    private SelectionProbe mSelection;
-    private TestPredicate<DocumentDetails> mCanSelect;
-    private TestPredicate<InputEvent> mRightClickHandler;
-    private TestPredicate<DocumentDetails> mActivateHandler;
-    private TestPredicate<DocumentDetails> mDeleteHandler;
-
-    private Builder mEvent;
-
-    @Before
-    public void setUp() {
-
-        mAdapter = new TestDocumentsAdapter(ITEMS);
-        MultiSelectManager selectionMgr =
-                new MultiSelectManager(mAdapter, MultiSelectManager.MODE_MULTIPLE);
-
-        mSelection = new SelectionProbe(selectionMgr);
-        mCanSelect = new TestPredicate<>();
-        mRightClickHandler = new TestPredicate<>();
-        mActivateHandler = new TestPredicate<>();
-        mDeleteHandler = new TestPredicate<>();
-
-        mInputHandler = new UserInputHandler<>(
-                selectionMgr,
-                new TestFocusHandler(),
-                (MotionEvent event) -> {
-                    throw new UnsupportedOperationException("Not exercised in tests.");
-                },
-                (TestEvent event) -> {
-                    return event.getDocument();
-                },
-                mCanSelect,
-                mRightClickHandler::test,
-                mActivateHandler::test,
-                mDeleteHandler::test);
-
-        mEvent = TestEvent.builder();
-    }
-
-    @Test
-    public void testTap_ActivatesWhenNoExistingSelection() {
-        mInputHandler.onSingleTapUp(mEvent.at(11).build());
-        mActivateHandler.assertLastArgument(mEvent.build());
-    }
-
-    @Test
-    public void testLongPress_StartsSelectionMode() {
-        mInputHandler.onLongPress(mEvent.at(7).build());
-        mSelection.assertSelection(7);
-    }
-
-    @Test
-    public void testLongPress_SecondPressExtendsSelection() {
-        mInputHandler.onLongPress(mEvent.at(7).build());
-        mInputHandler.onLongPress(mEvent.at(99).build());
-        mInputHandler.onLongPress(mEvent.at(13).build());
-        mSelection.assertSelection(7, 13, 99);
-    }
-
-    @Test
-    public void testTap_UnselectsSelectedItem() {
-        mInputHandler.onLongPress(mEvent.at(7).build());
-        mInputHandler.onSingleTapUp(mEvent.at(7).build());
-        mSelection.assertNoSelection();
-    }
-
-    @Test
-    public void testTapOff_ClearsSelection() {
-        mInputHandler.onLongPress(mEvent.at(7).build());
-        mInputHandler.onSingleTapUp(mEvent.at(11).build());
-        mInputHandler.onSingleTapUp(mEvent.at(RecyclerView.NO_POSITION).build());
-        mSelection.assertNoSelection();
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/ViewAutoScrollerTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/ViewAutoScrollerTest.java
deleted file mode 100644
index e2aaa84..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/dirlist/ViewAutoScrollerTest.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.dirlist;
-
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import android.graphics.Point;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.function.IntConsumer;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public final class ViewAutoScrollerTest {
-
-    private static final int VIEW_HEIGHT = 100;
-    private static final int EDGE_HEIGHT = 10;
-
-    private ViewAutoScroller mAutoScroller;
-    private Point mPoint;
-    private boolean mActive;
-    private ViewAutoScroller.ScrollDistanceDelegate mDistanceDelegate;
-    private ViewAutoScroller.ScrollActionDelegate mActionDelegate;
-    private IntConsumer mScrollAssert;
-
-    @Before
-    public void setUp() {
-        mActive = false;
-        mPoint = new Point();
-        mDistanceDelegate = new ViewAutoScroller.ScrollDistanceDelegate() {
-            @Override
-            public boolean isActive() {
-                return mActive;
-            }
-
-            @Override
-            public int getViewHeight() {
-                return VIEW_HEIGHT;
-            }
-
-            @Override
-            public Point getCurrentPosition() {
-                return mPoint;
-            }
-        };
-        mActionDelegate = new ViewAutoScroller.ScrollActionDelegate() {
-            @Override
-            public void scrollBy(int dy) {
-                mScrollAssert.accept(dy);
-            }
-
-            @Override
-            public void runAtNextFrame(Runnable r) {
-            }
-
-            @Override
-            public void removeCallback(Runnable r) {
-            }
-        };
-        mAutoScroller = new ViewAutoScroller(
-                EDGE_HEIGHT, mDistanceDelegate, mActionDelegate, new TestClock()::getCurrentTime);
-    }
-
-    @Test
-    public void testCursorNotInScrollZone() {
-        mPoint = new Point(0, VIEW_HEIGHT/2);
-        mScrollAssert = (int dy) -> {
-            // Should not have called this method
-            fail("Received unexpected scroll event");
-            assertTrue(false);
-        };
-        mAutoScroller.run();
-    }
-
-    @Test
-    public void testCursorInScrollZone_notActive() {
-        mActive = false;
-        mPoint = new Point(0, EDGE_HEIGHT - 1);
-        mScrollAssert = (int dy) -> {
-            // Should not have called this method
-            fail("Received unexpected scroll event");
-            assertTrue(false);
-        };
-        mAutoScroller.run();
-    }
-
-    @Test
-    public void testCursorInScrollZone_top() {
-        mActive = true;
-        mPoint = new Point(0, EDGE_HEIGHT - 1);
-        int expectedScrollDistance = mAutoScroller.computeScrollDistance(-1, 1);
-        mScrollAssert = (int dy) -> {
-            assertTrue(dy == expectedScrollDistance);
-        };
-        mAutoScroller.run();
-    }
-
-    @Test
-    public void testCursorInScrollZone_bottom() {
-        mActive = true;
-        mPoint = new Point(0, VIEW_HEIGHT - EDGE_HEIGHT + 1);
-        int expectedScrollDistance = mAutoScroller.computeScrollDistance(1, 1);
-        mScrollAssert = (int dy) -> {
-            assertTrue(dy == expectedScrollDistance);
-        };
-        mAutoScroller.run();
-    }
-
-    class TestClock {
-        private int timesCalled = 0;
-
-        public long getCurrentTime() {
-            return ++timesCalled;
-        }
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/model/DocumentInfoTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/model/DocumentInfoTest.java
deleted file mode 100644
index 2481dc3..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/model/DocumentInfoTest.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.model;
-
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.SmallTest;
-
-@SmallTest
-public class DocumentInfoTest extends AndroidTestCase {
-
-    private static final DocumentInfo TEST_DOC
-            = createDocInfo("authority.a", "doc.1", "text/plain");
-
-    public void testEquals() throws Exception {
-        assertEquals(TEST_DOC, TEST_DOC);
-        assertEquals(TEST_DOC, createDocInfo("authority.a", "doc.1", "text/plain"));
-    }
-
-    public void testEquals_HandlesNulls() throws Exception {
-        assertFalse(TEST_DOC.equals(null));
-    }
-
-    public void testEquals_HandlesNullFields() throws Exception {
-        assertFalse(TEST_DOC.equals(new DocumentInfo()));
-        assertFalse(new DocumentInfo().equals(TEST_DOC));
-    }
-
-    public void testNotEquals_differentAuthority() throws Exception {
-        assertFalse(TEST_DOC.equals(createDocInfo("authority.b", "doc.1", "text/plain")));
-    }
-
-    public void testNotEquals_differentDocId() throws Exception {
-        assertFalse(TEST_DOC.equals(createDocInfo("authority.a", "doc.2", "text/plain")));
-    }
-
-    public void testNotEquals_differentMimetype() throws Exception {
-        assertFalse(TEST_DOC.equals(createDocInfo("authority.a", "doc.1", "image/png")));
-    }
-
-    private static DocumentInfo createDocInfo(String authority, String docId, String mimeType) {
-        DocumentInfo doc = new DocumentInfo();
-        doc.authority = authority;
-        doc.documentId = docId;
-        doc.mimeType = mimeType;
-        doc.deriveFields();
-        return doc;
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/services/AbstractCopyJobTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/services/AbstractCopyJobTest.java
deleted file mode 100644
index 2560f2c..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/services/AbstractCopyJobTest.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.services;
-
-import static com.google.common.collect.Lists.newArrayList;
-
-import android.net.Uri;
-import android.provider.DocumentsContract;
-import android.test.suitebuilder.annotation.MediumTest;
-
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.services.FileOperationService.OpType;
-
-import java.util.List;
-
-@MediumTest
-public abstract class AbstractCopyJobTest<T extends CopyJob> extends AbstractJobTest<T> {
-
-    private final @OpType int mOpType;
-
-    AbstractCopyJobTest(@OpType int opType) {
-        mOpType = opType;
-    }
-
-    public void runCopyFilesTest() throws Exception {
-        Uri testFile1 = mDocs.createDocument(mSrcRoot, "text/plain", "test1.txt");
-        mDocs.writeDocument(testFile1, HAM_BYTES);
-
-        Uri testFile2 = mDocs.createDocument(mSrcRoot, "text/plain", "test2.txt");
-        mDocs.writeDocument(testFile2, FRUITY_BYTES);
-
-        createJob(newArrayList(testFile1, testFile2)).run();
-        mJobListener.waitForFinished();
-
-        mDocs.assertChildCount(mDestRoot, 2);
-        mDocs.assertHasFile(mDestRoot, "test1.txt");
-        mDocs.assertHasFile(mDestRoot, "test2.txt");
-        mDocs.assertFileContents(mDestRoot.documentId, "test1.txt", HAM_BYTES);
-        mDocs.assertFileContents(mDestRoot.documentId, "test2.txt", FRUITY_BYTES);
-    }
-
-    public void runCopyVirtualTypedFileTest() throws Exception {
-        Uri testFile = mDocs.createVirtualFile(
-                mSrcRoot, "/virtual.sth", "virtual/mime-type",
-                FRUITY_BYTES, "application/pdf", "text/html");
-
-        createJob(newArrayList(testFile)).run();
-
-        mJobListener.waitForFinished();
-
-        mDocs.assertChildCount(mDestRoot, 1);
-        mDocs.assertHasFile(mDestRoot, "virtual.sth.pdf");  // copy should convert file to PDF.
-        mDocs.assertFileContents(mDestRoot.documentId, "virtual.sth.pdf", FRUITY_BYTES);
-    }
-
-    public void runCopyVirtualNonTypedFileTest() throws Exception {
-        Uri testFile = mDocs.createVirtualFile(
-                mSrcRoot, "/virtual.sth", "virtual/mime-type",
-                FRUITY_BYTES);
-
-        createJob(newArrayList(testFile)).run();
-
-        mJobListener.waitForFinished();
-        mJobListener.assertFailed();
-        mJobListener.assertFilesFailed(newArrayList("virtual.sth"));
-
-        mDocs.assertChildCount(mDestRoot, 0);
-    }
-
-    public void runCopyEmptyDirTest() throws Exception {
-        Uri testDir = mDocs.createFolder(mSrcRoot, "emptyDir");
-
-        createJob(newArrayList(testDir)).run();
-        mJobListener.waitForFinished();
-
-        mDocs.assertChildCount(mDestRoot, 1);
-        mDocs.assertHasDirectory(mDestRoot, "emptyDir");
-    }
-
-    public void runCopyDirRecursivelyTest() throws Exception {
-
-        Uri testDir1 = mDocs.createFolder(mSrcRoot, "dir1");
-        mDocs.createDocument(testDir1, "text/plain", "test1.txt");
-
-        Uri testDir2 = mDocs.createFolder(testDir1, "dir2");
-        mDocs.createDocument(testDir2, "text/plain", "test2.txt");
-
-        createJob(newArrayList(testDir1)).run();
-        mJobListener.waitForFinished();
-
-        DocumentInfo dir1Copy = mDocs.findDocument(mDestRoot.documentId, "dir1");
-
-        mDocs.assertChildCount(dir1Copy.derivedUri, 2);
-        mDocs.assertHasDirectory(dir1Copy.derivedUri, "dir2");
-        mDocs.assertHasFile(dir1Copy.derivedUri, "test1.txt");
-
-        DocumentInfo dir2Copy = mDocs.findDocument(dir1Copy.documentId, "dir2");
-        mDocs.assertChildCount(dir2Copy.derivedUri, 1);
-        mDocs.assertHasFile(dir2Copy.derivedUri, "test2.txt");
-    }
-
-    public void runNoCopyDirToSelfTest() throws Exception {
-        Uri testDir = mDocs.createFolder(mSrcRoot, "someDir");
-
-        createJob(mOpType,
-                newArrayList(testDir),
-                DocumentsContract.buildDocumentUri(AUTHORITY, mSrcRoot.documentId),
-                testDir).run();
-
-        mJobListener.waitForFinished();
-        mJobListener.assertFailed();
-        mJobListener.assertFilesFailed(newArrayList("someDir"));
-
-        mDocs.assertChildCount(mDestRoot, 0);
-    }
-
-    public void runNoCopyDirToDescendentTest() throws Exception {
-        Uri testDir = mDocs.createFolder(mSrcRoot, "someDir");
-        Uri destDir = mDocs.createFolder(testDir, "theDescendent");
-
-        createJob(mOpType,
-                newArrayList(testDir),
-                DocumentsContract.buildDocumentUri(AUTHORITY, mSrcRoot.documentId),
-                destDir).run();
-
-        mJobListener.waitForFinished();
-        mJobListener.assertFailed();
-        mJobListener.assertFilesFailed(newArrayList("someDir"));
-
-        mDocs.assertChildCount(mDestRoot, 0);
-    }
-
-    public void runCopyFileWithReadErrorsTest() throws Exception {
-        Uri testFile = mDocs.createDocument(mSrcRoot, "text/plain", "test1.txt");
-        mDocs.writeDocument(testFile, HAM_BYTES);
-
-        String testId = DocumentsContract.getDocumentId(testFile);
-        mClient.call("simulateReadErrorsForFile", testId, null);
-
-        createJob(newArrayList(testFile)).run();
-
-        mJobListener.waitForFinished();
-        mJobListener.assertFailed();
-        mJobListener.assertFilesFailed(newArrayList("test1.txt"));
-
-        mDocs.assertChildCount(mDestRoot, 0);
-    }
-
-    /**
-     * Creates a job with a stack consisting to the default source and destination.
-     * TODO: Clean up, as mDestRoot.documentInfo may not really be the parent of
-     * srcs.
-     */
-    final T createJob(List<Uri> srcs) throws Exception {
-        Uri srcParent = DocumentsContract.buildDocumentUri(AUTHORITY, mSrcRoot.documentId);
-        Uri destination = DocumentsContract.buildDocumentUri(AUTHORITY, mDestRoot.documentId);
-        return createJob(mOpType, srcs, srcParent, destination);
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/services/AbstractJobTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/services/AbstractJobTest.java
deleted file mode 100644
index 6e4e534..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/services/AbstractJobTest.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.services;
-
-import static com.android.documentsui.StubProvider.ROOT_0_ID;
-import static com.android.documentsui.StubProvider.ROOT_1_ID;
-
-import android.content.ContentProviderClient;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.net.Uri;
-import android.os.RemoteException;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-
-import com.android.documentsui.clipping.UrisSupplier;
-import com.android.documentsui.DocumentsProviderHelper;
-import com.android.documentsui.StubProvider;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
-import com.android.documentsui.model.RootInfo;
-import com.android.documentsui.services.FileOperationService.OpType;
-import com.android.documentsui.testing.DocsProviders;
-
-import java.util.List;
-
-@MediumTest
-public abstract class AbstractJobTest<T extends Job> extends AndroidTestCase {
-
-    static String AUTHORITY = StubProvider.DEFAULT_AUTHORITY;
-    static final byte[] HAM_BYTES = "ham and cheese".getBytes();
-    static final byte[] FRUITY_BYTES = "I love fruit cakes!".getBytes();
-
-    Context mContext;
-    ContentResolver mResolver;
-    ContentProviderClient mClient;
-    DocumentsProviderHelper mDocs;
-    TestJobListener mJobListener;
-    RootInfo mSrcRoot;
-    RootInfo mDestRoot;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        mJobListener = new TestJobListener();
-
-        // NOTE: Must be the "target" context, else security checks in content provider will fail.
-        mContext = getContext();
-        mResolver = mContext.getContentResolver();
-
-        mClient = mResolver.acquireContentProviderClient(AUTHORITY);
-        mDocs = new DocumentsProviderHelper(AUTHORITY, mClient);
-
-        initTestFiles();
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        resetStorage();
-        mClient.release();
-        super.tearDown();
-    }
-
-    private void resetStorage() throws RemoteException {
-        mClient.call("clear", null, null);
-    }
-
-    private void initTestFiles() throws RemoteException {
-        mSrcRoot = mDocs.getRoot(ROOT_0_ID);
-        mDestRoot = mDocs.getRoot(ROOT_1_ID);
-    }
-
-    final T createJob(@OpType int opType, List<Uri> srcs, Uri srcParent, Uri destination)
-            throws Exception {
-        DocumentStack stack = new DocumentStack();
-        stack.push(DocumentInfo.fromUri(mResolver, destination));
-        stack.root = mSrcRoot;
-
-        UrisSupplier urisSupplier = DocsProviders.createDocsProvider(srcs);
-        FileOperation operation = new FileOperation.Builder()
-                .withOpType(opType)
-                .withSrcs(urisSupplier)
-                .withDestination(stack)
-                .withSrcParent(srcParent)
-                .build();
-        return (T) operation.createJob(mContext, mJobListener, FileOperations.createJobId());
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/services/CopyJobTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/services/CopyJobTest.java
deleted file mode 100644
index 64211c2..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/services/CopyJobTest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.services;
-
-import static com.android.documentsui.services.FileOperationService.OPERATION_COPY;
-
-import static com.google.common.collect.Lists.newArrayList;
-
-import android.net.Uri;
-import android.provider.DocumentsContract.Document;
-import android.test.suitebuilder.annotation.MediumTest;
-
-@MediumTest
-public class CopyJobTest extends AbstractCopyJobTest<CopyJob> {
-
-    public CopyJobTest() {
-        super(OPERATION_COPY);
-    }
-
-    public void testCopyFiles() throws Exception {
-        runCopyFilesTest();
-    }
-
-    public void testCopyVirtualTypedFile() throws Exception {
-        runCopyVirtualTypedFileTest();
-    }
-
-    public void testCopyVirtualNonTypedFile() throws Exception {
-        runCopyVirtualNonTypedFileTest();
-    }
-
-    public void testCopy_BackendSideVirtualTypedFile_Fallback() throws Exception {
-        mDocs.assertChildCount(mDestRoot, 0);
-
-        Uri testFile = mDocs.createDocumentWithFlags(
-                mSrcRoot.documentId, "virtual/mime-type", "tokyo.sth",
-                Document.FLAG_VIRTUAL_DOCUMENT | Document.FLAG_SUPPORTS_COPY
-                        | Document.FLAG_SUPPORTS_MOVE, "application/pdf");
-
-        createJob(newArrayList(testFile)).run();
-
-        mJobListener.waitForFinished();
-        mDocs.assertChildCount(mDestRoot, 1);
-        mDocs.assertHasFile(mDestRoot, "tokyo.sth.pdf");  // Copy should convert file to PDF.
-    }
-
-    public void testCopyEmptyDir() throws Exception {
-        runCopyEmptyDirTest();
-    }
-
-    public void testCopyDirRecursively() throws Exception {
-        runCopyDirRecursivelyTest();
-    }
-
-    public void testNoCopyDirToSelf() throws Exception {
-        runNoCopyDirToSelfTest();
-    }
-
-    public void testNoCopyDirToDescendent() throws Exception {
-        runNoCopyDirToDescendentTest();
-    }
-
-    public void testCopyFileWithReadErrors() throws Exception {
-        runCopyFileWithReadErrorsTest();
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/services/DeleteJobTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/services/DeleteJobTest.java
deleted file mode 100644
index 9dbe7ce..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/services/DeleteJobTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.services;
-
-import static com.android.documentsui.services.FileOperationService.OPERATION_DELETE;
-
-import static com.google.common.collect.Lists.newArrayList;
-
-import android.net.Uri;
-import android.provider.DocumentsContract;
-import android.test.suitebuilder.annotation.MediumTest;
-
-import java.util.List;
-
-@MediumTest
-public class DeleteJobTest extends AbstractJobTest<DeleteJob> {
-
-    public void testDeleteFiles() throws Exception {
-        Uri testFile1 = mDocs.createDocument(mSrcRoot, "text/plain", "test1.txt");
-        mDocs.writeDocument(testFile1, HAM_BYTES);
-
-        Uri testFile2 = mDocs.createDocument(mSrcRoot, "text/plain", "test2.txt");
-        mDocs.writeDocument(testFile2, FRUITY_BYTES);
-
-        createJob(newArrayList(testFile1, testFile2),
-                DocumentsContract.buildDocumentUri(AUTHORITY, mSrcRoot.documentId)).run();
-        mJobListener.waitForFinished();
-
-        mDocs.assertChildCount(mSrcRoot, 0);
-    }
-
-    /**
-     * Creates a job with a stack consisting to the default src directory.
-     */
-    private final DeleteJob createJob(List<Uri> srcs, Uri srcParent) throws Exception {
-        Uri stack = DocumentsContract.buildDocumentUri(AUTHORITY, mSrcRoot.documentId);
-        return createJob(OPERATION_DELETE, srcs, srcParent, stack);
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/services/FileOperationServiceTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/services/FileOperationServiceTest.java
deleted file mode 100644
index d6bbe5a..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/services/FileOperationServiceTest.java
+++ /dev/null
@@ -1,367 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.services;
-
-import static com.android.documentsui.services.FileOperationService.OPERATION_COPY;
-import static com.android.documentsui.services.FileOperationService.OPERATION_DELETE;
-import static com.android.documentsui.services.FileOperationService.OpType;
-import static com.android.documentsui.services.FileOperations.createBaseIntent;
-import static com.android.documentsui.services.FileOperations.createJobId;
-
-import static com.google.android.collect.Lists.newArrayList;
-
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.test.ServiceTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-
-import com.android.documentsui.clipping.UrisSupplier;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
-import com.android.documentsui.testing.DocsProviders;
-import com.android.documentsui.testing.TestHandler;
-import com.android.documentsui.testing.TestScheduledExecutorService;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@MediumTest
-public class FileOperationServiceTest extends ServiceTestCase<FileOperationService> {
-
-    private static final Uri SRC_PARENT =
-            Uri.parse("content://com.android.documentsui.testing/parent");
-    private static final DocumentInfo ALPHA_DOC = createDoc("alpha");
-    private static final DocumentInfo BETA_DOC = createDoc("alpha");
-    private static final DocumentInfo GAMMA_DOC = createDoc("gamma");
-    private static final DocumentInfo DELTA_DOC = createDoc("delta");
-
-    private final List<TestJob> mCopyJobs = new ArrayList<>();
-    private final List<TestJob> mDeleteJobs = new ArrayList<>();
-
-    private FileOperationService mService;
-    private TestScheduledExecutorService mExecutor;
-    private TestScheduledExecutorService mDeletionExecutor;
-    private TestHandler mHandler;
-
-    public FileOperationServiceTest() {
-        super(FileOperationService.class);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        setupService();  // must be called first for our test setup to work correctly.
-
-        mExecutor = new TestScheduledExecutorService();
-        mDeletionExecutor = new TestScheduledExecutorService();
-        mHandler = new TestHandler();
-
-        mCopyJobs.clear();
-        mDeleteJobs.clear();
-
-        // Install test doubles.
-        mService = getService();
-
-        assertNull(mService.executor);
-        mService.executor = mExecutor;
-
-        assertNull(mService.deletionExecutor);
-        mService.deletionExecutor = mDeletionExecutor;
-
-        assertNull(mService.handler);
-        mService.handler = mHandler;
-    }
-
-    @Override
-    protected void tearDown() {
-        // There are lots of progress notifications generated in this test case.
-        // Dismiss all of them here.
-        mHandler.dispatchAllMessages();
-    }
-
-    public void testRunsCopyJobs() throws Exception {
-        startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
-        startService(createCopyIntent(newArrayList(GAMMA_DOC), DELTA_DOC));
-
-        mExecutor.runAll();
-        assertAllCopyJobsStarted();
-    }
-
-    public void testRunsCopyJobs_AfterExceptionInJobCreation() throws Exception {
-        try {
-            startService(createCopyIntent(new ArrayList<>(), BETA_DOC));
-        } catch(AssertionError e) {
-            // Expected AssertionError
-        }
-        startService(createCopyIntent(newArrayList(GAMMA_DOC), DELTA_DOC));
-
-        assertJobsCreated(1);
-
-        mExecutor.runAll();
-        assertAllCopyJobsStarted();
-    }
-
-    public void testRunsCopyJobs_AfterFailure() throws Exception {
-        startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
-        startService(createCopyIntent(newArrayList(GAMMA_DOC), DELTA_DOC));
-
-        mCopyJobs.get(0).fail(ALPHA_DOC);
-
-        mExecutor.runAll();
-        assertAllCopyJobsStarted();
-    }
-
-    public void testRunsCopyJobs_notRunsDeleteJobs() throws Exception {
-        startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
-        startService(createDeleteIntent(newArrayList(GAMMA_DOC)));
-
-        mExecutor.runAll();
-        assertNoDeleteJobsStarted();
-    }
-
-    public void testRunsDeleteJobs() throws Exception {
-        startService(createDeleteIntent(newArrayList(ALPHA_DOC)));
-
-        mDeletionExecutor.runAll();
-        assertAllDeleteJobsStarted();
-    }
-
-    public void testRunsDeleteJobs_NotRunsCopyJobs() throws Exception {
-        startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
-        startService(createDeleteIntent(newArrayList(GAMMA_DOC)));
-
-        mDeletionExecutor.runAll();
-        assertNoCopyJobsStarted();
-    }
-
-    public void testUpdatesNotification() throws Exception {
-        startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
-        mExecutor.runAll();
-
-        // Assert monitoring continues until job is done
-        assertTrue(mHandler.hasScheduledMessage());
-        // Two notifications -- one for setup; one for progress
-        assertEquals(2, mCopyJobs.get(0).getNumOfNotifications());
-    }
-
-    public void testStopsUpdatingNotificationAfterFinished() throws Exception {
-        startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
-        mExecutor.runAll();
-
-        mHandler.dispatchNextMessage();
-        // Assert monitoring stops once job is completed.
-        assertFalse(mHandler.hasScheduledMessage());
-
-        // Assert no more notification is generated after finish.
-        assertEquals(2, mCopyJobs.get(0).getNumOfNotifications());
-
-    }
-
-    public void testHoldsWakeLockWhileWorking() throws Exception {
-        startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
-
-        assertTrue(mService.holdsWakeLock());
-    }
-
-    public void testReleasesWakeLock_AfterSuccess() throws Exception {
-        startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
-
-        assertTrue(mService.holdsWakeLock());
-        mExecutor.runAll();
-        assertFalse(mService.holdsWakeLock());
-    }
-
-    public void testReleasesWakeLock_AfterFailure() throws Exception {
-        startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
-
-        assertTrue(mService.holdsWakeLock());
-        mExecutor.runAll();
-        assertFalse(mService.holdsWakeLock());
-    }
-
-    public void testShutdownStopsExecutor_AfterSuccess() throws Exception {
-        startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
-
-        mExecutor.assertAlive();
-        mDeletionExecutor.assertAlive();
-
-        mExecutor.runAll();
-        shutdownService();
-
-        assertExecutorsShutdown();
-    }
-
-    public void testShutdownStopsExecutor_AfterMixedFailures() throws Exception {
-        startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
-        startService(createCopyIntent(newArrayList(GAMMA_DOC), DELTA_DOC));
-
-        mCopyJobs.get(0).fail(ALPHA_DOC);
-
-        mExecutor.runAll();
-        shutdownService();
-
-        assertExecutorsShutdown();
-    }
-
-    public void testShutdownStopsExecutor_AfterTotalFailure() throws Exception {
-        startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
-        startService(createCopyIntent(newArrayList(GAMMA_DOC), DELTA_DOC));
-
-        mCopyJobs.get(0).fail(ALPHA_DOC);
-        mCopyJobs.get(1).fail(GAMMA_DOC);
-
-        mExecutor.runAll();
-        shutdownService();
-
-        assertExecutorsShutdown();
-    }
-
-    private Intent createCopyIntent(ArrayList<DocumentInfo> files, DocumentInfo dest)
-            throws Exception {
-        DocumentStack stack = new DocumentStack();
-        stack.push(dest);
-
-        List<Uri> uris = new ArrayList<>(files.size());
-        for (DocumentInfo file: files) {
-            uris.add(file.derivedUri);
-        }
-
-        UrisSupplier urisSupplier = DocsProviders.createDocsProvider(uris);
-        TestFileOperation operation = new TestFileOperation(OPERATION_COPY, urisSupplier, stack);
-
-        return createBaseIntent(getContext(), createJobId(), operation);
-    }
-
-    private Intent createDeleteIntent(ArrayList<DocumentInfo> files) {
-        DocumentStack stack = new DocumentStack();
-
-        List<Uri> uris = new ArrayList<>(files.size());
-        for (DocumentInfo file: files) {
-            uris.add(file.derivedUri);
-        }
-
-        UrisSupplier urisSupplier = DocsProviders.createDocsProvider(uris);
-        TestFileOperation operation = new TestFileOperation(OPERATION_DELETE, urisSupplier, stack);
-
-        return createBaseIntent(getContext(), createJobId(), operation);
-    }
-
-    private static DocumentInfo createDoc(String name) {
-        // Doesn't need to be valid content Uri, just some urly looking thing.
-        Uri uri = new Uri.Builder()
-                .scheme("content")
-                .authority("com.android.documentsui.testing")
-                .path(name)
-                .build();
-
-        return createDoc(uri);
-    }
-
-    void assertAllCopyJobsStarted() {
-        for (TestJob job : mCopyJobs) {
-            job.assertStarted();
-        }
-    }
-
-    void assertAllDeleteJobsStarted() {
-        for (TestJob job : mDeleteJobs) {
-            job.assertStarted();
-        }
-    }
-
-    void assertNoCopyJobsStarted() {
-        for (TestJob job : mCopyJobs) {
-            job.assertNotStarted();
-        }
-    }
-
-    void assertNoDeleteJobsStarted() {
-        for (TestJob job : mDeleteJobs) {
-            job.assertNotStarted();
-        }
-    }
-
-    void assertJobsCreated(int expected) {
-        assertEquals(expected, mCopyJobs.size() + mDeleteJobs.size());
-    }
-    private static DocumentInfo createDoc(Uri destination) {
-        DocumentInfo destDoc = new DocumentInfo();
-        destDoc.derivedUri = destination;
-        return destDoc;
-    }
-
-    private void assertExecutorsShutdown() {
-        mExecutor.assertShutdown();
-        mDeletionExecutor.assertShutdown();
-    }
-
-    private final class TestFileOperation extends FileOperation {
-
-        private final Runnable mJobRunnable = () -> {
-            // The following statement is executed concurrently to Job.start() in real situation.
-            // Call it in TestJob.start() to mimic this behavior.
-            mHandler.dispatchNextMessage();
-        };
-        private final @OpType int mOpType;
-        private final UrisSupplier mSrcs;
-        private final DocumentStack mDestination;
-
-        private TestFileOperation(
-                @OpType int opType, UrisSupplier srcs, DocumentStack destination) {
-            super(opType, srcs, destination);
-            mOpType = opType;
-            mSrcs = srcs;
-            mDestination = destination;
-        }
-
-        @Override
-        public Job createJob(Context service, Job.Listener listener, String id) {
-            TestJob job =
-                    new TestJob(service, listener, id, mOpType, mDestination, mSrcs, mJobRunnable);
-
-            if (mOpType == OPERATION_COPY) {
-                mCopyJobs.add(job);
-            }
-
-            if (mOpType == OPERATION_DELETE) {
-                mDeleteJobs.add(job);
-            }
-
-            return job;
-        }
-
-        /**
-         * CREATOR is required for Parcelables, but we never pass this class via parcel.
-         */
-        public Parcelable.Creator<TestFileOperation> CREATOR =
-                new Parcelable.Creator<TestFileOperation>() {
-
-            @Override
-            public TestFileOperation createFromParcel(Parcel source) {
-                throw new UnsupportedOperationException("Can't create from a parcel.");
-            }
-
-            @Override
-            public TestFileOperation[] newArray(int size) {
-                throw new UnsupportedOperationException("Can't create a new array.");
-            }
-        };
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/services/MoveJobTest.java b/packages/DocumentsUI/tests/src/com/android/documentsui/services/MoveJobTest.java
deleted file mode 100644
index 56d96cc..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/services/MoveJobTest.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.services;
-
-import static com.android.documentsui.services.FileOperationService.OPERATION_MOVE;
-
-import static com.google.common.collect.Lists.newArrayList;
-
-import android.net.Uri;
-import android.provider.DocumentsContract.Document;
-import android.test.suitebuilder.annotation.MediumTest;
-
-@MediumTest
-public class MoveJobTest extends AbstractCopyJobTest<MoveJob> {
-
-    public MoveJobTest() {
-        super(OPERATION_MOVE);
-    }
-
-    public void testMoveFiles() throws Exception {
-        runCopyFilesTest();
-
-        mDocs.assertChildCount(mSrcRoot, 0);
-    }
-
-    public void testMoveVirtualTypedFile() throws Exception {
-        mDocs.createFolder(mSrcRoot, "hello");
-        Uri testFile = mDocs.createVirtualFile(
-                mSrcRoot, "/hello/virtual.sth", "virtual/mime-type",
-                FRUITY_BYTES, "application/pdf", "text/html");
-        createJob(newArrayList(testFile)).run();
-
-        mJobListener.waitForFinished();
-
-        // Should have failed, source not deleted. Moving by bytes for virtual files
-        // is not supported.
-        mDocs.assertChildCount(mDestRoot, 0);
-        mDocs.assertChildCount(mSrcRoot, 1);
-    }
-
-    public void testMoveVirtualNonTypedFile() throws Exception {
-        runCopyVirtualNonTypedFileTest();
-
-        // Should have failed, source not deleted.
-        mDocs.assertChildCount(mSrcRoot, 1);
-    }
-
-    public void testMove_BackendSideVirtualTypedFile_Fallback() throws Exception {
-        Uri testFile = mDocs.createDocumentWithFlags(
-                mSrcRoot.documentId, "virtual/mime-type", "tokyo.sth",
-                Document.FLAG_VIRTUAL_DOCUMENT | Document.FLAG_SUPPORTS_COPY
-                        | Document.FLAG_SUPPORTS_MOVE, "application/pdf");
-
-        createJob(newArrayList(testFile)).run();
-        mJobListener.waitForFinished();
-
-        // Should have failed, source not deleted. Moving by bytes for virtual files
-        // is not supported.
-        mDocs.assertChildCount(mDestRoot, 0);
-        mDocs.assertChildCount(mSrcRoot, 1);
-    }
-
-    public void testMoveEmptyDir() throws Exception {
-        runCopyEmptyDirTest();
-
-        mDocs.assertChildCount(mSrcRoot, 0);
-    }
-
-    public void testMoveDirRecursively() throws Exception {
-        runCopyDirRecursivelyTest();
-
-        mDocs.assertChildCount(mSrcRoot, 0);
-    }
-
-    public void testNoMoveDirToSelf() throws Exception {
-        runNoCopyDirToSelfTest();
-
-        // should have failed, source not deleted
-        mDocs.assertChildCount(mSrcRoot, 1);
-    }
-
-    public void testNoMoveDirToDescendent() throws Exception {
-        runNoCopyDirToDescendentTest();
-
-        // should have failed, source not deleted
-        mDocs.assertChildCount(mSrcRoot, 1);
-    }
-
-    public void testMoveFileWithReadErrors() throws Exception {
-        runCopyFileWithReadErrorsTest();
-
-        // should have failed, source not deleted
-        mDocs.assertChildCount(mSrcRoot, 1);
-    }
-
-    // TODO: Add test cases for moving when multi-parented.
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/services/TestContentResolver.java b/packages/DocumentsUI/tests/src/com/android/documentsui/services/TestContentResolver.java
deleted file mode 100644
index 8f39b14..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/services/TestContentResolver.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.services;
-
-import android.content.Context;
-import android.database.ContentObserver;
-import android.net.Uri;
-import android.provider.DocumentsContract;
-import android.test.mock.MockContentResolver;
-import android.util.Log;
-
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-/**
- * A test resolver that enables this test suite to listen for notifications that mark when copy
- * operations are done.
- */
-class TestContentResolver extends MockContentResolver {
-
-    private static final String TAG = "TestContextResolver";
-
-    private CountDownLatch mReadySignal;
-    private CountDownLatch mNotificationSignal;
-    private Context mContext;
-
-    public TestContentResolver(Context context) {
-        mContext = context;
-        mReadySignal = new CountDownLatch(1);
-    }
-
-    /**
-     * Wait for the given number of files to be copied to destination. Times out after 1 sec.
-     */
-    public void waitForChanges(int count) throws Exception {
-        // Wait for no more than 1 second by default.
-        waitForChanges(count, 1000);
-    }
-
-    /**
-     * Wait for files to be copied to destination.
-     *
-     * @param count Number of files to wait for.
-     * @param timeOut Timeout in ms. TimeoutException will be thrown if this function times out.
-     */
-    public void waitForChanges(int count, int timeOut) throws Exception {
-        mNotificationSignal = new CountDownLatch(count);
-        // Signal that the test is now waiting for files.
-        mReadySignal.countDown();
-        if (!mNotificationSignal.await(timeOut, TimeUnit.MILLISECONDS)) {
-            throw new TimeoutException("Timed out waiting for file operations to complete.");
-        }
-    }
-
-    @Override
-    public void notifyChange(Uri uri, ContentObserver observer, boolean syncToNetwork) {
-        // Wait until the test is ready to receive file notifications.
-        try {
-            mReadySignal.await();
-        } catch (InterruptedException e) {
-            Log.d(TAG, "Interrupted while waiting for file copy readiness");
-            Thread.currentThread().interrupt();
-        }
-        if (DocumentsContract.isDocumentUri(mContext, uri)) {
-            Log.d(TAG, "Notification: " + uri);
-            // Watch for document URI change notifications - this signifies the end of a copy.
-            mNotificationSignal.countDown();
-        }
-    }
-}
\ No newline at end of file
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/services/TestJob.java b/packages/DocumentsUI/tests/src/com/android/documentsui/services/TestJob.java
deleted file mode 100644
index 1fbcf37..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/services/TestJob.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.services;
-
-import static junit.framework.Assert.assertFalse;
-import static junit.framework.Assert.assertTrue;
-
-import android.app.Notification;
-import android.app.Notification.Builder;
-import android.content.Context;
-
-import com.android.documentsui.clipping.UrisSupplier;
-import com.android.documentsui.R;
-import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
-import com.android.documentsui.services.FileOperationService.OpType;
-
-import java.text.NumberFormat;
-
-public class TestJob extends Job {
-
-    private boolean mStarted;
-    private Runnable mStartRunnable;
-
-    private int mNumOfNotifications = 0;
-
-    TestJob(
-            Context service, Listener listener, String id,
-            @OpType int opType, DocumentStack stack, UrisSupplier srcs, Runnable startRunnable) {
-        super(service, listener, id, opType, stack, srcs);
-
-        mStartRunnable = startRunnable;
-    }
-
-    @Override
-    void start() {
-        mStarted = true;
-
-        mStartRunnable.run();
-    }
-
-    void assertStarted() {
-        assertTrue(mStarted);
-    }
-
-    void assertNotStarted() {
-        assertFalse(mStarted);
-    }
-
-    void fail(DocumentInfo doc) {
-        onFileFailed(doc);
-    }
-
-    int getNumOfNotifications() {
-        return mNumOfNotifications;
-    }
-
-    @Override
-    Notification getSetupNotification() {
-        ++mNumOfNotifications;
-        return getSetupNotification(service.getString(R.string.copy_preparing));
-    }
-
-    @Override
-    Notification getProgressNotification() {
-        ++mNumOfNotifications;
-        double completed = mStarted ? 1F : 0F;
-        return mProgressBuilder
-                .setProgress(1, (int) completed, true)
-                .setSubText(NumberFormat.getPercentInstance().format(completed))
-                .build();
-    }
-
-    @Override
-    Notification getFailureNotification() {
-        // the "copy" stuff was just convenient and available :)
-        return getFailureNotification(
-                R.plurals.copy_error_notification_title, R.drawable.ic_menu_copy);
-    }
-
-    @Override
-    Notification getWarningNotification() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    Builder createProgressBuilder() {
-        ++mNumOfNotifications;
-        // the "copy" stuff was just convenient and available :)
-        return super.createProgressBuilder(
-                service.getString(R.string.copy_notification_title),
-                R.drawable.ic_menu_copy,
-                service.getString(android.R.string.cancel),
-                R.drawable.ic_cab_cancel);
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/services/TestJobListener.java b/packages/DocumentsUI/tests/src/com/android/documentsui/services/TestJobListener.java
deleted file mode 100644
index e9c68c6..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/services/TestJobListener.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.services;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-import android.support.annotation.Nullable;
-
-import com.android.documentsui.model.DocumentInfo;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
-public class TestJobListener implements Job.Listener {
-
-    private final CountDownLatch latch = new CountDownLatch(1);
-    private final List<Job> progress = new ArrayList<>();
-    @Nullable private Job started;
-    @Nullable private Job finished;
-
-    @Override
-    public void onStart(Job job) {
-        started = job;
-    }
-
-    @Override
-    public void onFinished(Job job) {
-        this.finished = job;
-        latch.countDown();
-    }
-
-    public void assertStarted() {
-        if (started == null) {
-            fail("Job didn't start. onStart never called.");
-        }
-    }
-
-    public void assertFinished() {
-        if (finished == null) {
-            fail("Job didn't finish. onFinish never called.");
-        }
-    }
-
-    public void assertFailed() {
-        if (finished == null || !finished.hasFailures()) {
-            fail("Job didn't fail. onFailed never called.");
-        }
-    }
-
-    public void assertFilesFailed(ArrayList<String> names) {
-        if (finished == null || !finished.hasFailures()) {
-            fail("Can't test failed documetns. Job didn't fail.");
-        }
-
-        assertEquals(finished.failedFiles.size(), names.size());
-        for (String name : names) {
-            assertFileFailed(name);
-        }
-    }
-
-    public void assertFileFailed(String name) {
-        if (finished == null || !finished.hasFailures()) {
-            fail("Can't test failed documetns. Job didn't fail.");
-        }
-
-        for (DocumentInfo failed : finished.failedFiles) {
-            if (name.equals(failed.displayName)) {
-                return;
-            }
-        }
-        fail("Couldn't find failed file: " + name);
-    }
-
-    public void assertCanceled() {
-        if (finished == null) {
-            fail("Can't determine if job was canceled. Job didn't finish.");
-        }
-        if (!finished.isCanceled()) {
-            fail("Job wasn't canceled. Job#isCanceled returned false.");
-        }
-    }
-
-    public void assertMadeProgress() {
-        if (progress.isEmpty()) {
-            fail("Job made no progress. onProgress never called.");
-        }
-    }
-
-    public void waitForFinished() throws InterruptedException {
-        latch.await(500, TimeUnit.MILLISECONDS);
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/Bitmaps.java b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/Bitmaps.java
deleted file mode 100644
index 1b94b15..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/Bitmaps.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.testing;
-
-import android.graphics.Bitmap;
-
-public final class Bitmaps {
-
-    private Bitmaps() {}
-
-    public static Bitmap createTestBitmap(int width, int height) {
-        final Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
-
-        return bitmap;
-    }
-
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/ClipDatas.java b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/ClipDatas.java
deleted file mode 100644
index 525a02e..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/ClipDatas.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.testing;
-
-import android.content.ClipData;
-
-import org.mockito.Mockito;
-
-public final class ClipDatas {
-
-    private ClipDatas() {}
-
-    public static ClipData createTestClipData() {
-        final ClipData data = Mockito.mock(ClipData.class);
-
-        return data;
-    }
-
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/DocsProviders.java b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/DocsProviders.java
deleted file mode 100644
index c08157f..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/DocsProviders.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.testing;
-
-import android.net.Uri;
-
-import com.android.documentsui.clipping.UrisSupplier;
-
-import java.util.List;
-
-public final class DocsProviders {
-    private DocsProviders() {}
-
-    public static UrisSupplier createDocsProvider(List<Uri> docs) {
-        return new UrisSupplier.StandardUrisSupplier(docs);
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/DragEvents.java b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/DragEvents.java
deleted file mode 100644
index 4ad9ec0..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/DragEvents.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.testing;
-
-import android.content.ClipData;
-import android.view.DragEvent;
-
-import org.mockito.Mockito;
-
-public final class DragEvents {
-
-    private DragEvents() {}
-
-    public static DragEvent createTestDragEvent(int actionId) {
-        final DragEvent mockEvent = Mockito.mock(DragEvent.class);
-        Mockito.when(mockEvent.getAction()).thenReturn(actionId);
-
-        return mockEvent;
-    }
-
-    public static DragEvent createTestLocationEvent(float x, float y) {
-        final DragEvent locationEvent = createTestDragEvent(DragEvent.ACTION_DRAG_LOCATION);
-        Mockito.when(locationEvent.getX()).thenReturn(x);
-        Mockito.when(locationEvent.getY()).thenReturn(y);
-
-        return locationEvent;
-    }
-
-    public static DragEvent createTestDropEvent(ClipData clipData) {
-        final DragEvent dropEvent = createTestDragEvent(DragEvent.ACTION_DROP);
-        Mockito.when(dropEvent.getClipData()).thenReturn(clipData);
-
-        return dropEvent;
-    }
-
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestDirectoryDetails.java b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestDirectoryDetails.java
deleted file mode 100644
index e2891bf..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestDirectoryDetails.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.testing;
-
-import com.android.documentsui.MenuManager.DirectoryDetails;
-
-/**
- * Test copy of DirectoryDetails, everything default to false
- */
-public class TestDirectoryDetails extends DirectoryDetails {
-
-    public boolean shouldShowFancyFeatures;
-    public boolean isInRecents;
-    public boolean hasRootSettings;
-    public boolean hasItemsToPaste;
-    public boolean canCreateDirectory;
-    public boolean getDisplayFileSize;
-
-    public TestDirectoryDetails() {
-        super(null);
-    }
-
-    @Override
-    public boolean shouldShowFancyFeatures() {
-        return shouldShowFancyFeatures;
-    }
-
-    @Override
-    public boolean hasRootSettings() {
-        return hasRootSettings;
-    }
-
-    @Override
-    public boolean hasItemsToPaste() {
-        return hasItemsToPaste;
-    }
-
-    @Override
-    public boolean isInRecents() {
-        return isInRecents;
-    }
-
-    @Override
-    public boolean canCreateDirectory() {
-        return canCreateDirectory;
-    }
-
-    @Override
-    public boolean getDisplayFileSize() {
-        return getDisplayFileSize;
-    }
-}
\ No newline at end of file
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestDrawable.java b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestDrawable.java
deleted file mode 100644
index bc3831ec..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestDrawable.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.testing;
-
-import android.graphics.Canvas;
-import android.graphics.ColorFilter;
-import android.graphics.drawable.Drawable;
-
-public class TestDrawable extends Drawable {
-
-    public float hotspotX;
-    public float hotspotY;
-
-    @Override
-    public void setHotspot(float x, float y) {
-        hotspotX = x;
-        hotspotY = y;
-    }
-
-    @Override
-    public void draw(Canvas canvas) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setAlpha(int alpha) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setColorFilter(ColorFilter colorFilter) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public int getOpacity() {
-        throw new UnsupportedOperationException();
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestEvent.java b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestEvent.java
deleted file mode 100644
index 98fa2de..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestEvent.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.testing;
-
-import com.android.documentsui.Events.InputEvent;
-import com.android.documentsui.TestInputEvent;
-import com.android.documentsui.dirlist.UserInputHandler.DocumentDetails;
-
-/**
- * Events and DocDetails are closely related. For the pursposes of this test
- * we coalesce the two in a single, handy-dandy test class.
- */
-public class TestEvent extends TestInputEvent implements DocumentDetails {
-
-    private String modelId;
-    private boolean inHotspot;
-
-    @Override
-    public String getModelId() {
-        return modelId;
-    }
-
-    @Override
-    public int getAdapterPosition() {
-        return getItemPosition();
-    }
-
-    @Override
-    public boolean isInSelectionHotspot(InputEvent event) {
-        return inHotspot;
-    }
-
-    public TestEvent at(int position) {
-        this.position = position;  // this is both "adapter position" and "item position".
-        modelId = String.valueOf(position);
-        return this;
-    }
-
-    public TestEvent shift() {
-        this.shiftKeyDow = true;
-        return this;
-    }
-
-    public TestEvent inHotspot() {
-        this.inHotspot = true;
-        return this;
-    }
-
-    public DocumentDetails getDocument() {
-        return this;
-    }
-
-    @Override
-    public int hashCode() {
-        return modelId != null ? modelId.hashCode() : -1;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-      if (this == o) {
-          return true;
-      }
-
-      if (!(o instanceof TestEvent)) {
-          return false;
-      }
-
-      TestEvent other = (TestEvent) o;
-      return position == other.position
-              && modelId == other.modelId
-              && shiftKeyDow == other.shiftKeyDow
-              && mouseEvent == other.mouseEvent;
-    }
-
-    public static final Builder builder() {
-        return new Builder();
-    }
-
-    public static final class Builder {
-
-        private TestEvent mState = new TestEvent();
-
-        public Builder reset() {
-            mState = new TestEvent();
-            return this;
-        }
-
-        public Builder at(int position) {
-            mState.position = position;  // this is both "adapter position" and "item position".
-            mState.modelId = String.valueOf(position);
-            return this;
-        }
-
-        public Builder shift() {
-            mState.shiftKeyDow = true;
-            return this;
-        }
-
-        public Builder unshift() {
-            mState.shiftKeyDow = false;
-            return this;
-        }
-
-        public Builder inHotspot() {
-            mState.inHotspot = true;
-            return this;
-        }
-
-        public Builder mouse() {
-            mState.mouseEvent = true;
-            return this;
-        }
-
-        public TestEvent build() {
-            // Return a copy, so nobody can mess w/ our internal state.
-            TestEvent e = new TestEvent();
-            e.position = mState.position;
-            e.modelId = mState.modelId;
-            e.shiftKeyDow = mState.shiftKeyDow;
-            e.mouseEvent = mState.mouseEvent;
-            return e;
-        }
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestHandler.java b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestHandler.java
deleted file mode 100644
index 143ec71..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestHandler.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.testing;
-
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-
-import java.util.TimerTask;
-
-/**
- * A test double of {@link Handler}, backed by {@link TestTimer}.
- */
-public class TestHandler extends Handler {
-    private TestTimer mTimer = new TestTimer();
-
-    public TestHandler() {
-        // Use main looper to trick underlying handler, we're not using it at all.
-        super(Looper.getMainLooper());
-    }
-
-    public boolean hasScheduledMessage() {
-        return mTimer.hasScheduledTask();
-    }
-
-    public void dispatchNextMessage() {
-        mTimer.fastForwardToNextTask();
-    }
-
-    public void dispatchAllMessages() {
-        while (hasScheduledMessage()) {
-            dispatchNextMessage();
-        }
-    }
-
-    @Override
-    public boolean sendMessageAtTime(Message msg, long uptimeMillis) {
-        msg.setTarget(this);
-        TimerTask task = new MessageTimerTask(msg);
-        mTimer.scheduleAtTime(new TestTimer.Task(task), uptimeMillis);
-        return true;
-    }
-
-    private static class MessageTimerTask extends TimerTask {
-        private Message mMessage;
-
-        private MessageTimerTask(Message message) {
-            mMessage = message;
-        }
-
-        @Override
-        public void run() {
-            mMessage.getTarget().dispatchMessage(mMessage);
-        }
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestMenu.java b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestMenu.java
deleted file mode 100644
index a8699b9..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestMenu.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.testing;
-
-import android.util.SparseArray;
-import android.view.Menu;
-
-import com.android.documentsui.R;
-
-import org.mockito.Mockito;
-
-/**
- *
- * Test copy of {@link android.view.Menu}.
- *
- * We use abstract so we don't have to implement all the necessary methods from the interface,
- * and we use Mockito to just mock out the methods we need.
- * To get an instance, use {@link #create(int...)}.
- */
-public abstract class TestMenu implements Menu {
-
-    private SparseArray<TestMenuItem> items = new SparseArray<>();
-
-    public static TestMenu create() {
-        return create(R.id.menu_open,
-                R.id.menu_rename,
-                R.id.menu_move_to,
-                R.id.menu_copy_to,
-                R.id.menu_cut_to_clipboard,
-                R.id.menu_copy_to_clipboard,
-                R.id.menu_paste_from_clipboard,
-                R.id.menu_share,
-                R.id.menu_delete,
-                R.id.menu_create_dir,
-                R.id.menu_settings,
-                R.id.menu_new_window,
-                R.id.menu_select_all,
-                R.id.menu_file_size,
-                R.id.menu_grid,
-                R.id.menu_list,
-                R.id.menu_sort,
-                R.id.menu_sort_size,
-                R.id.menu_advanced,
-                R.id.menu_eject_root);
-    }
-
-    public static TestMenu create(int... ids) {
-        final TestMenu menu = Mockito.mock(TestMenu.class,
-                Mockito.withSettings().defaultAnswer(Mockito.CALLS_REAL_METHODS));
-        menu.items = new SparseArray<>();
-        for (int id : ids) {
-            TestMenuItem item = TestMenuItem.create(id);
-             menu.addMenuItem(id, item);
-        }
-        return menu;
-    }
-
-    public void addMenuItem(int id, TestMenuItem item) {
-        items.put(id, item);
-    }
-
-    @Override
-    public TestMenuItem findItem(int id) {
-        return items.get(id);
-    }
-
-    @Override
-    public int size() {
-        return items.size();
-    }
-
-    @Override
-    public TestMenuItem getItem(int index) {
-        return items.valueAt(index);
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestMenuItem.java b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestMenuItem.java
deleted file mode 100644
index 6314b7b..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestMenuItem.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.testing;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import android.annotation.StringRes;
-import android.view.MenuItem;
-
-import org.mockito.Mockito;
-
-/**
-*
-* Test copy of {@link android.view.MenuItem}.
-*
-* We use abstract so we don't have to implement all the necessary methods from the interface,
-* and we use Mockito to just mock out the methods we need.
-* To get an instance, use {@link #create(int)}.
-*/
-
-public abstract class TestMenuItem implements MenuItem {
-
-    boolean enabled;
-    boolean visible;
-    @StringRes int title;
-
-    public static TestMenuItem create(int id) {
-        final TestMenuItem mockMenuItem = Mockito.mock(TestMenuItem.class,
-                Mockito.withSettings().defaultAnswer(Mockito.CALLS_REAL_METHODS));
-
-        return mockMenuItem;
-    }
-
-    @Override
-    public TestMenuItem setTitle(@StringRes int title) {
-        this.title = title;
-        return this;
-    }
-
-    @Override
-    public MenuItem setEnabled(boolean enabled) {
-        this.enabled = enabled;
-        return this;
-    }
-
-    @Override
-    public MenuItem setVisible(boolean visible) {
-        this.visible = visible;
-        return this;
-    }
-
-    @Override
-    public boolean isVisible() {
-        return this.visible;
-    }
-
-    @Override
-    public boolean isEnabled() {
-        return this.enabled;
-    }
-
-    public void assertEnabled() {
-        assertTrue(this.enabled);
-    }
-
-    public void assertDisabled() {
-        assertFalse(this.enabled);
-    }
-
-    public void assertVisible() {
-        assertTrue(this.visible);
-    }
-
-    public void assertInvisible() {
-        assertFalse(this.visible);
-    }
-
-    public void assertTitle(@StringRes int title) {
-        assertTrue(this.title == title);
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestPredicate.java b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestPredicate.java
deleted file mode 100644
index f8ee21e..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestPredicate.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.testing;
-
-import static org.junit.Assert.assertEquals;
-
-import java.util.function.Predicate;
-
-import javax.annotation.Nullable;
-
-/**
- * Test predicate that can be used to spy control responses and make
- * assertions against values tested.
- */
-public class TestPredicate<T> implements Predicate<T> {
-
-    private @Nullable T lastValue;
-    private boolean nextReturnValue;
-
-    @Override
-    public boolean test(T t) {
-        lastValue = t;
-        return nextReturnValue;
-    }
-
-    public void assertLastArgument(@Nullable T expected) {
-        assertEquals(expected, lastValue);
-    }
-
-    public void nextReturn(boolean value) {
-        nextReturnValue = value;
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestScheduledExecutorService.java b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestScheduledExecutorService.java
deleted file mode 100644
index f5001ee..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestScheduledExecutorService.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.testing;
-
-import static junit.framework.Assert.assertFalse;
-import static junit.framework.Assert.fail;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.concurrent.Callable;
-import java.util.concurrent.Delayed;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-public class TestScheduledExecutorService implements ScheduledExecutorService {
-
-    private List<TestFuture> scheduled = new ArrayList<>();
-    private boolean shutdown;
-
-    @Override
-    public void shutdown() {
-        this.shutdown = true;
-    }
-
-    @Override
-    public List<Runnable> shutdownNow() {
-        this.shutdown = true;
-        return new ArrayList<>();
-    }
-
-    public void assertShutdown() {
-        if (!shutdown) {
-            fail("Executor wasn't shut down.");
-        }
-    }
-
-    @Override
-    public boolean isShutdown() {
-        return shutdown;
-    }
-
-    @Override
-    public boolean isTerminated() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public <T> Future<T> submit(Callable<T> task) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public <T> Future<T> submit(Runnable task, T result) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Future<?> submit(Runnable task) {
-        return schedule(task, 0, TimeUnit.MILLISECONDS);
-    }
-
-    @Override
-    public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
-            throws InterruptedException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks, long timeout,
-            TimeUnit unit) throws InterruptedException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public <T> T invokeAny(Collection<? extends Callable<T>> tasks)
-            throws InterruptedException, ExecutionException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public <T> T invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
-            throws InterruptedException, ExecutionException, TimeoutException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void execute(Runnable command) {
-        schedule(command, 0, TimeUnit.MILLISECONDS);
-    }
-
-    @Override
-    public ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit) {
-        TestFuture future = new TestFuture(command, delay, unit);
-        scheduled.add(future);
-        return future;
-    }
-
-    @Override
-    public <V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period,
-            TimeUnit unit) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay,
-            long delay, TimeUnit unit) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void runAll() {
-        for (TestFuture future : scheduled) {
-            future.runnable.run();
-        }
-    }
-
-    public void run(int taskIndex) {
-        scheduled.get(taskIndex).runnable.run();
-    }
-
-    public void assertAlive() {
-        assertFalse(isShutdown());
-    }
-
-    static class TestFuture implements ScheduledFuture<Void> {
-
-        final Runnable runnable;
-        final long delay;
-        final TimeUnit unit;
-
-        public TestFuture(Runnable runnable, long delay, TimeUnit unit) {
-            this.runnable = runnable;
-            this.delay = delay;
-            this.unit = unit;
-        }
-
-        @Override
-        public long getDelay(TimeUnit unit) {
-            return 0;
-        }
-
-        @Override
-        public int compareTo(Delayed arg0) {
-            return 0;
-        }
-
-        @Override
-        public boolean cancel(boolean mayInterruptIfRunning) {
-            return false;
-        }
-
-        @Override
-        public boolean isCancelled() {
-            return false;
-        }
-
-        @Override
-        public boolean isDone() {
-            return false;
-        }
-
-        @Override
-        public Void get() throws InterruptedException, ExecutionException {
-            return null;
-        }
-
-        @Override
-        public Void get(long timeout, TimeUnit unit)
-                throws InterruptedException, ExecutionException, TimeoutException {
-            return null;
-        }
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestSearchViewManager.java b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestSearchViewManager.java
deleted file mode 100644
index 29ae3bd..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestSearchViewManager.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.testing;
-
-import android.os.Bundle;
-
-import com.android.documentsui.SearchViewManager;
-
-/**
- * Test copy of {@link com.android.documentsui.SearchViewManager}
- *
- * Specficially used to test whether {@link #showMenu(boolean)}
- * and {@link #updateMenu()} are called.
- */
-public class TestSearchViewManager extends SearchViewManager {
-
-    boolean updateMenuCalled;
-    boolean showMenuCalled;
-
-    public TestSearchViewManager(SearchManagerListener listener, Bundle savedState) {
-        super(listener, savedState);
-    }
-
-    public TestSearchViewManager() {
-        super(null, null);
-    }
-
-    @Override
-    protected void showMenu(boolean visible) {
-        showMenuCalled = true;
-    }
-
-    @Override
-    public void updateMenu() {
-        updateMenuCalled = true;
-    }
-
-    public boolean showMenuCalled() {
-        return showMenuCalled;
-    }
-
-    public boolean updateMenuCalled() {
-        return updateMenuCalled;
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestSelectionDetails.java b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestSelectionDetails.java
deleted file mode 100644
index 20796ca..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestSelectionDetails.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.testing;
-
-import com.android.documentsui.MenuManager.SelectionDetails;
-
-/**
- * Test copy of SelectionDetails, everything default to false
- */
-public class TestSelectionDetails implements SelectionDetails {
-
-    public boolean canRename;
-    public boolean canDelete;
-    public boolean containPartial;
-    public boolean containDirectories;
-
-     @Override
-     public boolean containsPartialFiles() {
-         return containPartial;
-     }
-
-     @Override
-     public boolean containsDirectories() {
-         return containDirectories;
-     }
-
-     @Override
-     public boolean canRename() {
-         return canRename;
-     }
-
-     @Override
-     public boolean canDelete() {
-         return canDelete;
-     }
- }
\ No newline at end of file
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestTimer.java b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestTimer.java
deleted file mode 100644
index 04af283..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/TestTimer.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.testing;
-
-import java.util.Date;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.ListIterator;
-import java.util.Timer;
-import java.util.TimerTask;
-
-/**
- * A {@link Timer} for testing that can dial its clock hands to any future time.
- */
-public class TestTimer extends Timer {
-
-    private long mNow = 0;
-
-    private final LinkedList<Task> mTaskList = new LinkedList<>();
-
-    public void fastForwardTo(long time) {
-        if (time < mNow) {
-            throw new IllegalArgumentException("Can't fast forward to past.");
-        }
-
-        mNow = time;
-        while (!mTaskList.isEmpty() && mTaskList.getFirst().mExecuteTime <= mNow) {
-            Task task = mTaskList.getFirst();
-            if (!task.isCancelled()) {
-                task.run();
-            }
-            mTaskList.removeFirst();
-        }
-    }
-
-    public boolean hasScheduledTask() {
-        return !mTaskList.isEmpty();
-    }
-
-    public void fastForwardToNextTask() {
-        if (!hasScheduledTask()) {
-            throw new IllegalStateException("There is no scheduled task!");
-        }
-        fastForwardTo(mTaskList.getFirst().mExecuteTime);
-    }
-
-    @Override
-    public void cancel() {
-        mTaskList.clear();
-    }
-
-    @Override
-    public int purge() {
-        int count = 0;
-        Iterator<Task> iter = mTaskList.iterator();
-        while (iter.hasNext()) {
-            Task task = iter.next();
-            if (task.isCancelled()) {
-                iter.remove();
-                ++count;
-            }
-        }
-        return count;
-    }
-
-    @Override
-    public void schedule(TimerTask task, Date time) {
-        long executeTime = time.getTime();
-        scheduleAtTime(task, executeTime);
-    }
-
-    @Override
-    public void schedule(TimerTask task, Date firstTime, long period) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void schedule(TimerTask task, long delay) {
-        long executeTime = mNow + delay;
-        scheduleAtTime(task, executeTime);
-    }
-
-    @Override
-    public void schedule(TimerTask task, long delay, long period) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void scheduleAtFixedRate(TimerTask task, Date firstTime, long period) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void scheduleAtFixedRate(TimerTask task, long delay, long period) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void scheduleAtTime(TimerTask task, long executeTime) {
-        Task testTimerTask = (Task) task;
-        testTimerTask.mExecuteTime = executeTime;
-
-        ListIterator<Task> iter = mTaskList.listIterator(0);
-        while (iter.hasNext()) {
-            if (iter.next().mExecuteTime >= executeTime) {
-                break;
-            }
-        }
-        iter.add(testTimerTask);
-    }
-
-    public static class Task extends TimerTask {
-        private boolean mIsCancelled;
-        private long mExecuteTime;
-
-        private TimerTask mDelegate;
-
-        public Task(TimerTask delegate) {
-            mDelegate = delegate;
-        }
-
-        @Override
-        public boolean cancel() {
-            mIsCancelled = true;
-            return mDelegate.cancel();
-        }
-
-        @Override
-        public void run() {
-            mDelegate.run();
-        }
-
-        boolean isCancelled() {
-            return mIsCancelled;
-        }
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/Views.java b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/Views.java
deleted file mode 100644
index 52a9cbc..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/Views.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.testing;
-
-import android.graphics.drawable.Drawable;
-import android.view.View;
-
-import org.mockito.Mockito;
-
-public final class Views {
-
-    private Views() {}
-
-    public static View createTestView() {
-        final View view = Mockito.mock(View.class);
-        Mockito.doCallRealMethod().when(view).setTag(Mockito.anyInt(), Mockito.any());
-        Mockito.doCallRealMethod().when(view).getTag(Mockito.anyInt());
-
-        return view;
-    }
-
-    public static void setBackground(View testView, Drawable background) {
-        Mockito.when(testView.getBackground()).thenReturn(background);
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/dirlist/SelectionProbe.java b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/dirlist/SelectionProbe.java
deleted file mode 100644
index 12f4642..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/dirlist/SelectionProbe.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.testing.dirlist;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import com.android.documentsui.dirlist.MultiSelectManager;
-import com.android.documentsui.dirlist.MultiSelectManager.Selection;
-
-/**
- * Helper class for making assertions against the state of a MultiSelectManager instance.
- */
-public final class SelectionProbe {
-
-    private final MultiSelectManager mMgr;
-
-    public SelectionProbe(MultiSelectManager mgr) {
-        mMgr = mgr;
-    }
-
-    public void assertRangeSelected(int begin, int end) {
-        for (int i = begin; i <= end; i++) {
-            assertSelected(i);
-        }
-    }
-
-    public void assertRangeNotSelected(int begin, int end) {
-        for (int i = begin; i <= end; i++) {
-            assertNotSelected(i);
-        }
-    }
-
-    public void assertRangeSelection(int begin, int end) {
-        assertSelectionSize(end - begin + 1);
-        assertRangeSelected(begin, end);
-    }
-
-    public void assertSelectionSize(int expected) {
-        Selection selection = mMgr.getSelection();
-        assertEquals(selection.toString(), expected, selection.size());
-    }
-
-    public void assertNoSelection() {
-        assertSelectionSize(0);
-    }
-
-    public void assertSelection(int... ids) {
-        assertSelected(ids);
-        assertEquals(ids.length, mMgr.getSelection().size());
-    }
-
-    public void assertSelected(int... ids) {
-        Selection sel = mMgr.getSelection();
-        for (int id : ids) {
-            String sid = String.valueOf(id);
-            assertTrue(sid + " is not in selection " + sel, sel.contains(sid));
-        }
-    }
-
-    public void assertNotSelected(int... ids) {
-        Selection sel = mMgr.getSelection();
-        for (int id : ids) {
-            String sid = String.valueOf(id);
-            assertFalse(sid + " is in selection " + sel, sel.contains(sid));
-        }
-    }
-
-    public void select(int...positions) {
-        for (int position : positions) {
-            mMgr.toggleSelection(String.valueOf(position));
-        }
-    }
-}
diff --git a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/dirlist/TestSelectionListener.java b/packages/DocumentsUI/tests/src/com/android/documentsui/testing/dirlist/TestSelectionListener.java
deleted file mode 100644
index 08f29f0..0000000
--- a/packages/DocumentsUI/tests/src/com/android/documentsui/testing/dirlist/TestSelectionListener.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.testing.dirlist;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import com.android.documentsui.dirlist.MultiSelectManager;
-
-import java.util.HashSet;
-import java.util.Set;
-
-public final class TestSelectionListener implements MultiSelectManager.Callback {
-
-    Set<String> ignored = new HashSet<>();
-    private boolean mSelectionChanged = false;
-
-    @Override
-    public void onItemStateChanged(String modelId, boolean selected) {}
-
-    @Override
-    public boolean onBeforeItemStateChange(String modelId, boolean selected) {
-        return !ignored.contains(modelId);
-    }
-
-    @Override
-    public void onSelectionChanged() {
-        mSelectionChanged = true;
-    }
-
-    public void reset() {
-        mSelectionChanged = false;
-    }
-
-    public void assertSelectionChanged() {
-        assertTrue(mSelectionChanged);
-    }
-
-    public void assertSelectionUnchanged() {
-        assertFalse(mSelectionChanged);
-    }
-}
\ No newline at end of file
diff --git a/packages/DocumentsUI/wrap_alpha.py b/packages/DocumentsUI/wrap_alpha.py
deleted file mode 100644
index 92a3d59..0000000
--- a/packages/DocumentsUI/wrap_alpha.py
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/python
-
-import os
-
-"""
-# assume everything needs alpha suffixes
-for root, dirs, files in os.walk('.'):
-    if "res/drawable-" not in root: continue
-
-    for before in files:
-        if "_alpha.png" in before: continue
-
-        after = before.replace(".png", "_alpha.png")
-        os.rename(os.path.join(root, before), os.path.join(root, after))
-"""
-
-# build xml redirection
-for root, dirs, files in os.walk('.'):
-    if "res/drawable-" not in root: continue
-
-    for src in files:
-        if not src.endswith(".png"): continue
-        src = src[0:-4]
-
-        src_clause = '\n    android:src="@drawable/%s"' % (src)
-
-        alpha = src.endswith("_alpha")
-        if alpha:
-            src = src[0:-6]
-            if "ic_doc" in src or "ic_root" in src or "ic_grid_folder" in src:
-                alpha_clause = '\n    android:tint="@*android:color/secondary_text_material_light"'
-            else:
-                alpha_clause = '\n    android:tint="?android:attr/colorControlNormal"'
-        else:
-            alpha_clause = ''
-
-        am = src.endswith("_am")
-        if am:
-            src = src[0:-3]
-            am_clause = '\n    android:autoMirrored="true"'
-        else:
-            am_clause = ''
-
-        with open("res/drawable/%s.xml" % (src), 'w') as xml:
-            xml.write("""<?xml version="1.0" encoding="utf-8"?>
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"%s%s%s />
-""" % (src_clause, alpha_clause, am_clause))