1 package org.robolectric.shadows;
2 
3 import android.content.pm.ActivityInfo;
4 import android.content.pm.ApplicationInfo;
5 import android.content.pm.ResolveInfo;
6 
7 /** Utilities for {@link ResolveInfo}. */
8 // TODO: Create a ResolveInfoBuilder in androidx and migrate factory methods there.
9 public class ShadowResolveInfo {
10 
11   /**
12    * Creates a {@link ResolveInfo}.
13    *
14    * @param displayName Display name.
15    * @param packageName Package name.
16    * @return Resolve info instance.
17    */
newResolveInfo(String displayName, String packageName)18   public static ResolveInfo newResolveInfo(String displayName, String packageName) {
19     return newResolveInfo(displayName, packageName, packageName + ".TestActivity");
20   }
21 
22   /**
23    * Creates a {@link ResolveInfo}.
24    *
25    * @param displayName Display name.
26    * @param packageName Package name.
27    * @param activityName Activity name.
28    * @return Resolve info instance.
29    */
newResolveInfo( String displayName, String packageName, String activityName)30   public static ResolveInfo newResolveInfo(
31       String displayName, String packageName, String activityName) {
32     ResolveInfo resInfo = new ResolveInfo();
33     ActivityInfo actInfo = new ActivityInfo();
34     actInfo.applicationInfo = new ApplicationInfo();
35     actInfo.packageName = packageName;
36     actInfo.applicationInfo.packageName = packageName;
37     actInfo.name = activityName;
38     resInfo.activityInfo = actInfo;
39     resInfo.nonLocalizedLabel = displayName;
40     return resInfo;
41   }
42 
43   /**
44    * Copies {@link ResolveInfo}.
45    *
46    * <p>Note that this is shallow copy as performed by the copy constructor existing in API 17.
47    */
newResolveInfo(ResolveInfo orig)48   public static ResolveInfo newResolveInfo(ResolveInfo orig) {
49     ResolveInfo copy = new ResolveInfo(orig);
50     // For some reason isDefault field is not copied by the copy constructor.
51     copy.isDefault = orig.isDefault;
52     return copy;
53   }
54 }
55