Merge "ShortcutManager: Categories should be Set, not List." into nyc-dev
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user