Fix null pointer exception in DocumentLoader.

BUG=27489909

Change-Id: I1ebc9953f6db6639241d0c46257d110c5b0eb5b0
This commit is contained in:
Daichi Hirono
2016-03-04 18:43:21 +09:00
parent 566b303365
commit 37a655aac1
4 changed files with 12 additions and 5 deletions

View File

@@ -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;

View File

@@ -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;
}
}

View File

@@ -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");

View File

@@ -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