Convert GeneratorBuildActions, GeneratorSources,
buildComplianceMetadataInfo to use ModuleProxy.

Bug: 377723687
Test: Unit tests and compare the ninja and mk files generated.
Change-Id: I22520e7dd3ae2ddcfa36dd39658f04c69e9e6012
diff --git a/android/base_module_context.go b/android/base_module_context.go
index 06819d6..8c0e4d2 100644
--- a/android/base_module_context.go
+++ b/android/base_module_context.go
@@ -110,6 +110,8 @@
 
 	GetDirectDepsWithTag(tag blueprint.DependencyTag) []Module
 
+	GetDirectDepsProxyWithTag(tag blueprint.DependencyTag) []ModuleProxy
+
 	// GetDirectDepWithTag returns the Module the direct dependency with the specified name, or nil if
 	// none exists.  It panics if the dependency does not have the specified tag.  It skips any
 	// dependencies that are not an android.Module.
@@ -461,6 +463,16 @@
 	return deps
 }
 
+func (b *baseModuleContext) GetDirectDepsProxyWithTag(tag blueprint.DependencyTag) []ModuleProxy {
+	var deps []ModuleProxy
+	b.VisitDirectDepsProxy(func(module ModuleProxy) {
+		if b.OtherModuleDependencyTag(module) == tag {
+			deps = append(deps, module)
+		}
+	})
+	return deps
+}
+
 // GetDirectDep returns the Module and DependencyTag for the direct dependency with the specified
 // name, or nil if none exists. If there are multiple dependencies on the same module it returns the
 // first DependencyTag.