use of android.net.ScoredNetwork in project platform_frameworks_base by android.
the class WifiNetworkScoreCacheTest method getMeteredHintShouldReturnTrue.
@Test
public void getMeteredHintShouldReturnTrue() {
ScoredNetwork network = new ScoredNetwork(new NetworkKey(VALID_KEY), mockRssiCurve, true);
mScoreCache.updateScores(ImmutableList.of(network));
assertTrue(mScoreCache.getMeteredHint(VALID_SCAN_RESULT));
}
use of android.net.ScoredNetwork in project android_frameworks_base by crdroidandroid.
the class NetworkScoreService method updateScores.
@Override
public boolean updateScores(ScoredNetwork[] networks) {
if (!NetworkScorerAppManager.isCallerActiveScorer(mContext, getCallingUid())) {
throw new SecurityException("Caller with UID " + getCallingUid() + " is not the active scorer.");
}
// Separate networks by type.
Map<Integer, List<ScoredNetwork>> networksByType = new HashMap<>();
for (ScoredNetwork network : networks) {
List<ScoredNetwork> networkList = networksByType.get(network.networkKey.type);
if (networkList == null) {
networkList = new ArrayList<>();
networksByType.put(network.networkKey.type, networkList);
}
networkList.add(network);
}
// Pass the scores of each type down to the appropriate network scorer.
for (Map.Entry<Integer, List<ScoredNetwork>> entry : networksByType.entrySet()) {
INetworkScoreCache scoreCache = mScoreCaches.get(entry.getKey());
if (scoreCache != null) {
try {
scoreCache.updateScores(entry.getValue());
} catch (RemoteException e) {
if (Log.isLoggable(TAG, Log.VERBOSE)) {
Log.v(TAG, "Unable to update scores of type " + entry.getKey(), e);
}
}
} else if (Log.isLoggable(TAG, Log.VERBOSE)) {
Log.v(TAG, "No scorer registered for type " + entry.getKey() + ", discarding");
}
}
return true;
}
use of android.net.ScoredNetwork in project platform_frameworks_base by android.
the class WifiNetworkScoreCacheTest method updateScoresShouldAddNewNetwork.
@Test
public void updateScoresShouldAddNewNetwork() {
WifiKey key2 = new WifiKey("\"ssid2\"", BSSID);
ScoredNetwork network2 = buildScoredNetwork(key2, mockRssiCurve);
ScanResult result2 = buildScanResult("ssid2", BSSID);
mScoreCache.updateScores(ImmutableList.of(network2));
assertTrue(mScoreCache.isScoredNetwork(VALID_SCAN_RESULT));
assertTrue(mScoreCache.isScoredNetwork(result2));
}
use of android.net.ScoredNetwork in project platform_frameworks_base by android.
the class WifiNetworkScoreCacheTest method hasScoreCurveShouldReturnFalseWhenScoredNetworkHasNoCurve.
@Test
public void hasScoreCurveShouldReturnFalseWhenScoredNetworkHasNoCurve() {
ScoredNetwork noCurve = buildScoredNetwork(VALID_KEY, null);
mScoreCache.updateScores(ImmutableList.of(noCurve));
assertFalse(mScoreCache.hasScoreCurve(VALID_SCAN_RESULT));
}
use of android.net.ScoredNetwork in project platform_frameworks_base by android.
the class NetworkScoreService method updateScores.
@Override
public boolean updateScores(ScoredNetwork[] networks) {
if (!isCallerActiveScorer(getCallingUid())) {
throw new SecurityException("Caller with UID " + getCallingUid() + " is not the active scorer.");
}
final long token = Binder.clearCallingIdentity();
try {
// Separate networks by type.
Map<Integer, List<ScoredNetwork>> networksByType = new ArrayMap<>();
for (ScoredNetwork network : networks) {
List<ScoredNetwork> networkList = networksByType.get(network.networkKey.type);
if (networkList == null) {
networkList = new ArrayList<>();
networksByType.put(network.networkKey.type, networkList);
}
networkList.add(network);
}
// Pass the scores of each type down to the appropriate network scorer.
for (final Map.Entry<Integer, List<ScoredNetwork>> entry : networksByType.entrySet()) {
final RemoteCallbackList<INetworkScoreCache> callbackList;
final boolean isEmpty;
synchronized (mScoreCaches) {
callbackList = mScoreCaches.get(entry.getKey());
isEmpty = callbackList == null || callbackList.getRegisteredCallbackCount() == 0;
}
if (isEmpty) {
if (Log.isLoggable(TAG, Log.VERBOSE)) {
Log.v(TAG, "No scorer registered for type " + entry.getKey() + ", discarding");
}
continue;
}
sendCallback(new Consumer<INetworkScoreCache>() {
@Override
public void accept(INetworkScoreCache networkScoreCache) {
try {
networkScoreCache.updateScores(entry.getValue());
} catch (RemoteException e) {
if (Log.isLoggable(TAG, Log.VERBOSE)) {
Log.v(TAG, "Unable to update scores of type " + entry.getKey(), e);
}
}
}
}, Collections.singleton(callbackList));
}
return true;
} finally {
Binder.restoreCallingIdentity(token);
}
}
Aggregations