Allow owners of ACCESS_SHORTCUTS pin shortcuts on behalf of other apps
Test: atest com.android.server.pm.ShortcutManagerTest1 \
com.android.server.pm.ShortcutManagerTest2 \
com.android.server.pm.ShortcutManagerTest3 \
com.android.server.pm.ShortcutManagerTest4 \
com.android.server.pm.ShortcutManagerTest5 \
com.android.server.pm.ShortcutManagerTest6 \
com.android.server.pm.ShortcutManagerTest7 \
com.android.server.pm.ShortcutManagerTest8 \
com.android.server.pm.ShortcutManagerTest9 \
com.android.server.pm.ShortcutManagerTest10
Bug: 148560664
Change-Id: I77f13d590dada20169ccf53a6fc4684ac25c77ea
This commit is contained in:
@@ -1977,10 +1977,15 @@ public class ShortcutService extends IShortcutService.Stub {
|
||||
* After validating the caller, it passes the request to {@link #mShortcutRequestPinProcessor}.
|
||||
* Either {@param shortcut} or {@param appWidget} should be non-null.
|
||||
*/
|
||||
private boolean requestPinItem(String packageName, int userId, ShortcutInfo shortcut,
|
||||
private boolean requestPinItem(String callingPackage, int userId, ShortcutInfo shortcut,
|
||||
AppWidgetProviderInfo appWidget, Bundle extras, IntentSender resultIntent) {
|
||||
verifyCaller(packageName, userId);
|
||||
verifyShortcutInfoPackage(packageName, shortcut);
|
||||
verifyCaller(callingPackage, userId);
|
||||
if (shortcut == null || !injectHasAccessShortcutsPermission(
|
||||
injectBinderCallingPid(), injectBinderCallingUid())) {
|
||||
// Verify if caller is the shortcut owner, only if caller doesn't have ACCESS_SHORTCUTS.
|
||||
verifyShortcutInfoPackage(callingPackage, shortcut);
|
||||
}
|
||||
final String shortcutPackage = shortcut.getPackage();
|
||||
|
||||
final boolean ret;
|
||||
synchronized (mLock) {
|
||||
@@ -1995,13 +2000,13 @@ public class ShortcutService extends IShortcutService.Stub {
|
||||
// and then proceed the rest of the process.
|
||||
if (shortcut != null) {
|
||||
final ShortcutPackage ps = getPackageShortcutsForPublisherLocked(
|
||||
packageName, userId);
|
||||
shortcutPackage, userId);
|
||||
final String id = shortcut.getId();
|
||||
if (ps.isShortcutExistsAndInvisibleToPublisher(id)) {
|
||||
|
||||
ps.updateInvisibleShortcutForPinRequestWith(shortcut);
|
||||
|
||||
packageShortcutsChanged(packageName, userId);
|
||||
packageShortcutsChanged(shortcutPackage, userId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user