summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuang Luong <qal@google.com>2019-12-30 07:32:58 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2019-12-30 07:32:58 +0000
commit395f3631895b13b7555e6c021553a48dce1b8386 (patch)
treea9a5e182c345111d011f59ecc553149f72208ff8
parent2e60666973b46feb44ddfc5241c90ad71fc8b630 (diff)
parent6a26a4b405936b416bc016fbac0c418b0ab4444f (diff)
Merge changes Ie5bc7870,I7e509df2
* changes: Implement StandardWifiEntry.disconnect() with legacy behavior Implement StandardWifiEntry.setMeteredChoice()
-rw-r--r--libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java51
1 files changed, 43 insertions, 8 deletions
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java
index eefae5485..5ec8e3712 100644
--- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java
+++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/StandardWifiEntry.java
@@ -56,7 +56,9 @@ class StandardWifiEntry extends WifiEntry {
private final @Security int mSecurity;
@Nullable private WifiConfiguration mWifiConfig;
@Nullable private NetworkInfo mNetworkInfo;
+ @Nullable private WifiInfo mWifiInfo;
private boolean mCalledConnect = false;
+ private boolean mCalledDisconnect = false;
private int mLevel = WIFI_LEVEL_UNREACHABLE;
@@ -246,13 +248,21 @@ class StandardWifiEntry extends WifiEntry {
@Override
public boolean canDisconnect() {
- // TODO(b/70983952): Fill this method in
- return false;
+ return getConnectedState() == CONNECTED_STATE_CONNECTED;
}
@Override
public void disconnect() {
- // TODO(b/70983952): Fill this method in
+ if (canDisconnect()) {
+ mCalledDisconnect = true;
+ mCallbackHandler.postDelayed(() -> {
+ if (mCalledDisconnect) {
+ notifyOnDisconnectResult(
+ WifiEntryCallback.DISCONNECT_STATUS_FAILURE_UNKNOWN);
+ }
+ }, 10_000 /* delayMillis */);
+ mWifiManager.disconnect();
+ }
}
@Override
@@ -309,19 +319,39 @@ class StandardWifiEntry extends WifiEntry {
@Override
@MeteredChoice
public int getMeteredChoice() {
- // TODO(b/70983952): Fill this method in
- return METERED_CHOICE_UNMETERED;
+ if (mWifiConfig != null) {
+ final int meteredOverride = mWifiConfig.meteredOverride;
+ if (meteredOverride == WifiConfiguration.METERED_OVERRIDE_NONE) {
+ return METERED_CHOICE_AUTO;
+ } else 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_UNKNOWN;
}
@Override
public boolean canSetMeteredChoice() {
- // TODO(b/70983952): Fill this method in
- return false;
+ return isSaved();
}
@Override
public void setMeteredChoice(int meteredChoice) {
- // TODO(b/70983952): Fill this method in
+ if (mWifiConfig == null) {
+ return;
+ }
+
+ final WifiConfiguration saveConfig = new WifiConfiguration(mWifiConfig);
+ if (meteredChoice == METERED_CHOICE_AUTO) {
+ saveConfig.meteredOverride = WifiConfiguration.METERED_OVERRIDE_NONE;
+ } else if (meteredChoice == METERED_CHOICE_METERED) {
+ saveConfig.meteredOverride = WifiConfiguration.METERED_OVERRIDE_METERED;
+ } else if (meteredChoice == METERED_CHOICE_UNMETERED) {
+ saveConfig.meteredOverride = WifiConfiguration.METERED_OVERRIDE_NOT_METERED;
+ }
+ mWifiManager.save(saveConfig, null /* listener */);
}
@Override
@@ -433,6 +463,7 @@ class StandardWifiEntry extends WifiEntry {
if (mWifiConfig != null && wifiInfo != null
&& mWifiConfig.networkId == wifiInfo.getNetworkId()) {
mNetworkInfo = networkInfo;
+ mWifiInfo = wifiInfo;
final int wifiInfoRssi = wifiInfo.getRssi();
if (wifiInfoRssi != INVALID_RSSI) {
mLevel = mWifiManager.calculateSignalLevel(wifiInfoRssi);
@@ -444,6 +475,10 @@ class StandardWifiEntry extends WifiEntry {
} else {
mNetworkInfo = null;
}
+ if (mCalledDisconnect && getConnectedState() == CONNECTED_STATE_DISCONNECTED) {
+ mCalledDisconnect = false;
+ notifyOnDisconnectResult(WifiEntryCallback.DISCONNECT_STATUS_SUCCESS);
+ }
notifyOnUpdated();
}