Loading services/core/java/com/android/server/integrity/model/AtomicFormula.java +20 −0 Original line number Diff line number Diff line Loading @@ -112,6 +112,26 @@ public final class AtomicFormula extends Formula { return mBoolValue; } /** * Get string representation of the value of the key in the formula. * * @return string representation of the value of the key. */ public String getValue() { if (mStringValue != null) { return mStringValue; } if (mIntValue != null) { return mIntValue.toString(); } return mBoolValue.toString(); } @Override public String toString() { return String.format("%s %s %s", mKey, mOperator, getValue()); } private void validateOperator(Key key, Operator operator) { boolean validOperator; switch (key) { Loading services/core/java/com/android/server/integrity/model/OpenFormula.java +12 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,18 @@ public final class OpenFormula extends Formula { return mFormulas; } @Override public String toString() { StringBuilder sb = new StringBuilder(); for (int i = 0; i < mFormulas.size(); i++) { if (i > 0) { sb.append(String.format(" %s ", mConnector)); } sb.append(mFormulas.get(i).toString()); } return sb.toString(); } private void validateFormulas(Connector connector, List<Formula> formulas) { switch (connector) { case AND: Loading services/core/java/com/android/server/integrity/model/Rule.java +5 −0 Original line number Diff line number Diff line Loading @@ -61,4 +61,9 @@ public final class Rule { public Effect getEffect() { return mEffect; } @Override public String toString() { return String.format("Rule: %s, %s", mFormula, mEffect); } } services/tests/servicestests/src/com/android/server/integrity/model/RuleTest.java +24 −5 Original line number Diff line number Diff line Loading @@ -25,13 +25,20 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import java.util.Arrays; @RunWith(JUnit4.class) public class RuleTest { private static final Rule.Effect DENY_EFFECT = Rule.Effect.DENY; private static final Formula SIMPLE_FORMULA = private static final String PACKAGE_NAME = "com.test.app"; private static final String APP_CERTIFICATE = "test_cert"; private static final Formula PACKAGE_NAME_ATOMIC_FORMULA = new AtomicFormula(AtomicFormula.Key.PACKAGE_NAME, AtomicFormula.Operator.EQ, "com.test.app"); PACKAGE_NAME); private static final Formula APP_CERTIFICATE_ATOMIC_FORMULA = new AtomicFormula(AtomicFormula.Key.APP_CERTIFICATE, AtomicFormula.Operator.EQ, APP_CERTIFICATE); @Test public void testEmptyRule() { Loading @@ -43,9 +50,9 @@ public class RuleTest { @Test public void testValidRule() { Rule validRule = new Rule(SIMPLE_FORMULA, DENY_EFFECT); Rule validRule = new Rule(PACKAGE_NAME_ATOMIC_FORMULA, DENY_EFFECT); assertEquals(SIMPLE_FORMULA, validRule.getFormula()); assertEquals(PACKAGE_NAME_ATOMIC_FORMULA, validRule.getFormula()); assertEquals(DENY_EFFECT, validRule.getEffect()); } Loading @@ -54,7 +61,7 @@ public class RuleTest { assertExpectException( NullPointerException.class, /* expectedExceptionMessageRegex */ null, () -> new Rule(SIMPLE_FORMULA, null)); () -> new Rule(PACKAGE_NAME_ATOMIC_FORMULA, null)); } @Test Loading @@ -64,4 +71,16 @@ public class RuleTest { /* expectedExceptionMessageRegex */ null, () -> new Rule(null, DENY_EFFECT)); } @Test public void testToString() { OpenFormula openFormula = new OpenFormula(OpenFormula.Connector.AND, Arrays.asList(PACKAGE_NAME_ATOMIC_FORMULA, APP_CERTIFICATE_ATOMIC_FORMULA)); Rule rule = new Rule(openFormula, Rule.Effect.DENY); String toString = rule.toString(); assertEquals(String.format("Rule: PACKAGE_NAME EQ %s AND APP_CERTIFICATE EQ %s, DENY", PACKAGE_NAME, APP_CERTIFICATE), toString); } } Loading
services/core/java/com/android/server/integrity/model/AtomicFormula.java +20 −0 Original line number Diff line number Diff line Loading @@ -112,6 +112,26 @@ public final class AtomicFormula extends Formula { return mBoolValue; } /** * Get string representation of the value of the key in the formula. * * @return string representation of the value of the key. */ public String getValue() { if (mStringValue != null) { return mStringValue; } if (mIntValue != null) { return mIntValue.toString(); } return mBoolValue.toString(); } @Override public String toString() { return String.format("%s %s %s", mKey, mOperator, getValue()); } private void validateOperator(Key key, Operator operator) { boolean validOperator; switch (key) { Loading
services/core/java/com/android/server/integrity/model/OpenFormula.java +12 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,18 @@ public final class OpenFormula extends Formula { return mFormulas; } @Override public String toString() { StringBuilder sb = new StringBuilder(); for (int i = 0; i < mFormulas.size(); i++) { if (i > 0) { sb.append(String.format(" %s ", mConnector)); } sb.append(mFormulas.get(i).toString()); } return sb.toString(); } private void validateFormulas(Connector connector, List<Formula> formulas) { switch (connector) { case AND: Loading
services/core/java/com/android/server/integrity/model/Rule.java +5 −0 Original line number Diff line number Diff line Loading @@ -61,4 +61,9 @@ public final class Rule { public Effect getEffect() { return mEffect; } @Override public String toString() { return String.format("Rule: %s, %s", mFormula, mEffect); } }
services/tests/servicestests/src/com/android/server/integrity/model/RuleTest.java +24 −5 Original line number Diff line number Diff line Loading @@ -25,13 +25,20 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import java.util.Arrays; @RunWith(JUnit4.class) public class RuleTest { private static final Rule.Effect DENY_EFFECT = Rule.Effect.DENY; private static final Formula SIMPLE_FORMULA = private static final String PACKAGE_NAME = "com.test.app"; private static final String APP_CERTIFICATE = "test_cert"; private static final Formula PACKAGE_NAME_ATOMIC_FORMULA = new AtomicFormula(AtomicFormula.Key.PACKAGE_NAME, AtomicFormula.Operator.EQ, "com.test.app"); PACKAGE_NAME); private static final Formula APP_CERTIFICATE_ATOMIC_FORMULA = new AtomicFormula(AtomicFormula.Key.APP_CERTIFICATE, AtomicFormula.Operator.EQ, APP_CERTIFICATE); @Test public void testEmptyRule() { Loading @@ -43,9 +50,9 @@ public class RuleTest { @Test public void testValidRule() { Rule validRule = new Rule(SIMPLE_FORMULA, DENY_EFFECT); Rule validRule = new Rule(PACKAGE_NAME_ATOMIC_FORMULA, DENY_EFFECT); assertEquals(SIMPLE_FORMULA, validRule.getFormula()); assertEquals(PACKAGE_NAME_ATOMIC_FORMULA, validRule.getFormula()); assertEquals(DENY_EFFECT, validRule.getEffect()); } Loading @@ -54,7 +61,7 @@ public class RuleTest { assertExpectException( NullPointerException.class, /* expectedExceptionMessageRegex */ null, () -> new Rule(SIMPLE_FORMULA, null)); () -> new Rule(PACKAGE_NAME_ATOMIC_FORMULA, null)); } @Test Loading @@ -64,4 +71,16 @@ public class RuleTest { /* expectedExceptionMessageRegex */ null, () -> new Rule(null, DENY_EFFECT)); } @Test public void testToString() { OpenFormula openFormula = new OpenFormula(OpenFormula.Connector.AND, Arrays.asList(PACKAGE_NAME_ATOMIC_FORMULA, APP_CERTIFICATE_ATOMIC_FORMULA)); Rule rule = new Rule(openFormula, Rule.Effect.DENY); String toString = rule.toString(); assertEquals(String.format("Rule: PACKAGE_NAME EQ %s AND APP_CERTIFICATE EQ %s, DENY", PACKAGE_NAME, APP_CERTIFICATE), toString); } }