Merge "ShortcutManager: Categories should be Set, not List." into nyc-dev

This commit is contained in:
Makoto Onuki
2016-04-16 15:18:38 +00:00
committed by Android (Google) Code Review
6 changed files with 62 additions and 35 deletions

View File

@@ -10050,7 +10050,7 @@ package android.content.pm {
public final class ShortcutInfo implements android.os.Parcelable {
method public int describeContents();
method public android.content.ComponentName getActivityComponent();
method public java.util.List<java.lang.String> getCategories();
method public java.util.Set<java.lang.String> getCategories();
method public android.os.PersistableBundle getExtras();
method public int getIconResourceId();
method public java.lang.String getId();
@@ -10083,7 +10083,7 @@ package android.content.pm {
ctor public ShortcutInfo.Builder(android.content.Context);
method public android.content.pm.ShortcutInfo build();
method public android.content.pm.ShortcutInfo.Builder setActivityComponent(android.content.ComponentName);
method public android.content.pm.ShortcutInfo.Builder setCategories(java.util.List<java.lang.String>);
method public android.content.pm.ShortcutInfo.Builder setCategories(java.util.Set<java.lang.String>);
method public android.content.pm.ShortcutInfo.Builder setExtras(android.os.PersistableBundle);
method public android.content.pm.ShortcutInfo.Builder setIcon(android.graphics.drawable.Icon);
method public android.content.pm.ShortcutInfo.Builder setId(java.lang.String);

View File

@@ -10450,7 +10450,7 @@ package android.content.pm {
public final class ShortcutInfo implements android.os.Parcelable {
method public int describeContents();
method public android.content.ComponentName getActivityComponent();
method public java.util.List<java.lang.String> getCategories();
method public java.util.Set<java.lang.String> getCategories();
method public android.os.PersistableBundle getExtras();
method public int getIconResourceId();
method public java.lang.String getId();
@@ -10483,7 +10483,7 @@ package android.content.pm {
ctor public ShortcutInfo.Builder(android.content.Context);
method public android.content.pm.ShortcutInfo build();
method public android.content.pm.ShortcutInfo.Builder setActivityComponent(android.content.ComponentName);
method public android.content.pm.ShortcutInfo.Builder setCategories(java.util.List<java.lang.String>);
method public android.content.pm.ShortcutInfo.Builder setCategories(java.util.Set<java.lang.String>);
method public android.content.pm.ShortcutInfo.Builder setExtras(android.os.PersistableBundle);
method public android.content.pm.ShortcutInfo.Builder setIcon(android.graphics.drawable.Icon);
method public android.content.pm.ShortcutInfo.Builder setId(java.lang.String);

View File

@@ -10061,7 +10061,7 @@ package android.content.pm {
public final class ShortcutInfo implements android.os.Parcelable {
method public int describeContents();
method public android.content.ComponentName getActivityComponent();
method public java.util.List<java.lang.String> getCategories();
method public java.util.Set<java.lang.String> getCategories();
method public android.os.PersistableBundle getExtras();
method public int getIconResourceId();
method public java.lang.String getId();
@@ -10094,7 +10094,7 @@ package android.content.pm {
ctor public ShortcutInfo.Builder(android.content.Context);
method public android.content.pm.ShortcutInfo build();
method public android.content.pm.ShortcutInfo.Builder setActivityComponent(android.content.ComponentName);
method public android.content.pm.ShortcutInfo.Builder setCategories(java.util.List<java.lang.String>);
method public android.content.pm.ShortcutInfo.Builder setCategories(java.util.Set<java.lang.String>);
method public android.content.pm.ShortcutInfo.Builder setExtras(android.os.PersistableBundle);
method public android.content.pm.ShortcutInfo.Builder setIcon(android.graphics.drawable.Icon);
method public android.content.pm.ShortcutInfo.Builder setId(java.lang.String);

View File

@@ -29,6 +29,7 @@ import android.os.Parcel;
import android.os.Parcelable;
import android.os.PersistableBundle;
import android.os.UserHandle;
import android.util.ArraySet;
import com.android.internal.util.Preconditions;
@@ -36,6 +37,7 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
// TODO Enhance javadoc
/**
@@ -132,7 +134,7 @@ public final class ShortcutInfo implements Parcelable {
private String mText;
@NonNull
private List<String> mCategories;
private ArraySet<String> mCategories;
/**
* Intent *with extras removed*.
@@ -192,8 +194,8 @@ public final class ShortcutInfo implements Parcelable {
updateTimestamp();
}
private <T> ArrayList<T> clone(List<T> source) {
return (source == null) ? null : new ArrayList<>(source);
private <T> ArraySet<T> clone(Set<T> source) {
return (source == null) ? null : new ArraySet<>(source);
}
/**
@@ -346,7 +348,7 @@ public final class ShortcutInfo implements Parcelable {
private String mText;
private List<String> mCategories;
private Set<String> mCategories;
private Intent mIntent;
@@ -433,7 +435,7 @@ public final class ShortcutInfo implements Parcelable {
* @see #SHORTCUT_CATEGORY_CONVERSATION
*/
@NonNull
public Builder setCategories(List<String> categories) {
public Builder setCategories(Set<String> categories) {
mCategories = categories;
return this;
}
@@ -539,7 +541,7 @@ public final class ShortcutInfo implements Parcelable {
* Return the categories.
*/
@Nullable
public List<String> getCategories() {
public Set<String> getCategories() {
return mCategories;
}
@@ -733,8 +735,6 @@ public final class ShortcutInfo implements Parcelable {
mIcon = source.readParcelable(cl);
mTitle = source.readString();
mText = source.readString();
mCategories = new ArrayList<>();
source.readStringList(mCategories);
mIntent = source.readParcelable(cl);
mIntentPersistableExtras = source.readParcelable(cl);
mWeight = source.readInt();
@@ -743,6 +743,16 @@ public final class ShortcutInfo implements Parcelable {
mFlags = source.readInt();
mIconResourceId = source.readInt();
mBitmapPath = source.readString();
int N = source.readInt();
if (N == 0) {
mCategories = null;
} else {
mCategories = new ArraySet<>(N);
for (int i = 0; i < N; i++) {
mCategories.add(source.readString().intern());
}
}
}
@Override
@@ -754,7 +764,7 @@ public final class ShortcutInfo implements Parcelable {
dest.writeParcelable(mIcon, flags);
dest.writeString(mTitle);
dest.writeString(mText);
dest.writeStringList(mCategories);
dest.writeParcelable(mIntent, flags);
dest.writeParcelable(mIntentPersistableExtras, flags);
dest.writeInt(mWeight);
@@ -763,6 +773,16 @@ public final class ShortcutInfo implements Parcelable {
dest.writeInt(mFlags);
dest.writeInt(mIconResourceId);
dest.writeString(mBitmapPath);
if (mCategories != null) {
final int N = mCategories.size();
dest.writeInt(N);
for (int i = 0; i < N; i++) {
dest.writeString(mCategories.valueAt(i));
}
} else {
dest.writeInt(0);
}
}
public static final Creator<ShortcutInfo> CREATOR =
@@ -859,7 +879,7 @@ public final class ShortcutInfo implements Parcelable {
/** @hide */
public ShortcutInfo(
@UserIdInt int userId, String id, String packageName, ComponentName activityComponent,
Icon icon, String title, String text, List<String> categories, Intent intent,
Icon icon, String title, String text, Set<String> categories, Intent intent,
PersistableBundle intentPersistableExtras,
int weight, PersistableBundle extras, long lastChangedTimestamp,
int flags, int iconResId, String bitmapPath) {

View File

@@ -40,6 +40,7 @@ import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.function.Predicate;
/**
@@ -493,7 +494,7 @@ class ShortcutPackage extends ShortcutPackageItem {
}
{
final List<String> cat = si.getCategories();
final Set<String> cat = si.getCategories();
if (cat != null && cat.size() > 0) {
out.startTag(null, TAG_CATEGORIES);
XmlUtils.writeStringArrayXml(cat.toArray(new String[cat.size()]),
@@ -567,7 +568,7 @@ class ShortcutPackage extends ShortcutPackageItem {
int flags;
int iconRes;
String bitmapPath;
String[] categories = null;
ArraySet<String> categories = null;
id = ShortcutService.parseStringAttribute(parser, ATTR_ID);
activityComponent = ShortcutService.parseComponentNameAttribute(parser,
@@ -607,15 +608,21 @@ class ShortcutPackage extends ShortcutPackageItem {
case TAG_STRING_ARRAY_XMLUTILS:
if (NAME_CATEGORIES.equals(ShortcutService.parseStringAttribute(parser,
ATTR_NAME_XMLUTILS))) {
categories = XmlUtils.readThisStringArrayXml(parser, TAG_STRING_ARRAY_XMLUTILS, null);
final String[] ar = XmlUtils.readThisStringArrayXml(
parser, TAG_STRING_ARRAY_XMLUTILS, null);
categories = new ArraySet<>(ar.length);
for (int i = 0; i < ar.length; i++) {
categories.add(ar[i]);
}
}
continue;
}
throw ShortcutService.throwForInvalidTag(depth, tag);
}
return new ShortcutInfo(
userId, id, packageName, activityComponent, /* icon =*/ null, title, text,
(categories == null ? null : Arrays.asList(categories)), intent,
categories, intent,
intentPersistableExtras, weight, extras, lastChangedTimestamp, flags,
iconRes, bitmapPath);
}

View File

@@ -5053,7 +5053,7 @@ public class ShortcutManagerTest extends InstrumentationTestCase {
.setTitle("title")
.setText("text")
.setIntent(makeIntent("action", ShortcutActivity.class, "key", "val"))
.setCategories(list(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"))
.setCategories(set(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"))
.setWeight(123)
.setExtras(pb)
.build();
@@ -5069,7 +5069,7 @@ public class ShortcutManagerTest extends InstrumentationTestCase {
assertEquals("content://a.b.c/", si.getIcon().getUriString());
assertEquals("title", si.getTitle());
assertEquals("text", si.getText());
assertEquals(list(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"), si.getCategories());
assertEquals(set(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"), si.getCategories());
assertEquals("action", si.getIntent().getAction());
assertEquals("val", si.getIntent().getStringExtra("key"));
assertEquals(123, si.getWeight());
@@ -5091,7 +5091,7 @@ public class ShortcutManagerTest extends InstrumentationTestCase {
.setIcon(Icon.createWithContentUri("content://a.b.c/"))
.setTitle("title")
.setText("text")
.setCategories(list(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"))
.setCategories(set(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"))
.setIntent(makeIntent("action", ShortcutActivity.class, "key", "val"))
.setWeight(123)
.setExtras(pb)
@@ -5110,7 +5110,7 @@ public class ShortcutManagerTest extends InstrumentationTestCase {
assertEquals("content://a.b.c/", si.getIcon().getUriString());
assertEquals("title", si.getTitle());
assertEquals("text", si.getText());
assertEquals(list(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"), si.getCategories());
assertEquals(set(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"), si.getCategories());
assertEquals("action", si.getIntent().getAction());
assertEquals("val", si.getIntent().getStringExtra("key"));
assertEquals(123, si.getWeight());
@@ -5128,7 +5128,7 @@ public class ShortcutManagerTest extends InstrumentationTestCase {
assertEquals(null, si.getIcon());
assertEquals("title", si.getTitle());
assertEquals("text", si.getText());
assertEquals(list(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"), si.getCategories());
assertEquals(set(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"), si.getCategories());
assertEquals("action", si.getIntent().getAction());
assertEquals("val", si.getIntent().getStringExtra("key"));
assertEquals(123, si.getWeight());
@@ -5147,7 +5147,7 @@ public class ShortcutManagerTest extends InstrumentationTestCase {
assertEquals(null, si.getIcon());
assertEquals("title", si.getTitle());
assertEquals("text", si.getText());
assertEquals(list(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"), si.getCategories());
assertEquals(set(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"), si.getCategories());
assertEquals(null, si.getIntent());
assertEquals(123, si.getWeight());
assertEquals(1, si.getExtras().getInt("k"));
@@ -5226,7 +5226,7 @@ public class ShortcutManagerTest extends InstrumentationTestCase {
.setIcon(Icon.createWithContentUri("content://a.b.c/"))
.setTitle("title")
.setText("text")
.setCategories(list(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"))
.setCategories(set(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"))
.setIntent(makeIntent("action", ShortcutActivity.class, "key", "val"))
.setWeight(123)
.setExtras(pb)
@@ -5263,15 +5263,15 @@ public class ShortcutManagerTest extends InstrumentationTestCase {
si = sorig.clone(/* flags=*/ 0);
si.copyNonNullFieldsFrom(new ShortcutInfo.Builder(getTestContext()).setId("id")
.setCategories(list()).build());
.setCategories(set()).build());
assertEquals("text", si.getText());
assertEquals(list(), si.getCategories());
assertEquals(set(), si.getCategories());
si = sorig.clone(/* flags=*/ 0);
si.copyNonNullFieldsFrom(new ShortcutInfo.Builder(getTestContext()).setId("id")
.setCategories(list("x")).build());
.setCategories(set("x")).build());
assertEquals("text", si.getText());
assertEquals(list("x"), si.getCategories());
assertEquals(set("x"), si.getCategories());
si = sorig.clone(/* flags=*/ 0);
si.copyNonNullFieldsFrom(new ShortcutInfo.Builder(getTestContext()).setId("id")
@@ -5328,7 +5328,7 @@ public class ShortcutManagerTest extends InstrumentationTestCase {
.setIcon(bmp32x32)
.setTitle("title")
.setText("text")
.setCategories(list(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"))
.setCategories(set(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"))
.setIntent(makeIntent("action", ShortcutActivity.class, "key", "val"))
.setWeight(123)
.setExtras(pb)
@@ -5355,7 +5355,7 @@ public class ShortcutManagerTest extends InstrumentationTestCase {
assertEquals(null, si.getIcon());
assertEquals("title", si.getTitle());
assertEquals("text", si.getText());
assertEquals(list(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"), si.getCategories());
assertEquals(set(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"), si.getCategories());
assertEquals("action", si.getIntent().getAction());
assertEquals("val", si.getIntent().getStringExtra("key"));
assertEquals(123, si.getWeight());
@@ -5381,7 +5381,7 @@ public class ShortcutManagerTest extends InstrumentationTestCase {
.setIcon(bmp32x32)
.setTitle("title")
.setText("text")
.setCategories(list(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"))
.setCategories(set(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"))
.setIntent(makeIntent("action", ShortcutActivity.class, "key", "val"))
.setWeight(123)
.setExtras(pb)
@@ -5407,7 +5407,7 @@ public class ShortcutManagerTest extends InstrumentationTestCase {
assertEquals(null, si.getIcon());
assertEquals("title", si.getTitle());
assertEquals("text", si.getText());
assertEquals(list(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"), si.getCategories());
assertEquals(set(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION, "xyz"), si.getCategories());
assertEquals("action", si.getIntent().getAction());
assertEquals("val", si.getIntent().getStringExtra("key"));
assertEquals(123, si.getWeight());