diff options
| author | 2017-05-30 17:26:59 -0700 | |
|---|---|---|
| committer | 2017-05-30 17:31:18 -0700 | |
| commit | f5d677d53a9030015ab4180b1acd2ae9d732fe88 (patch) | |
| tree | 4a523f39cbd2b2e086bd86b1f9034d63b6eddb00 | |
| parent | 8bebf33985a3b857c64ff6ee7e537a0201ce8640 (diff) | |
Initialize list of virtual views before using it.
Fixes: 62190686
Test: With this and ag/2332690, I'm able to set a pattern
and use it to unlock the device.
Change-Id: Iac94f9969509854b0c5f739dff08d3ac8db62097
| -rw-r--r-- | core/java/com/android/internal/widget/LockPatternView.java | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/core/java/com/android/internal/widget/LockPatternView.java b/core/java/com/android/internal/widget/LockPatternView.java index cc1c65ec24bb..32a7a2dadddb 100644 --- a/core/java/com/android/internal/widget/LockPatternView.java +++ b/core/java/com/android/internal/widget/LockPatternView.java @@ -39,6 +39,7 @@ import android.provider.Settings; import android.util.AttributeSet; import android.util.IntArray; import android.util.Log; +import android.util.SparseArray; import android.view.DisplayListCanvas; import android.view.HapticFeedbackConstants; import android.view.MotionEvent; @@ -54,7 +55,6 @@ import android.view.animation.Interpolator; import com.android.internal.R; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; /** @@ -1340,8 +1340,7 @@ public class LockPatternView extends View { private final class PatternExploreByTouchHelper extends ExploreByTouchHelper { private Rect mTempRect = new Rect(); - private HashMap<Integer, VirtualViewContainer> mItems = new HashMap<Integer, - VirtualViewContainer>(); + private final SparseArray<VirtualViewContainer> mItems = new SparseArray<>(); class VirtualViewContainer { public VirtualViewContainer(CharSequence description) { @@ -1352,6 +1351,9 @@ public class LockPatternView extends View { public PatternExploreByTouchHelper(View forView) { super(forView); + for (int i = VIRTUAL_BASE_VIEW_ID; i < VIRTUAL_BASE_VIEW_ID + 9; i++) { + mItems.put(i, new VirtualViewContainer(getTextForVirtualView(i))); + } } @Override @@ -1369,10 +1371,6 @@ public class LockPatternView extends View { return; } for (int i = VIRTUAL_BASE_VIEW_ID; i < VIRTUAL_BASE_VIEW_ID + 9; i++) { - if (!mItems.containsKey(i)) { - VirtualViewContainer item = new VirtualViewContainer(getTextForVirtualView(i)); - mItems.put(i, item); - } // Add all views. As views are added to the pattern, we remove them // from notification by making them non-clickable below. virtualViewIds.add(i); @@ -1383,9 +1381,9 @@ public class LockPatternView extends View { protected void onPopulateEventForVirtualView(int virtualViewId, AccessibilityEvent event) { if (DEBUG_A11Y) Log.v(TAG, "onPopulateEventForVirtualView(" + virtualViewId + ")"); // Announce this view - if (mItems.containsKey(virtualViewId)) { - CharSequence contentDescription = mItems.get(virtualViewId).description; - event.getText().add(contentDescription); + VirtualViewContainer container = mItems.get(virtualViewId); + if (container != null) { + event.getText().add(container.description); } } |