Search in sources :

Example 11 with DataUsageRequest

use of android.net.DataUsageRequest in project android_frameworks_base by DirtyUnicorns.

the class NetworkStatsObserversTest method testRegister_twoRequests_twoIds.

public void testRegister_twoRequests_twoIds() throws Exception {
    DataUsageRequest inputRequest = new DataUsageRequest(DataUsageRequest.REQUEST_ID_UNSET, sTemplateWifi, THRESHOLD_BYTES);
    DataUsageRequest request1 = mStatsObservers.register(inputRequest, mMessenger, mockBinder, Process.SYSTEM_UID, NetworkStatsAccess.Level.DEVICE);
    assertTrue(request1.requestId > 0);
    assertTrue(Objects.equals(sTemplateWifi, request1.template));
    assertEquals(THRESHOLD_BYTES, request1.thresholdInBytes);
    DataUsageRequest request2 = mStatsObservers.register(inputRequest, mMessenger, mockBinder, Process.SYSTEM_UID, NetworkStatsAccess.Level.DEVICE);
    assertTrue(request2.requestId > request1.requestId);
    assertTrue(Objects.equals(sTemplateWifi, request2.template));
    assertEquals(THRESHOLD_BYTES, request2.thresholdInBytes);
}
Also used : DataUsageRequest(android.net.DataUsageRequest)

Example 12 with DataUsageRequest

use of android.net.DataUsageRequest in project android_frameworks_base by DirtyUnicorns.

the class NetworkStatsObserversTest method testUnregister_knownRequest_invalidUid_doesNotUnregister.

public void testUnregister_knownRequest_invalidUid_doesNotUnregister() throws Exception {
    DataUsageRequest inputRequest = new DataUsageRequest(DataUsageRequest.REQUEST_ID_UNSET, sTemplateImsi1, THRESHOLD_BYTES);
    DataUsageRequest request = mStatsObservers.register(inputRequest, mMessenger, mockBinder, UID_RED, NetworkStatsAccess.Level.DEVICE);
    assertTrue(request.requestId > 0);
    assertTrue(Objects.equals(sTemplateImsi1, request.template));
    assertEquals(THRESHOLD_BYTES, request.thresholdInBytes);
    Mockito.verify(mockBinder).linkToDeath(any(IBinder.DeathRecipient.class), anyInt());
    mStatsObservers.unregister(request, UID_BLUE);
    waitForObserverToIdle();
    Mockito.verifyZeroInteractions(mockBinder);
}
Also used : DataUsageRequest(android.net.DataUsageRequest)

Example 13 with DataUsageRequest

use of android.net.DataUsageRequest in project android_frameworks_base by AOSPA.

the class NetworkStatsManager method registerUsageCallback.

/**
     * Registers to receive notifications about data usage on specified networks.
     *
     * <p>The callbacks will continue to be called as long as the process is live or
     * {@link #unregisterUsageCallback} is called.
     *
     * @param networkType Type of network to monitor. Either
                  {@link ConnectivityManager#TYPE_MOBILE} or {@link ConnectivityManager#TYPE_WIFI}.
     * @param subscriberId If applicable, the subscriber id of the network interface.
     * @param thresholdBytes Threshold in bytes to be notified on.
     * @param callback The {@link UsageCallback} that the system will call when data usage
     *            has exceeded the specified threshold.
     * @param handler to dispatch callback events through, otherwise if {@code null} it uses
     *            the calling thread.
     */
