Loading core/java/android/app/admin/PolicyKey.java +9 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.os.Parcelable; import com.android.modules.utils.TypedXmlPullParser; import com.android.modules.utils.TypedXmlSerializer; import android.util.Log; import org.xmlpull.v1.XmlPullParserException; Loading @@ -41,6 +42,9 @@ import java.util.Objects; @SuppressLint({"ParcelNotFinal", "ParcelCreator"}) @SystemApi public abstract class PolicyKey implements Parcelable { static final String TAG = "PolicyKey"; /** * @hide */ Loading Loading @@ -76,9 +80,14 @@ public abstract class PolicyKey implements Parcelable { /** * @hide */ @Nullable public static PolicyKey readGenericPolicyKeyFromXml(TypedXmlPullParser parser) { String identifier = parser.getAttributeValue( /* namespace= */ null, ATTR_POLICY_IDENTIFIER); if (identifier == null) { Log.wtf(TAG, "Error parsing generic policy key, identifier is null."); return null; } return new NoArgsPolicyKey(identifier); } Loading services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java +15 −6 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ import android.util.Xml; import com.android.internal.util.XmlUtils; import com.android.modules.utils.TypedXmlPullParser; import com.android.modules.utils.TypedXmlSerializer; import com.android.server.utils.Slogf; import libcore.io.IoUtils; Loading Loading @@ -1511,7 +1512,7 @@ final class DevicePolicyEngine { readInner(parser); } catch (XmlPullParserException | IOException | ClassNotFoundException e) { Log.e(TAG, "Error parsing resources file", e); Slogf.wtf(TAG, "Error parsing resources file", e); } finally { IoUtils.closeQuietly(input); } Loading @@ -1533,7 +1534,7 @@ final class DevicePolicyEngine { readEnforcingAdminsInner(parser); break; default: Log.e(TAG, "Unknown tag " + tag); Slogf.wtf(TAG, "Unknown tag " + tag); } } } Loading @@ -1554,7 +1555,7 @@ final class DevicePolicyEngine { policyState = PolicyState.readFromXml(parser); break; default: Log.e(TAG, "Unknown tag for local policy entry" + tag); Slogf.wtf(TAG, "Unknown tag for local policy entry" + tag); } } Loading @@ -1564,7 +1565,9 @@ final class DevicePolicyEngine { } mLocalPolicies.get(userId).put(policyKey, policyState); } else { Log.e(TAG, "Error parsing local policy"); Slogf.wtf(TAG, "Error parsing local policy, policyKey is " + (policyKey == null ? "null" : policyKey) + ", and policyState is " + (policyState == null ? "null" : policyState) + "."); } } Loading @@ -1583,20 +1586,26 @@ final class DevicePolicyEngine { policyState = PolicyState.readFromXml(parser); break; default: Log.e(TAG, "Unknown tag for local policy entry" + tag); Slogf.wtf(TAG, "Unknown tag for local policy entry" + tag); } } if (policyKey != null && policyState != null) { mGlobalPolicies.put(policyKey, policyState); } else { Log.e(TAG, "Error parsing global policy"); Slogf.wtf(TAG, "Error parsing global policy, policyKey is " + (policyKey == null ? "null" : policyKey) + ", and policyState is " + (policyState == null ? "null" : policyState) + "."); } } private void readEnforcingAdminsInner(TypedXmlPullParser parser) throws XmlPullParserException { EnforcingAdmin admin = EnforcingAdmin.readFromXml(parser); if (admin == null) { Slogf.wtf(TAG, "Error parsing enforcingAdmins, EnforcingAdmin is null."); return; } if (!mEnforcingAdmins.contains(admin.getUserId())) { mEnforcingAdmins.put(admin.getUserId(), new HashSet<>()); } Loading services/devicepolicy/java/com/android/server/devicepolicy/EnforcingAdmin.java +17 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import com.android.modules.utils.TypedXmlPullParser; import com.android.modules.utils.TypedXmlSerializer; import com.android.role.RoleManagerLocal; import com.android.server.LocalManagerRegistry; import com.android.server.utils.Slogf; import org.xmlpull.v1.XmlPullParserException; Loading @@ -51,6 +52,9 @@ import java.util.Set; * */ final class EnforcingAdmin { static final String TAG = "EnforcingAdmin"; static final String ROLE_AUTHORITY_PREFIX = "role:"; static final String DPC_AUTHORITY = "enterprise"; static final String DEVICE_ADMIN_AUTHORITY = "device_admin"; Loading Loading @@ -286,6 +290,7 @@ final class EnforcingAdmin { } } @Nullable static EnforcingAdmin readFromXml(TypedXmlPullParser parser) throws XmlPullParserException { String packageName = parser.getAttributeValue(/* namespace= */ null, ATTR_PACKAGE_NAME); Loading @@ -294,13 +299,25 @@ final class EnforcingAdmin { int userId = parser.getAttributeInt(/* namespace= */ null, ATTR_USER_ID); if (isRoleAuthority) { if (packageName == null) { Slogf.wtf(TAG, "Error parsing EnforcingAdmin with RoleAuthority, packageName is " + "null."); return null; } // TODO(b/281697976): load active admin return new EnforcingAdmin(packageName, userId, null); } else { if (packageName == null || authoritiesStr == null) { Slogf.wtf(TAG, "Error parsing EnforcingAdmin, packageName is " + (packageName == null ? "null" : packageName) + ", and authorities is " + (authoritiesStr == null ? "null" : authoritiesStr) + "."); return null; } String className = parser.getAttributeValue(/* namespace= */ null, ATTR_CLASS_NAME); ComponentName componentName = className == null ? null : new ComponentName(packageName, className); Set<String> authorities = Set.of(authoritiesStr.split(ATTR_AUTHORITIES_SEPARATOR)); // TODO(b/281697976): load active admin return new EnforcingAdmin(packageName, componentName, authorities, userId, null); } } Loading services/devicepolicy/java/com/android/server/devicepolicy/OwnersData.java +1 −0 Original line number Diff line number Diff line Loading @@ -457,6 +457,7 @@ class OwnersData { case TAG_POLICY_ENGINE_MIGRATION: mMigratedToPolicyEngine = parser.getAttributeBoolean( null, ATTR_MIGRATED_TO_POLICY_ENGINE, false); break; default: Slog.e(TAG, "Unexpected tag: " + tag); return false; Loading services/devicepolicy/java/com/android/server/devicepolicy/PolicyDefinition.java +22 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import android.os.UserManager; import com.android.internal.util.function.QuadFunction; import com.android.modules.utils.TypedXmlPullParser; import com.android.modules.utils.TypedXmlSerializer; import com.android.server.utils.Slogf; import org.xmlpull.v1.XmlPullParserException; Loading @@ -53,6 +54,9 @@ import java.util.Map; import java.util.Set; final class PolicyDefinition<V> { static final String TAG = "PolicyDefinition"; private static final int POLICY_FLAG_NONE = 0; // Only use this flag if a policy can not be applied locally. Loading Loading @@ -596,22 +600,40 @@ final class PolicyDefinition<V> { mPolicyKey.saveToXml(serializer); } @Nullable static <V> PolicyDefinition<V> readFromXml(TypedXmlPullParser parser) throws XmlPullParserException, IOException { // TODO: can we avoid casting? PolicyKey policyKey = readPolicyKeyFromXml(parser); if (policyKey == null) { Slogf.wtf(TAG, "Error parsing PolicyDefinition, PolicyKey is null."); return null; } PolicyDefinition<V> genericPolicyDefinition = (PolicyDefinition<V>) POLICY_DEFINITIONS.get(policyKey.getIdentifier()); if (genericPolicyDefinition == null) { Slogf.wtf(TAG, "Unknown generic policy key: " + policyKey); return null; } return genericPolicyDefinition.createPolicyDefinition(policyKey); } @Nullable static <V> PolicyKey readPolicyKeyFromXml(TypedXmlPullParser parser) throws XmlPullParserException, IOException { // TODO: can we avoid casting? PolicyKey policyKey = PolicyKey.readGenericPolicyKeyFromXml(parser); if (policyKey == null) { Slogf.wtf(TAG, "Error parsing PolicyKey, GenericPolicyKey is null"); return null; } PolicyDefinition<PolicyValue<V>> genericPolicyDefinition = (PolicyDefinition<PolicyValue<V>>) POLICY_DEFINITIONS.get( policyKey.getIdentifier()); if (genericPolicyDefinition == null) { Slogf.wtf(TAG, "Error parsing PolicyKey, Unknown generic policy key: " + policyKey); return null; } return genericPolicyDefinition.mPolicyKey.readFromXml(parser); } Loading Loading
core/java/android/app/admin/PolicyKey.java +9 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.os.Parcelable; import com.android.modules.utils.TypedXmlPullParser; import com.android.modules.utils.TypedXmlSerializer; import android.util.Log; import org.xmlpull.v1.XmlPullParserException; Loading @@ -41,6 +42,9 @@ import java.util.Objects; @SuppressLint({"ParcelNotFinal", "ParcelCreator"}) @SystemApi public abstract class PolicyKey implements Parcelable { static final String TAG = "PolicyKey"; /** * @hide */ Loading Loading @@ -76,9 +80,14 @@ public abstract class PolicyKey implements Parcelable { /** * @hide */ @Nullable public static PolicyKey readGenericPolicyKeyFromXml(TypedXmlPullParser parser) { String identifier = parser.getAttributeValue( /* namespace= */ null, ATTR_POLICY_IDENTIFIER); if (identifier == null) { Log.wtf(TAG, "Error parsing generic policy key, identifier is null."); return null; } return new NoArgsPolicyKey(identifier); } Loading
services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java +15 −6 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ import android.util.Xml; import com.android.internal.util.XmlUtils; import com.android.modules.utils.TypedXmlPullParser; import com.android.modules.utils.TypedXmlSerializer; import com.android.server.utils.Slogf; import libcore.io.IoUtils; Loading Loading @@ -1511,7 +1512,7 @@ final class DevicePolicyEngine { readInner(parser); } catch (XmlPullParserException | IOException | ClassNotFoundException e) { Log.e(TAG, "Error parsing resources file", e); Slogf.wtf(TAG, "Error parsing resources file", e); } finally { IoUtils.closeQuietly(input); } Loading @@ -1533,7 +1534,7 @@ final class DevicePolicyEngine { readEnforcingAdminsInner(parser); break; default: Log.e(TAG, "Unknown tag " + tag); Slogf.wtf(TAG, "Unknown tag " + tag); } } } Loading @@ -1554,7 +1555,7 @@ final class DevicePolicyEngine { policyState = PolicyState.readFromXml(parser); break; default: Log.e(TAG, "Unknown tag for local policy entry" + tag); Slogf.wtf(TAG, "Unknown tag for local policy entry" + tag); } } Loading @@ -1564,7 +1565,9 @@ final class DevicePolicyEngine { } mLocalPolicies.get(userId).put(policyKey, policyState); } else { Log.e(TAG, "Error parsing local policy"); Slogf.wtf(TAG, "Error parsing local policy, policyKey is " + (policyKey == null ? "null" : policyKey) + ", and policyState is " + (policyState == null ? "null" : policyState) + "."); } } Loading @@ -1583,20 +1586,26 @@ final class DevicePolicyEngine { policyState = PolicyState.readFromXml(parser); break; default: Log.e(TAG, "Unknown tag for local policy entry" + tag); Slogf.wtf(TAG, "Unknown tag for local policy entry" + tag); } } if (policyKey != null && policyState != null) { mGlobalPolicies.put(policyKey, policyState); } else { Log.e(TAG, "Error parsing global policy"); Slogf.wtf(TAG, "Error parsing global policy, policyKey is " + (policyKey == null ? "null" : policyKey) + ", and policyState is " + (policyState == null ? "null" : policyState) + "."); } } private void readEnforcingAdminsInner(TypedXmlPullParser parser) throws XmlPullParserException { EnforcingAdmin admin = EnforcingAdmin.readFromXml(parser); if (admin == null) { Slogf.wtf(TAG, "Error parsing enforcingAdmins, EnforcingAdmin is null."); return; } if (!mEnforcingAdmins.contains(admin.getUserId())) { mEnforcingAdmins.put(admin.getUserId(), new HashSet<>()); } Loading
services/devicepolicy/java/com/android/server/devicepolicy/EnforcingAdmin.java +17 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import com.android.modules.utils.TypedXmlPullParser; import com.android.modules.utils.TypedXmlSerializer; import com.android.role.RoleManagerLocal; import com.android.server.LocalManagerRegistry; import com.android.server.utils.Slogf; import org.xmlpull.v1.XmlPullParserException; Loading @@ -51,6 +52,9 @@ import java.util.Set; * */ final class EnforcingAdmin { static final String TAG = "EnforcingAdmin"; static final String ROLE_AUTHORITY_PREFIX = "role:"; static final String DPC_AUTHORITY = "enterprise"; static final String DEVICE_ADMIN_AUTHORITY = "device_admin"; Loading Loading @@ -286,6 +290,7 @@ final class EnforcingAdmin { } } @Nullable static EnforcingAdmin readFromXml(TypedXmlPullParser parser) throws XmlPullParserException { String packageName = parser.getAttributeValue(/* namespace= */ null, ATTR_PACKAGE_NAME); Loading @@ -294,13 +299,25 @@ final class EnforcingAdmin { int userId = parser.getAttributeInt(/* namespace= */ null, ATTR_USER_ID); if (isRoleAuthority) { if (packageName == null) { Slogf.wtf(TAG, "Error parsing EnforcingAdmin with RoleAuthority, packageName is " + "null."); return null; } // TODO(b/281697976): load active admin return new EnforcingAdmin(packageName, userId, null); } else { if (packageName == null || authoritiesStr == null) { Slogf.wtf(TAG, "Error parsing EnforcingAdmin, packageName is " + (packageName == null ? "null" : packageName) + ", and authorities is " + (authoritiesStr == null ? "null" : authoritiesStr) + "."); return null; } String className = parser.getAttributeValue(/* namespace= */ null, ATTR_CLASS_NAME); ComponentName componentName = className == null ? null : new ComponentName(packageName, className); Set<String> authorities = Set.of(authoritiesStr.split(ATTR_AUTHORITIES_SEPARATOR)); // TODO(b/281697976): load active admin return new EnforcingAdmin(packageName, componentName, authorities, userId, null); } } Loading
services/devicepolicy/java/com/android/server/devicepolicy/OwnersData.java +1 −0 Original line number Diff line number Diff line Loading @@ -457,6 +457,7 @@ class OwnersData { case TAG_POLICY_ENGINE_MIGRATION: mMigratedToPolicyEngine = parser.getAttributeBoolean( null, ATTR_MIGRATED_TO_POLICY_ENGINE, false); break; default: Slog.e(TAG, "Unexpected tag: " + tag); return false; Loading
services/devicepolicy/java/com/android/server/devicepolicy/PolicyDefinition.java +22 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import android.os.UserManager; import com.android.internal.util.function.QuadFunction; import com.android.modules.utils.TypedXmlPullParser; import com.android.modules.utils.TypedXmlSerializer; import com.android.server.utils.Slogf; import org.xmlpull.v1.XmlPullParserException; Loading @@ -53,6 +54,9 @@ import java.util.Map; import java.util.Set; final class PolicyDefinition<V> { static final String TAG = "PolicyDefinition"; private static final int POLICY_FLAG_NONE = 0; // Only use this flag if a policy can not be applied locally. Loading Loading @@ -596,22 +600,40 @@ final class PolicyDefinition<V> { mPolicyKey.saveToXml(serializer); } @Nullable static <V> PolicyDefinition<V> readFromXml(TypedXmlPullParser parser) throws XmlPullParserException, IOException { // TODO: can we avoid casting? PolicyKey policyKey = readPolicyKeyFromXml(parser); if (policyKey == null) { Slogf.wtf(TAG, "Error parsing PolicyDefinition, PolicyKey is null."); return null; } PolicyDefinition<V> genericPolicyDefinition = (PolicyDefinition<V>) POLICY_DEFINITIONS.get(policyKey.getIdentifier()); if (genericPolicyDefinition == null) { Slogf.wtf(TAG, "Unknown generic policy key: " + policyKey); return null; } return genericPolicyDefinition.createPolicyDefinition(policyKey); } @Nullable static <V> PolicyKey readPolicyKeyFromXml(TypedXmlPullParser parser) throws XmlPullParserException, IOException { // TODO: can we avoid casting? PolicyKey policyKey = PolicyKey.readGenericPolicyKeyFromXml(parser); if (policyKey == null) { Slogf.wtf(TAG, "Error parsing PolicyKey, GenericPolicyKey is null"); return null; } PolicyDefinition<PolicyValue<V>> genericPolicyDefinition = (PolicyDefinition<PolicyValue<V>>) POLICY_DEFINITIONS.get( policyKey.getIdentifier()); if (genericPolicyDefinition == null) { Slogf.wtf(TAG, "Error parsing PolicyKey, Unknown generic policy key: " + policyKey); return null; } return genericPolicyDefinition.mPolicyKey.readFromXml(parser); } Loading