diff --git a/packages/MtpDocumentsProvider/src/com/android/mtp/DocumentLoader.java b/packages/MtpDocumentsProvider/src/com/android/mtp/DocumentLoader.java index 044a061ee8b2b..0705214b6abd8 100644 --- a/packages/MtpDocumentsProvider/src/com/android/mtp/DocumentLoader.java +++ b/packages/MtpDocumentsProvider/src/com/android/mtp/DocumentLoader.java @@ -276,7 +276,7 @@ class DocumentLoader implements AutoCloseable { static final int STATE_ERROR = 2; final MtpDatabase mDatabase; - int[] mOperationsSupported; + final int[] mOperationsSupported; final Identifier mIdentifier; final int[] mObjectHandles; Date mLastNotified; @@ -285,6 +285,8 @@ class DocumentLoader implements AutoCloseable { LoaderTask(MtpDatabase database, int[] operationsSupported, Identifier identifier, int[] objectHandles) { + Preconditions.checkNotNull(operationsSupported); + Preconditions.checkNotNull(objectHandles); mDatabase = database; mOperationsSupported = operationsSupported; mIdentifier = identifier; diff --git a/packages/MtpDocumentsProvider/src/com/android/mtp/MtpManager.java b/packages/MtpDocumentsProvider/src/com/android/mtp/MtpManager.java index 1966e61fbc536..020234394f879 100644 --- a/packages/MtpDocumentsProvider/src/com/android/mtp/MtpManager.java +++ b/packages/MtpDocumentsProvider/src/com/android/mtp/MtpManager.java @@ -143,7 +143,12 @@ class MtpManager { throws IOException { final MtpDevice device = getDevice(deviceId); synchronized (device) { - return device.getObjectHandles(storageId, 0 /* all format */, parentObjectHandle); + final int[] handles = + device.getObjectHandles(storageId, 0 /* all format */, parentObjectHandle); + if (handles == null) { + throw new IOException("Failed to fetch object handles."); + } + return handles; } } diff --git a/packages/MtpDocumentsProvider/tests/src/com/android/mtp/MtpDocumentsProviderTest.java b/packages/MtpDocumentsProvider/tests/src/com/android/mtp/MtpDocumentsProviderTest.java index 3dfa4ade6eb50..d6ad0f3c630ce 100644 --- a/packages/MtpDocumentsProvider/tests/src/com/android/mtp/MtpDocumentsProviderTest.java +++ b/packages/MtpDocumentsProvider/tests/src/com/android/mtp/MtpDocumentsProviderTest.java @@ -596,7 +596,7 @@ public class MtpDocumentsProviderTest extends AndroidTestCase { 0, "Device A", "device key", - true /* unopened */, + true /* opened */, new MtpRoot[] { new MtpRoot( 0 /* deviceId */, @@ -606,7 +606,7 @@ public class MtpDocumentsProviderTest extends AndroidTestCase { 2048 /* total space */, "" /* no volume identifier */) }, - null, + OPERATIONS_SUPPORTED, null)); final String[] names = strings("Directory A", "Directory B", "Directory C"); diff --git a/packages/MtpDocumentsProvider/tests/src/com/android/mtp/TestMtpManager.java b/packages/MtpDocumentsProvider/tests/src/com/android/mtp/TestMtpManager.java index 5e0ee1e3e1fa7..5171bd235da78 100644 --- a/packages/MtpDocumentsProvider/tests/src/com/android/mtp/TestMtpManager.java +++ b/packages/MtpDocumentsProvider/tests/src/com/android/mtp/TestMtpManager.java @@ -106,7 +106,7 @@ public class TestMtpManager extends MtpManager { mDevices.put( deviceId, new MtpDeviceRecord(device.deviceId, device.name, device.deviceKey, false, - device.roots, null, null)); + device.roots, device.operationsSupported, device.eventsSupported)); } @Override