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

Commit 755c78a8 authored by Remi NGUYEN VAN's avatar Remi NGUYEN VAN Committed by android-build-merger
Browse files

Merge changes I0f997d30,I288ba1f4 am: 53f85917

am: bc3c6b13

Change-Id: Icb2c5b89895976263cd713651778061d348ba368
parents c5f8d911 bc3c6b13
Loading
Loading
Loading
Loading
+1 −2
Original line number Original line Diff line number Diff line
@@ -9464,8 +9464,7 @@ public final class Settings {
         * Use the old dnsmasq DHCP server for tethering instead of the framework implementation.
         * Use the old dnsmasq DHCP server for tethering instead of the framework implementation.
         *
         *
         * Integer values are interpreted as boolean, and the absence of an explicit setting
         * Integer values are interpreted as boolean, and the absence of an explicit setting
         * is interpreted as |true|.
         * is interpreted as |false|.
         * TODO: make the default |false|
         * @hide
         * @hide
         */
         */
        public static final String TETHER_ENABLE_LEGACY_DHCP_SERVER =
        public static final String TETHER_ENABLE_LEGACY_DHCP_SERVER =
+1 −2
Original line number Original line Diff line number Diff line
@@ -320,9 +320,8 @@ public class TetheringConfiguration {
    }
    }


    private static boolean getEnableLegacyDhcpServer(Context ctx) {
    private static boolean getEnableLegacyDhcpServer(Context ctx) {
        // TODO: make the default false (0) and update javadoc in Settings.java
        final ContentResolver cr = ctx.getContentResolver();
        final ContentResolver cr = ctx.getContentResolver();
        final int intVal = Settings.Global.getInt(cr, TETHER_ENABLE_LEGACY_DHCP_SERVER, 1);
        final int intVal = Settings.Global.getInt(cr, TETHER_ENABLE_LEGACY_DHCP_SERVER, 0);
        return intVal != 0;
        return intVal != 0;
    }
    }


+36 −3
Original line number Original line Diff line number Diff line
@@ -33,6 +33,7 @@ import static android.net.wifi.WifiManager.EXTRA_WIFI_AP_INTERFACE_NAME;
import static android.net.wifi.WifiManager.EXTRA_WIFI_AP_MODE;
import static android.net.wifi.WifiManager.EXTRA_WIFI_AP_MODE;
import static android.net.wifi.WifiManager.EXTRA_WIFI_AP_STATE;
import static android.net.wifi.WifiManager.EXTRA_WIFI_AP_STATE;
import static android.net.wifi.WifiManager.WIFI_AP_STATE_ENABLED;
import static android.net.wifi.WifiManager.WIFI_AP_STATE_ENABLED;
import static android.provider.Settings.Global.TETHER_ENABLE_LEGACY_DHCP_SERVER;


