Loading services/core/java/com/android/server/net/NetworkManagementService.java +16 −7 Original line number Diff line number Diff line Loading @@ -74,6 +74,7 @@ import com.android.internal.app.IBatteryStats; import com.android.internal.util.DumpUtils; import com.android.internal.util.HexDump; import com.android.modules.utils.build.SdkLevel; import com.android.net.flags.Flags; import com.android.net.module.util.NetdUtils; import com.android.net.module.util.PermissionUtils; import com.android.server.FgThread; Loading Loading @@ -1059,17 +1060,25 @@ public class NetworkManagementService extends INetworkManagementService.Stub { Log.w(TAG, "setDataSaverMode(): already " + mDataSaverMode); return true; } Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "bandwidthEnableDataSaver"); Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "setDataSaverModeEnabled"); try { if (Flags.setDataSaverViaCm()) { // setDataSaverEnabled throws if it fails to set data saver. mContext.getSystemService(ConnectivityManager.class) .setDataSaverEnabled(enable); mDataSaverMode = enable; return true; } else { final boolean changed = mNetdService.bandwidthEnableDataSaver(enable); if (changed) { mDataSaverMode = enable; } else { Log.w(TAG, "setDataSaverMode(" + enable + "): netd command silently failed"); Log.e(TAG, "setDataSaverMode(" + enable + "): failed to set iptables"); } return changed; } catch (RemoteException e) { Log.w(TAG, "setDataSaverMode(" + enable + "): netd command failed", e); } } catch (RemoteException | IllegalStateException e) { Log.e(TAG, "setDataSaverMode(" + enable + "): failed with exception", e); return false; } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); Loading services/tests/servicestests/src/com/android/server/net/NetworkManagementServiceTest.java +11 −2 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ import android.util.ArrayMap; import androidx.test.runner.AndroidJUnit4; import com.android.internal.app.IBatteryStats; import com.android.net.flags.Flags; import org.junit.After; import org.junit.Before; Loading Loading @@ -263,7 +264,11 @@ public class NetworkManagementServiceTest { verify(mCm).addUidToMeteredNetworkDenyList(TEST_UID); mNMService.setDataSaverModeEnabled(true); if (Flags.setDataSaverViaCm()) { verify(mCm).setDataSaverEnabled(true); } else { verify(mNetdService).bandwidthEnableDataSaver(true); } mNMService.setUidOnMeteredNetworkDenylist(TEST_UID, false); assertTrue("Should be true since data saver is on and the uid is not allowlisted", Loading @@ -279,7 +284,11 @@ public class NetworkManagementServiceTest { mNMService.setUidOnMeteredNetworkAllowlist(TEST_UID, false); verify(mCm).removeUidFromMeteredNetworkAllowList(TEST_UID); mNMService.setDataSaverModeEnabled(false); if (Flags.setDataSaverViaCm()) { verify(mCm).setDataSaverEnabled(false); } else { verify(mNetdService).bandwidthEnableDataSaver(false); } assertFalse("Network should not be restricted when data saver is off", mNMService.isNetworkRestricted(TEST_UID)); } Loading Loading
services/core/java/com/android/server/net/NetworkManagementService.java +16 −7 Original line number Diff line number Diff line Loading @@ -74,6 +74,7 @@ import com.android.internal.app.IBatteryStats; import com.android.internal.util.DumpUtils; import com.android.internal.util.HexDump; import com.android.modules.utils.build.SdkLevel; import com.android.net.flags.Flags; import com.android.net.module.util.NetdUtils; import com.android.net.module.util.PermissionUtils; import com.android.server.FgThread; Loading Loading @@ -1059,17 +1060,25 @@ public class NetworkManagementService extends INetworkManagementService.Stub { Log.w(TAG, "setDataSaverMode(): already " + mDataSaverMode); return true; } Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "bandwidthEnableDataSaver"); Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "setDataSaverModeEnabled"); try { if (Flags.setDataSaverViaCm()) { // setDataSaverEnabled throws if it fails to set data saver. mContext.getSystemService(ConnectivityManager.class) .setDataSaverEnabled(enable); mDataSaverMode = enable; return true; } else { final boolean changed = mNetdService.bandwidthEnableDataSaver(enable); if (changed) { mDataSaverMode = enable; } else { Log.w(TAG, "setDataSaverMode(" + enable + "): netd command silently failed"); Log.e(TAG, "setDataSaverMode(" + enable + "): failed to set iptables"); } return changed; } catch (RemoteException e) { Log.w(TAG, "setDataSaverMode(" + enable + "): netd command failed", e); } } catch (RemoteException | IllegalStateException e) { Log.e(TAG, "setDataSaverMode(" + enable + "): failed with exception", e); return false; } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); Loading
services/tests/servicestests/src/com/android/server/net/NetworkManagementServiceTest.java +11 −2 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ import android.util.ArrayMap; import androidx.test.runner.AndroidJUnit4; import com.android.internal.app.IBatteryStats; import com.android.net.flags.Flags; import org.junit.After; import org.junit.Before; Loading Loading @@ -263,7 +264,11 @@ public class NetworkManagementServiceTest { verify(mCm).addUidToMeteredNetworkDenyList(TEST_UID); mNMService.setDataSaverModeEnabled(true); if (Flags.setDataSaverViaCm()) { verify(mCm).setDataSaverEnabled(true); } else { verify(mNetdService).bandwidthEnableDataSaver(true); } mNMService.setUidOnMeteredNetworkDenylist(TEST_UID, false); assertTrue("Should be true since data saver is on and the uid is not allowlisted", Loading @@ -279,7 +284,11 @@ public class NetworkManagementServiceTest { mNMService.setUidOnMeteredNetworkAllowlist(TEST_UID, false); verify(mCm).removeUidFromMeteredNetworkAllowList(TEST_UID); mNMService.setDataSaverModeEnabled(false); if (Flags.setDataSaverViaCm()) { verify(mCm).setDataSaverEnabled(false); } else { verify(mNetdService).bandwidthEnableDataSaver(false); } assertFalse("Network should not be restricted when data saver is off", mNMService.isNetworkRestricted(TEST_UID)); } Loading