Extract ResolvedComponentInfo to top-level.

This was previously an inner class of `ResolverActivity` but that
seems inappropriate since it's a common component used throughout
our code base (including "Chooser" configurations).

Test: `atest IntentResolverUnitTests`
Bug: 202167050
Change-Id: I9b001d02c87faa376032682796ccb2bc9c902401
diff --git a/java/src/com/android/intentresolver/ChooserListAdapter.java b/java/src/com/android/intentresolver/ChooserListAdapter.java
index 49b883a..f065136 100644
--- a/java/src/com/android/intentresolver/ChooserListAdapter.java
+++ b/java/src/com/android/intentresolver/ChooserListAdapter.java
@@ -49,7 +49,6 @@
 
 import androidx.annotation.WorkerThread;
 
-import com.android.intentresolver.ResolverActivity.ResolvedComponentInfo;
 import com.android.intentresolver.chooser.DisplayResolveInfo;
 import com.android.intentresolver.chooser.MultiDisplayResolveInfo;
 import com.android.intentresolver.chooser.NotSelectableTargetInfo;
diff --git a/java/src/com/android/intentresolver/NoAppsAvailableEmptyStateProvider.java b/java/src/com/android/intentresolver/NoAppsAvailableEmptyStateProvider.java
index 5bf994d..c1373f4 100644
--- a/java/src/com/android/intentresolver/NoAppsAvailableEmptyStateProvider.java
+++ b/java/src/com/android/intentresolver/NoAppsAvailableEmptyStateProvider.java
@@ -101,9 +101,9 @@
         if (mWorkProfileUserHandle == null) {
             return false;
         }
-        List<ResolverActivity.ResolvedComponentInfo> resolversForIntent =
+        List<ResolvedComponentInfo> resolversForIntent =
                 adapter.getResolversForUser(UserHandle.of(mMyUserIdProvider.getMyUserId()));
-        for (ResolverActivity.ResolvedComponentInfo info : resolversForIntent) {
+        for (ResolvedComponentInfo info : resolversForIntent) {
             ResolveInfo resolveInfo = info.getResolveInfoAt(0);
             if (resolveInfo.targetUserId != UserHandle.USER_CURRENT) {
                 return true;
@@ -151,4 +151,4 @@
                     .write();
         }
     }
-}
\ No newline at end of file
+}
diff --git a/java/src/com/android/intentresolver/ResolvedComponentInfo.java b/java/src/com/android/intentresolver/ResolvedComponentInfo.java
new file mode 100644
index 0000000..ecb72cb
--- /dev/null
+++ b/java/src/com/android/intentresolver/ResolvedComponentInfo.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.intentresolver;
+
+import android.content.ComponentName;
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Record type to store all resolutions that are deduped to a single target component, along with
+ * other metadata about the component (which applies to all of the resolutions in the record).
+ * This record is assembled when we're first processing resolutions, and then later it's used to
+ * derive the {@link TargetInfo} record(s) that specify how the resolutions will be presented as
+ * targets in the UI.
+ */
+public final class ResolvedComponentInfo {
+    public final ComponentName name;
+    private final List<Intent> mIntents = new ArrayList<>();
+    private final List<ResolveInfo> mResolveInfos = new ArrayList<>();
+    private boolean mPinned;
+
+    /**
+     * @param name the name of the component that owns all the resolutions added to this record.
+     * @param intent an initial {@link Intent} to add to this record
+     * @param info the {@link ResolveInfo} associated with the given {@code intent}.
+     */
+    public ResolvedComponentInfo(ComponentName name, Intent intent, ResolveInfo info) {
+        this.name = name;
+        add(intent, info);
+    }
+
+    /**
+     * Add an {@link Intent} and associated {@link ResolveInfo} as resolutions for this component.
+     */
+    public void add(Intent intent, ResolveInfo info) {
+        mIntents.add(intent);
+        mResolveInfos.add(info);
+    }
+
+    /** @return the number of {@link Intent}/{@link ResolveInfo} pairs added to this record. */
+    public int getCount() {
+        return mIntents.size();
+    }
+
+    /** @return the {@link Intent} at the specified {@code index}, if any, or else null. */
+    public Intent getIntentAt(int index) {
+        return (index >= 0) ? mIntents.get(index) : null;
+    }
+
+    /** @return the {@link ResolveInfo} at the specified {@code index}, if any, or else null. */
+    public ResolveInfo getResolveInfoAt(int index) {
+        return (index >= 0) ? mResolveInfos.get(index) : null;
+    }
+
+    /**
+     * @return the index of the provided {@link Intent} among those that have been added to this
+     * {@link ResolvedComponentInfo}, or -1 if it has't been added.
+     */
+    public int findIntent(Intent intent) {
+        return mIntents.indexOf(intent);
+    }
+
+    /**
+     * @return the index of the provided {@link ResolveInfo} among those that have been added to
+     * this {@link ResolvedComponentInfo}, or -1 if it has't been added.
+     */
+    public int findResolveInfo(ResolveInfo info) {
+        return mResolveInfos.indexOf(info);
+    }
+
+    /**
+     * @return whether this component was pinned by a call to {@link #setPinned()}.
+     * TODO: consolidate sources of pinning data and/or document how this differs from other places
+     * we make a "pinning" determination.
+     */
+    public boolean isPinned() {
+        return mPinned;
+    }
+
+    /**
+     * Set whether this component will be considered pinned in future calls to {@link #isPinned()}.
+     * TODO: consolidate sources of pinning data and/or document how this differs from other places
+     * we make a "pinning" determination.
+     */
+    public void setPinned(boolean pinned) {
+        mPinned = pinned;
+    }
+}
diff --git a/java/src/com/android/intentresolver/ResolverActivity.java b/java/src/com/android/intentresolver/ResolverActivity.java
index 08f4240..7a0c0f1 100644
--- a/java/src/com/android/intentresolver/ResolverActivity.java
+++ b/java/src/com/android/intentresolver/ResolverActivity.java
@@ -2214,61 +2214,6 @@
         return mMultiProfilePagerAdapter.getInactiveListAdapter().getCount() > 0;
     }
 
