diff options
-rw-r--r-- | services/java/com/android/server/MountService.java | 24 | ||||
-rwxr-xr-x | tests/AndroidTests/src/com/android/unit_tests/AsecTests.java | 11 |
2 files changed, 24 insertions, 11 deletions
diff --git a/services/java/com/android/server/MountService.java b/services/java/com/android/server/MountService.java index a4703de..10920fa 100644 --- a/services/java/com/android/server/MountService.java +++ b/services/java/com/android/server/MountService.java @@ -100,6 +100,7 @@ class MountService extends IMountService.Stub public static final int OpFailedMediaCorrupt = 403; public static final int OpFailedVolNotMounted = 404; public static final int OpFailedStorageBusy = 405; + public static final int OpFailedStorageNotFound = 406; /* * 600 series - Unsolicited broadcasts. @@ -1290,21 +1291,22 @@ class MountService extends IMountService.Stub waitForReady(); warnOnNotMounted(); - ArrayList<String> rsp = mConnector.doCommand("asec path " + id); - - for (String line : rsp) { - String []tok = line.split(" "); + try { + ArrayList<String> rsp = mConnector.doCommand(String.format("asec path %s", id)); + String []tok = rsp.get(0).split(" "); int code = Integer.parseInt(tok[0]); - if (code == VoldResponseCode.AsecPathResult) { - return tok[1]; + if (code != VoldResponseCode.AsecPathResult) { + throw new IllegalStateException(String.format("Unexpected response code %d", code)); + } + return tok[1]; + } catch (NativeDaemonConnectorException e) { + int code = e.getCode(); + if (code == VoldResponseCode.OpFailedStorageNotFound) { + throw new IllegalArgumentException(String.format("Container '%s' not found", id)); } else { - Log.e(TAG, String.format("Unexpected response code %d", code)); - return ""; + throw new IllegalStateException(String.format("Unexpected response code %d", code)); } } - - Log.e(TAG, "Got an empty response"); - return ""; } public void finishMediaUpdate() { diff --git a/tests/AndroidTests/src/com/android/unit_tests/AsecTests.java b/tests/AndroidTests/src/com/android/unit_tests/AsecTests.java index 9aed363..9a75047 100755 --- a/tests/AndroidTests/src/com/android/unit_tests/AsecTests.java +++ b/tests/AndroidTests/src/com/android/unit_tests/AsecTests.java @@ -259,6 +259,17 @@ public class AsecTests extends AndroidTestCase { } } + public void testNonExistPath() { + IMountService ms = getMs(); + try { + String path = ms.getSecureContainerPath("jparks.broke.it"); + failStr(path); + } catch (IllegalArgumentException e) { + } catch (Exception e) { + failStr(e); + } + } + public void testUnmountBusyContainer() { IMountService ms = getMs(); try { |