diff options
author | Quang Luong <qal@google.com> | 2020-01-24 15:42:03 -0800 |
---|---|---|
committer | Quang Luong <qal@google.com> | 2020-01-29 16:44:41 -0800 |
commit | dbe40e52e6503cf71bdb11652419a3ecfd0e1593 (patch) | |
tree | 1f2f14793518558675431aacd69f7797d3a71fd2 | |
parent | c2e08a25fc459ac7eefe3214062d68e29602778b (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.java | 34 |
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 |