-    public static final class ResolvedComponentInfo {
-        public final ComponentName name;
-        private final List<Intent> mIntents = new ArrayList<>();
-        private final List<ResolveInfo> mResolveInfos = new ArrayList<>();
-        private boolean mPinned;
-
-        public ResolvedComponentInfo(ComponentName name, Intent intent, ResolveInfo info) {
-            this.name = name;
-            add(intent, info);
-        }
-
-        public void add(Intent intent, ResolveInfo info) {
-            mIntents.add(intent);
-            mResolveInfos.add(info);
-        }
-
-        public int getCount() {
-            return mIntents.size();
-        }
-
-        public Intent getIntentAt(int index) {
-            return index >= 0 ? mIntents.get(index) : null;
-        }
-
-        public ResolveInfo getResolveInfoAt(int index) {
-            return index >= 0 ? mResolveInfos.get(index) : null;
-        }
-
-        public int findIntent(Intent intent) {
-            for (int i = 0, N = mIntents.size(); i < N; i++) {
-                if (intent.equals(mIntents.get(i))) {
-                    return i;
-                }
-            }
-            return -1;
-        }
-
-        public int findResolveInfo(ResolveInfo info) {
-            for (int i = 0, N = mResolveInfos.size(); i < N; i++) {
-                if (info.equals(mResolveInfos.get(i))) {
-                    return i;
-                }
-            }
-            return -1;
-        }
-
-        public boolean isPinned() {
-            return mPinned;
-        }
-
-        public void setPinned(boolean pinned) {
-            mPinned = pinned;
-        }
-    }
-
     final class ItemClickListener implements AdapterView.OnItemClickListener,
             AdapterView.OnItemLongClickListener {
         @Override
diff --git a/java/src/com/android/intentresolver/ResolverListAdapter.java b/java/src/com/android/intentresolver/ResolverListAdapter.java
index c8a9d5d..eac275c 100644
--- a/java/src/com/android/intentresolver/ResolverListAdapter.java
+++ b/java/src/com/android/intentresolver/ResolverListAdapter.java
@@ -49,7 +49,6 @@
 import android.widget.ImageView;
 import android.widget.TextView;
 
-import com.android.intentresolver.ResolverActivity.ResolvedComponentInfo;
 import com.android.intentresolver.chooser.DisplayResolveInfo;
 import com.android.intentresolver.chooser.TargetInfo;
 import com.android.internal.annotations.VisibleForTesting;
diff --git a/java/src/com/android/intentresolver/ResolverListController.java b/java/src/com/android/intentresolver/ResolverListController.java
index 6eb027e..b4544c4 100644
--- a/java/src/com/android/intentresolver/ResolverListController.java
+++ b/java/src/com/android/intentresolver/ResolverListController.java
@@ -104,7 +104,11 @@
                 filter, match, intent.getComponent());
     }
 
