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

Commit 04a22a26 authored by Pavel Maltsev's avatar Pavel Maltsev
Browse files

Fix indexOutOfBound exception in SystemUI

Long-pressing events are optional, refactor code a little bit to avoid exceptions.

Bug:26806128
Change-Id: Ib883b4d5d31af256fc40ab2b4293ba1bf2abef3f
parent 3ce2653c
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import com.android.systemui.statusbar.phone.ActivityStarter;

import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
@@ -62,8 +63,8 @@ class CarNavigationBarController {
    private SimpleArrayMap<String, Integer> mFacetPackageMap
            = new SimpleArrayMap<String, Integer>();

    private List<Intent> mIntents = new ArrayList<Intent>();
    private List<Intent> mLongPressIntents = new ArrayList<Intent>();
    private List<Intent> mIntents;
    private List<Intent> mLongPressIntents;

    private List<CarNavigationButton> mNavButtons = new ArrayList<CarNavigationButton>();

@@ -112,16 +113,19 @@ class CarNavigationBarController {
            throw new RuntimeException("car_facet array lengths do not match");
        }

        mIntents = createEmptyIntentList(icons.length());
        mLongPressIntents = createEmptyIntentList(icons.length());

        for (int i = 0; i < icons.length(); i++) {
            Drawable icon = icons.getDrawable(i);
            try {
                mIntents.add(i,
                mIntents.set(i,
                        Intent.parseUri(intents.getString(i), Intent.URI_INTENT_SCHEME));

                String longpressUri = longpressIntents.getString(i);
                boolean hasLongpress = !longpressUri.isEmpty();
                if (hasLongpress) {
                    mLongPressIntents.add(i,
                    mLongPressIntents.set(i,
                            Intent.parseUri(longpressUri, Intent.URI_INTENT_SCHEME));
                }

@@ -299,4 +303,8 @@ class CarNavigationBarController {
        setCurrentFacet(index);
        startActivity(mLongPressIntents.get(index));
    }

    private List<Intent> createEmptyIntentList(int size) {
        return Arrays.asList(new Intent[size]);
    }
}