summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/AppWidgetService.java
diff options
context:
space:
mode:
Diffstat (limited to 'services/java/com/android/server/AppWidgetService.java')
-rw-r--r--services/java/com/android/server/AppWidgetService.java42
1 files changed, 37 insertions, 5 deletions
diff --git a/services/java/com/android/server/AppWidgetService.java b/services/java/com/android/server/AppWidgetService.java
index b94183c..06aeb29 100644
--- a/services/java/com/android/server/AppWidgetService.java
+++ b/services/java/com/android/server/AppWidgetService.java
@@ -196,9 +196,14 @@ class AppWidgetService extends IAppWidgetService.Stub
}
@Override
- public void bindRemoteViewsService(int appWidgetId, Intent intent, IBinder connection)
- throws RemoteException {
- getImplForUser(getCallingOrCurrentUserId()).bindRemoteViewsService(
+ public void bindRemoteViewsService(int appWidgetId, Intent intent, IBinder connection,
+ int userId) throws RemoteException {
+ if (Binder.getCallingPid() != android.os.Process.myPid()
+ && userId != UserHandle.getCallingUserId()) {
+ throw new SecurityException("Call from non-system process. Calling uid = "
+ + Binder.getCallingUid());
+ }
+ getImplForUser(userId).bindRemoteViewsService(
appWidgetId, intent, connection);
}
@@ -209,6 +214,17 @@ class AppWidgetService extends IAppWidgetService.Stub
packageName, hostId, updatedViews);
}
+ @Override
+ public int[] startListeningAsUser(IAppWidgetHost host, String packageName, int hostId,
+ List<RemoteViews> updatedViews, int userId) throws RemoteException {
+ if (Binder.getCallingPid() != android.os.Process.myPid()
+ && userId != UserHandle.getCallingUserId()) {
+ throw new SecurityException("Call from non-system process. Calling uid = "
+ + Binder.getCallingUid());
+ }
+ return getImplForUser(userId).startListening(host, packageName, hostId, updatedViews);
+ }
+
public void onUserRemoved(int userId) {
if (userId < 1) return;
synchronized (mAppWidgetServices) {
@@ -306,8 +322,24 @@ class AppWidgetService extends IAppWidgetService.Stub
}
@Override
- public void unbindRemoteViewsService(int appWidgetId, Intent intent) throws RemoteException {
- getImplForUser(getCallingOrCurrentUserId()).unbindRemoteViewsService(
+ public void stopListeningAsUser(int hostId, int userId) throws RemoteException {
+ if (Binder.getCallingPid() != android.os.Process.myPid()
+ && userId != UserHandle.getCallingUserId()) {
+ throw new SecurityException("Call from non-system process. Calling uid = "
+ + Binder.getCallingUid());
+ }
+ getImplForUser(userId).stopListening(hostId);
+ }
+
+ @Override
+ public void unbindRemoteViewsService(int appWidgetId, Intent intent, int userId)
+ throws RemoteException {
+ if (Binder.getCallingPid() != android.os.Process.myPid()
+ && userId != UserHandle.getCallingUserId()) {
+ throw new SecurityException("Call from non-system process. Calling uid = "
+ + Binder.getCallingUid());
+ }
+ getImplForUser(userId).unbindRemoteViewsService(
appWidgetId, intent);
}