Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dfe4a3ae authored by Junyu Lai's avatar Junyu Lai Committed by Automerger Merge Worker
Browse files

Merge "[BR07.2] Redirect data saver switch to ConnectivityManager" into main...

Merge "[BR07.2] Redirect data saver switch to ConnectivityManager" into main am: 1b2856ee am: bbdf1bee am: bb091e7e

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2745114



Change-Id: I75e22d0627038e961de5664a14bb3e96fc15c254
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 9611828d bb091e7e
Loading
Loading
Loading
Loading
+16 −7
Original line number Diff line number Diff line
@@ -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;
@@ -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);
+11 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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",
@@ -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));
    }