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

Commit f1074c50 authored by Satoshi Kataoka's avatar Satoshi Kataoka
Browse files

Throw exception when invalid time stamps are detected in debug mode

Change-Id: I360b5bd09869bc85ab3bccb8a43a20fed0035d9b
parent 19d68ce2
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -18,8 +18,11 @@ package com.android.inputmethod.latin;

import com.android.inputmethod.annotations.UsedForTesting;

import android.util.Log;

// TODO: This class is not thread-safe.
public final class InputPointers {
    private static final String TAG = InputPointers.class.getSimpleName();
    private final int mDefaultCapacity;
    private final ResizableIntArray mXCoordinates;
    private final ResizableIntArray mYCoordinates;
@@ -126,6 +129,11 @@ public final class InputPointers {
    }

    public int[] getTimes() {
        if (LatinImeLogger.sDBG) {
            if (!isValidTimeStamps()) {
                throw new RuntimeException("Time stamps are invalid.");
            }
        }
        return mTimes.getPrimitiveArray();
    }

@@ -134,4 +142,18 @@ public final class InputPointers {
        return "size=" + getPointerSize() + " id=" + mPointerIds + " time=" + mTimes
                + " x=" + mXCoordinates + " y=" + mYCoordinates;
    }

    private boolean isValidTimeStamps() {
        final int[] times = mTimes.getPrimitiveArray();
        for (int i = 1; i < getPointerSize(); ++i) {
            if (times[i] < times[i - 1]) {
                // dump
                for (int j = 0; j < times.length; ++j) {
                    Log.d(TAG, "--- (" + j + ") " + times[j]);
                }
                return false;
            }
        }
        return true;
    }
}