Merge "Start to use importFile to file descriptor."
diff --git a/packages/MtpDocumentsProvider/src/com/android/mtp/MtpManager.java b/packages/MtpDocumentsProvider/src/com/android/mtp/MtpManager.java
index f266592..141d118 100644
--- a/packages/MtpDocumentsProvider/src/com/android/mtp/MtpManager.java
+++ b/packages/MtpDocumentsProvider/src/com/android/mtp/MtpManager.java
@@ -35,7 +35,7 @@
 
     private final UsbManager mManager;
     // TODO: Save and restore the set of opened device.
-    private final SparseArray<MtpDevice> mDevices = new SparseArray<MtpDevice>();
+    private final SparseArray<MtpDevice> mDevices = new SparseArray<>();
 
     MtpManager(Context context) {
         mManager = (UsbManager)context.getSystemService(Context.USB_SERVICE);
@@ -142,7 +142,8 @@
 
     synchronized void importFile(int deviceId, int objectHandle, ParcelFileDescriptor target)
             throws IOException {
-        throw new UnsupportedOperationException("Importing files is not supported.");
+        final MtpDevice device = getDevice(deviceId);
+        device.importFile(objectHandle, target);
     }
 
     private MtpDevice getDevice(int deviceId) throws IOException {
diff --git a/packages/MtpDocumentsProvider/src/com/android/mtp/PipeManager.java b/packages/MtpDocumentsProvider/src/com/android/mtp/PipeManager.java
index 7f498f5..ba13b31 100644
--- a/packages/MtpDocumentsProvider/src/com/android/mtp/PipeManager.java
+++ b/packages/MtpDocumentsProvider/src/com/android/mtp/PipeManager.java
@@ -47,12 +47,12 @@
     }
 
     private static abstract class Task implements Runnable {
-        protected final MtpManager mModel;
+        protected final MtpManager mManager;
         protected final Identifier mIdentifier;
         protected final ParcelFileDescriptor[] mDescriptors;
 
-        Task(MtpManager model, Identifier identifier) throws IOException {
-            mModel = model;
+        Task(MtpManager manager, Identifier identifier) throws IOException {
+            mManager = manager;
             mIdentifier = identifier;
             mDescriptors = ParcelFileDescriptor.createReliablePipe();
         }
@@ -70,7 +70,7 @@
         @Override
         public void run() {
             try {
-                mModel.importFile(
+                mManager.importFile(
                         mIdentifier.mDeviceId, mIdentifier.mObjectHandle, mDescriptors[1]);
                 mDescriptors[1].close();
             } catch (IOException error) {
@@ -94,7 +94,7 @@
                 try (final ParcelFileDescriptor.AutoCloseOutputStream stream =
                         new ParcelFileDescriptor.AutoCloseOutputStream(mDescriptors[1])) {
                     try {
-                        stream.write(mModel.getThumbnail(
+                        stream.write(mManager.getThumbnail(
                                 mIdentifier.mDeviceId, mIdentifier.mObjectHandle));
                     } catch (IOException error) {
                         mDescriptors[1].closeWithError("Failed to stream a thumbnail.");