diff options
author | Quang Luong <qal@google.com> | 2021-06-08 00:12:06 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2021-06-08 00:12:06 +0000 |
commit | fbe4004ae2cefce1b19fc1d5cb8c53b6b672e1a8 (patch) | |
tree | 71a293b71eaeaefdb84e391e6bb96b2c419282a3 | |
parent | e2ed80285f507b1bb27f82c205435fdcc668a99e (diff) | |
parent | 6d05c31c3dfdded3c811b89a53164e86a6e8206f (diff) | |
download | wifi-fbe4004ae2cefce1b19fc1d5cb8c53b6b672e1a8.tar.gz |
Merge "Make sure first onWifiEntriesChanged() has up-to-date information" into sc-dev
-rw-r--r-- | libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java index d96e2b1f6..b0415411b 100644 --- a/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java +++ b/libs/WifiTrackerLib/src/com/android/wifitrackerlib/BaseWifiTracker.java @@ -92,11 +92,18 @@ public class BaseWifiTracker implements LifecycleObserver { return BaseWifiTracker.sVerboseLogging; } + private boolean mIsStarted; + // Registered on the worker thread private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { @Override @WorkerThread public void onReceive(Context context, Intent intent) { + if (!mIsStarted) { + mIsStarted = true; + handleOnStart(); + } + String action = intent.getAction(); if (isVerboseLoggingEnabled()) { @@ -158,8 +165,13 @@ public class BaseWifiTracker implements LifecycleObserver { private final ConnectivityManager.NetworkCallback mNetworkCallback = new ConnectivityManager.NetworkCallback() { @Override + @WorkerThread public void onLinkPropertiesChanged(@NonNull Network network, @NonNull LinkProperties lp) { + if (!mIsStarted) { + mIsStarted = true; + handleOnStart(); + } if (!isPrimaryWifiNetwork( mConnectivityManager.getNetworkCapabilities(network))) { return; @@ -168,8 +180,13 @@ public class BaseWifiTracker implements LifecycleObserver { } @Override + @WorkerThread public void onCapabilitiesChanged(@NonNull Network network, @NonNull NetworkCapabilities networkCapabilities) { + if (!mIsStarted) { + mIsStarted = true; + handleOnStart(); + } if (!isPrimaryWifiNetwork(networkCapabilities)) { return; } @@ -182,7 +199,12 @@ public class BaseWifiTracker implements LifecycleObserver { } @Override + @WorkerThread public void onLost(@NonNull Network network) { + if (!mIsStarted) { + mIsStarted = true; + handleOnStart(); + } if (!isPrimaryWifiNetwork( mConnectivityManager.getNetworkCapabilities(network))) { return; @@ -194,8 +216,13 @@ public class BaseWifiTracker implements LifecycleObserver { private final ConnectivityManager.NetworkCallback mDefaultNetworkCallback = new ConnectivityManager.NetworkCallback() { @Override + @WorkerThread public void onCapabilitiesChanged(@NonNull Network network, @NonNull NetworkCapabilities networkCapabilities) { + if (!mIsStarted) { + mIsStarted = true; + handleOnStart(); + } final boolean oldWifiDefault = mIsWifiDefaultRoute; final boolean oldCellDefault = mIsCellDefaultRoute; // raw Wifi or VPN-over-Wifi is default => Wifi is default. @@ -211,7 +238,12 @@ public class BaseWifiTracker implements LifecycleObserver { } } + @WorkerThread public void onLost(@NonNull Network network) { + if (!mIsStarted) { + mIsStarted = true; + handleOnStart(); + } mIsWifiDefaultRoute = false; mIsCellDefaultRoute = false; if (isVerboseLoggingEnabled()) { @@ -320,7 +352,12 @@ public class BaseWifiTracker implements LifecycleObserver { NetworkKey.TYPE_WIFI, mWifiNetworkScoreCache, NetworkScoreManager.SCORE_FILTER_SCAN_RESULTS); - mWorkerHandler.post(this::handleOnStart); + mWorkerHandler.post(() -> { + if (!mIsStarted) { + mIsStarted = true; + handleOnStart(); + } + }); } /** @@ -336,6 +373,7 @@ public class BaseWifiTracker implements LifecycleObserver { mNetworkScoreManager.unregisterNetworkScoreCache(NetworkKey.TYPE_WIFI, mWifiNetworkScoreCache); mWorkerHandler.post(mRequestedScoreKeys::clear); + mIsStarted = false; } /** |