Search in sources :

Example 41 with DataUsageRequest

use of android.net.DataUsageRequest in project platform_frameworks_base by android.

the class NetworkStatsServiceTest method testUnregisterUsageCallback_unknown_noop.

@Test
public void testUnregisterUsageCallback_unknown_noop() throws Exception {
    String callingPackage = "the.calling.package";
    // 10 MB
    long thresholdInBytes = 10 * 1024 * 1024;
    DataUsageRequest unknownRequest = new DataUsageRequest(2, /* requestId */
    sTemplateImsi1, thresholdInBytes);
    mService.unregisterUsageRequest(unknownRequest);
}
Also used : DataUsageRequest(android.net.DataUsageRequest) Test(org.junit.Test)

Example 42 with DataUsageRequest

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

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)

Example 43 with DataUsageRequest

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

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 44 with DataUsageRequest

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

the class NetworkStatsObserversTest method testUpdateStats_userAccess_usageSameUser_notifies.

public void testUpdateStats_userAccess_usageSameUser_notifies() throws Exception {
    DataUsageRequest inputRequest = new DataUsageRequest(DataUsageRequest.REQUEST_ID_UNSET, sTemplateImsi1, THRESHOLD_BYTES);
    DataUsageRequest request = mStatsObservers.register(inputRequest, mMessenger, mockBinder, UID_BLUE, NetworkStatsAccess.Level.USER);
    assertTrue(request.requestId > 0);
    assertTrue(Objects.equals(sTemplateImsi1, request.template));
    assertEquals(THRESHOLD_BYTES, request.thresholdInBytes);
    NetworkIdentitySet identSet = new NetworkIdentitySet();
    identSet.add(new NetworkIdentity(TYPE_MOBILE, TelephonyManager.NETWORK_TYPE_UNKNOWN, IMSI_1, null, /* networkId */
    false, /* roaming */
    true));
    mActiveUidIfaces.put(TEST_IFACE, identSet);
    // Baseline
    NetworkStats xtSnapshot = null;
    NetworkStats uidSnapshot = new NetworkStats(TEST_START, 2).addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, ROAMING_NO, BASE_BYTES, 2L, BASE_BYTES, 2L, 0L);
    mStatsObservers.updateStats(xtSnapshot, uidSnapshot, mActiveIfaces, mActiveUidIfaces, VPN_INFO, TEST_START);
    // Delta
    uidSnapshot = new NetworkStats(TEST_START + 2 * MINUTE_IN_MILLIS, 2).addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, ROAMING_NO, BASE_BYTES + THRESHOLD_BYTES, 2L, BASE_BYTES + THRESHOLD_BYTES, 2L, 0L);
    mStatsObservers.updateStats(xtSnapshot, uidSnapshot, mActiveIfaces, mActiveUidIfaces, VPN_INFO, TEST_START);
    waitForObserverToIdle();
    assertTrue(mCv.block(WAIT_TIMEOUT));
    assertEquals(NetworkStatsManager.CALLBACK_LIMIT_REACHED, mHandler.mLastMessageType);
}
Also used : DataUsageRequest(android.net.DataUsageRequest) NetworkIdentity(android.net.NetworkIdentity) NetworkStats(android.net.NetworkStats)

Example 45 with DataUsageRequest

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

the class NetworkStatsObserversTest method testUpdateStats_userAccess_usageAnotherUser_doesNotNotify.

public void testUpdateStats_userAccess_usageAnotherUser_doesNotNotify() throws Exception {
    DataUsageRequest inputRequest = new DataUsageRequest(DataUsageRequest.REQUEST_ID_UNSET, sTemplateImsi1, THRESHOLD_BYTES);
    DataUsageRequest request = mStatsObservers.register(inputRequest, mMessenger, mockBinder, UID_RED, NetworkStatsAccess.Level.USER);
    assertTrue(request.requestId > 0);
    assertTrue(Objects.equals(sTemplateImsi1, request.template));
    assertEquals(THRESHOLD_BYTES, request.thresholdInBytes);
    NetworkIdentitySet identSet = new NetworkIdentitySet();
    identSet.add(new NetworkIdentity(TYPE_MOBILE, TelephonyManager.NETWORK_TYPE_UNKNOWN, IMSI_1, null, /* networkId */
    false, /* roaming */
    true));
    mActiveUidIfaces.put(TEST_IFACE, identSet);
    // Baseline
    NetworkStats xtSnapshot = null;
    NetworkStats uidSnapshot = new NetworkStats(TEST_START, 2).addValues(TEST_IFACE, UID_ANOTHER_USER, SET_DEFAULT, TAG_NONE, ROAMING_NO, BASE_BYTES, 2L, BASE_BYTES, 2L, 0L);
    mStatsObservers.updateStats(xtSnapshot, uidSnapshot, mActiveIfaces, mActiveUidIfaces, VPN_INFO, TEST_START);
    // Delta
    uidSnapshot = new NetworkStats(TEST_START + 2 * MINUTE_IN_MILLIS, 2).addValues(TEST_IFACE, UID_ANOTHER_USER, SET_DEFAULT, TAG_NONE, ROAMING_NO, BASE_BYTES + THRESHOLD_BYTES, 2L, BASE_BYTES + THRESHOLD_BYTES, 2L, 0L);
    mStatsObservers.updateStats(xtSnapshot, uidSnapshot, mActiveIfaces, mActiveUidIfaces, VPN_INFO, TEST_START);
    waitForObserverToIdle();
    assertTrue(mCv.block(WAIT_TIMEOUT));
    assertEquals(INVALID_TYPE, mHandler.mLastMessageType);
}
Also used : DataUsageRequest(android.net.DataUsageRequest) NetworkIdentity(android.net.NetworkIdentity) NetworkStats(android.net.NetworkStats)

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