Search in sources :

Example 1 with IAppWidgetHost

use of com.android.internal.appwidget.IAppWidgetHost in project android_frameworks_base by ParanoidAndroid.

the class AppWidgetServiceImpl method startListening.

public int[] startListening(IAppWidgetHost callbacks, String packageName, int hostId, List<RemoteViews> updatedViews) {
    if (!mHasFeature) {
        return new int[0];
    }
    int callingUid = enforceCallingUid(packageName);
    synchronized (mAppWidgetIds) {
        ensureStateLoadedLocked();
        Host host = lookupOrAddHostLocked(callingUid, packageName, hostId);
        host.callbacks = callbacks;
        updatedViews.clear();
        ArrayList<AppWidgetId> instances = host.instances;
        int N = instances.size();
        int[] updatedIds = new int[N];
        for (int i = 0; i < N; i++) {
            AppWidgetId id = instances.get(i);
            updatedIds[i] = id.appWidgetId;
            updatedViews.add(cloneIfLocalBinder(id.views));
        }
        return updatedIds;
    }
}
Also used : IAppWidgetHost(com.android.internal.appwidget.IAppWidgetHost) Point(android.graphics.Point)

Example 2 with IAppWidgetHost

use of com.android.internal.appwidget.IAppWidgetHost in project android_frameworks_base by ResurrectionRemix.

the class AppWidgetServiceImpl method startListening.

@Override
public ParceledListSlice<PendingHostUpdate> startListening(IAppWidgetHost callbacks, String callingPackage, int hostId, int[] appWidgetIds) {
    final int userId = UserHandle.getCallingUserId();
    if (DEBUG) {
        Slog.i(TAG, "startListening() " + userId);
    }
    // Make sure the package runs under the caller uid.
    mSecurityPolicy.enforceCallFromPackage(callingPackage);
    synchronized (mLock) {
        ensureGroupStateLoadedLocked(userId);
        // NOTE: The lookup is enforcing security across users by making
        // sure the caller can only access hosts it owns.
        HostId id = new HostId(Binder.getCallingUid(), hostId, callingPackage);
        Host host = lookupOrAddHostLocked(id);
        host.callbacks = callbacks;
        int N = appWidgetIds.length;
        ArrayList<PendingHostUpdate> outUpdates = new ArrayList<>(N);
        LongSparseArray<PendingHostUpdate> updatesMap = new LongSparseArray<>();
        for (int i = 0; i < N; i++) {
            if (host.getPendingUpdatesForId(appWidgetIds[i], updatesMap)) {
                // We key the updates based on request id, so that the values are sorted in the
                // order they were received.
                int M = updatesMap.size();
                for (int j = 0; j < M; j++) {
                    outUpdates.add(updatesMap.valueAt(j));
                }
            }
        }
        return new ParceledListSlice<>(outUpdates);
    }
}
Also used : LongSparseArray(android.util.LongSparseArray) ArrayList(java.util.ArrayList) IAppWidgetHost(com.android.internal.appwidget.IAppWidgetHost) Point(android.graphics.Point) PendingHostUpdate(android.appwidget.PendingHostUpdate) ParceledListSlice(android.content.pm.ParceledListSlice)

Example 3 with IAppWidgetHost

use of com.android.internal.appwidget.IAppWidgetHost in project android_frameworks_base by crdroidandroid.

the class AppWidgetServiceImpl method startListening.

@Override
public ParceledListSlice<PendingHostUpdate> startListening(IAppWidgetHost callbacks, String callingPackage, int hostId, int[] appWidgetIds) {
    final int userId = UserHandle.getCallingUserId();
    if (DEBUG) {
        Slog.i(TAG, "startListening() " + userId);
    }
    // Make sure the package runs under the caller uid.
    mSecurityPolicy.enforceCallFromPackage(callingPackage);
    synchronized (mLock) {
        ensureGroupStateLoadedLocked(userId);
        // NOTE: The lookup is enforcing security across users by making
        // sure the caller can only access hosts it owns.
        HostId id = new HostId(Binder.getCallingUid(), hostId, callingPackage);
        Host host = lookupOrAddHostLocked(id);
        host.callbacks = callbacks;
        int N = appWidgetIds.length;
        ArrayList<PendingHostUpdate> outUpdates = new ArrayList<>(N);
        LongSparseArray<PendingHostUpdate> updatesMap = new LongSparseArray<>();
        for (int i = 0; i < N; i++) {
            if (host.getPendingUpdatesForId(appWidgetIds[i], updatesMap)) {
                // We key the updates based on request id, so that the values are sorted in the
                // order they were received.
                int M = updatesMap.size();
                for (int j = 0; j < M; j++) {
                    outUpdates.add(updatesMap.valueAt(j));
                }
            }
        }
        return new ParceledListSlice<>(outUpdates);
    }
}
Also used : LongSparseArray(android.util.LongSparseArray) ArrayList(java.util.ArrayList) IAppWidgetHost(com.android.internal.appwidget.IAppWidgetHost) Point(android.graphics.Point) PendingHostUpdate(android.appwidget.PendingHostUpdate) ParceledListSlice(android.content.pm.ParceledListSlice)

