diff options
| author | 2023-03-03 01:26:57 +0000 | |
|---|---|---|
| committer | 2023-03-03 01:26:57 +0000 | |
| commit | d470717be90c4a56bdd95988a5ff11d89a233afd (patch) | |
| tree | 1a025d5de6238c2116be109e3efe1c79c2ecf7e3 | |
| parent | 1bcc280abe1521fd80cb74fe83d999ab56df01ee (diff) | |
| parent | 5112cfef2a2023a2629a426154547444593e9f9b (diff) | |
Merge "Stop processing on IOException." into udc-dev
| -rw-r--r-- | services/core/java/com/android/server/pm/ShortcutPackage.java | 3 | ||||
| -rw-r--r-- | services/tests/servicestests/Android.bp | 1 | ||||
| -rw-r--r-- | services/tests/servicestests/AndroidTest.xml | 2 | ||||
| -rw-r--r-- | services/tests/servicestests/data/broken_shortcut.xml | bin | 0 -> 851 bytes | |||
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java | 12 |
5 files changed, 18 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/pm/ShortcutPackage.java b/services/core/java/com/android/server/pm/ShortcutPackage.java index 67639fbef124..28cb7f0b03a6 100644 --- a/services/core/java/com/android/server/pm/ShortcutPackage.java +++ b/services/core/java/com/android/server/pm/ShortcutPackage.java @@ -2048,6 +2048,9 @@ class ShortcutPackage extends ShortcutPackageItem { shortcutUser.getUserId(), fromBackup); // Don't use addShortcut(), we don't need to save the icon. ret.mShortcuts.put(si.getId(), si); + } catch (IOException e) { + // Don't ignore IO exceptions. + throw e; } catch (Exception e) { // b/246540168 malformed shortcuts should be ignored Slog.e(TAG, "Failed parsing shortcut.", e); diff --git a/services/tests/servicestests/Android.bp b/services/tests/servicestests/Android.bp index 3a7b9a49f161..90dbd539f029 100644 --- a/services/tests/servicestests/Android.bp +++ b/services/tests/servicestests/Android.bp @@ -115,6 +115,7 @@ android_test { ":StubTestApp", ":SuspendTestApp", ":MediaButtonReceiverHolderTestHelperApp", + "data/broken_shortcut.xml", ], java_resources: [ diff --git a/services/tests/servicestests/AndroidTest.xml b/services/tests/servicestests/AndroidTest.xml index d9676470aca3..b304968f3e69 100644 --- a/services/tests/servicestests/AndroidTest.xml +++ b/services/tests/servicestests/AndroidTest.xml @@ -21,6 +21,8 @@ <option name="cleanup" value="true" /> <option name="push-file" key="SimpleServiceTestApp3.apk" value="/data/local/tmp/cts/content/SimpleServiceTestApp3.apk" /> + <option name="push-file" key="broken_shortcut.xml" + value="/data/local/tmp/cts/content/broken_shortcut.xml" /> </target_preparer> <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller"> diff --git a/services/tests/servicestests/data/broken_shortcut.xml b/services/tests/servicestests/data/broken_shortcut.xml Binary files differnew file mode 100644 index 000000000000..f2b083ddc3a0 --- /dev/null +++ b/services/tests/servicestests/data/broken_shortcut.xml diff --git a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java index 861087a5ab54..e65f8cf2a199 100644 --- a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java +++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java @@ -4007,6 +4007,18 @@ public class ShortcutManagerTest1 extends BaseShortcutManagerTest { // TODO Check all other fields } + public void testLoadCorruptedShortcuts() throws Exception { + initService(); + + addPackage("com.android.chrome", 0, 0); + + ShortcutUser user = new ShortcutUser(mService, 0); + + File corruptedShortcutPackage = new File("/data/local/tmp/cts/content/", + "broken_shortcut.xml"); + assertNull(ShortcutPackage.loadFromFile(mService, user, corruptedShortcutPackage, false)); + } + public void testSaveCorruptAndLoadUser() throws Exception { // First, create some shortcuts and save. runWithCaller(CALLING_PACKAGE_1, UserHandle.USER_SYSTEM, () -> { |