summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/view/inputmethod/InputMethodInfo.java2
-rw-r--r--services/core/java/com/android/server/connectivity/tethering/IPv6TetheringInterfaceServices.java8
-rw-r--r--services/net/java/android/net/ip/RouterAdvertisementDaemon.java2
-rw-r--r--services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java32
-rw-r--r--services/tests/servicestests/src/com/android/server/devicepolicy/DpmMockContext.java1
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