public void registerUsageCallback(int networkType, String subscriberId, long thresholdBytes, UsageCallback callback, @Nullable Handler handler) {
    checkNotNull(callback, "UsageCallback cannot be null");
    final Looper looper;
    if (handler == null) {
        looper = Looper.myLooper();
    } else {
        looper = handler.getLooper();
    }
    if (DBG) {
        Log.d(TAG, "registerUsageCallback called with: {" + " networkType=" + networkType + " subscriberId=" + subscriberId + " thresholdBytes=" + thresholdBytes + " }");
    }
    NetworkTemplate template = createTemplate(networkType, subscriberId);
    DataUsageRequest request = new DataUsageRequest(DataUsageRequest.REQUEST_ID_UNSET, template, thresholdBytes);
    try {
        CallbackHandler callbackHandler = new CallbackHandler(looper, networkType, subscriberId, callback);
        callback.request = mService.registerUsageCallback(mContext.getOpPackageName(), request, new Messenger(callbackHandler), new Binder());
        if (DBG)
            Log.d(TAG, "registerUsageCallback returned " + callback.request);
        if (callback.request == null) {
            Log.e(TAG, "Request from callback is null; should not happen");
        }
    } catch (RemoteException e) {
        if (DBG)
            Log.d(TAG, "Remote exception when registering callback");
        throw e.rethrowFromSystemServer();
    }
}
Also used : Looper(android.os.Looper) DataUsageRequest(android.net.DataUsageRequest) Binder(android.os.Binder) NetworkTemplate(android.net.NetworkTemplate) Messenger(android.os.Messenger) RemoteException(android.os.RemoteException)

Example 14 with DataUsageRequest

use of android.net.DataUsageRequest in project android_frameworks_base by AOSPA.

the class NetworkStatsObservers method register.

/**
     * Creates a wrapper that contains the caller context and a normalized request.
     * The request should be returned to the caller app, and the wrapper should be sent to this
     * object through #addObserver by the service handler.
     *
     * <p>It will register the observer asynchronously, so it is safe to call from any thread.
     *
     * @return the normalized request wrapped within {@link RequestInfo}.
     */
public DataUsageRequest register(DataUsageRequest inputRequest, Messenger messenger, IBinder binder, int callingUid, @NetworkStatsAccess.Level int accessLevel) {
    DataUsageRequest request = buildRequest(inputRequest);
    RequestInfo requestInfo = buildRequestInfo(request, messenger, binder, callingUid, accessLevel);
    if (LOGV)
        Slog.v(TAG, "Registering observer for " + request);
    getHandler().sendMessage(mHandler.obtainMessage(MSG_REGISTER, requestInfo));
    return request;
}
Also used : DataUsageRequest(android.net.DataUsageRequest)

Example 15 with DataUsageRequest

use of android.net.DataUsageRequest in project android_frameworks_base by AOSPA.

the class NetworkStatsService method registerUsageCallback.

@Override
public DataUsageRequest registerUsageCallback(String callingPackage, DataUsageRequest request, Messenger messenger, IBinder binder) {
    checkNotNull(callingPackage, "calling package is null");
    checkNotNull(request, "DataUsageRequest is null");
    checkNotNull(request.template, "NetworkTemplate is null");
    checkNotNull(messenger, "messenger is null");
    checkNotNull(binder, "binder is null");
    int callingUid = Binder.getCallingUid();
    @NetworkStatsAccess.Level int accessLevel = checkAccessLevel(callingPackage);
    DataUsageRequest normalizedRequest;
    final long token = Binder.clearCallingIdentity();
    try {
        normalizedRequest = mStatsObservers.register(request, messenger, binder, callingUid, accessLevel);
    } finally {
        Binder.restoreCallingIdentity(token);
    }
    // Create baseline stats
    mHandler.sendMessage(mHandler.obtainMessage(MSG_PERFORM_POLL, FLAG_PERSIST_ALL));
    return normalizedRequest;
}
Also used : DataUsageRequest(android.net.DataUsageRequest)

Aggregations

DataUsageRequest (android.net.DataUsageRequest)75 NetworkStats (android.net.NetworkStats)32 NetworkIdentity (android.net.NetworkIdentity)28 Messenger (android.os.Messenger)9 NetworkTemplate (android.net.NetworkTemplate)5 Binder (android.os.Binder)5 Looper (android.os.Looper)5 RemoteException (android.os.RemoteException)5 ConditionVariable (android.os.ConditionVariable)4 IBinder (android.os.IBinder)3 Test (org.junit.Test)2