Example 4 with IAppWidgetHost

use of com.android.internal.appwidget.IAppWidgetHost in project android_frameworks_base by AOSPA.

the class AppWidgetServiceImpl method startListening.

@Override
public ParceledListSlice<PendingHostUpdate> startListening(IAppWidgetHost callbacks, String callingPackage, int hostId, int[] appWidgetIds) {
    final int userId = UserHandle.getCallingUserId();
    if (DEBUG) {
        Slog.i(TAG, "startListening() " + userId);
    }
    // Make sure the package runs under the caller uid.
    mSecurityPolicy.enforceCallFromPackage(callingPackage);
    synchronized (mLock) {
        ensureGroupStateLoadedLocked(userId);
        // NOTE: The lookup is enforcing security across users by making
        // sure the caller can only access hosts it owns.
        HostId id = new HostId(Binder.getCallingUid(), hostId, callingPackage);
        Host host = lookupOrAddHostLocked(id);
        host.callbacks = callbacks;
        int N = appWidgetIds.length;
        ArrayList<PendingHostUpdate> outUpdates = new ArrayList<>(N);
        LongSparseArray<PendingHostUpdate> updatesMap = new LongSparseArray<>();
        for (int i = 0; i < N; i++) {
            if (host.getPendingUpdatesForId(appWidgetIds[i], updatesMap)) {
                // We key the updates based on request id, so that the values are sorted in the
                // order they were received.
                int M = updatesMap.size();
                for (int j = 0; j < M; j++) {
                    outUpdates.add(updatesMap.valueAt(j));
                }
            }
        }
        return new ParceledListSlice<>(outUpdates);
    }
}
Also used : LongSparseArray(android.util.LongSparseArray) ArrayList(java.util.ArrayList) IAppWidgetHost(com.android.internal.appwidget.IAppWidgetHost) Point(android.graphics.Point) PendingHostUpdate(android.appwidget.PendingHostUpdate) ParceledListSlice(android.content.pm.ParceledListSlice)

Example 5 with IAppWidgetHost

use of com.android.internal.appwidget.IAppWidgetHost in project platform_frameworks_base by android.

the class AppWidgetServiceImpl method startListening.

@Override
public ParceledListSlice<PendingHostUpdate> startListening(IAppWidgetHost callbacks, String callingPackage, int hostId, int[] appWidgetIds) {
    final int userId = UserHandle.getCallingUserId();
    if (DEBUG) {
        Slog.i(TAG, "startListening() " + userId);
    }
    // Make sure the package runs under the caller uid.
    mSecurityPolicy.enforceCallFromPackage(callingPackage);
    synchronized (mLock) {
        ensureGroupStateLoadedLocked(userId);
        // NOTE: The lookup is enforcing security across users by making
        // sure the caller can only access hosts it owns.
        HostId id = new HostId(Binder.getCallingUid(), hostId, callingPackage);
        Host host = lookupOrAddHostLocked(id);
        host.callbacks = callbacks;
        int N = appWidgetIds.length;
        ArrayList<PendingHostUpdate> outUpdates = new ArrayList<>(N);
        LongSparseArray<PendingHostUpdate> updatesMap = new LongSparseArray<>();
        for (int i = 0; i < N; i++) {
            if (host.getPendingUpdatesForId(appWidgetIds[i], updatesMap)) {
                // We key the updates based on time, so that the values are sorted by time.
                int M = updatesMap.size();
                for (int j = 0; j < M; j++) {
                    outUpdates.add(updatesMap.valueAt(j));
                }
            }
        }
        return new ParceledListSlice<>(outUpdates);
    }
}
Also used : LongSparseArray(android.util.LongSparseArray) ArrayList(java.util.ArrayList) IAppWidgetHost(com.android.internal.appwidget.IAppWidgetHost) Point(android.graphics.Point) PendingHostUpdate(android.appwidget.PendingHostUpdate) ParceledListSlice(android.content.pm.ParceledListSlice)

Aggregations

Point (android.graphics.Point)6 IAppWidgetHost (com.android.internal.appwidget.IAppWidgetHost)6 PendingHostUpdate (android.appwidget.PendingHostUpdate)5 ParceledListSlice (android.content.pm.ParceledListSlice)5 LongSparseArray (android.util.LongSparseArray)5 ArrayList (java.util.ArrayList)5