Loading core/java/android/content/pm/ILauncherApps.aidl +5 −6 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.IOnAppsChangedListener; import android.content.pm.LauncherApps; import android.content.pm.ShortcutQueryWrapper; import android.content.pm.IPackageInstallerCallback; import android.content.pm.IShortcutChangeCallback; import android.content.pm.PackageInstaller; Loading Loading @@ -67,9 +68,8 @@ interface ILauncherApps { LauncherApps.AppUsageLimit getAppUsageLimit(String callingPackage, String packageName, in UserHandle user); ParceledListSlice getShortcuts(String callingPackage, long changedSince, String packageName, in List shortcutIds, in List<LocusId> locusIds, in ComponentName componentName, int flags, in UserHandle user); ParceledListSlice getShortcuts(String callingPackage, in ShortcutQueryWrapper query, in UserHandle user); void pinShortcuts(String callingPackage, String packageName, in List<String> shortcutIds, in UserHandle user); boolean startShortcut(String callingPackage, String packageName, String featureId, String id, Loading @@ -93,9 +93,8 @@ interface ILauncherApps { in IPackageInstallerCallback callback); ParceledListSlice getAllSessions(String callingPackage); void registerShortcutChangeCallback(String callingPackage, long changedSince, String packageName, in List shortcutIds, in List<LocusId> locusIds, in ComponentName componentName, int flags, in IShortcutChangeCallback callback); void registerShortcutChangeCallback(String callingPackage, in ShortcutQueryWrapper query, in IShortcutChangeCallback callback); void unregisterShortcutChangeCallback(String callingPackage, in IShortcutChangeCallback callback); Loading core/java/android/content/pm/LauncherApps.java +2 −4 Original line number Diff line number Diff line Loading @@ -1046,8 +1046,7 @@ public class LauncherApps { // changed callback, but that only returns shortcuts with the "key" information, so // that won't return disabled message. return maybeUpdateDisabledMessage(mService.getShortcuts(mContext.getPackageName(), query.mChangedSince, query.mPackage, query.mShortcutIds, query.mLocusIds, query.mActivity, query.mQueryFlags, user) new ShortcutQueryWrapper(query), user) .getList()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); Loading Loading @@ -1826,8 +1825,7 @@ public class LauncherApps { mShortcutChangeCallbacks.put(callback, new Pair<>(executor, proxy)); try { mService.registerShortcutChangeCallback(mContext.getPackageName(), query.mChangedSince, query.mPackage, query.mShortcutIds, query.mLocusIds, query.mActivity, query.mQueryFlags, proxy); new ShortcutQueryWrapper(query), proxy); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading core/java/android/content/pm/ShortcutQueryWrapper.aidl 0 → 100644 +20 −0 Original line number Diff line number Diff line /** * Copyright (c) 2020, 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 android.content.pm; parcelable ShortcutQueryWrapper; core/java/android/content/pm/ShortcutQueryWrapper.java 0 → 100644 +190 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 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 android.content.pm; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.ComponentName; import android.content.LocusId; import android.os.Parcel; import android.os.Parcelable; import com.android.internal.util.DataClass; import java.util.ArrayList; import java.util.List; /** * @hide */ @DataClass(genParcelable = true, genToString = true) public final class ShortcutQueryWrapper extends LauncherApps.ShortcutQuery implements Parcelable { public ShortcutQueryWrapper(LauncherApps.ShortcutQuery query) { this(); mChangedSince = query.mChangedSince; mPackage = query.mPackage; mLocusIds = query.mLocusIds; mShortcutIds = query.mShortcutIds; mActivity = query.mActivity; mQueryFlags = query.mQueryFlags; } public long getChangedSince() { return mChangedSince; } @Nullable public String getPackage() { return mPackage; } @Nullable public List<LocusId> getLocusIds() { return mLocusIds; } @Nullable public List<String> getShortcutIds() { return mShortcutIds; } @Nullable public ComponentName getActivity() { return mActivity; } public int getQueryFlags() { return mQueryFlags; } // Code below generated by codegen v1.0.14. // // DO NOT MODIFY! // CHECKSTYLE:OFF Generated code // // To regenerate run: // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/content/pm/ShortcutQueryWrapper.java // // To exclude the generated code from IntelliJ auto-formatting enable (one-time): // Settings > Editor > Code Style > Formatter Control //@formatter:off @DataClass.Generated.Member public ShortcutQueryWrapper() { // onConstructed(); // You can define this method to get a callback } @Override @DataClass.Generated.Member public String toString() { // You can override field toString logic by defining methods like: // String fieldNameToString() { ... } return "ShortcutQueryWrapper { " + " }"; } @Override @DataClass.Generated.Member public void writeToParcel(@NonNull Parcel dest, int flags) { // You can override field parcelling by defining methods like: // void parcelFieldName(Parcel dest, int flags) { ... } byte flg = 0; if (mPackage != null) flg |= 0x2; if (mShortcutIds != null) flg |= 0x4; if (mLocusIds != null) flg |= 0x8; if (mActivity != null) flg |= 0x10; dest.writeByte(flg); dest.writeLong(mChangedSince); if (mPackage != null) dest.writeString(mPackage); if (mShortcutIds != null) dest.writeStringList(mShortcutIds); if (mLocusIds != null) dest.writeParcelableList(mLocusIds, flags); if (mActivity != null) dest.writeTypedObject(mActivity, flags); dest.writeInt(mQueryFlags); } @Override @DataClass.Generated.Member public int describeContents() { return 0; } /** @hide */ @SuppressWarnings({"unchecked", "RedundantCast"}) @DataClass.Generated.Member /* package-private */ ShortcutQueryWrapper(@NonNull Parcel in) { // You can override field unparcelling by defining methods like: // static FieldType unparcelFieldName(Parcel in) { ... } byte flg = in.readByte(); long changedSince = in.readLong(); String pkg = (flg & 0x2) == 0 ? null : in.readString(); List<String> shortcutIds = null; if ((flg & 0x4) != 0) { shortcutIds = new ArrayList<>(); in.readStringList(shortcutIds); } List<LocusId> locusIds = null; if ((flg & 0x8) != 0) { locusIds = new ArrayList<>(); in.readParcelableList(locusIds, LocusId.class.getClassLoader()); } ComponentName activity = (flg & 0x10) == 0 ? null : (ComponentName) in.readTypedObject(ComponentName.CREATOR); int queryFlags = in.readInt(); this.mChangedSince = changedSince; this.mPackage = pkg; this.mShortcutIds = shortcutIds; this.mLocusIds = locusIds; this.mActivity = activity; this.mQueryFlags = queryFlags; com.android.internal.util.AnnotationValidations.validate( QueryFlags.class, null, mQueryFlags); // onConstructed(); // You can define this method to get a callback } @DataClass.Generated.Member public static final @NonNull Parcelable.Creator<ShortcutQueryWrapper> CREATOR = new Parcelable.Creator<ShortcutQueryWrapper>() { @Override public ShortcutQueryWrapper[] newArray(int size) { return new ShortcutQueryWrapper[size]; } @Override public ShortcutQueryWrapper createFromParcel(@NonNull Parcel in) { return new ShortcutQueryWrapper(in); } }; @DataClass.Generated( time = 1582049937960L, codegenVersion = "1.0.14", sourceFile = "frameworks/base/core/java/android/content/pm/ShortcutQueryWrapper.java", inputSignatures = "public long getChangedSince()\npublic @android.annotation.Nullable java.lang.String getPackage()\npublic @android.annotation.Nullable java.util.List<android.content.LocusId> getLocusIds()\npublic @android.annotation.Nullable java.util.List<java.lang.String> getShortcutIds()\npublic @android.annotation.Nullable android.content.ComponentName getActivity()\npublic int getQueryFlags()\nclass ShortcutQueryWrapper extends android.content.pm.LauncherApps.ShortcutQuery implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genParcelable=true, genToString=true)") @Deprecated private void __metadata() {} //@formatter:on // End of generated code } core/tests/coretests/src/android/content/pm/ShortcutQueryWrapperTest.java 0 → 100644 +77 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 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 android.content.pm; import static org.junit.Assert.assertEquals; import android.content.ComponentName; import android.content.LocusId; import android.os.Parcel; import android.platform.test.annotations.Presubmit; import androidx.test.runner.AndroidJUnit4; import com.google.android.collect.Lists; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import java.util.List; import java.util.concurrent.TimeUnit; @RunWith(AndroidJUnit4.class) @Presubmit public class ShortcutQueryWrapperTest { private static final long CHANGED_SINCE = TimeUnit.SECONDS.toMillis(1); private static final String PACKAGE_NAME = "com.android.test"; private static final List<String> SHORTCUT_IDS = Lists.newArrayList("s1", "s2", "s3"); private static final List<LocusId> LOCUS_IDS = Lists.newArrayList( new LocusId("id1"), new LocusId("id2"), new LocusId("id3")); private static final ComponentName COMPONENT_NAME = new ComponentName( PACKAGE_NAME, "ShortcutQueryTest"); private static final int QUERY_FLAG = LauncherApps.ShortcutQuery.FLAG_MATCH_ALL_KINDS; private ShortcutQueryWrapper mShortcutQuery; @Before public void setUp() throws Exception { mShortcutQuery = new ShortcutQueryWrapper(new LauncherApps.ShortcutQuery() .setChangedSince(CHANGED_SINCE) .setPackage(PACKAGE_NAME) .setShortcutIds(SHORTCUT_IDS) .setLocusIds(LOCUS_IDS) .setActivity(COMPONENT_NAME) .setQueryFlags(QUERY_FLAG)); } @Test public void testWriteAndReadFromParcel() { Parcel p = Parcel.obtain(); mShortcutQuery.writeToParcel(p, 0); p.setDataPosition(0); ShortcutQueryWrapper q = ShortcutQueryWrapper.CREATOR.createFromParcel(p); assertEquals("Changed since doesn't match!", CHANGED_SINCE, q.getChangedSince()); assertEquals("Package name doesn't match!", PACKAGE_NAME, q.getPackage()); assertEquals("Shortcut ids doesn't match", SHORTCUT_IDS, q.getShortcutIds()); assertEquals("Locus ids doesn't match", LOCUS_IDS, q.getLocusIds()); assertEquals("Component name doesn't match", COMPONENT_NAME, q.getActivity()); assertEquals("Query flag doesn't match", QUERY_FLAG, q.getQueryFlags()); p.recycle(); } } Loading
core/java/android/content/pm/ILauncherApps.aidl +5 −6 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.IOnAppsChangedListener; import android.content.pm.LauncherApps; import android.content.pm.ShortcutQueryWrapper; import android.content.pm.IPackageInstallerCallback; import android.content.pm.IShortcutChangeCallback; import android.content.pm.PackageInstaller; Loading Loading @@ -67,9 +68,8 @@ interface ILauncherApps { LauncherApps.AppUsageLimit getAppUsageLimit(String callingPackage, String packageName, in UserHandle user); ParceledListSlice getShortcuts(String callingPackage, long changedSince, String packageName, in List shortcutIds, in List<LocusId> locusIds, in ComponentName componentName, int flags, in UserHandle user); ParceledListSlice getShortcuts(String callingPackage, in ShortcutQueryWrapper query, in UserHandle user); void pinShortcuts(String callingPackage, String packageName, in List<String> shortcutIds, in UserHandle user); boolean startShortcut(String callingPackage, String packageName, String featureId, String id, Loading @@ -93,9 +93,8 @@ interface ILauncherApps { in IPackageInstallerCallback callback); ParceledListSlice getAllSessions(String callingPackage); void registerShortcutChangeCallback(String callingPackage, long changedSince, String packageName, in List shortcutIds, in List<LocusId> locusIds, in ComponentName componentName, int flags, in IShortcutChangeCallback callback); void registerShortcutChangeCallback(String callingPackage, in ShortcutQueryWrapper query, in IShortcutChangeCallback callback); void unregisterShortcutChangeCallback(String callingPackage, in IShortcutChangeCallback callback); Loading
core/java/android/content/pm/LauncherApps.java +2 −4 Original line number Diff line number Diff line Loading @@ -1046,8 +1046,7 @@ public class LauncherApps { // changed callback, but that only returns shortcuts with the "key" information, so // that won't return disabled message. return maybeUpdateDisabledMessage(mService.getShortcuts(mContext.getPackageName(), query.mChangedSince, query.mPackage, query.mShortcutIds, query.mLocusIds, query.mActivity, query.mQueryFlags, user) new ShortcutQueryWrapper(query), user) .getList()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); Loading Loading @@ -1826,8 +1825,7 @@ public class LauncherApps { mShortcutChangeCallbacks.put(callback, new Pair<>(executor, proxy)); try { mService.registerShortcutChangeCallback(mContext.getPackageName(), query.mChangedSince, query.mPackage, query.mShortcutIds, query.mLocusIds, query.mActivity, query.mQueryFlags, proxy); new ShortcutQueryWrapper(query), proxy); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading
core/java/android/content/pm/ShortcutQueryWrapper.aidl 0 → 100644 +20 −0 Original line number Diff line number Diff line /** * Copyright (c) 2020, 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 android.content.pm; parcelable ShortcutQueryWrapper;
core/java/android/content/pm/ShortcutQueryWrapper.java 0 → 100644 +190 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 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 android.content.pm; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.ComponentName; import android.content.LocusId; import android.os.Parcel; import android.os.Parcelable; import com.android.internal.util.DataClass; import java.util.ArrayList; import java.util.List; /** * @hide */ @DataClass(genParcelable = true, genToString = true) public final class ShortcutQueryWrapper extends LauncherApps.ShortcutQuery implements Parcelable { public ShortcutQueryWrapper(LauncherApps.ShortcutQuery query) { this(); mChangedSince = query.mChangedSince; mPackage = query.mPackage; mLocusIds = query.mLocusIds; mShortcutIds = query.mShortcutIds; mActivity = query.mActivity; mQueryFlags = query.mQueryFlags; } public long getChangedSince() { return mChangedSince; } @Nullable public String getPackage() { return mPackage; } @Nullable public List<LocusId> getLocusIds() { return mLocusIds; } @Nullable public List<String> getShortcutIds() { return mShortcutIds; } @Nullable public ComponentName getActivity() { return mActivity; } public int getQueryFlags() { return mQueryFlags; } // Code below generated by codegen v1.0.14. // // DO NOT MODIFY! // CHECKSTYLE:OFF Generated code // // To regenerate run: // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/content/pm/ShortcutQueryWrapper.java // // To exclude the generated code from IntelliJ auto-formatting enable (one-time): // Settings > Editor > Code Style > Formatter Control //@formatter:off @DataClass.Generated.Member public ShortcutQueryWrapper() { // onConstructed(); // You can define this method to get a callback } @Override @DataClass.Generated.Member public String toString() { // You can override field toString logic by defining methods like: // String fieldNameToString() { ... } return "ShortcutQueryWrapper { " + " }"; } @Override @DataClass.Generated.Member public void writeToParcel(@NonNull Parcel dest, int flags) { // You can override field parcelling by defining methods like: // void parcelFieldName(Parcel dest, int flags) { ... } byte flg = 0; if (mPackage != null) flg |= 0x2; if (mShortcutIds != null) flg |= 0x4; if (mLocusIds != null) flg |= 0x8; if (mActivity != null) flg |= 0x10; dest.writeByte(flg); dest.writeLong(mChangedSince); if (mPackage != null) dest.writeString(mPackage); if (mShortcutIds != null) dest.writeStringList(mShortcutIds); if (mLocusIds != null) dest.writeParcelableList(mLocusIds, flags); if (mActivity != null) dest.writeTypedObject(mActivity, flags); dest.writeInt(mQueryFlags); } @Override @DataClass.Generated.Member public int describeContents() { return 0; } /** @hide */ @SuppressWarnings({"unchecked", "RedundantCast"}) @DataClass.Generated.Member /* package-private */ ShortcutQueryWrapper(@NonNull Parcel in) { // You can override field unparcelling by defining methods like: // static FieldType unparcelFieldName(Parcel in) { ... } byte flg = in.readByte(); long changedSince = in.readLong(); String pkg = (flg & 0x2) == 0 ? null : in.readString(); List<String> shortcutIds = null; if ((flg & 0x4) != 0) { shortcutIds = new ArrayList<>(); in.readStringList(shortcutIds); } List<LocusId> locusIds = null; if ((flg & 0x8) != 0) { locusIds = new ArrayList<>(); in.readParcelableList(locusIds, LocusId.class.getClassLoader()); } ComponentName activity = (flg & 0x10) == 0 ? null : (ComponentName) in.readTypedObject(ComponentName.CREATOR); int queryFlags = in.readInt(); this.mChangedSince = changedSince; this.mPackage = pkg; this.mShortcutIds = shortcutIds; this.mLocusIds = locusIds; this.mActivity = activity; this.mQueryFlags = queryFlags; com.android.internal.util.AnnotationValidations.validate( QueryFlags.class, null, mQueryFlags); // onConstructed(); // You can define this method to get a callback } @DataClass.Generated.Member public static final @NonNull Parcelable.Creator<ShortcutQueryWrapper> CREATOR = new Parcelable.Creator<ShortcutQueryWrapper>() { @Override public ShortcutQueryWrapper[] newArray(int size) { return new ShortcutQueryWrapper[size]; } @Override public ShortcutQueryWrapper createFromParcel(@NonNull Parcel in) { return new ShortcutQueryWrapper(in); } }; @DataClass.Generated( time = 1582049937960L, codegenVersion = "1.0.14", sourceFile = "frameworks/base/core/java/android/content/pm/ShortcutQueryWrapper.java", inputSignatures = "public long getChangedSince()\npublic @android.annotation.Nullable java.lang.String getPackage()\npublic @android.annotation.Nullable java.util.List<android.content.LocusId> getLocusIds()\npublic @android.annotation.Nullable java.util.List<java.lang.String> getShortcutIds()\npublic @android.annotation.Nullable android.content.ComponentName getActivity()\npublic int getQueryFlags()\nclass ShortcutQueryWrapper extends android.content.pm.LauncherApps.ShortcutQuery implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genParcelable=true, genToString=true)") @Deprecated private void __metadata() {} //@formatter:on // End of generated code }
core/tests/coretests/src/android/content/pm/ShortcutQueryWrapperTest.java 0 → 100644 +77 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 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 android.content.pm; import static org.junit.Assert.assertEquals; import android.content.ComponentName; import android.content.LocusId; import android.os.Parcel; import android.platform.test.annotations.Presubmit; import androidx.test.runner.AndroidJUnit4; import com.google.android.collect.Lists; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import java.util.List; import java.util.concurrent.TimeUnit; @RunWith(AndroidJUnit4.class) @Presubmit public class ShortcutQueryWrapperTest { private static final long CHANGED_SINCE = TimeUnit.SECONDS.toMillis(1); private static final String PACKAGE_NAME = "com.android.test"; private static final List<String> SHORTCUT_IDS = Lists.newArrayList("s1", "s2", "s3"); private static final List<LocusId> LOCUS_IDS = Lists.newArrayList( new LocusId("id1"), new LocusId("id2"), new LocusId("id3")); private static final ComponentName COMPONENT_NAME = new ComponentName( PACKAGE_NAME, "ShortcutQueryTest"); private static final int QUERY_FLAG = LauncherApps.ShortcutQuery.FLAG_MATCH_ALL_KINDS; private ShortcutQueryWrapper mShortcutQuery; @Before public void setUp() throws Exception { mShortcutQuery = new ShortcutQueryWrapper(new LauncherApps.ShortcutQuery() .setChangedSince(CHANGED_SINCE) .setPackage(PACKAGE_NAME) .setShortcutIds(SHORTCUT_IDS) .setLocusIds(LOCUS_IDS) .setActivity(COMPONENT_NAME) .setQueryFlags(QUERY_FLAG)); } @Test public void testWriteAndReadFromParcel() { Parcel p = Parcel.obtain(); mShortcutQuery.writeToParcel(p, 0); p.setDataPosition(0); ShortcutQueryWrapper q = ShortcutQueryWrapper.CREATOR.createFromParcel(p); assertEquals("Changed since doesn't match!", CHANGED_SINCE, q.getChangedSince()); assertEquals("Package name doesn't match!", PACKAGE_NAME, q.getPackage()); assertEquals("Shortcut ids doesn't match", SHORTCUT_IDS, q.getShortcutIds()); assertEquals("Locus ids doesn't match", LOCUS_IDS, q.getLocusIds()); assertEquals("Component name doesn't match", COMPONENT_NAME, q.getActivity()); assertEquals("Query flag doesn't match", QUERY_FLAG, q.getQueryFlags()); p.recycle(); } }