Merge "Add conditional class starting" am: 89e2aa94b7 am: 6ba7cee010
am: a9915b3f44

Change-Id: Iff00f82ad5df381071fae411d43a2c6430335997
diff --git a/init/builtins.cpp b/init/builtins.cpp
index 7fd4e27..52828c0 100644
--- a/init/builtins.cpp
+++ b/init/builtins.cpp
@@ -100,6 +100,9 @@
 }
 
 static Result<Success> do_class_start(const BuiltinArguments& args) {
+    // Do not start a class if it has a property persist.dont_start_class.CLASS set to 1.
+    if (android::base::GetBoolProperty("persist.init.dont_start_class." + args[1], false))
+        return Success();
     // Starting a class does not start services which are explicitly disabled.
     // They must  be started individually.
     for (const auto& service : ServiceList::GetInstance()) {
@@ -124,6 +127,9 @@
 }
 
 static Result<Success> do_class_restart(const BuiltinArguments& args) {
+    // Do not restart a class if it has a property persist.dont_start_class.CLASS set to 1.
+    if (android::base::GetBoolProperty("persist.init.dont_start_class." + args[1], false))
+        return Success();
     ForEachServiceInClass(args[1], &Service::Restart);
     return Success();
 }