diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java index 841a49e6d4fda..cbfd4d8ad07bc 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java @@ -75,7 +75,8 @@ public class WifiStatusTracker { .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN) .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR).build(); - private final NetworkCallback mNetworkCallback = new NetworkCallback() { + private final NetworkCallback mNetworkCallback = + new NetworkCallback(NetworkCallback.FLAG_INCLUDE_LOCATION_INFO) { @Override public void onAvailable( Network network, NetworkCapabilities networkCapabilities, @@ -131,7 +132,8 @@ public class WifiStatusTracker { } } }; - private final NetworkCallback mDefaultNetworkCallback = new NetworkCallback() { + private final NetworkCallback mDefaultNetworkCallback = + new NetworkCallback(NetworkCallback.FLAG_INCLUDE_LOCATION_INFO) { @Override public void onCapabilitiesChanged(Network network, NetworkCapabilities nc) { // network is now the default network, and its capabilities are nc. diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java index 2cd367d031028..3e3451e64b491 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java @@ -445,11 +445,6 @@ public class QSTileHost implements QSHost, Tunable, PluginListener, D final ArrayList tiles = new ArrayList(); boolean addedDefault = false; Set addedSpecs = new ArraySet<>(); - // TODO(b/174753536): Move it into the config file. - if (FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL)) { - tiles.add("internet"); - addedSpecs.add("internet"); - } for (String tile : tileList.split(",")) { tile = tile.trim(); if (tile.isEmpty()) continue; @@ -457,17 +452,6 @@ public class QSTileHost implements QSHost, Tunable, PluginListener, D if (!addedDefault) { List defaultSpecs = getDefaultSpecs(context); for (String spec : defaultSpecs) { - // TODO(b/174753536): Move it into the config file. - if (FeatureFlagUtils.isEnabled( - context, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL)) { - if (spec.equals("wifi") || spec.equals("cell")) { - continue; - } - } else { - if (spec.equals("internet")) { - continue; - } - } if (!addedSpecs.contains(spec)) { tiles.add(spec); addedSpecs.add(spec); @@ -476,18 +460,40 @@ public class QSTileHost implements QSHost, Tunable, PluginListener, D addedDefault = true; } } else { - // TODO(b/174753536): Move it into the config file. - if (FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL)) { - if (tile.equals("wifi") || tile.equals("cell")) { - continue; - } - } if (!addedSpecs.contains(tile)) { tiles.add(tile); addedSpecs.add(tile); } } } + // TODO(b/174753536): Move it into the config file. + // Only do the below hacking when at least one of the below tiles exist + // --InternetTile + // --WiFiTile + // --CellularTIle + if (tiles.contains("internet") || tiles.contains("wifi") || tiles.contains("cell")) { + if (FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL)) { + if (!tiles.contains("internet")) { + tiles.add("internet"); + } + if (tiles.contains("wifi")) { + tiles.remove("wifi"); + } + if (tiles.contains("cell")) { + tiles.remove("cell"); + } + } else { + if (tiles.contains("internet")) { + tiles.remove("internet"); + } + if (!tiles.contains("wifi")) { + tiles.add("wifi"); + } + if (!tiles.contains("cell")) { + tiles.add("cell"); + } + } + } return tiles; } diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java b/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java index 7eeb4bd19f1a1..32b41ec0ab66f 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java @@ -115,9 +115,32 @@ public class TileQueryHelper { final ArrayList tilesToAdd = new ArrayList<>(); // TODO(b/174753536): Move it into the config file. - if (FeatureFlagUtils.isEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL)) { - if (!possibleTiles.contains("internet")) { - possibleTiles.add("internet"); + // Only do the below hacking when at least one of the below tiles exist + // --InternetTile + // --WiFiTile + // --CellularTIle + if (possibleTiles.contains("internet") || possibleTiles.contains("wifi") + || possibleTiles.contains("cell")) { + if (FeatureFlagUtils.isEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL)) { + if (!possibleTiles.contains("internet")) { + possibleTiles.add("internet"); + } + if (possibleTiles.contains("wifi")) { + possibleTiles.remove("wifi"); + } + if (possibleTiles.contains("cell")) { + possibleTiles.remove("cell"); + } + } else { + if (possibleTiles.contains("internet")) { + possibleTiles.remove("internet"); + } + if (!possibleTiles.contains("wifi")) { + possibleTiles.add("wifi"); + } + if (!possibleTiles.contains("cell")) { + possibleTiles.add("cell"); + } } } for (String spec : possibleTiles) { @@ -125,15 +148,6 @@ public class TileQueryHelper { // Do not include CustomTile. Those will be created by `addPackageTiles`. if (spec.startsWith(CustomTile.PREFIX)) continue; // TODO(b/174753536): Move it into the config file. - if (FeatureFlagUtils.isEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL)) { - if (spec.equals("wifi") || spec.equals("cell")) { - continue; - } - } else { - if (spec.equals("internet")) { - continue; - } - } final QSTile tile = host.createTile(spec); if (tile == null) { continue; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java index fbdaf9cdae202..db039b44d91a9 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java @@ -31,6 +31,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.res.Configuration; import android.net.ConnectivityManager; +import android.net.ConnectivityManager.NetworkCallback; import android.net.Network; import android.net.NetworkCapabilities; import android.net.NetworkScoreManager; @@ -307,7 +308,8 @@ public class NetworkControllerImpl extends BroadcastReceiver mWifiManager.registerScanResultsCallback(mReceiverHandler::post, scanResultsCallback); } - ConnectivityManager.NetworkCallback callback = new ConnectivityManager.NetworkCallback(){ + NetworkCallback callback = + new NetworkCallback(NetworkCallback.FLAG_INCLUDE_LOCATION_INFO){ private Network mLastNetwork; private NetworkCapabilities mLastNetworkCapabilities;