import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertTrue;
@@ -75,6 +76,8 @@ import android.net.NetworkRequest;
import android.net.NetworkState;
import android.net.NetworkState;
import android.net.NetworkUtils;
import android.net.NetworkUtils;
import android.net.RouteInfo;
import android.net.RouteInfo;
import android.net.dhcp.DhcpServer;
import android.net.dhcp.DhcpServingParams;
import android.net.ip.IpServer;
import android.net.ip.IpServer;
import android.net.ip.RouterAdvertisementDaemon;
import android.net.ip.RouterAdvertisementDaemon;
import android.net.util.InterfaceParams;
import android.net.util.InterfaceParams;
@@ -85,6 +88,7 @@ import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.Bundle;
import android.os.Handler;
import android.os.Handler;
import android.os.INetworkManagementService;
import android.os.INetworkManagementService;
import android.os.Looper;
import android.os.PersistableBundle;
import android.os.PersistableBundle;
import android.os.RemoteException;
import android.os.RemoteException;
import android.os.test.TestLooper;
import android.os.test.TestLooper;
@@ -146,6 +150,7 @@ public class TetheringTest {
    @Mock private UpstreamNetworkMonitor mUpstreamNetworkMonitor;
    @Mock private UpstreamNetworkMonitor mUpstreamNetworkMonitor;
    @Mock private IPv6TetheringCoordinator mIPv6TetheringCoordinator;
    @Mock private IPv6TetheringCoordinator mIPv6TetheringCoordinator;
    @Mock private RouterAdvertisementDaemon mRouterAdvertisementDaemon;
    @Mock private RouterAdvertisementDaemon mRouterAdvertisementDaemon;
    @Mock private DhcpServer mDhcpServer;
    @Mock private INetd mNetd;
    @Mock private INetd mNetd;


    private final MockTetheringDependencies mTetheringDependencies =
    private final MockTetheringDependencies mTetheringDependencies =
@@ -240,6 +245,12 @@ public class TetheringTest {
                public INetd getNetdService() {
                public INetd getNetdService() {
                    return mNetd;
                    return mNetd;
                }
                }

                @Override
                public DhcpServer makeDhcpServer(Looper looper, InterfaceParams iface,
                        DhcpServingParams params, SharedLog log) {
                    return mDhcpServer;
                }
            };
            };
        }
        }


