Inject empty <kernel> tag if missing.

assemble_vintf should infer kernel FCM version when it is
missing (for devices with target FCM version >= R), but it
only did it when an empty <kernel> tag is present. Fix by
injecting the empty kernel tag if it is not there.

Test: delete <kernel> tag from CF and m check-vintf-all
Bug: 155604363
Change-Id: I216a5de6a8613c3ca270365b9ab536f6862fc8ad
diff --git a/AssembleVintf.cpp b/AssembleVintf.cpp
index 71ea1bc..5fc6828 100644
--- a/AssembleVintf.cpp
+++ b/AssembleVintf.cpp
@@ -354,8 +354,10 @@
         if (manifest->level() == Level::UNSPECIFIED) return;
         // target FCM version < R: leave value untouched.
         if (manifest->level() < Level::R) return;
-        // No need to infer when <kernel> tag is missing.
-        if (!manifest->kernel().has_value()) return;
+        // Inject empty <kernel> tag if missing.
+        if (!manifest->kernel().has_value()) {
+            manifest->device.mKernel = std::make_optional<KernelInfo>();
+        }
         // Kernel FCM already set.
         if (manifest->kernel()->level() != Level::UNSPECIFIED) return;