diff options
5 files changed, 17 insertions, 28 deletions
diff --git a/core/java/android/view/inputmethod/InputMethodInfo.java b/core/java/android/view/inputmethod/InputMethodInfo.java index 281babeb367a..661b52fd4366 100644 --- a/core/java/android/view/inputmethod/InputMethodInfo.java +++ b/core/java/android/view/inputmethod/InputMethodInfo.java @@ -213,7 +213,7 @@ public final class InputMethodInfo implements Parcelable { subtypes.add(subtype); } } - } catch (NameNotFoundException e) { + } catch (NameNotFoundException | IndexOutOfBoundsException | NumberFormatException e) { throw new XmlPullParserException( "Unable to create context for: " + si.packageName); } finally { diff --git a/services/core/java/com/android/server/connectivity/tethering/IPv6TetheringInterfaceServices.java b/services/core/java/com/android/server/connectivity/tethering/IPv6TetheringInterfaceServices.java index d087f903560a..edb4347f56a3 100644 --- a/services/core/java/com/android/server/connectivity/tethering/IPv6TetheringInterfaceServices.java +++ b/services/core/java/com/android/server/connectivity/tethering/IPv6TetheringInterfaceServices.java @@ -169,7 +169,9 @@ class IPv6TetheringInterfaceServices { // We need to be able to send unicast RAs, and clients might // like to ping the default router's link-local address. Note // that we never remove the link-local route from the network - // until Tethering disables tethering on the interface. + // until Tethering disables tethering on the interface. We + // only need to add the link-local prefix once, but in the + // event we add it more than once netd silently ignores EEXIST. addedPrefixes.add(LINK_LOCAL_PREFIX); } @@ -177,7 +179,9 @@ class IPv6TetheringInterfaceServices { final ArrayList<RouteInfo> toBeAdded = getLocalRoutesFor(addedPrefixes); try { // It's safe to call addInterfaceToLocalNetwork() even if - // the interface is already in the local_network. + // the interface is already in the local_network. Note also + // that adding routes that already exist does not cause an + // error (EEXIST is silently ignored). mNMService.addInterfaceToLocalNetwork(mIfName, toBeAdded); } catch (RemoteException e) { Log.e(TAG, "Failed to add IPv6 routes to local table: ", e); diff --git a/services/net/java/android/net/ip/RouterAdvertisementDaemon.java b/services/net/java/android/net/ip/RouterAdvertisementDaemon.java index a52cdcc98b9c..6802cffc0207 100644 --- a/services/net/java/android/net/ip/RouterAdvertisementDaemon.java +++ b/services/net/java/android/net/ip/RouterAdvertisementDaemon.java @@ -552,7 +552,7 @@ public class RouterAdvertisementDaemon { for (Inet6Address dns : dnses) { // NOTE: If the full of list DNS servers doesn't fit in the packet, // this code will cause a buffer overflow and the RA won't include - // include this instance of the option at all. + // this instance of the option at all. // // TODO: Consider looking at ra.remaining() to determine how many // DNS servers will fit, and adding only those. diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java index 3a2e946e617f..2d96bff29bd7 100644 --- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java +++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java @@ -27,7 +27,6 @@ import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.net.wifi.WifiInfo; import android.os.Build.VERSION_CODES; -import android.os.Build; import android.os.Bundle; import android.os.Process; import android.os.UserHandle; @@ -42,7 +41,6 @@ import android.util.Pair; import com.android.server.LocalServices; import com.android.server.SystemService; -import org.mockito.ArgumentCaptor; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; @@ -62,7 +60,6 @@ import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.times; -import static org.mockito.Mockito.validateMockitoUsage; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -454,8 +451,7 @@ public class DevicePolicyManagerTest extends DpmTestBase { .thenReturn(true); dpm.removeActiveAdmin(admin1); - - assertTrue(dpm.isRemovingAdmin(admin1, DpmMockContext.CALLER_USER_HANDLE)); + assertFalse(dpm.isAdminActiveAsUser(admin1, DpmMockContext.CALLER_USER_HANDLE)); } /** @@ -479,8 +475,7 @@ public class DevicePolicyManagerTest extends DpmTestBase { mContext.binder.callingUid = 1234567; dpms.removeActiveAdmin(admin1, DpmMockContext.CALLER_USER_HANDLE); - - assertTrue(dpm.isRemovingAdmin(admin1, DpmMockContext.CALLER_USER_HANDLE)); + assertFalse(dpm.isAdminActiveAsUser(admin1, DpmMockContext.CALLER_USER_HANDLE)); // TODO DO Still can't be removed in this case. } @@ -510,28 +505,18 @@ public class DevicePolicyManagerTest extends DpmTestBase { mContext.callerPermissions.clear(); dpm.removeActiveAdmin(admin1); - final ArgumentCaptor<BroadcastReceiver> brCap = - ArgumentCaptor.forClass(BroadcastReceiver.class); - - // Is removing now, but not removed yet. - assertTrue(dpm.isAdminActive(admin1)); - assertTrue(dpm.isRemovingAdmin(admin1, DpmMockContext.CALLER_USER_HANDLE)); - verify(mContext.spiedContext).sendOrderedBroadcastAsUser( MockUtils.checkIntentAction( DeviceAdminReceiver.ACTION_DEVICE_ADMIN_DISABLED), MockUtils.checkUserHandle(DpmMockContext.CALLER_USER_HANDLE), isNull(String.class), - brCap.capture(), + any(BroadcastReceiver.class), eq(dpms.mHandler), eq(Activity.RESULT_OK), isNull(String.class), isNull(Bundle.class)); - brCap.getValue().onReceive(mContext, null); - - assertFalse(dpm.isAdminActive(admin1)); - assertFalse(dpm.isRemovingAdmin(admin1, DpmMockContext.CALLER_USER_HANDLE)); + assertFalse(dpm.isAdminActiveAsUser(admin1, DpmMockContext.CALLER_USER_HANDLE)); // Again broadcast from saveSettingsLocked(). verify(mContext.spiedContext, times(2)).sendBroadcastAsUser( @@ -853,9 +838,7 @@ public class DevicePolicyManagerTest extends DpmTestBase { MockUtils.checkUserRestrictions() ); - assertTrue(dpm.isAdminActive(admin1)); - assertTrue(dpm.isRemovingAdmin(admin1, UserHandle.USER_SYSTEM)); - + assertFalse(dpm.isAdminActiveAsUser(admin1, UserHandle.USER_SYSTEM)); // TODO Check other calls. } @@ -945,7 +928,7 @@ public class DevicePolicyManagerTest extends DpmTestBase { // Check assertFalse(dpm.isProfileOwnerApp(admin1.getPackageName())); - assertTrue(dpm.isRemovingAdmin(admin1, DpmMockContext.CALLER_USER_HANDLE)); + assertFalse(dpm.isAdminActiveAsUser(admin1, DpmMockContext.CALLER_USER_HANDLE)); } public void testSetProfileOwner_failures() throws Exception { @@ -1477,7 +1460,7 @@ public class DevicePolicyManagerTest extends DpmTestBase { // Remove PO. dpm.clearProfileOwner(admin1); - + dpm.setActiveAdmin(admin1, false); // Test 4, Caller is DO now. assertTrue(dpm.setDeviceOwner(admin1, null, UserHandle.USER_SYSTEM)); @@ -1526,6 +1509,7 @@ public class DevicePolicyManagerTest extends DpmTestBase { // Remove PO and add DO. dpm.clearProfileOwner(admin1); + dpm.setActiveAdmin(admin1, false); assertTrue(dpm.setDeviceOwner(admin1, null, UserHandle.USER_SYSTEM)); // admin1 is DO. diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DpmMockContext.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DpmMockContext.java index f6e35f54f7d4..0783afc0dfd4 100644 --- a/services/tests/servicestests/src/com/android/server/devicepolicy/DpmMockContext.java +++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DpmMockContext.java @@ -527,6 +527,7 @@ public class DpmMockContext extends MockContext { int initialCode, String initialData, Bundle initialExtras) { spiedContext.sendOrderedBroadcastAsUser(intent, user, receiverPermission, resultReceiver, scheduler, initialCode, initialData, initialExtras); + resultReceiver.onReceive(spiedContext, intent); } @Override |