@@ -333,6 +344,7 @@ public class TetheringTest {
        mServiceContext = new MockContext(mContext);
        mServiceContext = new MockContext(mContext);
        mContentResolver = new MockContentResolver(mServiceContext);
        mContentResolver = new MockContentResolver(mServiceContext);
        mContentResolver.addProvider(Settings.AUTHORITY, new FakeSettingsProvider());
        mContentResolver.addProvider(Settings.AUTHORITY, new FakeSettingsProvider());
        Settings.Global.putInt(mContentResolver, TETHER_ENABLE_LEGACY_DHCP_SERVER, 0);
        mIntents = new Vector<>();
        mIntents = new Vector<>();
        mBroadcastReceiver = new BroadcastReceiver() {
        mBroadcastReceiver = new BroadcastReceiver() {
            @Override
            @Override
@@ -343,10 +355,14 @@ public class TetheringTest {
        mServiceContext.registerReceiver(mBroadcastReceiver,
        mServiceContext.registerReceiver(mBroadcastReceiver,
                new IntentFilter(ACTION_TETHER_STATE_CHANGED));
                new IntentFilter(ACTION_TETHER_STATE_CHANGED));
        mTetheringDependencies.reset();
        mTetheringDependencies.reset();
        mTethering = new Tethering(mServiceContext, mNMService, mStatsService, mPolicyManager,
        mTethering = makeTethering();
        verify(mNMService).registerTetheringStatsProvider(any(), anyString());
    }

    private Tethering makeTethering() {
        return new Tethering(mServiceContext, mNMService, mStatsService, mPolicyManager,
                mLooper.getLooper(), mSystemProperties,
                mLooper.getLooper(), mSystemProperties,
                mTetheringDependencies);
                mTetheringDependencies);
        verify(mNMService).registerTetheringStatsProvider(any(), anyString());
    }
    }


    @After
    @After
@@ -597,6 +613,18 @@ public class TetheringTest {


        sendIPv6TetherUpdates(upstreamState);
        sendIPv6TetherUpdates(upstreamState);
        verify(mRouterAdvertisementDaemon, never()).buildNewRa(any(), notNull());
        verify(mRouterAdvertisementDaemon, never()).buildNewRa(any(), notNull());
        verify(mDhcpServer, times(1)).start();
    }

    @Test
    public void workingMobileUsbTethering_IPv4LegacyDhcp() {
        Settings.Global.putInt(mContentResolver, TETHER_ENABLE_LEGACY_DHCP_SERVER, 1);
        mTethering = makeTethering();
        final NetworkState upstreamState = buildMobileIPv4UpstreamState();
        runUsbTethering(upstreamState);
        sendIPv6TetherUpdates(upstreamState);

        verify(mDhcpServer, never()).start();
    }
    }


    @Test
    @Test
@@ -620,6 +648,7 @@ public class TetheringTest {
        verify(mNMService, times(1)).enableNat(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
        verify(mNMService, times(1)).enableNat(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
        verify(mNMService, times(1)).startInterfaceForwarding(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
        verify(mNMService, times(1)).startInterfaceForwarding(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
        verify(mRouterAdvertisementDaemon, times(1)).start();
        verify(mRouterAdvertisementDaemon, times(1)).start();
        verify(mDhcpServer, times(1)).start();


        sendIPv6TetherUpdates(upstreamState);
        sendIPv6TetherUpdates(upstreamState);
        verify(mRouterAdvertisementDaemon, times(1)).buildNewRa(any(), notNull());
        verify(mRouterAdvertisementDaemon, times(1)).buildNewRa(any(), notNull());
@@ -633,6 +662,7 @@ public class TetheringTest {


        verify(mNMService, times(1)).enableNat(TEST_USB_IFNAME, TEST_XLAT_MOBILE_IFNAME);
        verify(mNMService, times(1)).enableNat(TEST_USB_IFNAME, TEST_XLAT_MOBILE_IFNAME);
        verify(mNMService, times(1)).enableNat(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
        verify(mNMService, times(1)).enableNat(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
        verify(mDhcpServer, times(1)).start();
        verify(mNMService, times(1)).startInterfaceForwarding(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
        verify(mNMService, times(1)).startInterfaceForwarding(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
        verify(mNMService, times(1)).startInterfaceForwarding(TEST_USB_IFNAME,
        verify(mNMService, times(1)).startInterfaceForwarding(TEST_USB_IFNAME,
                TEST_XLAT_MOBILE_IFNAME);
                TEST_XLAT_MOBILE_IFNAME);
@@ -649,6 +679,7 @@ public class TetheringTest {
        runUsbTethering(upstreamState);
        runUsbTethering(upstreamState);


        verify(mNMService, times(1)).enableNat(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
        verify(mNMService, times(1)).enableNat(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
        verify(mDhcpServer, times(1)).start();
        verify(mNMService, times(1)).startInterfaceForwarding(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
        verify(mNMService, times(1)).startInterfaceForwarding(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);


        // Then 464xlat comes up
        // Then 464xlat comes up
@@ -671,6 +702,8 @@ public class TetheringTest {
        // Forwarding was not re-added for v6 (still times(1))
        // Forwarding was not re-added for v6 (still times(1))
        verify(mNMService, times(1)).enableNat(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
        verify(mNMService, times(1)).enableNat(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
        verify(mNMService, times(1)).startInterfaceForwarding(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
        verify(mNMService, times(1)).startInterfaceForwarding(TEST_USB_IFNAME, TEST_MOBILE_IFNAME);
        // DHCP not restarted on downstream (still times(1))
        verify(mDhcpServer, times(1)).start();
    }
    }


    @Test
    @Test
+0 −9
Original line number Original line Diff line number Diff line
@@ -225,13 +225,4 @@ public class TetheringConfigurationTest {
        final TetheringConfiguration cfg = new TetheringConfiguration(mMockContext, mLog);
        final TetheringConfiguration cfg = new TetheringConfiguration(mMockContext, mLog);
        assertFalse(cfg.enableLegacyDhcpServer);
        assertFalse(cfg.enableLegacyDhcpServer);
    }
    }

    @Test
    public void testNewDhcpServerDefault() {
        Settings.Global.putString(mContentResolver, TETHER_ENABLE_LEGACY_DHCP_SERVER, null);

        final TetheringConfiguration cfg = new TetheringConfiguration(mMockContext, mLog);
        // TODO: change to false when new server is promoted to default
        assertTrue(cfg.enableLegacyDhcpServer);
    }
}
}