summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuang Luong <qal@google.com>2020-01-24 15:42:03 -0800
committerQuang Luong <qal@google.com>2020-01-29 16:44:41 -0800
commitdbe40e52e6503cf71bdb11652419a3ecfd0e1593 (patch)
tree1f2f14793518558675431aacd69f7797d3a71fd2
parentc2e08a25fc459ac7eefe3214062d68e29602778b (diff)
[WifiTrackerLib] Add Passpoint metered choice and disconnect
Implement metered choice handling and disconnect API for PasspointWifiEntry. Bug: 70983952 Test: atest WifiTrackerLibTests Change-Id: I81b81a0ac4f75002780b294baa97919dd184918d
-rw-r--r--libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java34
1 files changed, 29 insertions, 5 deletions
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java
index 6749f6ede..d2619138d 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/PasspointWifiEntry.java
@@ -174,7 +174,17 @@ class PasspointWifiEntry extends WifiEntry {
@Override
public void disconnect(@Nullable DisconnectCallback callback) {
- // TODO(b/70983952): Fill this method in
+ if (canDisconnect()) {
+ mCalledDisconnect = true;
+ mDisconnectCallback = callback;
+ mCallbackHandler.postDelayed(() -> {
+ if (callback != null && mCalledDisconnect) {
+ callback.onDisconnectResult(
+ DisconnectCallback.DISCONNECT_STATUS_FAILURE_UNKNOWN);
+ }
+ }, 10_000 /* delayMillis */);
+ mWifiManager.disconnect();
+ }
}
@Override
@@ -227,19 +237,33 @@ class PasspointWifiEntry extends WifiEntry {
@Override
@MeteredChoice
public int getMeteredChoice() {
- // TODO(b/70983952): Fill this method in
+ final int meteredOverride = mPasspointConfig.getMeteredOverride();
+ if (meteredOverride == WifiConfiguration.METERED_OVERRIDE_METERED) {
+ return METERED_CHOICE_METERED;
+ } else if (meteredOverride == WifiConfiguration.METERED_OVERRIDE_NOT_METERED) {
+ return METERED_CHOICE_UNMETERED;
+ }
return METERED_CHOICE_AUTO;
}
@Override
public boolean canSetMeteredChoice() {
- // TODO(b/70983952): Fill this method in
- return false;
+ return true;
}
@Override
public void setMeteredChoice(int meteredChoice) {
- // TODO(b/70983952): Fill this method in
+ final String fqdn = mPasspointConfig.getHomeSp().getFqdn();
+ if (meteredChoice == METERED_CHOICE_AUTO) {
+ mWifiManager.setMeteredOverridePasspoint(fqdn,
+ WifiConfiguration.METERED_OVERRIDE_NONE);
+ } else if (meteredChoice == METERED_CHOICE_METERED) {
+ mWifiManager.setMeteredOverridePasspoint(fqdn,
+ WifiConfiguration.METERED_OVERRIDE_METERED);
+ } else if (meteredChoice == METERED_CHOICE_UNMETERED) {
+ mWifiManager.setMeteredOverridePasspoint(fqdn,
+ WifiConfiguration.METERED_OVERRIDE_NOT_METERED);
+ }
}
@Override