Loading services/core/java/com/android/server/connectivity/tethering/OffloadController.java +3 −2 Original line number Original line Diff line number Diff line Loading @@ -142,8 +142,9 @@ public class OffloadController { } } private boolean isOffloadDisabled() { private boolean isOffloadDisabled() { // Defaults to |false| if not present. final int defaultDisposition = mHwInterface.getDefaultTetherOffloadDisabled(); return (Settings.Global.getInt(mContentResolver, TETHER_OFFLOAD_DISABLED, 0) != 0); return (Settings.Global.getInt( mContentResolver, TETHER_OFFLOAD_DISABLED, defaultDisposition) != 0); } } private boolean started() { private boolean started() { Loading services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -35,6 +35,10 @@ import java.util.ArrayList; */ */ public class OffloadHardwareInterface { public class OffloadHardwareInterface { private static final String TAG = OffloadHardwareInterface.class.getSimpleName(); private static final String TAG = OffloadHardwareInterface.class.getSimpleName(); // Change this value to control whether tether offload is enabled or // disabled by default in the absence of an explicit Settings value. // See accompanying unittest to distinguish 0 from non-0 values. private static final int DEFAULT_TETHER_OFFLOAD_DISABLED = 0; private static final String NO_INTERFACE_NAME = ""; private static final String NO_INTERFACE_NAME = ""; private static final String NO_IPV4_ADDRESS = ""; private static final String NO_IPV4_ADDRESS = ""; private static final String NO_IPV4_GATEWAY = ""; private static final String NO_IPV4_GATEWAY = ""; Loading @@ -60,6 +64,10 @@ public class OffloadHardwareInterface { mLog = log.forSubComponent(TAG); mLog = log.forSubComponent(TAG); } } public int getDefaultTetherOffloadDisabled() { return DEFAULT_TETHER_OFFLOAD_DISABLED; } public boolean initOffloadConfig() { public boolean initOffloadConfig() { return configOffload(); return configOffload(); } } Loading tests/net/java/com/android/server/connectivity/tethering/OffloadControllerTest.java +39 −1 Original line number Original line Diff line number Diff line Loading @@ -46,6 +46,7 @@ import com.android.internal.util.test.FakeSettingsProvider; import java.net.InetAddress; import java.net.InetAddress; import java.util.ArrayList; import java.util.ArrayList; import org.junit.After; import org.junit.Before; import org.junit.Before; import org.junit.runner.RunWith; import org.junit.runner.RunWith; import org.junit.Test; import org.junit.Test; Loading Loading @@ -73,6 +74,11 @@ public class OffloadControllerTest { mContentResolver = new MockContentResolver(mContext); mContentResolver = new MockContentResolver(mContext); mContentResolver.addProvider(Settings.AUTHORITY, new FakeSettingsProvider()); mContentResolver.addProvider(Settings.AUTHORITY, new FakeSettingsProvider()); when(mContext.getContentResolver()).thenReturn(mContentResolver); when(mContext.getContentResolver()).thenReturn(mContentResolver); FakeSettingsProvider.clearSettingsProvider(); } @After public void tearDown() throws Exception { FakeSettingsProvider.clearSettingsProvider(); } } private void setupFunctioningHardwareInterface() { private void setupFunctioningHardwareInterface() { Loading @@ -81,9 +87,14 @@ public class OffloadControllerTest { .thenReturn(true); .thenReturn(true); } } private void enableOffload() { Settings.Global.putInt(mContentResolver, TETHER_OFFLOAD_DISABLED, 0); } @Test @Test public void testNoSettingsValueAllowsStart() { public void testNoSettingsValueDefaultDisabledDoesNotStart() { setupFunctioningHardwareInterface(); setupFunctioningHardwareInterface(); when(mHardware.getDefaultTetherOffloadDisabled()).thenReturn(1); try { try { Settings.Global.getInt(mContentResolver, TETHER_OFFLOAD_DISABLED); Settings.Global.getInt(mContentResolver, TETHER_OFFLOAD_DISABLED); fail(); fail(); Loading @@ -94,6 +105,28 @@ public class OffloadControllerTest { offload.start(); offload.start(); final InOrder inOrder = inOrder(mHardware); final InOrder inOrder = inOrder(mHardware); inOrder.verify(mHardware, times(1)).getDefaultTetherOffloadDisabled(); inOrder.verify(mHardware, never()).initOffloadConfig(); inOrder.verify(mHardware, never()).initOffloadControl( any(OffloadHardwareInterface.ControlCallback.class)); inOrder.verifyNoMoreInteractions(); } @Test public void testNoSettingsValueDefaultEnabledDoesStart() { setupFunctioningHardwareInterface(); when(mHardware.getDefaultTetherOffloadDisabled()).thenReturn(0); try { Settings.Global.getInt(mContentResolver, TETHER_OFFLOAD_DISABLED); fail(); } catch (SettingNotFoundException expected) {} final OffloadController offload = new OffloadController(null, mHardware, mContentResolver, new SharedLog("test")); offload.start(); final InOrder inOrder = inOrder(mHardware); inOrder.verify(mHardware, times(1)).getDefaultTetherOffloadDisabled(); inOrder.verify(mHardware, times(1)).initOffloadConfig(); inOrder.verify(mHardware, times(1)).initOffloadConfig(); inOrder.verify(mHardware, times(1)).initOffloadControl( inOrder.verify(mHardware, times(1)).initOffloadControl( any(OffloadHardwareInterface.ControlCallback.class)); any(OffloadHardwareInterface.ControlCallback.class)); Loading @@ -110,6 +143,7 @@ public class OffloadControllerTest { offload.start(); offload.start(); final InOrder inOrder = inOrder(mHardware); final InOrder inOrder = inOrder(mHardware); inOrder.verify(mHardware, times(1)).getDefaultTetherOffloadDisabled(); inOrder.verify(mHardware, times(1)).initOffloadConfig(); inOrder.verify(mHardware, times(1)).initOffloadConfig(); inOrder.verify(mHardware, times(1)).initOffloadControl( inOrder.verify(mHardware, times(1)).initOffloadControl( any(OffloadHardwareInterface.ControlCallback.class)); any(OffloadHardwareInterface.ControlCallback.class)); Loading @@ -126,6 +160,7 @@ public class OffloadControllerTest { offload.start(); offload.start(); final InOrder inOrder = inOrder(mHardware); final InOrder inOrder = inOrder(mHardware); inOrder.verify(mHardware, times(1)).getDefaultTetherOffloadDisabled(); inOrder.verify(mHardware, never()).initOffloadConfig(); inOrder.verify(mHardware, never()).initOffloadConfig(); inOrder.verify(mHardware, never()).initOffloadControl(anyObject()); inOrder.verify(mHardware, never()).initOffloadControl(anyObject()); inOrder.verifyNoMoreInteractions(); inOrder.verifyNoMoreInteractions(); Loading @@ -134,11 +169,14 @@ public class OffloadControllerTest { @Test @Test public void testSetUpstreamLinkPropertiesWorking() throws Exception { public void testSetUpstreamLinkPropertiesWorking() throws Exception { setupFunctioningHardwareInterface(); setupFunctioningHardwareInterface(); enableOffload(); final OffloadController offload = final OffloadController offload = new OffloadController(null, mHardware, mContentResolver, new SharedLog("test")); new OffloadController(null, mHardware, mContentResolver, new SharedLog("test")); offload.start(); offload.start(); final InOrder inOrder = inOrder(mHardware); final InOrder inOrder = inOrder(mHardware); inOrder.verify(mHardware, times(1)).getDefaultTetherOffloadDisabled(); inOrder.verify(mHardware, times(1)).initOffloadConfig(); inOrder.verify(mHardware, times(1)).initOffloadConfig(); inOrder.verify(mHardware, times(1)).initOffloadControl( inOrder.verify(mHardware, times(1)).initOffloadControl( any(OffloadHardwareInterface.ControlCallback.class)); any(OffloadHardwareInterface.ControlCallback.class)); Loading Loading
services/core/java/com/android/server/connectivity/tethering/OffloadController.java +3 −2 Original line number Original line Diff line number Diff line Loading @@ -142,8 +142,9 @@ public class OffloadController { } } private boolean isOffloadDisabled() { private boolean isOffloadDisabled() { // Defaults to |false| if not present. final int defaultDisposition = mHwInterface.getDefaultTetherOffloadDisabled(); return (Settings.Global.getInt(mContentResolver, TETHER_OFFLOAD_DISABLED, 0) != 0); return (Settings.Global.getInt( mContentResolver, TETHER_OFFLOAD_DISABLED, defaultDisposition) != 0); } } private boolean started() { private boolean started() { Loading
services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -35,6 +35,10 @@ import java.util.ArrayList; */ */ public class OffloadHardwareInterface { public class OffloadHardwareInterface { private static final String TAG = OffloadHardwareInterface.class.getSimpleName(); private static final String TAG = OffloadHardwareInterface.class.getSimpleName(); // Change this value to control whether tether offload is enabled or // disabled by default in the absence of an explicit Settings value. // See accompanying unittest to distinguish 0 from non-0 values. private static final int DEFAULT_TETHER_OFFLOAD_DISABLED = 0; private static final String NO_INTERFACE_NAME = ""; private static final String NO_INTERFACE_NAME = ""; private static final String NO_IPV4_ADDRESS = ""; private static final String NO_IPV4_ADDRESS = ""; private static final String NO_IPV4_GATEWAY = ""; private static final String NO_IPV4_GATEWAY = ""; Loading @@ -60,6 +64,10 @@ public class OffloadHardwareInterface { mLog = log.forSubComponent(TAG); mLog = log.forSubComponent(TAG); } } public int getDefaultTetherOffloadDisabled() { return DEFAULT_TETHER_OFFLOAD_DISABLED; } public boolean initOffloadConfig() { public boolean initOffloadConfig() { return configOffload(); return configOffload(); } } Loading
tests/net/java/com/android/server/connectivity/tethering/OffloadControllerTest.java +39 −1 Original line number Original line Diff line number Diff line Loading @@ -46,6 +46,7 @@ import com.android.internal.util.test.FakeSettingsProvider; import java.net.InetAddress; import java.net.InetAddress; import java.util.ArrayList; import java.util.ArrayList; import org.junit.After; import org.junit.Before; import org.junit.Before; import org.junit.runner.RunWith; import org.junit.runner.RunWith; import org.junit.Test; import org.junit.Test; Loading Loading @@ -73,6 +74,11 @@ public class OffloadControllerTest { mContentResolver = new MockContentResolver(mContext); mContentResolver = new MockContentResolver(mContext); mContentResolver.addProvider(Settings.AUTHORITY, new FakeSettingsProvider()); mContentResolver.addProvider(Settings.AUTHORITY, new FakeSettingsProvider()); when(mContext.getContentResolver()).thenReturn(mContentResolver); when(mContext.getContentResolver()).thenReturn(mContentResolver); FakeSettingsProvider.clearSettingsProvider(); } @After public void tearDown() throws Exception { FakeSettingsProvider.clearSettingsProvider(); } } private void setupFunctioningHardwareInterface() { private void setupFunctioningHardwareInterface() { Loading @@ -81,9 +87,14 @@ public class OffloadControllerTest { .thenReturn(true); .thenReturn(true); } } private void enableOffload() { Settings.Global.putInt(mContentResolver, TETHER_OFFLOAD_DISABLED, 0); } @Test @Test public void testNoSettingsValueAllowsStart() { public void testNoSettingsValueDefaultDisabledDoesNotStart() { setupFunctioningHardwareInterface(); setupFunctioningHardwareInterface(); when(mHardware.getDefaultTetherOffloadDisabled()).thenReturn(1); try { try { Settings.Global.getInt(mContentResolver, TETHER_OFFLOAD_DISABLED); Settings.Global.getInt(mContentResolver, TETHER_OFFLOAD_DISABLED); fail(); fail(); Loading @@ -94,6 +105,28 @@ public class OffloadControllerTest { offload.start(); offload.start(); final InOrder inOrder = inOrder(mHardware); final InOrder inOrder = inOrder(mHardware); inOrder.verify(mHardware, times(1)).getDefaultTetherOffloadDisabled(); inOrder.verify(mHardware, never()).initOffloadConfig(); inOrder.verify(mHardware, never()).initOffloadControl( any(OffloadHardwareInterface.ControlCallback.class)); inOrder.verifyNoMoreInteractions(); } @Test public void testNoSettingsValueDefaultEnabledDoesStart() { setupFunctioningHardwareInterface(); when(mHardware.getDefaultTetherOffloadDisabled()).thenReturn(0); try { Settings.Global.getInt(mContentResolver, TETHER_OFFLOAD_DISABLED); fail(); } catch (SettingNotFoundException expected) {} final OffloadController offload = new OffloadController(null, mHardware, mContentResolver, new SharedLog("test")); offload.start(); final InOrder inOrder = inOrder(mHardware); inOrder.verify(mHardware, times(1)).getDefaultTetherOffloadDisabled(); inOrder.verify(mHardware, times(1)).initOffloadConfig(); inOrder.verify(mHardware, times(1)).initOffloadConfig(); inOrder.verify(mHardware, times(1)).initOffloadControl( inOrder.verify(mHardware, times(1)).initOffloadControl( any(OffloadHardwareInterface.ControlCallback.class)); any(OffloadHardwareInterface.ControlCallback.class)); Loading @@ -110,6 +143,7 @@ public class OffloadControllerTest { offload.start(); offload.start(); final InOrder inOrder = inOrder(mHardware); final InOrder inOrder = inOrder(mHardware); inOrder.verify(mHardware, times(1)).getDefaultTetherOffloadDisabled(); inOrder.verify(mHardware, times(1)).initOffloadConfig(); inOrder.verify(mHardware, times(1)).initOffloadConfig(); inOrder.verify(mHardware, times(1)).initOffloadControl( inOrder.verify(mHardware, times(1)).initOffloadControl( any(OffloadHardwareInterface.ControlCallback.class)); any(OffloadHardwareInterface.ControlCallback.class)); Loading @@ -126,6 +160,7 @@ public class OffloadControllerTest { offload.start(); offload.start(); final InOrder inOrder = inOrder(mHardware); final InOrder inOrder = inOrder(mHardware); inOrder.verify(mHardware, times(1)).getDefaultTetherOffloadDisabled(); inOrder.verify(mHardware, never()).initOffloadConfig(); inOrder.verify(mHardware, never()).initOffloadConfig(); inOrder.verify(mHardware, never()).initOffloadControl(anyObject()); inOrder.verify(mHardware, never()).initOffloadControl(anyObject()); inOrder.verifyNoMoreInteractions(); inOrder.verifyNoMoreInteractions(); Loading @@ -134,11 +169,14 @@ public class OffloadControllerTest { @Test @Test public void testSetUpstreamLinkPropertiesWorking() throws Exception { public void testSetUpstreamLinkPropertiesWorking() throws Exception { setupFunctioningHardwareInterface(); setupFunctioningHardwareInterface(); enableOffload(); final OffloadController offload = final OffloadController offload = new OffloadController(null, mHardware, mContentResolver, new SharedLog("test")); new OffloadController(null, mHardware, mContentResolver, new SharedLog("test")); offload.start(); offload.start(); final InOrder inOrder = inOrder(mHardware); final InOrder inOrder = inOrder(mHardware); inOrder.verify(mHardware, times(1)).getDefaultTetherOffloadDisabled(); inOrder.verify(mHardware, times(1)).initOffloadConfig(); inOrder.verify(mHardware, times(1)).initOffloadConfig(); inOrder.verify(mHardware, times(1)).initOffloadControl( inOrder.verify(mHardware, times(1)).initOffloadControl( any(OffloadHardwareInterface.ControlCallback.class)); any(OffloadHardwareInterface.ControlCallback.class)); Loading