Loading services/core/java/com/android/server/connectivity/tethering/OffloadController.java +3 −2 Original line number Diff line number Diff line Loading @@ -142,8 +142,9 @@ public class OffloadController { } private boolean isOffloadDisabled() { // Defaults to |false| if not present. return (Settings.Global.getInt(mContentResolver, TETHER_OFFLOAD_DISABLED, 0) != 0); final int defaultDisposition = mHwInterface.getDefaultTetherOffloadDisabled(); return (Settings.Global.getInt( mContentResolver, TETHER_OFFLOAD_DISABLED, defaultDisposition) != 0); } private boolean started() { Loading services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java +8 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,10 @@ import java.util.ArrayList; */ public class OffloadHardwareInterface { 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_IPV4_ADDRESS = ""; private static final String NO_IPV4_GATEWAY = ""; Loading @@ -60,6 +64,10 @@ public class OffloadHardwareInterface { mLog = log.forSubComponent(TAG); } public int getDefaultTetherOffloadDisabled() { return DEFAULT_TETHER_OFFLOAD_DISABLED; } public boolean initOffloadConfig() { return configOffload(); } Loading tests/net/java/com/android/server/connectivity/tethering/OffloadControllerTest.java +44 −2 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ import com.android.internal.util.test.FakeSettingsProvider; import java.net.InetAddress; import java.util.ArrayList; import org.junit.After; import org.junit.Before; import org.junit.runner.RunWith; import org.junit.Test; Loading Loading @@ -73,6 +74,13 @@ public class OffloadControllerTest { mContentResolver = new MockContentResolver(mContext); mContentResolver.addProvider(Settings.AUTHORITY, new FakeSettingsProvider()); when(mContext.getContentResolver()).thenReturn(mContentResolver); // TODO: call this when available. // FakeSettingsProvider.clearSettingsProvider(); } @After public void tearDown() throws Exception { // TODO: call this when available. // FakeSettingsProvider.clearSettingsProvider(); } private void setupFunctioningHardwareInterface() { Loading @@ -81,9 +89,15 @@ public class OffloadControllerTest { .thenReturn(true); } @Test public void testNoSettingsValueAllowsStart() { private void enableOffload() { Settings.Global.putInt(mContentResolver, TETHER_OFFLOAD_DISABLED, 0); } // TODO: Restore when FakeSettingsProvider.clearSettingsProvider() is available. // @Test public void testNoSettingsValueDefaultDisabledDoesNotStart() { setupFunctioningHardwareInterface(); when(mHardware.getDefaultTetherOffloadDisabled()).thenReturn(1); try { Settings.Global.getInt(mContentResolver, TETHER_OFFLOAD_DISABLED); fail(); Loading @@ -94,6 +108,29 @@ public class OffloadControllerTest { offload.start(); 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(); } // TODO: Restore when FakeSettingsProvider.clearSettingsProvider() is available. // @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)).initOffloadControl( any(OffloadHardwareInterface.ControlCallback.class)); Loading @@ -110,6 +147,7 @@ public class OffloadControllerTest { offload.start(); final InOrder inOrder = inOrder(mHardware); inOrder.verify(mHardware, times(1)).getDefaultTetherOffloadDisabled(); inOrder.verify(mHardware, times(1)).initOffloadConfig(); inOrder.verify(mHardware, times(1)).initOffloadControl( any(OffloadHardwareInterface.ControlCallback.class)); Loading @@ -126,6 +164,7 @@ public class OffloadControllerTest { offload.start(); final InOrder inOrder = inOrder(mHardware); inOrder.verify(mHardware, times(1)).getDefaultTetherOffloadDisabled(); inOrder.verify(mHardware, never()).initOffloadConfig(); inOrder.verify(mHardware, never()).initOffloadControl(anyObject()); inOrder.verifyNoMoreInteractions(); Loading @@ -134,11 +173,14 @@ public class OffloadControllerTest { @Test public void testSetUpstreamLinkPropertiesWorking() throws Exception { setupFunctioningHardwareInterface(); enableOffload(); 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)).initOffloadControl( any(OffloadHardwareInterface.ControlCallback.class)); Loading Loading
services/core/java/com/android/server/connectivity/tethering/OffloadController.java +3 −2 Original line number Diff line number Diff line Loading @@ -142,8 +142,9 @@ public class OffloadController { } private boolean isOffloadDisabled() { // Defaults to |false| if not present. return (Settings.Global.getInt(mContentResolver, TETHER_OFFLOAD_DISABLED, 0) != 0); final int defaultDisposition = mHwInterface.getDefaultTetherOffloadDisabled(); return (Settings.Global.getInt( mContentResolver, TETHER_OFFLOAD_DISABLED, defaultDisposition) != 0); } private boolean started() { Loading
services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java +8 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,10 @@ import java.util.ArrayList; */ public class OffloadHardwareInterface { 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_IPV4_ADDRESS = ""; private static final String NO_IPV4_GATEWAY = ""; Loading @@ -60,6 +64,10 @@ public class OffloadHardwareInterface { mLog = log.forSubComponent(TAG); } public int getDefaultTetherOffloadDisabled() { return DEFAULT_TETHER_OFFLOAD_DISABLED; } public boolean initOffloadConfig() { return configOffload(); } Loading
tests/net/java/com/android/server/connectivity/tethering/OffloadControllerTest.java +44 −2 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ import com.android.internal.util.test.FakeSettingsProvider; import java.net.InetAddress; import java.util.ArrayList; import org.junit.After; import org.junit.Before; import org.junit.runner.RunWith; import org.junit.Test; Loading Loading @@ -73,6 +74,13 @@ public class OffloadControllerTest { mContentResolver = new MockContentResolver(mContext); mContentResolver.addProvider(Settings.AUTHORITY, new FakeSettingsProvider()); when(mContext.getContentResolver()).thenReturn(mContentResolver); // TODO: call this when available. // FakeSettingsProvider.clearSettingsProvider(); } @After public void tearDown() throws Exception { // TODO: call this when available. // FakeSettingsProvider.clearSettingsProvider(); } private void setupFunctioningHardwareInterface() { Loading @@ -81,9 +89,15 @@ public class OffloadControllerTest { .thenReturn(true); } @Test public void testNoSettingsValueAllowsStart() { private void enableOffload() { Settings.Global.putInt(mContentResolver, TETHER_OFFLOAD_DISABLED, 0); } // TODO: Restore when FakeSettingsProvider.clearSettingsProvider() is available. // @Test public void testNoSettingsValueDefaultDisabledDoesNotStart() { setupFunctioningHardwareInterface(); when(mHardware.getDefaultTetherOffloadDisabled()).thenReturn(1); try { Settings.Global.getInt(mContentResolver, TETHER_OFFLOAD_DISABLED); fail(); Loading @@ -94,6 +108,29 @@ public class OffloadControllerTest { offload.start(); 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(); } // TODO: Restore when FakeSettingsProvider.clearSettingsProvider() is available. // @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)).initOffloadControl( any(OffloadHardwareInterface.ControlCallback.class)); Loading @@ -110,6 +147,7 @@ public class OffloadControllerTest { offload.start(); final InOrder inOrder = inOrder(mHardware); inOrder.verify(mHardware, times(1)).getDefaultTetherOffloadDisabled(); inOrder.verify(mHardware, times(1)).initOffloadConfig(); inOrder.verify(mHardware, times(1)).initOffloadControl( any(OffloadHardwareInterface.ControlCallback.class)); Loading @@ -126,6 +164,7 @@ public class OffloadControllerTest { offload.start(); final InOrder inOrder = inOrder(mHardware); inOrder.verify(mHardware, times(1)).getDefaultTetherOffloadDisabled(); inOrder.verify(mHardware, never()).initOffloadConfig(); inOrder.verify(mHardware, never()).initOffloadControl(anyObject()); inOrder.verifyNoMoreInteractions(); Loading @@ -134,11 +173,14 @@ public class OffloadControllerTest { @Test public void testSetUpstreamLinkPropertiesWorking() throws Exception { setupFunctioningHardwareInterface(); enableOffload(); 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)).initOffloadControl( any(OffloadHardwareInterface.ControlCallback.class)); Loading