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;