queryIntentActivities() now returns empty list if no match, as per Android SDK docs
diff --git a/src/main/java/com/xtremelabs/robolectric/res/RobolectricPackageManager.java b/src/main/java/com/xtremelabs/robolectric/res/RobolectricPackageManager.java
index efcf985..f5124d8 100644
--- a/src/main/java/com/xtremelabs/robolectric/res/RobolectricPackageManager.java
+++ b/src/main/java/com/xtremelabs/robolectric/res/RobolectricPackageManager.java
@@ -70,7 +70,8 @@
@Override
public List<ResolveInfo> queryIntentActivities( Intent intent, int flags ) {
- return resolveList.get( intent );
+ List<ResolveInfo> result = resolveList.get( intent );
+ return (result == null) ? new ArrayList<ResolveInfo>() : result;
}
@Override
diff --git a/src/test/java/com/xtremelabs/robolectric/res/RobolectricPackageManagerTest.java b/src/test/java/com/xtremelabs/robolectric/res/RobolectricPackageManagerTest.java
index 023c463..0bf4bab 100644
--- a/src/test/java/com/xtremelabs/robolectric/res/RobolectricPackageManagerTest.java
+++ b/src/test/java/com/xtremelabs/robolectric/res/RobolectricPackageManagerTest.java
@@ -1,5 +1,8 @@
package com.xtremelabs.robolectric.res;
+import java.util.ArrayList;
+import java.util.List;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -8,8 +11,10 @@
import com.xtremelabs.robolectric.Robolectric;
import com.xtremelabs.robolectric.WithTestDefaultsRunner;
+import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
+import android.content.pm.ResolveInfo;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.assertThat;
@@ -53,4 +58,31 @@
assertThat(rpm.getApplicationLabel(info).toString(), equalTo(TEST_PACKAGE_LABEL));
}
+ @Test
+ public void queryIntentActivities__EmptyResult() throws Exception {
+ Intent i = new Intent(Intent.ACTION_MAIN, null);
+ i.addCategory(Intent.CATEGORY_LAUNCHER);
+
+ List<ResolveInfo> activities = rpm.queryIntentActivities( i, 0 );
+ assertThat(activities, notNullValue()); // empty list, not null
+ assertThat(activities.size(), equalTo(0));
+ }
+
+ @Test
+ public void queryIntentActivities__Match() throws Exception {
+ Intent i = new Intent(Intent.ACTION_MAIN, null);
+ i.addCategory(Intent.CATEGORY_LAUNCHER);
+
+ List<ResolveInfo> resolved = new ArrayList<ResolveInfo>();
+ ResolveInfo info = new ResolveInfo();
+ info.nonLocalizedLabel = TEST_PACKAGE_LABEL;
+ resolved.add(info);
+
+ rpm.addResolveInfoForIntent(i, resolved);
+
+ List<ResolveInfo> activities = rpm.queryIntentActivities( i, 0 );
+ assertThat(activities, notNullValue());
+ assertThat(activities.size(), equalTo(1));
+ assertThat(activities.get(0).nonLocalizedLabel.toString(), equalTo(TEST_PACKAGE_LABEL));
+ }
}