From dbe40e52e6503cf71bdb11652419a3ecfd0e1593 Mon Sep 17 00:00:00 2001 From: Quang Luong Date: Fri, 24 Jan 2020 15:42:03 -0800 Subject: [WifiTrackerLib] Add Passpoint metered choice and disconnect Implement metered choice handling and disconnect API for PasspointWifiEntry. Bug: 70983952 Test: atest WifiTrackerLibTests Change-Id: I81b81a0ac4f75002780b294baa97919dd184918d --- .../android/wifitrackerlib/PasspointWifiEntry.java | 34 ++++++++++++++++++---- 1 file 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 -- cgit v1.2.3