-    public List<ResolverActivity.ResolvedComponentInfo> getResolversForIntentAsUser(
+    /**
+     * Get data about all the ways the user with the specified handle can resolve any of the
+     * provided {@code intents}.
+     */
+    public List<ResolvedComponentInfo> getResolversForIntentAsUser(
             boolean shouldGetResolvedFilter,
             boolean shouldGetActivityMetadata,
             boolean shouldGetOnlyDefaultActivities,
@@ -118,11 +122,9 @@
         return getResolversForIntentAsUserInternal(intents, userHandle, baseFlags);
     }
 
-    private List<ResolverActivity.ResolvedComponentInfo> getResolversForIntentAsUserInternal(
-            List<Intent> intents,
-            UserHandle userHandle,
-            int baseFlags) {
-        List<ResolverActivity.ResolvedComponentInfo> resolvedComponents = null;
+    private List<ResolvedComponentInfo> getResolversForIntentAsUserInternal(
+            List<Intent> intents, UserHandle userHandle, int baseFlags) {
+        List<ResolvedComponentInfo> resolvedComponents = null;
         for (int i = 0, N = intents.size(); i < N; i++) {
             Intent intent = intents.get(i);
             int flags = baseFlags;
@@ -146,9 +148,8 @@
     }
 
     @VisibleForTesting
-    public void addResolveListDedupe(List<ResolverActivity.ResolvedComponentInfo> into,
-            Intent intent,
-            List<ResolveInfo> from) {
+    public void addResolveListDedupe(
+            List<ResolvedComponentInfo> into, Intent intent, List<ResolveInfo> from) {
         final int fromCount = from.size();
         final int intoCount = into.size();
         for (int i = 0; i < fromCount; i++) {
@@ -156,7 +157,7 @@
             boolean found = false;
             // Only loop to the end of into as it was before we started; no dupes in from.
             for (int j = 0; j < intoCount; j++) {
-                final ResolverActivity.ResolvedComponentInfo rci = into.get(j);
+                final ResolvedComponentInfo rci = into.get(j);
                 if (isSameResolvedComponent(newInfo, rci)) {
                     found = true;
                     rci.add(intent, newInfo);
@@ -166,8 +167,7 @@
             if (!found) {
                 final ComponentName name = new ComponentName(
                         newInfo.activityInfo.packageName, newInfo.activityInfo.name);
-                final ResolverActivity.ResolvedComponentInfo rci =
-                        new ResolverActivity.ResolvedComponentInfo(name, intent, newInfo);
+                final ResolvedComponentInfo rci = new ResolvedComponentInfo(name, intent, newInfo);
                 rci.setPinned(isComponentPinned(name));
                 into.add(rci);
             }
@@ -187,10 +187,9 @@
     // To preserve the inputList, optionally will return the original list if any modification has
     // been made.
     @VisibleForTesting
-    public ArrayList<ResolverActivity.ResolvedComponentInfo> filterIneligibleActivities(
-            List<ResolverActivity.ResolvedComponentInfo> inputList,
-            boolean returnCopyOfOriginalListIfModified) {
-        ArrayList<ResolverActivity.ResolvedComponentInfo> listToReturn = null;
+    public ArrayList<ResolvedComponentInfo> filterIneligibleActivities(
+            List<ResolvedComponentInfo> inputList, boolean returnCopyOfOriginalListIfModified) {
+        ArrayList<ResolvedComponentInfo> listToReturn = null;
         for (int i = inputList.size()-1; i >= 0; i--) {
             ActivityInfo ai = inputList.get(i)
                     .getResolveInfoAt(0).activityInfo;
@@ -216,13 +215,12 @@
     // To preserve the inputList, optionally will return the original list if any modification has
     // been made.
     @VisibleForTesting
-    public ArrayList<ResolverActivity.ResolvedComponentInfo> filterLowPriority(
-            List<ResolverActivity.ResolvedComponentInfo> inputList,
-            boolean returnCopyOfOriginalListIfModified) {
-        ArrayList<ResolverActivity.ResolvedComponentInfo> listToReturn = null;
+    public ArrayList<ResolvedComponentInfo> filterLowPriority(
+            List<ResolvedComponentInfo> inputList, boolean returnCopyOfOriginalListIfModified) {
+        ArrayList<ResolvedComponentInfo> listToReturn = null;
         // Only display the first matches that are either of equal
         // priority or have asked to be default options.
-        ResolverActivity.ResolvedComponentInfo rci0 = inputList.get(0);
+        ResolvedComponentInfo rci0 = inputList.get(0);
         ResolveInfo r0 = rci0.getResolveInfoAt(0);
         int N = inputList.size();
         for (int i = 1; i < N; i++) {
@@ -247,8 +245,7 @@
         return listToReturn;
     }
 
-    private void compute(List<ResolverActivity.ResolvedComponentInfo> inputList)
-            throws InterruptedException {
+    private void compute(List<ResolvedComponentInfo> inputList) throws InterruptedException {
         if (mResolverComparator == null) {
             Log.d(TAG, "Comparator has already been destroyed; skipped.");
             return;
@@ -262,7 +259,7 @@
 
     @VisibleForTesting
     @WorkerThread
-    public void sort(List<ResolverActivity.ResolvedComponentInfo> inputList) {
+    public void sort(List<ResolvedComponentInfo> inputList) {
         try {
             long beforeRank = System.currentTimeMillis();
             if (!isComputed) {
@@ -281,7 +278,7 @@
 
     @VisibleForTesting
     @WorkerThread
-    public void topK(List<ResolverActivity.ResolvedComponentInfo> inputList, int k) {
+    public void topK(List<ResolvedComponentInfo> inputList, int k) {
         if (inputList == null || inputList.isEmpty() || k <= 0) {
             return;
         }
@@ -298,7 +295,7 @@
             }
 
             // Top of this heap has lowest rank.
-            PriorityQueue<ResolverActivity.ResolvedComponentInfo> minHeap = new PriorityQueue<>(k,
+            PriorityQueue<ResolvedComponentInfo> minHeap = new PriorityQueue<>(k,
                     (o1, o2) -> -mResolverComparator.compare(o1, o2));
             final int size = inputList.size();
             // Use this pointer to keep track of the position of next element
@@ -306,7 +303,7 @@
             int pointer = size - 1;
             minHeap.addAll(inputList.subList(size - k, size));
             for (int i = size - k - 1; i >= 0; --i) {
-                ResolverActivity.ResolvedComponentInfo ci = inputList.get(i);
+                ResolvedComponentInfo ci = inputList.get(i);
                 if (-mResolverComparator.compare(ci, minHeap.peek()) > 0) {
                     // When ranked higher than top of heap, remove top of heap,
                     // update input list with it, add this new element to heap.
@@ -335,8 +332,7 @@
         }
     }
 
-    private static boolean isSameResolvedComponent(ResolveInfo a,
-            ResolverActivity.ResolvedComponentInfo b) {
+    private static boolean isSameResolvedComponent(ResolveInfo a, ResolvedComponentInfo b) {
         final ActivityInfo ai = a.activityInfo;
         return ai.packageName.equals(b.name.getPackageName())
                 && ai.name.equals(b.name.getClassName());
diff --git a/java/src/com/android/intentresolver/model/AbstractResolverComparator.java b/java/src/com/android/intentresolver/model/AbstractResolverComparator.java
index 271c6f9..ea76756 100644
--- a/java/src/com/android/intentresolver/model/AbstractResolverComparator.java
+++ b/java/src/com/android/intentresolver/model/AbstractResolverComparator.java
@@ -30,8 +30,8 @@
 import android.util.Log;
 
 import com.android.intentresolver.ChooserActivityLogger;
+import com.android.intentresolver.ResolvedComponentInfo;
 import com.android.intentresolver.ResolverActivity;
-import com.android.intentresolver.ResolverActivity.ResolvedComponentInfo;
 
 import java.text.Collator;
 import java.util.ArrayList;
diff --git a/java/src/com/android/intentresolver/model/AppPredictionServiceResolverComparator.java b/java/src/com/android/intentresolver/model/AppPredictionServiceResolverComparator.java
index c6bb2b8..c986ef1 100644
--- a/java/src/com/android/intentresolver/model/AppPredictionServiceResolverComparator.java
+++ b/java/src/com/android/intentresolver/model/AppPredictionServiceResolverComparator.java
@@ -32,7 +32,7 @@
 import android.util.Log;
 
 import com.android.intentresolver.ChooserActivityLogger;
-import com.android.intentresolver.ResolverActivity.ResolvedComponentInfo;
+import com.android.intentresolver.ResolvedComponentInfo;
 
 import java.util.ArrayList;
 import java.util.Comparator;
diff --git a/java/src/com/android/intentresolver/model/ResolverRankerServiceResolverComparator.java b/java/src/com/android/intentresolver/model/ResolverRankerServiceResolverComparator.java
index 4382f10..0431078 100644
--- a/java/src/com/android/intentresolver/model/ResolverRankerServiceResolverComparator.java
+++ b/java/src/com/android/intentresolver/model/ResolverRankerServiceResolverComparator.java
@@ -38,7 +38,7 @@
 import android.util.Log;
 
 import com.android.intentresolver.ChooserActivityLogger;
-import com.android.intentresolver.ResolverActivity.ResolvedComponentInfo;
+import com.android.intentresolver.ResolvedComponentInfo;
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 
diff --git a/java/tests/src/com/android/intentresolver/ResolverActivityTest.java b/java/tests/src/com/android/intentresolver/ResolverActivityTest.java
index 7950b16..ae1b99f 100644
--- a/java/tests/src/com/android/intentresolver/ResolverActivityTest.java
+++ b/java/tests/src/com/android/intentresolver/ResolverActivityTest.java
@@ -54,7 +54,6 @@
 import androidx.test.rule.ActivityTestRule;
 import androidx.test.runner.AndroidJUnit4;
 
-import com.android.intentresolver.ResolverActivity.ResolvedComponentInfo;
 import com.android.intentresolver.widget.ResolverDrawerLayout;
 import com.android.internal.R;
 
diff --git a/java/tests/src/com/android/intentresolver/ResolverDataProvider.java b/java/tests/src/com/android/intentresolver/ResolverDataProvider.java
index 6807bfd..b6b32b5 100644
--- a/java/tests/src/com/android/intentresolver/ResolverDataProvider.java
+++ b/java/tests/src/com/android/intentresolver/ResolverDataProvider.java
@@ -36,28 +36,33 @@
 
     static private int USER_SOMEONE_ELSE = 10;
 
-    static ResolverActivity.ResolvedComponentInfo createResolvedComponentInfo(int i) {
-        return new ResolverActivity.ResolvedComponentInfo(createComponentName(i),
-                createResolverIntent(i), createResolveInfo(i, UserHandle.USER_CURRENT));
+    static ResolvedComponentInfo createResolvedComponentInfo(int i) {
+        return new ResolvedComponentInfo(
+                createComponentName(i),
+                createResolverIntent(i),
+                createResolveInfo(i, UserHandle.USER_CURRENT));
     }
 
-    static ResolverActivity.ResolvedComponentInfo createResolvedComponentInfo(
+    static ResolvedComponentInfo createResolvedComponentInfo(
             ComponentName componentName, Intent intent) {
-        return new ResolverActivity.ResolvedComponentInfo(
+        return new ResolvedComponentInfo(
                 componentName,
                 intent,
                 createResolveInfo(componentName, UserHandle.USER_CURRENT));
     }
 
-    static ResolverActivity.ResolvedComponentInfo createResolvedComponentInfoWithOtherId(int i) {
-        return new ResolverActivity.ResolvedComponentInfo(createComponentName(i),
-                createResolverIntent(i), createResolveInfo(i, USER_SOMEONE_ELSE));
+    static ResolvedComponentInfo createResolvedComponentInfoWithOtherId(int i) {
+        return new ResolvedComponentInfo(
+                createComponentName(i),
+                createResolverIntent(i),
+                createResolveInfo(i, USER_SOMEONE_ELSE));
     }
 
-    static ResolverActivity.ResolvedComponentInfo createResolvedComponentInfoWithOtherId(int i,
-            int userId) {
-        return new ResolverActivity.ResolvedComponentInfo(createComponentName(i),
-                createResolverIntent(i), createResolveInfo(i, userId));
+    static ResolvedComponentInfo createResolvedComponentInfoWithOtherId(int i, int userId) {
+        return new ResolvedComponentInfo(
+                createComponentName(i),
+                createResolverIntent(i),
+                createResolveInfo(i, userId));
     }
 
     public static ComponentName createComponentName(int i) {
diff --git a/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java b/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java
index b0c0f36..9ffd02d 100644
--- a/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java
+++ b/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java
@@ -101,7 +101,6 @@
 import androidx.test.platform.app.InstrumentationRegistry;
 import androidx.test.rule.ActivityTestRule;
 
-import com.android.intentresolver.ResolverActivity.ResolvedComponentInfo;
 import com.android.intentresolver.chooser.DisplayResolveInfo;
 import com.android.intentresolver.flags.Flags;
 import com.android.intentresolver.shortcuts.ShortcutLoader;
diff --git a/java/tests/src/com/android/intentresolver/UnbundledChooserActivityWorkProfileTest.java b/java/tests/src/com/android/intentresolver/UnbundledChooserActivityWorkProfileTest.java
index 904f114..87dc1b9 100644
--- a/java/tests/src/com/android/intentresolver/UnbundledChooserActivityWorkProfileTest.java
+++ b/java/tests/src/com/android/intentresolver/UnbundledChooserActivityWorkProfileTest.java
@@ -48,7 +48,6 @@
 import androidx.test.espresso.NoMatchingViewException;
 import androidx.test.rule.ActivityTestRule;
 
-import com.android.intentresolver.ResolverActivity.ResolvedComponentInfo;
 import com.android.intentresolver.UnbundledChooserActivityWorkProfileTest.TestCase.Tab;
 import com.android.internal.R;
 
diff --git a/java/tests/src/com/android/intentresolver/model/AbstractResolverComparatorTest.java b/java/tests/src/com/android/intentresolver/model/AbstractResolverComparatorTest.java
index 448718c..006f3b2 100644
--- a/java/tests/src/com/android/intentresolver/model/AbstractResolverComparatorTest.java
+++ b/java/tests/src/com/android/intentresolver/model/AbstractResolverComparatorTest.java
@@ -27,7 +27,7 @@
 
 import androidx.test.InstrumentationRegistry;
 
-import com.android.intentresolver.ResolverActivity;
+import com.android.intentresolver.ResolvedComponentInfo;
 
 import org.junit.Test;
 
@@ -37,12 +37,12 @@
 
     @Test
     public void testPinned() {
-        ResolverActivity.ResolvedComponentInfo r1 = new ResolverActivity.ResolvedComponentInfo(
+        ResolvedComponentInfo r1 = new ResolvedComponentInfo(
                 new ComponentName("package", "class"), new Intent(), new ResolveInfo()
         );
         r1.setPinned(true);
 
-        ResolverActivity.ResolvedComponentInfo r2 = new ResolverActivity.ResolvedComponentInfo(
+        ResolvedComponentInfo r2 = new ResolvedComponentInfo(
                 new ComponentName("zackage", "zlass"), new Intent(), new ResolveInfo()
         );
 
@@ -60,14 +60,14 @@
         pmInfo1.activityInfo = new ActivityInfo();
         pmInfo1.activityInfo.packageName = "aaa";
 
-        ResolverActivity.ResolvedComponentInfo r1 = new ResolverActivity.ResolvedComponentInfo(
+        ResolvedComponentInfo r1 = new ResolvedComponentInfo(
                 new ComponentName("package", "class"), new Intent(), pmInfo1);
         r1.setPinned(true);
 
         ResolveInfo pmInfo2 = new ResolveInfo();
         pmInfo2.activityInfo = new ActivityInfo();
         pmInfo2.activityInfo.packageName = "zzz";
-        ResolverActivity.ResolvedComponentInfo r2 = new ResolverActivity.ResolvedComponentInfo(
+        ResolvedComponentInfo r2 = new ResolvedComponentInfo(
                 new ComponentName("zackage", "zlass"), new Intent(), pmInfo2);
         r2.setPinned(true);
 
@@ -91,7 +91,7 @@
                     }
 
                     @Override
-                    void doCompute(List<ResolverActivity.ResolvedComponentInfo> targets) {}
+                    void doCompute(List<ResolvedComponentInfo> targets) {}
 
                     @Override
                     public float getScore(ComponentName name) {