From b1099261054e9813bd9289bb18776c1c57a9f715 Mon Sep 17 00:00:00 2001 From: yinxu Date: Thu, 11 Mar 2021 08:56:54 -0800 Subject: [PATCH 1/2] Fix the QS Tile issue Bug: 182430245 Test: Manual tests Change-Id: I4188007aeed70a5a2d4ba6ac1fdc79203cf955e3 --- .../com/android/systemui/qs/QSTileHost.java | 50 +++++++++++-------- .../qs/customize/TileQueryHelper.java | 38 +++++++++----- 2 files changed, 54 insertions(+), 34 deletions(-) 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; From 2ed590c29bd304b8d84852480a80002fad7463a6 Mon Sep 17 00:00:00 2001 From: yinxu Date: Mon, 15 Mar 2021 11:39:38 -0700 Subject: [PATCH 2/2] Explicitly opt-in to get location data from WifiInfo Bug: 182615941 Test: Manual Tests Change-Id: I55b21a323026af8d83c2f2ba3de47dce17788eb9 --- .../src/com/android/settingslib/wifi/WifiStatusTracker.java | 6 ++++-- .../systemui/statusbar/policy/NetworkControllerImpl.java | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) 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/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;