From 3a7a43f7a1e5c557fdc87641e8863f08f9b34796 Mon Sep 17 00:00:00 2001 From: Khaled Abdelmohsen Date: Wed, 2 Oct 2019 11:38:22 +0100 Subject: [PATCH] Initialize rule evaluation engine Creates a singleton instance of the rule evaluation engine. It will be used by the integrity component to evaluate rules against app installs, and then sending an allow or block response. Bug: 141907044 Test: N/A Change-Id: I3200de0f53e60bf67c904f153ab15dd665888cfa --- ...luation.java => RuleEvaluationEngine.java} | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) rename services/core/java/com/android/server/integrity/engine/{RuleEvaluation.java => RuleEvaluationEngine.java} (51%) diff --git a/services/core/java/com/android/server/integrity/engine/RuleEvaluation.java b/services/core/java/com/android/server/integrity/engine/RuleEvaluationEngine.java similarity index 51% rename from services/core/java/com/android/server/integrity/engine/RuleEvaluation.java rename to services/core/java/com/android/server/integrity/engine/RuleEvaluationEngine.java index 93c9adaac12d0..609198acd7a93 100644 --- a/services/core/java/com/android/server/integrity/engine/RuleEvaluation.java +++ b/services/core/java/com/android/server/integrity/engine/RuleEvaluationEngine.java @@ -16,14 +16,38 @@ package com.android.server.integrity.engine; +import java.util.ArrayList; +import java.util.List; + /** * The engine used to evaluate rules against app installs. * *

Every app install is evaluated against rules (pushed by the verifier) by the evaluation engine * to allow/block that install. */ -public final class RuleEvaluation { +public final class RuleEvaluationEngine { private static final String TAG = "RuleEvaluation"; - // TODO: Add singleton injection. + // The engine for loading rules, retrieving metadata for app installs, and evaluating app + // installs against rules. + private static RuleEvaluationEngine sRuleEvaluationEngine; + + // The subset of rules loaded to be used to evaluate an app install request. + // TODO: Load rules relevant to app installs. + private List mRules; + + private RuleEvaluationEngine() { + // Initialize rules with the empty rule set. + mRules = new ArrayList<>(); + } + + /** + * Provide a singleton instance of the rule evaluation engine. + */ + public static synchronized RuleEvaluationEngine getRuleEvaluationEngine() { + if (sRuleEvaluationEngine == null) { + return new RuleEvaluationEngine(); + } + return sRuleEvaluationEngine; + } }