Merge "Consider NetworkOffer is unneeded if it cannot satisfy the request" am: b028fc7cf1
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1731452 Change-Id: I9c7bb2e88ad6b6929bf7db3b7433b772c4f5d15a
This commit is contained in:
@@ -8352,13 +8352,13 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
// Second phase : deal with the active request (if any)
|
// Second phase : deal with the active request (if any)
|
||||||
if (null != activeRequest && activeRequest.isRequest()) {
|
if (null != activeRequest && activeRequest.isRequest()) {
|
||||||
final boolean oldNeeded = offer.neededFor(activeRequest);
|
final boolean oldNeeded = offer.neededFor(activeRequest);
|
||||||
// An offer is needed if it is currently served by this provider or if this offer
|
// If an offer can satisfy the request, it is considered needed if it is currently
|
||||||
// can beat the current satisfier.
|
// served by this provider or if this offer can beat the current satisfier.
|
||||||
final boolean currentlyServing = satisfier != null
|
final boolean currentlyServing = satisfier != null
|
||||||
&& satisfier.factorySerialNumber == offer.providerId;
|
&& satisfier.factorySerialNumber == offer.providerId
|
||||||
final boolean newNeeded = (currentlyServing
|
&& activeRequest.canBeSatisfiedBy(offer.caps);
|
||||||
|| (activeRequest.canBeSatisfiedBy(offer.caps)
|
final boolean newNeeded = currentlyServing
|
||||||
&& networkRanker.mightBeat(activeRequest, satisfier, offer)));
|
|| networkRanker.mightBeat(activeRequest, satisfier, offer);
|
||||||
if (newNeeded != oldNeeded) {
|
if (newNeeded != oldNeeded) {
|
||||||
if (newNeeded) {
|
if (newNeeded) {
|
||||||
offer.onNetworkNeeded(activeRequest);
|
offer.onNetworkNeeded(activeRequest);
|
||||||
|
|||||||
@@ -143,6 +143,6 @@ public class NetworkOffer implements NetworkRanker.Scoreable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "NetworkOffer [ Score " + score + " ]";
|
return "NetworkOffer [ Score " + score + " Caps " + caps + "]";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -315,9 +315,7 @@ class NetworkProviderTest {
|
|||||||
LinkProperties(), scoreWeaker, config, provider) {}
|
LinkProperties(), scoreWeaker, config, provider) {}
|
||||||
agent.register()
|
agent.register()
|
||||||
agent.markConnected()
|
agent.markConnected()
|
||||||
// TODO: The request is satisying by offer 2 instead of offer 1, thus it should not be
|
offerCallback1.assertNoCallback() // Still unneeded.
|
||||||
// considered as needed.
|
|
||||||
offerCallback1.expectOnNetworkNeeded(ncFilter2)
|
|
||||||
offerCallback2.assertNoCallback() // Still needed.
|
offerCallback2.assertNoCallback() // Still needed.
|
||||||
offerCallback3.assertNoCallback() // Still needed.
|
offerCallback3.assertNoCallback() // Still needed.
|
||||||
offerCallback4.expectOnNetworkUnneeded(ncFilter4)
|
offerCallback4.expectOnNetworkUnneeded(ncFilter4)
|
||||||
@@ -326,7 +324,7 @@ class NetworkProviderTest {
|
|||||||
// if a request is currently satisfied by the network provided by the same provider.
|
// if a request is currently satisfied by the network provided by the same provider.
|
||||||
// TODO: Consider offers with weaker score are unneeded.
|
// TODO: Consider offers with weaker score are unneeded.
|
||||||
agent.sendNetworkScore(scoreStronger)
|
agent.sendNetworkScore(scoreStronger)
|
||||||
offerCallback1.assertNoCallback()
|
offerCallback1.assertNoCallback() // Still unneeded.
|
||||||
offerCallback2.assertNoCallback() // Still needed.
|
offerCallback2.assertNoCallback() // Still needed.
|
||||||
offerCallback3.assertNoCallback() // Still needed.
|
offerCallback3.assertNoCallback() // Still needed.
|
||||||
offerCallback4.assertNoCallback() // Still unneeded.
|
offerCallback4.assertNoCallback() // Still unneeded.
|
||||||
@@ -334,7 +332,7 @@ class NetworkProviderTest {
|
|||||||
// Verify that offer callbacks cannot receive any event if offer is unregistered.
|
// Verify that offer callbacks cannot receive any event if offer is unregistered.
|
||||||
provider2.unregisterNetworkOffer(offerCallback4)
|
provider2.unregisterNetworkOffer(offerCallback4)
|
||||||
agent.unregister()
|
agent.unregister()
|
||||||
offerCallback1.assertNoCallback() // Still needed.
|
offerCallback1.assertNoCallback() // Still unneeded.
|
||||||
offerCallback2.assertNoCallback() // Still needed.
|
offerCallback2.assertNoCallback() // Still needed.
|
||||||
offerCallback3.assertNoCallback() // Still needed.
|
offerCallback3.assertNoCallback() // Still needed.
|
||||||
// Since the agent is unregistered, and the offer has chance to satisfy the request,
|
// Since the agent is unregistered, and the offer has chance to satisfy the request,
|
||||||
@@ -344,7 +342,7 @@ class NetworkProviderTest {
|
|||||||
// Verify that offer callbacks cannot receive any event if provider is unregistered.
|
// Verify that offer callbacks cannot receive any event if provider is unregistered.
|
||||||
mCm.unregisterNetworkProvider(provider)
|
mCm.unregisterNetworkProvider(provider)
|
||||||
mCm.unregisterNetworkCallback(cb2)
|
mCm.unregisterNetworkCallback(cb2)
|
||||||
offerCallback1.assertNoCallback() // Should be unneeded if not unregistered.
|
offerCallback1.assertNoCallback() // No callback since it is still unneeded.
|
||||||
offerCallback2.assertNoCallback() // Should be unneeded if not unregistered.
|
offerCallback2.assertNoCallback() // Should be unneeded if not unregistered.
|
||||||
offerCallback3.assertNoCallback() // Should be unneeded if not unregistered.
|
offerCallback3.assertNoCallback() // Should be unneeded if not unregistered.
|
||||||
offerCallback4.assertNoCallback() // Already unregistered.
|
offerCallback4.assertNoCallback() // Already unregistered.
|
||||||
|
|||||||
Reference in New Issue
Block a user