Merge changes I55b21a32,I4188007a into sc-dev

* changes:
  Explicitly opt-in to get location data from WifiInfo
  Fix the QS Tile issue
This commit is contained in:
Ying Xu
2021-03-17 21:34:25 +00:00
committed by Android (Google) Code Review
4 changed files with 61 additions and 37 deletions

View File

@@ -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.

View File

@@ -445,11 +445,6 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, D
final ArrayList<String> tiles = new ArrayList<String>();
boolean addedDefault = false;
Set<String> 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<QSFactory>, D
if (!addedDefault) {
List<String> 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<QSFactory>, 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;
}

View File

@@ -115,9 +115,32 @@ public class TileQueryHelper {
final ArrayList<QSTile> 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;

View File

@@ -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;