diff --git a/lineage/res/res/values-sw600dp/config.xml b/lineage/res/res/values-sw600dp/config.xml
deleted file mode 100644
index 815baf4edf3fb52419065a58a513e28405f3c58a..0000000000000000000000000000000000000000
--- a/lineage/res/res/values-sw600dp/config.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
- true
-
diff --git a/lineage/res/res/values/config.xml b/lineage/res/res/values/config.xml
index 46c1213173d1b2f69f12c005015bf17d804754b0..babeeea4bda7f22a1096f69cd02c8c52b217380c 100644
--- a/lineage/res/res/values/config.xml
+++ b/lineage/res/res/values/config.xml
@@ -336,7 +336,7 @@
10
- false
+ @*android:bool/config_enableLockScreenRotation
true
diff --git a/sdk/src/java/lineageos/providers/LineageSettings.java b/sdk/src/java/lineageos/providers/LineageSettings.java
index 67643a3f2a344a474eb7f0d2405a6c9f04b6d794..bbee53a61a5e692513c1a97153abf2c69e7a9740 100644
--- a/sdk/src/java/lineageos/providers/LineageSettings.java
+++ b/sdk/src/java/lineageos/providers/LineageSettings.java
@@ -2075,6 +2075,15 @@ public final class LineageSettings {
public static final Validator ENABLE_TASKBAR_VALIDATOR =
sBooleanValidator;
+ /**
+ * Whether hardware kill-switch is enabled or not.
+ */
+ public static final String HW_KILL_SWITCH_ENABLED = "hw_kill_switch_enabled";
+
+ /** @hide */
+ public static final Validator HW_KILL_SWITCH_ENABLED_VALIDATOR =
+ sBooleanValidator;
+
/**
* I can haz more bukkits
* @hide
@@ -2251,6 +2260,8 @@ public final class LineageSettings {
CLICK_PARTIAL_SCREENSHOT_VALIDATOR);
VALIDATORS.put(ENABLE_TASKBAR,
ENABLE_TASKBAR_VALIDATOR);
+ VALIDATORS.put(HW_KILL_SWITCH_ENABLED,
+ HW_KILL_SWITCH_ENABLED_VALIDATOR);
VALIDATORS.put(__MAGICAL_TEST_PASSING_ENABLER,
__MAGICAL_TEST_PASSING_ENABLER_VALIDATOR);
};
diff --git a/sdk/src/java/org/lineageos/internal/statusbar/NetworkTraffic.java b/sdk/src/java/org/lineageos/internal/statusbar/NetworkTraffic.java
index 3856a30e92aff8c2f5237caff660ceadff2fb929..feacc85657fd95d92499d6addd5ef9c0766352ee 100644
--- a/sdk/src/java/org/lineageos/internal/statusbar/NetworkTraffic.java
+++ b/sdk/src/java/org/lineageos/internal/statusbar/NetworkTraffic.java
@@ -15,6 +15,7 @@ import android.graphics.PorterDuffColorFilter;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.net.ConnectivityManager;
+import android.net.ConnectivityManager.NetworkCallback;
import android.net.LinkProperties;
import android.net.Network;
import android.net.NetworkCapabilities;
@@ -99,6 +100,10 @@ public class NetworkTraffic extends TextView {
private int mIconTint = Color.WHITE;
private Drawable mDrawable;
+ // Network tracking related variables
+ private NetworkCallback mNetworkCallback;
+ private NetworkCallback mDefaultNetworkCallback;
+
private final HashMap mLinkPropertiesMap = new HashMap<>();
// Used to indicate that the set of sources contributing
// to current stats have changed.
@@ -121,6 +126,10 @@ public class NetworkTraffic extends TextView {
mNetworkTrafficIsVisible = false;
+ ContentResolver resolver = mContext.getContentResolver();
+ mMode = LineageSettings.Secure.getInt(resolver,
+ LineageSettings.Secure.NETWORK_TRAFFIC_MODE, MODE_DISABLED);
+
mTrafficHandler = new Handler(mContext.getMainLooper()) {
@Override
public void handleMessage(Message msg) {
@@ -293,46 +302,74 @@ public class NetworkTraffic extends TextView {
};
mObserver = new SettingsObserver(mTrafficHandler);
- // Network tracking related variables
- final NetworkRequest request = new NetworkRequest.Builder()
- .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
- .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
- .build();
- ConnectivityManager.NetworkCallback networkCallback =
- new ConnectivityManager.NetworkCallback() {
- @Override
- public void onLinkPropertiesChanged(Network network,
- LinkProperties linkProperties) {
- Message msg = new Message();
- msg.what = MESSAGE_TYPE_ADD_NETWORK;
- msg.obj = new LinkPropertiesHolder(network, linkProperties);
- mTrafficHandler.sendMessage(msg);
- }
+ manageNetworkCallbacks();
+ }
- @Override
- public void onLost(Network network) {
- Message msg = new Message();
- msg.what = MESSAGE_TYPE_REMOVE_NETWORK;
- msg.obj = network;
- mTrafficHandler.sendMessage(msg);
- }
- };
- ConnectivityManager.NetworkCallback defaultNetworkCallback =
- new ConnectivityManager.NetworkCallback() {
- @Override
- public void onAvailable(Network network) {
- updateViewState();
+ private void manageNetworkCallbacks() {
+ ConnectivityManager connectivityManager =
+ mContext.getSystemService(ConnectivityManager.class);
+
+ if (mMode == MODE_DISABLED) {
+ // Unregister callbacks if disabling
+ if (mNetworkCallback != null) {
+ connectivityManager.unregisterNetworkCallback(mNetworkCallback);
+ mNetworkCallback = null;
+ }
+ if (mDefaultNetworkCallback != null) {
+ connectivityManager.unregisterNetworkCallback(mDefaultNetworkCallback);
+ mDefaultNetworkCallback = null;
}
+ return;
+ }
- @Override
- public void onLost(Network network) {
- updateViewState();
+ // Register callbacks if enabling
+ if (mNetworkCallback == null) {
+ mNetworkCallback = new NetworkCallback() {
+ @Override
+ public void onLinkPropertiesChanged(Network network,
+ LinkProperties linkProperties) {
+ Message msg = new Message();
+ msg.what = MESSAGE_TYPE_ADD_NETWORK;
+ msg.obj = new LinkPropertiesHolder(network, linkProperties);
+ mTrafficHandler.sendMessage(msg);
+ }
+
+ @Override
+ public void onLost(Network network) {
+ Message msg = new Message();
+ msg.what = MESSAGE_TYPE_REMOVE_NETWORK;
+ msg.obj = network;
+ mTrafficHandler.sendMessage(msg);
+ }
+ };
+
+ NetworkRequest request = new NetworkRequest.Builder()
+ .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
+ .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
+ .build();
+
+ connectivityManager.registerNetworkCallback(request, mNetworkCallback);
+ }
+
+ if (mDefaultNetworkCallback == null) {
+ mDefaultNetworkCallback = new NetworkCallback() {
+ @Override
+ public void onAvailable(Network network) {
+ updateViewState();
+ }
+
+ @Override
+ public void onLost(Network network) {
+ updateViewState();
+ }
+ };
+
+ try {
+ connectivityManager.registerDefaultNetworkCallback(mDefaultNetworkCallback);
+ } catch (RuntimeException e) {
+ Log.e(TAG, "Failed to register network callback", e);
}
- };
- context.getSystemService(ConnectivityManager.class)
- .registerNetworkCallback(request, networkCallback);
- context.getSystemService(ConnectivityManager.class)
- .registerDefaultNetworkCallback(defaultNetworkCallback);
+ }
}
public void setViewPosition(int vpos) {
@@ -432,6 +469,8 @@ public class NetworkTraffic extends TextView {
mShowUnits = LineageSettings.Secure.getInt(resolver,
LineageSettings.Secure.NETWORK_TRAFFIC_SHOW_UNITS, SHOW_UNITS_ON);
+ manageNetworkCallbacks();
+
switch (mUnits) {
case UNITS_KILOBITS:
mAutoHideThreshold = AUTOHIDE_THRESHOLD_KILOBITS;