Merge "Use NotoSansCJK-Regular.ttc instead of separated font files."
diff --git a/api/current.txt b/api/current.txt
index 49c1272..8d174c3 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -20303,6 +20303,8 @@
field public static final java.lang.String MIMETYPE_TEXT_CEA_608 = "text/cea-608";
field public static final java.lang.String MIMETYPE_TEXT_VTT = "text/vtt";
field public static final java.lang.String MIMETYPE_VIDEO_AVC = "video/avc";
+ field public static final java.lang.String MIMETYPE_VIDEO_DOLBY_AVC = "video/dolby-avc";
+ field public static final java.lang.String MIMETYPE_VIDEO_DOLBY_HEVC = "video/dolby-hevc";
field public static final java.lang.String MIMETYPE_VIDEO_H263 = "video/3gpp";
field public static final java.lang.String MIMETYPE_VIDEO_HEVC = "video/hevc";
field public static final java.lang.String MIMETYPE_VIDEO_MPEG2 = "video/mpeg2";
@@ -28098,11 +28100,13 @@
method public boolean isSystemUser();
method public boolean isUserAGoat();
method public boolean isUserRunning(android.os.UserHandle);
- method public boolean isUserRunningAndLocked();
- method public boolean isUserRunningAndLocked(android.os.UserHandle);
- method public boolean isUserRunningAndUnlocked();
- method public boolean isUserRunningAndUnlocked(android.os.UserHandle);
+ method public deprecated boolean isUserRunningAndLocked();
+ method public deprecated boolean isUserRunningAndLocked(android.os.UserHandle);
+ method public deprecated boolean isUserRunningAndUnlocked();
+ method public deprecated boolean isUserRunningAndUnlocked(android.os.UserHandle);
method public boolean isUserRunningOrStopping(android.os.UserHandle);
+ method public boolean isUserUnlocked();
+ method public boolean isUserUnlocked(android.os.UserHandle);
method public deprecated boolean setRestrictionsChallenge(java.lang.String);
method public deprecated void setUserRestriction(java.lang.String, boolean);
method public deprecated void setUserRestrictions(android.os.Bundle);
diff --git a/api/system-current.txt b/api/system-current.txt
index 0fe65c3..15426c1 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -21594,6 +21594,8 @@
field public static final java.lang.String MIMETYPE_TEXT_CEA_608 = "text/cea-608";
field public static final java.lang.String MIMETYPE_TEXT_VTT = "text/vtt";
field public static final java.lang.String MIMETYPE_VIDEO_AVC = "video/avc";
+ field public static final java.lang.String MIMETYPE_VIDEO_DOLBY_AVC = "video/dolby-avc";
+ field public static final java.lang.String MIMETYPE_VIDEO_DOLBY_HEVC = "video/dolby-hevc";
field public static final java.lang.String MIMETYPE_VIDEO_H263 = "video/3gpp";
field public static final java.lang.String MIMETYPE_VIDEO_HEVC = "video/hevc";
field public static final java.lang.String MIMETYPE_VIDEO_MPEG2 = "video/mpeg2";
@@ -30092,11 +30094,13 @@
method public boolean isSystemUser();
method public boolean isUserAGoat();
method public boolean isUserRunning(android.os.UserHandle);
- method public boolean isUserRunningAndLocked();
- method public boolean isUserRunningAndLocked(android.os.UserHandle);
- method public boolean isUserRunningAndUnlocked();
- method public boolean isUserRunningAndUnlocked(android.os.UserHandle);
+ method public deprecated boolean isUserRunningAndLocked();
+ method public deprecated boolean isUserRunningAndLocked(android.os.UserHandle);
+ method public deprecated boolean isUserRunningAndUnlocked();
+ method public deprecated boolean isUserRunningAndUnlocked(android.os.UserHandle);
method public boolean isUserRunningOrStopping(android.os.UserHandle);
+ method public boolean isUserUnlocked();
+ method public boolean isUserUnlocked(android.os.UserHandle);
method public deprecated boolean setRestrictionsChallenge(java.lang.String);
method public deprecated void setUserRestriction(java.lang.String, boolean);
method public deprecated void setUserRestrictions(android.os.Bundle);
diff --git a/api/test-current.txt b/api/test-current.txt
index e343cfb..029073c 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -20303,6 +20303,8 @@
field public static final java.lang.String MIMETYPE_TEXT_CEA_608 = "text/cea-608";
field public static final java.lang.String MIMETYPE_TEXT_VTT = "text/vtt";
field public static final java.lang.String MIMETYPE_VIDEO_AVC = "video/avc";
+ field public static final java.lang.String MIMETYPE_VIDEO_DOLBY_AVC = "video/dolby-avc";
+ field public static final java.lang.String MIMETYPE_VIDEO_DOLBY_HEVC = "video/dolby-hevc";
field public static final java.lang.String MIMETYPE_VIDEO_H263 = "video/3gpp";
field public static final java.lang.String MIMETYPE_VIDEO_HEVC = "video/hevc";
field public static final java.lang.String MIMETYPE_VIDEO_MPEG2 = "video/mpeg2";
@@ -28098,11 +28100,13 @@
method public boolean isSystemUser();
method public boolean isUserAGoat();
method public boolean isUserRunning(android.os.UserHandle);
- method public boolean isUserRunningAndLocked();
- method public boolean isUserRunningAndLocked(android.os.UserHandle);
- method public boolean isUserRunningAndUnlocked();
- method public boolean isUserRunningAndUnlocked(android.os.UserHandle);
+ method public deprecated boolean isUserRunningAndLocked();
+ method public deprecated boolean isUserRunningAndLocked(android.os.UserHandle);
+ method public deprecated boolean isUserRunningAndUnlocked();
+ method public deprecated boolean isUserRunningAndUnlocked(android.os.UserHandle);
method public boolean isUserRunningOrStopping(android.os.UserHandle);
+ method public boolean isUserUnlocked();
+ method public boolean isUserUnlocked(android.os.UserHandle);
method public deprecated boolean setRestrictionsChallenge(java.lang.String);
method public deprecated void setUserRestriction(java.lang.String, boolean);
method public deprecated void setUserRestrictions(android.os.Bundle);
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index 6b900a8..93f137f 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -89,7 +89,6 @@
private final Context mContext;
private final IDevicePolicyManager mService;
- // TODO Use it everywhere.
private static final String REMOTE_EXCEPTION_MESSAGE =
"Failed to talk with device policy manager service";
@@ -841,7 +840,7 @@
try {
return mService.isAdminActive(admin, userId);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return false;
@@ -856,7 +855,7 @@
try {
return mService.isRemovingAdmin(admin, userId);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return false;
@@ -881,7 +880,7 @@
try {
return mService.getActiveAdmins(userId);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return null;
@@ -897,7 +896,7 @@
try {
return mService.packageHasActiveAdmins(packageName, myUserId());
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return false;
@@ -914,7 +913,7 @@
try {
mService.removeActiveAdmin(admin, myUserId());
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -933,7 +932,7 @@
try {
return mService.hasGrantedPolicy(admin, usesPolicy, myUserId());
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return false;
@@ -1034,7 +1033,7 @@
try {
mService.setPasswordQuality(admin, quality);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -1055,7 +1054,7 @@
try {
return mService.getPasswordQuality(admin, userHandle);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return PASSWORD_QUALITY_UNSPECIFIED;
@@ -1087,7 +1086,7 @@
try {
mService.setPasswordMinimumLength(admin, length);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -1108,7 +1107,7 @@
try {
return mService.getPasswordMinimumLength(admin, userHandle);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return 0;
@@ -1141,7 +1140,7 @@
try {
mService.setPasswordMinimumUpperCase(admin, length);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -1169,7 +1168,7 @@
try {
return mService.getPasswordMinimumUpperCase(admin, userHandle);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return 0;
@@ -1202,7 +1201,7 @@
try {
mService.setPasswordMinimumLowerCase(admin, length);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -1230,7 +1229,7 @@
try {
return mService.getPasswordMinimumLowerCase(admin, userHandle);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return 0;
@@ -1262,7 +1261,7 @@
try {
mService.setPasswordMinimumLetters(admin, length);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -1288,7 +1287,7 @@
try {
return mService.getPasswordMinimumLetters(admin, userHandle);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return 0;
@@ -1320,7 +1319,7 @@
try {
mService.setPasswordMinimumNumeric(admin, length);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -1347,7 +1346,7 @@
try {
return mService.getPasswordMinimumNumeric(admin, userHandle);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return 0;
@@ -1379,7 +1378,7 @@
try {
mService.setPasswordMinimumSymbols(admin, length);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -1405,7 +1404,7 @@
try {
return mService.getPasswordMinimumSymbols(admin, userHandle);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return 0;
@@ -1437,7 +1436,7 @@
try {
mService.setPasswordMinimumNonLetter(admin, length);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -1464,7 +1463,7 @@
try {
return mService.getPasswordMinimumNonLetter(admin, userHandle);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return 0;
@@ -1497,7 +1496,7 @@
try {
mService.setPasswordHistoryLength(admin, length);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -1529,7 +1528,7 @@
try {
mService.setPasswordExpirationTimeout(admin, timeout);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -1548,7 +1547,7 @@
try {
return mService.getPasswordExpirationTimeout(admin, myUserId());
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return 0;
@@ -1569,7 +1568,7 @@
try {
return mService.getPasswordExpiration(admin, myUserId());
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return 0;
@@ -1592,7 +1591,7 @@
try {
return mService.getPasswordHistoryLength(admin, userHandle);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return 0;
@@ -1625,7 +1624,7 @@
try {
return mService.isActivePasswordSufficient(myUserId());
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return false;
@@ -1644,7 +1643,7 @@
try {
return mService.getCurrentFailedPasswordAttempts(myUserId());
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return -1;
@@ -1661,7 +1660,7 @@
try {
return mService.getDoNotAskCredentialsOnBoot();
} catch (RemoteException e) {
- Log.w(TAG, "Failed to call getDoNotAskCredentialsOnBoot()", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return false;
@@ -1691,7 +1690,7 @@
try {
mService.setMaximumFailedPasswordsForWipe(admin, num);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -1713,7 +1712,7 @@
try {
return mService.getMaximumFailedPasswordsForWipe(admin, userHandle);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return 0;
@@ -1731,7 +1730,7 @@
try {
return mService.getProfileWithMinimumFailedPasswordsForWipe(userHandle);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return UserHandle.USER_NULL;
@@ -1796,7 +1795,7 @@
try {
return mService.resetPassword(password, flags);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return false;
@@ -1820,7 +1819,7 @@
try {
mService.setMaximumTimeToLock(admin, timeMs);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -1843,7 +1842,7 @@
try {
return mService.getMaximumTimeToLock(admin, userHandle);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return 0;
@@ -1862,7 +1861,7 @@
try {
mService.lockNow();
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -1899,7 +1898,7 @@
try {
mService.wipeData(flags);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -1969,7 +1968,7 @@
}
return mService.setGlobalProxy(admin, hostSpec, exclSpec);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return null;
@@ -1997,7 +1996,7 @@
try {
mService.setRecommendedGlobalProxy(admin, proxyInfo);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -2013,7 +2012,7 @@
try {
return mService.getGlobalProxyAdmin(myUserId());
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return null;
@@ -2143,7 +2142,7 @@
try {
return mService.setStorageEncryption(admin, encrypt);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return ENCRYPTION_STATUS_UNSUPPORTED;
@@ -2163,7 +2162,7 @@
try {
return mService.getStorageEncryption(admin, myUserId());
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return false;
@@ -2198,7 +2197,7 @@
try {
return mService.getStorageEncryptionStatus(userHandle);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return ENCRYPTION_STATUS_UNSUPPORTED;
@@ -2219,7 +2218,7 @@
try {
return mService.installCaCert(admin, certBuffer);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return false;
@@ -2240,7 +2239,7 @@
} catch (CertificateException e) {
Log.w(TAG, "Unable to parse certificate", e);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -2268,7 +2267,7 @@
}
}
} catch (RemoteException re) {
- Log.w(TAG, "Failed talking with device policy service", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
return certs;
@@ -2287,7 +2286,7 @@
mService.uninstallCaCerts(admin, new TrustedCertificateStore().userAliases()
.toArray(new String[0]));
} catch (RemoteException re) {
- Log.w(TAG, "Failed talking with device policy service", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
}
@@ -2305,7 +2304,7 @@
mService.enforceCanManageCaCerts(admin);
return getCaCertAlias(certBuffer) != null;
} catch (RemoteException re) {
- Log.w(TAG, "Failed talking with device policy service", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
} catch (CertificateException ce) {
Log.w(TAG, "Could not parse certificate", ce);
}
@@ -2333,7 +2332,7 @@
.getKeySpec(privKey, PKCS8EncodedKeySpec.class).getEncoded();
return mService.installKeyPair(admin, pkcs8Key, pemCert, alias);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
} catch (NoSuchAlgorithmException | InvalidKeySpecException e) {
Log.w(TAG, "Failed to obtain private key material", e);
} catch (CertificateException | IOException e) {
@@ -2391,7 +2390,7 @@
try {
mService.setCertInstallerPackage(admin, installerPackage);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -2409,7 +2408,7 @@
try {
return mService.getCertInstallerPackage(admin);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return null;
@@ -2434,7 +2433,7 @@
try {
mService.setCameraDisabled(admin, disabled);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -2455,7 +2454,7 @@
try {
return mService.getCameraDisabled(admin, userHandle);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return false;
@@ -2492,7 +2491,7 @@
try {
mService.setScreenCaptureDisabled(admin, disabled);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -2513,7 +2512,7 @@
try {
return mService.getScreenCaptureDisabled(admin, userHandle);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return false;
@@ -2536,7 +2535,7 @@
try {
mService.setAutoTimeRequired(admin, required);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -2549,7 +2548,7 @@
try {
return mService.getAutoTimeRequired();
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return false;
@@ -2590,7 +2589,7 @@
try {
mService.setKeyguardDisabledFeatures(admin, which);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -2613,7 +2612,7 @@
try {
return mService.getKeyguardDisabledFeatures(admin, userHandle);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return KEYGUARD_DISABLE_FEATURES_NONE;
@@ -2628,7 +2627,7 @@
try {
mService.setActiveAdmin(policyReceiver, refreshing, userHandle);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -2659,10 +2658,7 @@
try {
return new DeviceAdminInfo(mContext, ri);
- } catch (XmlPullParserException e) {
- Log.w(TAG, "Unable to parse device policy " + cn, e);
- return null;
- } catch (IOException e) {
+ } catch (XmlPullParserException | IOException e) {
Log.w(TAG, "Unable to parse device policy " + cn, e);
return null;
}
@@ -2676,7 +2672,7 @@
try {
mService.getRemoveWarning(admin, result, myUserId());
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -2691,7 +2687,7 @@
mService.setActivePasswordState(quality, length, letters, uppercase, lowercase,
numbers, symbols, nonletter, userHandle);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -2704,7 +2700,7 @@
try {
mService.reportFailedPasswordAttempt(userHandle);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -2717,7 +2713,7 @@
try {
mService.reportSuccessfulPasswordAttempt(userHandle);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -2770,7 +2766,7 @@
try {
return mService.setDeviceOwner(who, ownerName, userId);
} catch (RemoteException re) {
- Log.w(TAG, "Failed to set device owner");
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
return false;
@@ -2852,7 +2848,7 @@
try {
return mService.getDeviceOwnerComponent(callingUserOnly);
} catch (RemoteException re) {
- Log.w(TAG, REMOTE_EXCEPTION_MESSAGE);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
return null;
@@ -2871,7 +2867,7 @@
try {
return mService.getDeviceOwnerUserId();
} catch (RemoteException re) {
- Log.w(TAG, REMOTE_EXCEPTION_MESSAGE);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
return UserHandle.USER_NULL;
@@ -2891,7 +2887,7 @@
try {
mService.clearDeviceOwner(packageName);
} catch (RemoteException re) {
- Log.w(TAG, "Failed to clear device owner");
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
}
@@ -2933,7 +2929,7 @@
try {
return mService.getDeviceOwnerName();
} catch (RemoteException re) {
- Log.w(TAG, REMOTE_EXCEPTION_MESSAGE);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
return null;
@@ -2986,7 +2982,6 @@
mService.setActiveAdmin(admin, false, myUserId);
return mService.setProfileOwner(admin, ownerName, myUserId);
} catch (RemoteException re) {
- Log.w(TAG, "Failed to set profile owner " + re);
throw new IllegalArgumentException("Couldn't set profile owner.", re);
}
}
@@ -3008,7 +3003,7 @@
try {
mService.clearProfileOwner(admin);
} catch (RemoteException re) {
- Log.w(TAG, "Failed to clear profile owner " + admin + re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
}
@@ -3022,7 +3017,7 @@
try {
return mService.hasUserSetupCompleted();
} catch (RemoteException re) {
- Log.w(TAG, "Failed to check whether user setup has completed");
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
return true;
@@ -3053,7 +3048,7 @@
}
return mService.setProfileOwner(admin, ownerName, userHandle);
} catch (RemoteException re) {
- Log.w(TAG, "Failed to set profile owner", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
throw new IllegalArgumentException("Couldn't set profile owner.", re);
}
}
@@ -3076,7 +3071,7 @@
try {
return mService.setDeviceOwnerLockScreenInfo(admin, info);
} catch (RemoteException re) {
- Log.w(TAG, "Failed talking with device policy service", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
return false;
@@ -3090,7 +3085,7 @@
try {
return mService.getDeviceOwnerLockScreenInfo();
} catch (RemoteException re) {
- Log.w(TAG, "Failed talking with device policy service", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
return null;
@@ -3109,7 +3104,7 @@
try {
mService.setProfileEnabled(admin);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -3130,7 +3125,7 @@
try {
mService.setProfileName(admin, profileName);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -3151,7 +3146,7 @@
return profileOwner != null
&& profileOwner.getPackageName().equals(packageName);
} catch (RemoteException re) {
- Log.w(TAG, "Failed to check profile owner");
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
return false;
@@ -3177,7 +3172,7 @@
try {
return mService.getProfileOwner(userId);
} catch (RemoteException re) {
- Log.w(TAG, "Failed to get profile owner");
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
throw new IllegalArgumentException(
"Requested profile owner for invalid userId", re);
}
@@ -3196,7 +3191,7 @@
try {
return mService.getProfileOwnerName(Process.myUserHandle().getIdentifier());
} catch (RemoteException re) {
- Log.w(TAG, "Failed to get profile owner");
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
throw new IllegalArgumentException(
"Requested profile owner for invalid userId", re);
}
@@ -3217,7 +3212,7 @@
try {
return mService.getProfileOwnerName(userId);
} catch (RemoteException re) {
- Log.w(TAG, "Failed to get profile owner");
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
throw new IllegalArgumentException(
"Requested profile owner for invalid userId", re);
}
@@ -3248,7 +3243,7 @@
try {
mService.addPersistentPreferredActivity(admin, filter, activity);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -3269,7 +3264,7 @@
try {
mService.clearPackagePersistentPreferredActivities(admin, packageName);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -3309,7 +3304,7 @@
try {
mService.setApplicationRestrictions(admin, packageName, settings);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -3339,7 +3334,7 @@
try {
mService.setTrustAgentConfiguration(admin, target, configuration);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -3370,7 +3365,7 @@
try {
return mService.getTrustAgentConfiguration(admin, agent, userHandle);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return new ArrayList<PersistableBundle>(); // empty list
@@ -3391,7 +3386,7 @@
try {
mService.setCrossProfileCallerIdDisabled(admin, disabled);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -3410,7 +3405,7 @@
try {
return mService.getCrossProfileCallerIdDisabled(admin);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return false;
@@ -3427,7 +3422,7 @@
try {
return mService.getCrossProfileCallerIdDisabledForUser(userHandle.getIdentifier());
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return false;
@@ -3444,7 +3439,7 @@
mService.startManagedQuickContact(
actualLookupKey, actualContactId, directoryId, originalIntent);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -3478,7 +3473,7 @@
try {
mService.setBluetoothContactSharingDisabled(admin, disabled);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -3500,7 +3495,7 @@
try {
return mService.getBluetoothContactSharingDisabled(admin);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return true;
@@ -3520,7 +3515,7 @@
return mService.getBluetoothContactSharingDisabledForUser(userHandle
.getIdentifier());
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return true;
@@ -3542,7 +3537,7 @@
try {
mService.addCrossProfileIntentFilter(admin, filter, flags);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -3558,7 +3553,7 @@
try {
mService.clearCrossProfileIntentFilters(admin);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -3590,7 +3585,7 @@
try {
return mService.setPermittedAccessibilityServices(admin, packageNames);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return false;
@@ -3610,7 +3605,7 @@
try {
return mService.getPermittedAccessibilityServices(admin);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return null;
@@ -3634,7 +3629,7 @@
try {
return mService.getPermittedAccessibilityServicesForUser(userId);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return null;
@@ -3668,7 +3663,7 @@
try {
return mService.setPermittedInputMethods(admin, packageNames);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return false;
@@ -3689,7 +3684,7 @@
try {
return mService.getPermittedInputMethods(admin);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return null;
@@ -3712,7 +3707,7 @@
try {
return mService.getPermittedInputMethodsForCurrentUser();
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return null;
@@ -3732,7 +3727,7 @@
try {
return mService.getKeepUninstalledPackages(admin);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return null;
@@ -3755,7 +3750,7 @@
try {
mService.setKeepUninstalledPackages(admin, packageNames);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -3779,7 +3774,7 @@
try {
return mService.createUser(admin, name);
} catch (RemoteException re) {
- Log.w(TAG, "Could not create a user", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
return null;
}
@@ -3818,7 +3813,7 @@
return mService.createAndInitializeUser(admin, name, ownerName, profileOwnerComponent,
adminExtras);
} catch (RemoteException re) {
- Log.w(TAG, "Could not create a user", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
return null;
}
@@ -3835,7 +3830,7 @@
try {
return mService.removeUser(admin, userHandle);
} catch (RemoteException re) {
- Log.w(TAG, "Could not remove user ", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
return false;
}
}
@@ -3853,7 +3848,7 @@
try {
return mService.switchUser(admin, userHandle);
} catch (RemoteException re) {
- Log.w(TAG, "Could not switch user ", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
return false;
}
}
@@ -3876,7 +3871,7 @@
try {
return mService.getApplicationRestrictions(admin, packageName);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return null;
@@ -3898,7 +3893,7 @@
try {
mService.setUserRestriction(admin, key, true);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -3919,7 +3914,7 @@
try {
mService.setUserRestriction(admin, key, false);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -3946,7 +3941,7 @@
try {
ret = mService.getUserRestrictions(admin, userHandle);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return ret == null ? new Bundle() : ret;
@@ -3968,7 +3963,7 @@
try {
return mService.setApplicationHidden(admin, packageName, hidden);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return false;
@@ -3986,7 +3981,7 @@
try {
return mService.isApplicationHidden(admin, packageName);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return false;
@@ -4004,7 +3999,7 @@
try {
mService.enableSystemApp(admin, packageName);
} catch (RemoteException e) {
- Log.w(TAG, "Failed to install package: " + packageName);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -4023,7 +4018,7 @@
try {
return mService.enableSystemAppWithIntent(admin, intent);
} catch (RemoteException e) {
- Log.w(TAG, "Failed to install packages matching filter: " + intent);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return 0;
@@ -4050,7 +4045,7 @@
try {
mService.setAccountManagementDisabled(admin, accountType, disabled);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -4078,7 +4073,7 @@
try {
return mService.getAccountTypesWithManagementDisabledAsUser(userId);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
@@ -4109,7 +4104,7 @@
try {
mService.setLockTaskPackages(admin, packages);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -4125,7 +4120,7 @@
try {
return mService.getLockTaskPackages(admin);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return null;
@@ -4141,7 +4136,7 @@
try {
return mService.isLockTaskPermitted(pkg);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
return false;
@@ -4188,7 +4183,7 @@
try {
mService.setGlobalSetting(admin, setting, value);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -4216,7 +4211,7 @@
try {
mService.setSecureSetting(admin, setting, value);
} catch (RemoteException e) {
- Log.w(TAG, "Failed talking with device policy service", e);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, e);
}
}
}
@@ -4237,7 +4232,7 @@
try {
mService.setRestrictionsProvider(admin, provider);
} catch (RemoteException re) {
- Log.w(TAG, "Failed to set permission provider on device policy service");
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
}
@@ -4253,7 +4248,7 @@
try {
mService.setMasterVolumeMuted(admin, on);
} catch (RemoteException re) {
- Log.w(TAG, "Failed to setMasterMute on device policy service");
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
}
@@ -4269,7 +4264,7 @@
try {
return mService.isMasterVolumeMuted(admin);
} catch (RemoteException re) {
- Log.w(TAG, "Failed to get isMasterMute on device policy service");
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
return false;
@@ -4289,7 +4284,7 @@
try {
mService.setUninstallBlocked(admin, packageName, uninstallBlocked);
} catch (RemoteException re) {
- Log.w(TAG, "Failed to call block uninstall on device policy service");
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
}
@@ -4313,7 +4308,7 @@
try {
return mService.isUninstallBlocked(admin, packageName);
} catch (RemoteException re) {
- Log.w(TAG, "Failed to call block uninstall on device policy service");
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
return false;
@@ -4341,7 +4336,7 @@
try {
return mService.addCrossProfileWidgetProvider(admin, packageName);
} catch (RemoteException re) {
- Log.w(TAG, "Error calling addCrossProfileWidgetProvider", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
return false;
@@ -4368,7 +4363,7 @@
try {
return mService.removeCrossProfileWidgetProvider(admin, packageName);
} catch (RemoteException re) {
- Log.w(TAG, "Error calling removeCrossProfileWidgetProvider", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
return false;
@@ -4392,7 +4387,7 @@
return providers;
}
} catch (RemoteException re) {
- Log.w(TAG, "Error calling getCrossProfileWidgetProviders", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
return Collections.emptyList();
@@ -4408,7 +4403,7 @@
try {
mService.setUserIcon(admin, icon);
} catch (RemoteException re) {
- Log.w(TAG, "Could not set the user icon ", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
@@ -4428,7 +4423,7 @@
try {
mService.setSystemUpdatePolicy(admin, policy);
} catch (RemoteException re) {
- Log.w(TAG, "Error calling setSystemUpdatePolicy", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
}
@@ -4443,7 +4438,7 @@
try {
return mService.getSystemUpdatePolicy();
} catch (RemoteException re) {
- Log.w(TAG, "Error calling getSystemUpdatePolicy", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
return null;
@@ -4467,7 +4462,7 @@
try {
return mService.setKeyguardDisabled(admin, disabled);
} catch (RemoteException re) {
- Log.w(TAG, "Failed talking with device policy service", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
return false;
}
}
@@ -4487,7 +4482,7 @@
try {
return mService.setStatusBarDisabled(admin, disabled);
} catch (RemoteException re) {
- Log.w(TAG, "Failed talking with device policy service", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
return false;
}
}
@@ -4507,7 +4502,7 @@
try {
mService.notifyPendingSystemUpdate(updateReceivedTime);
} catch (RemoteException re) {
- Log.w(TAG, "Could not notify device owner about pending system update", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
}
@@ -4533,7 +4528,7 @@
try {
mService.setPermissionPolicy(admin, policy);
} catch (RemoteException re) {
- Log.w(TAG, "Failed talking with device policy service", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
}
}
@@ -4584,7 +4579,7 @@
try {
return mService.setPermissionGrantState(admin, packageName, permission, grantState);
} catch (RemoteException re) {
- Log.w(TAG, "Failed talking with device policy service", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
return false;
}
}
@@ -4611,7 +4606,7 @@
try {
return mService.getPermissionGrantState(admin, packageName, permission);
} catch (RemoteException re) {
- Log.w(TAG, "Failed talking with device policy service", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
return PERMISSION_GRANT_STATE_DEFAULT;
}
}
@@ -4630,7 +4625,7 @@
try {
return mService.isProvisioningAllowed(action);
} catch (RemoteException re) {
- Log.w(TAG, "Failed talking with device policy service", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
return false;
}
}
@@ -4647,7 +4642,7 @@
try {
return mService.isManagedProfile(admin);
} catch (RemoteException re) {
- Log.w(TAG, "Failed talking with device policy service", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
return false;
}
}
@@ -4663,7 +4658,7 @@
try {
return mService.isSystemOnlyUser(admin);
} catch (RemoteException re) {
- Log.w(TAG, "Failed talking with device policy service", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
return false;
}
}
@@ -4680,7 +4675,7 @@
try {
return mService.getWifiMacAddress();
} catch (RemoteException re) {
- Log.w(TAG, "Failed talking with device policy service", re);
+ Log.w(TAG, REMOTE_EXCEPTION_MESSAGE, re);
return null;
}
}
diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java
index 54bfca3..eca2c3b 100644
--- a/core/java/android/os/Process.java
+++ b/core/java/android/os/Process.java
@@ -144,6 +144,12 @@
public static final int SHARED_RELRO_UID = 1037;
/**
+ * Defines the UID/GID for the audioserver process.
+ * @hide
+ */
+ public static final int AUDIOSERVER_UID = 1041;
+
+ /**
* Defines the start of a range of UIDs (and GIDs), going from this
* number to {@link #LAST_APPLICATION_UID} that are reserved for assigning
* to applications.
diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java
index 00a874b..1f16c4a 100644
--- a/core/java/android/os/UserManager.java
+++ b/core/java/android/os/UserManager.java
@@ -781,6 +781,7 @@
* pattern or PIN), and credential-encrypted private app data storage is
* available.
*/
+ @Deprecated
public boolean isUserRunningAndLocked() {
return isUserRunningAndLocked(Process.myUserHandle());
}
@@ -793,6 +794,7 @@
*
* @param user to retrieve the unlocked state for.
*/
+ @Deprecated
public boolean isUserRunningAndLocked(UserHandle user) {
try {
return ActivityManagerNative.getDefault().isUserRunning(
@@ -808,6 +810,7 @@
* pattern or PIN), and credential-encrypted private app data storage is
* available.
*/
+ @Deprecated
public boolean isUserRunningAndUnlocked() {
return isUserRunningAndUnlocked(Process.myUserHandle());
}
@@ -820,6 +823,7 @@
*
* @param user to retrieve the unlocked state for.
*/
+ @Deprecated
public boolean isUserRunningAndUnlocked(UserHandle user) {
try {
return ActivityManagerNative.getDefault().isUserRunning(
@@ -830,6 +834,33 @@
}
/**
+ * Return whether the calling user is running in an "unlocked" state. A user
+ * is unlocked only after they've entered their credentials (such as a lock
+ * pattern or PIN), and credential-encrypted private app data storage is
+ * available.
+ */
+ public boolean isUserUnlocked() {
+ return isUserUnlocked(Process.myUserHandle());
+ }
+
+ /**
+ * Return whether the given user is running in an "unlocked" state. A user
+ * is unlocked only after they've entered their credentials (such as a lock
+ * pattern or PIN), and credential-encrypted private app data storage is
+ * available.
+ *
+ * @param user to retrieve the unlocked state for.
+ */
+ public boolean isUserUnlocked(UserHandle user) {
+ try {
+ return ActivityManagerNative.getDefault().isUserRunning(
+ user.getIdentifier(), ActivityManager.FLAG_AND_UNLOCKED);
+ } catch (RemoteException e) {
+ return false;
+ }
+ }
+
+ /**
* Returns the UserInfo object describing a specific user.
* Requires {@link android.Manifest.permission#MANAGE_USERS} permission.
* @param userHandle the user handle of the user whose information is being requested.
diff --git a/core/java/android/security/net/config/ApplicationConfig.java b/core/java/android/security/net/config/ApplicationConfig.java
index b627641..71d9d5d 100644
--- a/core/java/android/security/net/config/ApplicationConfig.java
+++ b/core/java/android/security/net/config/ApplicationConfig.java
@@ -68,7 +68,7 @@
*/
public NetworkSecurityConfig getConfigForHostname(String hostname) {
ensureInitialized();
- if (hostname.isEmpty() || mConfigs == null) {
+ if (hostname == null || hostname.isEmpty() || mConfigs == null) {
return mDefaultConfig;
}
if (hostname.charAt(0) == '.') {
diff --git a/data/etc/platform.xml b/data/etc/platform.xml
index 51019cc..b4f88c33 100644
--- a/data/etc/platform.xml
+++ b/data/etc/platform.xml
@@ -106,6 +106,7 @@
</permission>
<permission name="android.permission.ACCESS_FM_RADIO" >
+ <!-- /dev/fm is gid media, not audio -->
<group gid="media" />
</permission>
@@ -128,6 +129,12 @@
<assign-permission name="android.permission.UPDATE_APP_OPS_STATS" uid="media" />
<assign-permission name="android.permission.GET_PROCESS_STATE_AND_OOM_SCORE" uid="media" />
+ <assign-permission name="android.permission.MODIFY_AUDIO_SETTINGS" uid="audioserver" />
+ <assign-permission name="android.permission.ACCESS_SURFACE_FLINGER" uid="audioserver" />
+ <assign-permission name="android.permission.WAKE_LOCK" uid="audioserver" />
+ <assign-permission name="android.permission.UPDATE_DEVICE_STATS" uid="audioserver" />
+ <assign-permission name="android.permission.UPDATE_APP_OPS_STATS" uid="audioserver" />
+
<assign-permission name="android.permission.ACCESS_SURFACE_FLINGER" uid="graphics" />
<!-- This is a list of all the libraries available for application
diff --git a/media/java/android/media/MediaCodecInfo.java b/media/java/android/media/MediaCodecInfo.java
index 4101935..e6bc8f1 100644
--- a/media/java/android/media/MediaCodecInfo.java
+++ b/media/java/android/media/MediaCodecInfo.java
@@ -1735,7 +1735,8 @@
CodecProfileLevel[] profileLevels = mParent.profileLevels;
String mime = mParent.getMimeType();
- if (mime.equalsIgnoreCase(MediaFormat.MIMETYPE_VIDEO_AVC)) {
+ if (mime.equalsIgnoreCase(MediaFormat.MIMETYPE_VIDEO_AVC) ||
+ mime.equalsIgnoreCase(MediaFormat.MIMETYPE_VIDEO_DOLBY_AVC)) {
maxBlocks = 99;
maxBlocksPerSecond = 1485;
maxBps = 64000;
@@ -2089,7 +2090,8 @@
applyMacroBlockLimits(Short.MAX_VALUE, Short.MAX_VALUE,
maxBlocks, maxBlocksPerSecond, blockSize, blockSize,
1 /* widthAlignment */, 1 /* heightAlignment */);
- } else if (mime.equalsIgnoreCase(MediaFormat.MIMETYPE_VIDEO_HEVC)) {
+ } else if (mime.equalsIgnoreCase(MediaFormat.MIMETYPE_VIDEO_HEVC) ||
+ mime.equalsIgnoreCase(MediaFormat.MIMETYPE_VIDEO_DOLBY_HEVC)) {
maxBlocks = 36864;
maxBlocksPerSecond = maxBlocks * 15;
maxBps = 128000;
diff --git a/media/java/android/media/MediaFormat.java b/media/java/android/media/MediaFormat.java
index b2fa0ac..a102e51 100644
--- a/media/java/android/media/MediaFormat.java
+++ b/media/java/android/media/MediaFormat.java
@@ -92,6 +92,8 @@
public static final String MIMETYPE_VIDEO_H263 = "video/3gpp";
public static final String MIMETYPE_VIDEO_MPEG2 = "video/mpeg2";
public static final String MIMETYPE_VIDEO_RAW = "video/raw";
+ public static final String MIMETYPE_VIDEO_DOLBY_AVC = "video/dolby-avc";
+ public static final String MIMETYPE_VIDEO_DOLBY_HEVC = "video/dolby-hevc";
public static final String MIMETYPE_AUDIO_AMR_NB = "audio/3gpp";
public static final String MIMETYPE_AUDIO_AMR_WB = "audio/amr-wb";
diff --git a/packages/Shell/src/com/android/shell/BugreportProgressService.java b/packages/Shell/src/com/android/shell/BugreportProgressService.java
index b604768..e902589 100644
--- a/packages/Shell/src/com/android/shell/BugreportProgressService.java
+++ b/packages/Shell/src/com/android/shell/BugreportProgressService.java
@@ -91,7 +91,7 @@
* </ol>
*/
public class BugreportProgressService extends Service {
- private static final String TAG = "Shell";
+ static final String TAG = "Shell";
private static final boolean DEBUG = false;
private static final String AUTHORITY = "com.android.shell";
diff --git a/packages/Shell/src/com/android/shell/BugreportReceiver.java b/packages/Shell/src/com/android/shell/BugreportReceiver.java
index 5133162..b818343 100644
--- a/packages/Shell/src/com/android/shell/BugreportReceiver.java
+++ b/packages/Shell/src/com/android/shell/BugreportReceiver.java
@@ -19,6 +19,7 @@
import static com.android.shell.BugreportProgressService.EXTRA_BUGREPORT;
import static com.android.shell.BugreportProgressService.EXTRA_ORIGINAL_INTENT;
import static com.android.shell.BugreportProgressService.INTENT_BUGREPORT_FINISHED;
+import static com.android.shell.BugreportProgressService.TAG;
import static com.android.shell.BugreportProgressService.getFileExtra;
import java.io.File;
@@ -29,6 +30,7 @@
import android.os.AsyncTask;
import android.os.FileUtils;
import android.text.format.DateUtils;
+import android.util.Log;
/**
* Receiver that handles finished bugreports, usually by attaching them to an
@@ -63,6 +65,10 @@
return;
}
final File bugreportFile = getFileExtra(intent, EXTRA_BUGREPORT);
+ if (bugreportFile == null || !bugreportFile.exists()) {
+ Log.e(TAG, "Not deleting old files because file " + bugreportFile + " doesn't exist");
+ return;
+ }
final PendingResult result = goAsync();
new AsyncTask<Void, Void, Void>() {
@Override
diff --git a/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java b/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java
index cd0fcfe..6b6b0da 100644
--- a/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java
+++ b/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.java
@@ -29,6 +29,7 @@
import java.io.BufferedOutputStream;
import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
+import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -45,6 +46,7 @@
import android.app.Instrumentation;
import android.app.NotificationManager;
import android.content.Context;
+import android.content.ContextWrapper;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
@@ -82,16 +84,18 @@
// Timeout for UI operations, in milliseconds.
private static final int TIMEOUT = (int) BugreportProgressService.POLLING_FREQUENCY * 4;
- private static final String ROOT_DIR = "/data/data/com.android.shell/files/bugreports";
+ private static final String BUGREPORTS_DIR = "bugreports";
private static final String BUGREPORT_FILE = "test_bugreport.txt";
private static final String ZIP_FILE = "test_bugreport.zip";
- private static final String PLAIN_TEXT_PATH = ROOT_DIR + "/" + BUGREPORT_FILE;
- private static final String ZIP_PATH = ROOT_DIR + "/" + ZIP_FILE;
- private static final String SCREENSHOT_PATH = ROOT_DIR + "/test_screenshot.png";
+ private static final String SCREENSHOT_FILE = "test_screenshot.png";
private static final String BUGREPORT_CONTENT = "Dump, might as well dump!\n";
private static final String SCREENSHOT_CONTENT = "A picture is worth a thousand words!\n";
+ private String mPlainTextPath;
+ private String mZipPath;
+ private String mScreenshotPath;
+
private Context mContext;
private UiBot mUiBot;
private CustomActionSendMultipleListener mListener;
@@ -102,6 +106,9 @@
mContext = instrumentation.getTargetContext();
mUiBot = new UiBot(UiDevice.getInstance(instrumentation), TIMEOUT);
mListener = ActionSendMultipleConsumerActivity.getListener(mContext);
+ mPlainTextPath = getPath(BUGREPORT_FILE);
+ mZipPath = getPath(ZIP_FILE);
+ mScreenshotPath = getPath(SCREENSHOT_FILE);
cancelExistingNotifications();
BugreportPrefs.setWarningState(mContext, BugreportPrefs.STATE_HIDE);
}
@@ -129,9 +136,9 @@
SystemProperties.set("dumpstate.42.max", "2000");
assertProgressNotification(name, "25.00%");
- createTextFile(PLAIN_TEXT_PATH, BUGREPORT_CONTENT);
- createTextFile(SCREENSHOT_PATH, SCREENSHOT_CONTENT);
- Bundle extras = sendBugreportFinishedIntent(42, PLAIN_TEXT_PATH, SCREENSHOT_PATH);
+ createTextFile(mPlainTextPath, BUGREPORT_CONTENT);
+ createTextFile(mScreenshotPath, SCREENSHOT_CONTENT);
+ Bundle extras = sendBugreportFinishedIntent(42, mPlainTextPath, mScreenshotPath);
assertActionSendMultiple(extras, BUGREPORT_CONTENT, SCREENSHOT_CONTENT);
String service = BugreportProgressService.class.getName();
@@ -143,9 +150,9 @@
BugreportPrefs.setWarningState(mContext, BugreportPrefs.STATE_SHOW);
// Send notification and click on share.
- createTextFile(PLAIN_TEXT_PATH, BUGREPORT_CONTENT);
+ createTextFile(mPlainTextPath, BUGREPORT_CONTENT);
Intent intent = new Intent(INTENT_BUGREPORT_FINISHED);
- intent.putExtra(EXTRA_BUGREPORT, PLAIN_TEXT_PATH);
+ intent.putExtra(EXTRA_BUGREPORT, mPlainTextPath);
mContext.sendBroadcast(intent);
mUiBot.clickOnNotification(mContext.getString(R.string.bugreport_finished_title));
@@ -169,28 +176,28 @@
}
public void testBugreportFinished_plainBugreportAndScreenshot() throws Exception {
- createTextFile(PLAIN_TEXT_PATH, BUGREPORT_CONTENT);
- createTextFile(SCREENSHOT_PATH, SCREENSHOT_CONTENT);
- Bundle extras = sendBugreportFinishedIntent(PLAIN_TEXT_PATH, SCREENSHOT_PATH);
+ createTextFile(mPlainTextPath, BUGREPORT_CONTENT);
+ createTextFile(mScreenshotPath, SCREENSHOT_CONTENT);
+ Bundle extras = sendBugreportFinishedIntent(mPlainTextPath, mScreenshotPath);
assertActionSendMultiple(extras, BUGREPORT_CONTENT, SCREENSHOT_CONTENT);
}
public void testBugreportFinished_zippedBugreportAndScreenshot() throws Exception {
- createZipFile(ZIP_PATH, BUGREPORT_FILE, BUGREPORT_CONTENT);
- createTextFile(SCREENSHOT_PATH, SCREENSHOT_CONTENT);
- Bundle extras = sendBugreportFinishedIntent(ZIP_PATH, SCREENSHOT_PATH);
+ createZipFile(mZipPath, BUGREPORT_FILE, BUGREPORT_CONTENT);
+ createTextFile(mScreenshotPath, SCREENSHOT_CONTENT);
+ Bundle extras = sendBugreportFinishedIntent(mZipPath, mScreenshotPath);
assertActionSendMultiple(extras, BUGREPORT_CONTENT, SCREENSHOT_CONTENT);
}
public void testBugreportFinished_plainBugreportAndNoScreenshot() throws Exception {
- createTextFile(PLAIN_TEXT_PATH, BUGREPORT_CONTENT);
- Bundle extras = sendBugreportFinishedIntent(PLAIN_TEXT_PATH, null);
+ createTextFile(mPlainTextPath, BUGREPORT_CONTENT);
+ Bundle extras = sendBugreportFinishedIntent(mPlainTextPath, null);
assertActionSendMultiple(extras, BUGREPORT_CONTENT, null);
}
public void testBugreportFinished_zippedBugreportAndNoScreenshot() throws Exception {
- createZipFile(ZIP_PATH, BUGREPORT_FILE, BUGREPORT_CONTENT);
- Bundle extras = sendBugreportFinishedIntent(ZIP_PATH, null);
+ createZipFile(mZipPath, BUGREPORT_FILE, BUGREPORT_CONTENT);
+ Bundle extras = sendBugreportFinishedIntent(mZipPath, null);
assertActionSendMultiple(extras, BUGREPORT_CONTENT, null);
}
@@ -341,4 +348,12 @@
zos.closeEntry();
}
}
+
+ private String getPath(String file) {
+ File rootDir = new ContextWrapper(mContext).getFilesDir();
+ File dir = new File(rootDir, BUGREPORTS_DIR);
+ String path = new File(dir, file).getAbsolutePath();
+ Log.v(TAG, "Path for '" + file + "': " + path);
+ return path;
+ }
}
diff --git a/services/core/java/com/android/server/AppOpsService.java b/services/core/java/com/android/server/AppOpsService.java
index 7fcedc6..353b404 100644
--- a/services/core/java/com/android/server/AppOpsService.java
+++ b/services/core/java/com/android/server/AppOpsService.java
@@ -1176,6 +1176,9 @@
if ("media".equals(packageName)) {
pkgUid = Process.MEDIA_UID;
isPrivileged = false;
+ } else if ("audioserver".equals(packageName)) {
+ pkgUid = Process.AUDIOSERVER_UID;
+ isPrivileged = false;
}
}
} catch (RemoteException e) {
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index 4f2f486..40d01e7 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -197,7 +197,7 @@
private static final int MSG_SET_DEVICE_VOLUME = 0;
private static final int MSG_PERSIST_VOLUME = 1;
private static final int MSG_PERSIST_RINGER_MODE = 3;
- private static final int MSG_MEDIA_SERVER_DIED = 4;
+ private static final int MSG_AUDIO_SERVER_DIED = 4;
private static final int MSG_PLAY_SOUND_EFFECT = 5;
private static final int MSG_BTA2DP_DOCK_TIMEOUT = 6;
private static final int MSG_LOAD_SOUND_EFFECTS = 7;
@@ -358,7 +358,7 @@
public void onError(int error) {
switch (error) {
case AudioSystem.AUDIO_STATUS_SERVER_DIED:
- sendMsg(mAudioHandler, MSG_MEDIA_SERVER_DIED,
+ sendMsg(mAudioHandler, MSG_AUDIO_SERVER_DIED,
SENDMSG_NOOP, 0, 0, null, 0);
break;
default:
@@ -772,15 +772,15 @@
INDICATE_SYSTEM_READY_RETRY_DELAY_MS);
}
- public void onMediaServerDied() {
+ public void onAudioServerDied() {
if (!mSystemReady ||
(AudioSystem.checkAudioFlinger() != AudioSystem.AUDIO_STATUS_OK)) {
- Log.e(TAG, "Media server died.");
- sendMsg(mAudioHandler, MSG_MEDIA_SERVER_DIED, SENDMSG_NOOP, 0, 0,
+ Log.e(TAG, "Audioserver died.");
+ sendMsg(mAudioHandler, MSG_AUDIO_SERVER_DIED, SENDMSG_NOOP, 0, 0,
null, 500);
return;
}
- Log.e(TAG, "Media server started.");
+ Log.e(TAG, "Audioserver started.");
// indicate to audio HAL that we start the reconfiguration phase after a media
// server crash
@@ -4406,8 +4406,8 @@
persistRingerMode(getRingerModeInternal());
break;
- case MSG_MEDIA_SERVER_DIED:
- onMediaServerDied();
+ case MSG_AUDIO_SERVER_DIED:
+ onAudioServerDied();
break;
case MSG_UNLOAD_SOUND_EFFECTS:
diff --git a/services/core/java/com/android/server/os/SchedulingPolicyService.java b/services/core/java/com/android/server/os/SchedulingPolicyService.java
index c0123bf..80faf473 100644
--- a/services/core/java/com/android/server/os/SchedulingPolicyService.java
+++ b/services/core/java/com/android/server/os/SchedulingPolicyService.java
@@ -40,12 +40,13 @@
public int requestPriority(int pid, int tid, int prio) {
//Log.i(TAG, "requestPriority(pid=" + pid + ", tid=" + tid + ", prio=" + prio + ")");
- // Verify that caller is mediaserver, priority is in range, and that the
- // callback thread specified by app belongs to the app that called mediaserver.
- // Once we've verified that the caller is mediaserver, we can trust the pid but
+ // Verify that the caller uid is permitted, priority is in range,
+ // and that the callback thread specified by app belongs to the app that
+ // called mediaserver or audioserver.
+ // Once we've verified that the caller uid is permitted, we can trust the pid but
// we can't trust the tid. No need to explicitly check for pid == 0 || tid == 0,
// since if not the case then the getThreadGroupLeader() test will also fail.
- if (Binder.getCallingUid() != Process.MEDIA_UID || prio < PRIORITY_MIN ||
+ if (!isPermittedCallingUid() || prio < PRIORITY_MIN ||
prio > PRIORITY_MAX || Process.getThreadGroupLeader(tid) != pid) {
return PackageManager.PERMISSION_DENIED;
}
@@ -61,4 +62,14 @@
return PackageManager.PERMISSION_GRANTED;
}
+ private boolean isPermittedCallingUid() {
+ final int callingUid = Binder.getCallingUid();
+ switch (callingUid) {
+ case Process.AUDIOSERVER_UID: // fastcapture, fastmixer
+ case Process.MEDIA_UID: // camera
+ return true;
+ default:
+ return false;
+ }
+ }
}
diff --git a/services/core/java/com/android/server/pm/UserRestrictionsUtils.java b/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
index 816903e..9bbc3c1 100644
--- a/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
+++ b/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
@@ -209,11 +209,13 @@
}
/**
- * @return true if a restriction is settable by profile owner.
+ * @return true if a restriction is settable by profile owner. Note it takes a user ID because
+ * some restrictions can be changed by PO only when it's running on the system user.
*/
- public static boolean canProfileOwnerChange(String restriction) {
- return !(IMMUTABLE_BY_OWNERS.contains(restriction)
- || DEVICE_OWNER_ONLY_RESTRICTIONS.contains(restriction));
+ public static boolean canProfileOwnerChange(String restriction, int userId) {
+ return !IMMUTABLE_BY_OWNERS.contains(restriction)
+ && !(userId != UserHandle.USER_SYSTEM
+ && DEVICE_OWNER_ONLY_RESTRICTIONS.contains(restriction));
}
/**
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index 0fc7142..5a589e3 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -521,7 +521,7 @@
}
WindowState appWin = this;
- while (appWin.mAttachedWindow != null) {
+ while (appWin.isChildWindow()) {
appWin = appWin.mAttachedWindow;
}
WindowToken appToken = appWin.mToken;
@@ -854,7 +854,7 @@
@Override
public int getBaseType() {
WindowState win = this;
- while (win.mAttachedWindow != null) {
+ while (win.isChildWindow()) {
win = win.mAttachedWindow;
}
return win.mAttrs.type;
@@ -1235,7 +1235,7 @@
void removeLocked() {
disposeInputChannel();
- if (mAttachedWindow != null) {
+ if (isChildWindow()) {
if (DEBUG_ADD_REMOVE) Slog.v(TAG, "Removing " + this + " from " + mAttachedWindow);
mAttachedWindow.mChildWindows.remove(this);
}
@@ -1682,7 +1682,7 @@
// first frame very fast. Saving surfaces are mostly a waste of memory.
// Don't save if the window is not the topmost window.
mSurfaceSaved = false;
- } else if (mAttachedWindow != null) {
+ } else if (isChildWindow()) {
mSurfaceSaved = false;
} else {
mSurfaceSaved = mAppToken.shouldSaveSurface();
@@ -1733,7 +1733,7 @@
boolean isHiddenFromUserLocked() {
// Attached windows are evaluated based on the window that they are attached to.
WindowState win = this;
- while (win.mAttachedWindow != null) {
+ while (win.isChildWindow()) {
win = win.mAttachedWindow;
}
if (win.mAttrs.type < WindowManager.LayoutParams.FIRST_SYSTEM_WINDOW
@@ -1997,7 +1997,7 @@
pw.print(prefix); pw.print("LastRequested w="); pw.print(mLastRequestedWidth);
pw.print(" h="); pw.println(mLastRequestedHeight);
}
- if (mAttachedWindow != null || mLayoutAttached) {
+ if (isChildWindow() || mLayoutAttached) {
pw.print(prefix); pw.print("mAttachedWindow="); pw.print(mAttachedWindow);
pw.print(" mLayoutAttached="); pw.println(mLayoutAttached);
}
@@ -2255,4 +2255,8 @@
// Now make sure the window fits in the overall display frame.
Gravity.applyDisplay(mAttrs.gravity, mDisplayFrame, mFrame);
}
+
+ boolean isChildWindow() {
+ return mAttachedWindow != null;
+ }
}
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java
index 7cd67d0..539810d 100644
--- a/services/core/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java
@@ -1135,17 +1135,19 @@
final boolean isFreeformResizing =
w.isDragResizing() && w.getResizeMode() == DRAG_RESIZE_MODE_FREEFORM;
final Rect clipRect = mTmpClipRect;
- if (isFreeformResizing) {
- // When we're doing a drag-resizing, the surface is set up to cover full screen.
- // Set the clip rect to be the same size so that we don't get any scaling.
- clipRect.set(0, 0, displayInfo.logicalWidth, displayInfo.logicalHeight);
- } else {
- // We use the clip rect as provided by the tranformation for non-fullscreen windows to
- // avoid premature clipping with the system decor rect.
- clipRect.set((mHasClipRect && !fullscreen) ? mClipRect : mSystemDecorRect);
- if (DEBUG_WINDOW_CROP) Slog.d(TAG, "Initial clip rect: " + clipRect + ", mHasClipRect="
- + mHasClipRect + ", fullscreen=" + fullscreen);
+
+ // We use the clip rect as provided by the tranformation for non-fullscreen windows to
+ // avoid premature clipping with the system decor rect.
+ clipRect.set((mHasClipRect && !fullscreen) ? mClipRect : mSystemDecorRect);
+ if (DEBUG_WINDOW_CROP) Slog.d(TAG, "Initial clip rect: " + clipRect + ", mHasClipRect="
+ + mHasClipRect + ", fullscreen=" + fullscreen);
+
+ if (isFreeformResizing && !w.isChildWindow()) {
+ // For freeform resizing non child windows, we are using the big surface positioned
+ // at 0,0. Thus we must express the crop in that coordinate space.
+ clipRect.offset(w.mShownPosition.x, w.mShownPosition.y);
}
+
// Expand the clip rect for surface insets.
final WindowManager.LayoutParams attrs = w.mAttrs;
clipRect.left -= attrs.surfaceInsets.left;
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 5cf8ac0..c540e05 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -109,8 +109,6 @@
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Log;
-import android.util.PrintWriterPrinter;
-import android.util.Printer;
import android.util.Slog;
import android.util.SparseArray;
import android.util.Xml;
@@ -1752,11 +1750,7 @@
try {
return new DeviceAdminInfo(mContext, ri);
- } catch (XmlPullParserException e) {
- Slog.w(LOG_TAG, "Bad device admin requested for user=" + userHandle + ": " + adminName,
- e);
- return null;
- } catch (IOException e) {
+ } catch (XmlPullParserException | IOException e) {
Slog.w(LOG_TAG, "Bad device admin requested for user=" + userHandle + ": " + adminName,
e);
return null;
@@ -1994,18 +1988,11 @@
XmlUtils.skipCurrentTag(parser);
}
}
- } catch (NullPointerException e) {
- Slog.w(LOG_TAG, "failed parsing " + file + " " + e);
- } catch (NumberFormatException e) {
- Slog.w(LOG_TAG, "failed parsing " + file + " " + e);
- } catch (XmlPullParserException e) {
- Slog.w(LOG_TAG, "failed parsing " + file + " " + e);
} catch (FileNotFoundException e) {
// Don't be noisy, this is normal if we haven't defined any policies.
- } catch (IOException e) {
- Slog.w(LOG_TAG, "failed parsing " + file + " " + e);
- } catch (IndexOutOfBoundsException e) {
- Slog.w(LOG_TAG, "failed parsing " + file + " " + e);
+ } catch (NullPointerException | NumberFormatException | XmlPullParserException | IOException
+ | IndexOutOfBoundsException e) {
+ Slog.w(LOG_TAG, "failed parsing " + file, e);
}
try {
if (stream != null) {
@@ -5807,7 +5794,7 @@
throw new SecurityException("Device owner cannot set user restriction " + key);
}
} else { // profile owner
- if (!UserRestrictionsUtils.canProfileOwnerChange(key)) {
+ if (!UserRestrictionsUtils.canProfileOwnerChange(key, userHandle)) {
throw new SecurityException("Profile owner cannot set user restriction " + key);
}
}
diff --git a/services/tests/servicestests/src/com/android/server/pm/UserRestrictionsUtilsTest.java b/services/tests/servicestests/src/com/android/server/pm/UserRestrictionsUtilsTest.java
index 5542a4f..5bdf6f7 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserRestrictionsUtilsTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/UserRestrictionsUtilsTest.java
@@ -16,6 +16,7 @@
package com.android.server.pm;
+import android.os.UserHandle;
import com.android.server.devicepolicy.DpmTestUtils;
import android.os.Bundle;
@@ -87,10 +88,25 @@
}
public void testCanProfileOwnerChange() {
- assertFalse(UserRestrictionsUtils.canProfileOwnerChange(UserManager.DISALLOW_RECORD_AUDIO));
- assertFalse(UserRestrictionsUtils.canProfileOwnerChange(UserManager.DISALLOW_WALLPAPER));
- assertFalse(UserRestrictionsUtils.canProfileOwnerChange(UserManager.DISALLOW_ADD_USER));
- assertTrue(UserRestrictionsUtils.canProfileOwnerChange(UserManager.DISALLOW_ADJUST_VOLUME));
+ int user = UserHandle.USER_SYSTEM;
+ assertFalse(UserRestrictionsUtils.canProfileOwnerChange(
+ UserManager.DISALLOW_RECORD_AUDIO, user));
+ assertFalse(UserRestrictionsUtils.canProfileOwnerChange(
+ UserManager.DISALLOW_WALLPAPER, user));
+ assertTrue(UserRestrictionsUtils.canProfileOwnerChange(
+ UserManager.DISALLOW_ADD_USER, user));
+ assertTrue(UserRestrictionsUtils.canProfileOwnerChange(
+ UserManager.DISALLOW_ADJUST_VOLUME, user));
+
+ user = 10;
+ assertFalse(UserRestrictionsUtils.canProfileOwnerChange(
+ UserManager.DISALLOW_RECORD_AUDIO, user));
+ assertFalse(UserRestrictionsUtils.canProfileOwnerChange(
+ UserManager.DISALLOW_WALLPAPER, user));
+ assertFalse(UserRestrictionsUtils.canProfileOwnerChange(
+ UserManager.DISALLOW_ADD_USER, user));
+ assertTrue(UserRestrictionsUtils.canProfileOwnerChange(
+ UserManager.DISALLOW_ADJUST_VOLUME, user));
}
public void testSortToGlobalAndLocal() {