Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d004583 authored by Craig Mautner's avatar Craig Mautner Committed by Android (Google) Code Review
Browse files

Merge "Add more error checking to xml restore" into lmp-preview-dev

parents 427a15a0 e0129b3c
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -1154,13 +1154,15 @@ final class ActivityRecord {
        }

        if (intent == null) {
            Slog.e(TAG, "restoreActivity error intent=" + intent);
            return null;
            throw new XmlPullParserException("restoreActivity error intent=" + intent);
        }

        final ActivityManagerService service = stackSupervisor.mService;
        final ActivityInfo aInfo = stackSupervisor.resolveActivity(intent, resolvedType, 0, null,
                null, userId);
        if (aInfo == null) {
            throw new XmlPullParserException("restoreActivity resolver error.");
        }
        final ActivityRecord r = new ActivityRecord(service, /*caller*/null, launchedFromUid,
                launchedFromPackage, intent, resolvedType, aInfo, service.getConfiguration(),
                null, null, 0, componentSpecified, stackSupervisor, null, null);
+9 −7
Original line number Diff line number Diff line
@@ -155,6 +155,7 @@ public class TaskPersister {
            File taskFile = recentFiles[taskNdx];
            if (DEBUG) Slog.d(TAG, "restoreTasksLocked: taskFile=" + taskFile.getName());
            BufferedReader reader = null;
            boolean deleteFile = false;
            try {
                reader = new BufferedReader(new FileReader(taskFile));
                final XmlPullParser in = Xml.newPullParser();
@@ -183,10 +184,9 @@ public class TaskPersister {
                    }
                    XmlUtils.skipCurrentTag(in);
                }
            } catch (IOException e) {
                Slog.e(TAG, "Unable to parse " + taskFile + ". Error " + e);
            } catch (XmlPullParserException e) {
                Slog.e(TAG, "Unable to parse " + taskFile + ". Error " + e);
            } catch (Exception e) {
                Slog.wtf(TAG, "Unable to parse " + taskFile + ". Error " + e);
                deleteFile = true;
            } finally {
                if (reader != null) {
                    try {
@@ -194,6 +194,9 @@ public class TaskPersister {
                    } catch (IOException e) {
                    }
                }
                if (!DEBUG && deleteFile) {
                    taskFile.delete();
                }
            }
        }

@@ -220,7 +223,7 @@ public class TaskPersister {
        return new ArrayList<TaskRecord>(Arrays.asList(tasksArray));
    }

    private void removeObsoleteFiles(ArraySet<Integer> persistentTaskIds, File[] files) {
    private static void removeObsoleteFiles(ArraySet<Integer> persistentTaskIds, File[] files) {
        for (int fileNdx = 0; fileNdx < files.length; ++fileNdx) {
            File file = files[fileNdx];
            String filename = file.getName();
@@ -285,8 +288,7 @@ public class TaskPersister {
                synchronized(mService) {
                    final ArrayList<TaskRecord> tasks = mService.mRecentTasks;
                    persistentTaskIds.clear();
                    int taskNdx;
                    for (taskNdx = tasks.size() - 1; taskNdx >= 0; --taskNdx) {
                    for (int taskNdx = tasks.size() - 1; taskNdx >= 0; --taskNdx) {
                        task = tasks.get(taskNdx);
                        if (DEBUG) Slog.d(TAG, "LazyTaskWriter: task=" + task + " persistable=" +
                                task.isPersistable + " needsPersisting=" + task.needsPersisting);