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

Commit 502cb33f authored by Alan Viverette's avatar Alan Viverette
Browse files

Lazily create AccessibilityEvent record list

Change-Id: Id4e0a403da811498f2b0f748d86e330fff774154
parent 40c610f6
Loading
Loading
Loading
Loading
+38 −22
Original line number Diff line number Diff line
@@ -722,7 +722,7 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par
    int mAction;
    int mContentChangeTypes;

    private final ArrayList<AccessibilityRecord> mRecords = new ArrayList<AccessibilityRecord>();
    private ArrayList<AccessibilityRecord> mRecords;

    /*
     * Hide constructor from clients.
@@ -755,13 +755,15 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par
    @Override
    public void setSealed(boolean sealed) {
        super.setSealed(sealed);
        List<AccessibilityRecord> records = mRecords;
        final List<AccessibilityRecord> records = mRecords;
        if (records != null) {
            final int recordCount = records.size();
            for (int i = 0; i < recordCount; i++) {
                AccessibilityRecord record = records.get(i);
                record.setSealed(sealed);
            }
        }
    }

    /**
     * Gets the number of records contained in the event.
@@ -769,7 +771,7 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par
     * @return The number of records.
     */
    public int getRecordCount() {
        return mRecords.size();
        return mRecords == null ? 0 : mRecords.size();
    }

    /**
@@ -781,6 +783,9 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par
     */
    public void appendRecord(AccessibilityRecord record) {
        enforceNotSealed();
        if (mRecords == null) {
            mRecords = new ArrayList<AccessibilityRecord>();
        }
        mRecords.add(record);
    }

@@ -791,6 +796,9 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par
     * @return The record at the specified index.
     */
    public AccessibilityRecord getRecord(int index) {
        if (mRecords == null) {
            throw new IndexOutOfBoundsException("Invalid index " + index + ", size is 0");
        }
        return mRecords.get(index);
    }

@@ -964,12 +972,15 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par
        AccessibilityEvent eventClone = AccessibilityEvent.obtain();
        eventClone.init(event);

        if (event.mRecords != null) {
            final int recordCount = event.mRecords.size();
            eventClone.mRecords = new ArrayList<AccessibilityRecord>(recordCount);
            for (int i = 0; i < recordCount; i++) {
            AccessibilityRecord record = event.mRecords.get(i);
            AccessibilityRecord recordClone = AccessibilityRecord.obtain(record);
                final AccessibilityRecord record = event.mRecords.get(i);
                final AccessibilityRecord recordClone = AccessibilityRecord.obtain(record);
                eventClone.mRecords.add(recordClone);
            }
        }

        return eventClone;
    }
@@ -1013,11 +1024,13 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par
        mContentChangeTypes = 0;
        mPackageName = null;
        mEventTime = 0;
        if (mRecords != null) {
            while (!mRecords.isEmpty()) {
                AccessibilityRecord record = mRecords.remove(0);
                record.recycle();
            }
        }
    }

    /**
     * Creates a new instance from a {@link Parcel}.
@@ -1037,6 +1050,8 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par

        // Read the records.
        final int recordCount = parcel.readInt();
        if (recordCount > 0) {
            mRecords = new ArrayList<AccessibilityRecord>(recordCount);
            for (int i = 0; i < recordCount; i++) {
                AccessibilityRecord record = AccessibilityRecord.obtain();
                readAccessibilityRecordFromParcel(record, parcel);
@@ -1044,6 +1059,7 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par
                mRecords.add(record);
            }
        }
    }

    /**
     * Reads an {@link AccessibilityRecord} from a parcel.
@@ -1147,8 +1163,8 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par
            builder.append("; ContentChangeTypes: ").append(mContentChangeTypes);
            builder.append("; sourceWindowId: ").append(mSourceWindowId);
            builder.append("; mSourceNodeId: ").append(mSourceNodeId);
            for (int i = 0; i < mRecords.size(); i++) {
                AccessibilityRecord record = mRecords.get(i);
            for (int i = 0; i < getRecordCount(); i++) {
                final AccessibilityRecord record = getRecord(i);
                builder.append("  Record ");
                builder.append(i);
                builder.append(":");