Merge "Write out module owner for prebuilt_etc"
diff --git a/android/prebuilt_etc.go b/android/prebuilt_etc.go
index 42c7c2c..e180342 100644
--- a/android/prebuilt_etc.go
+++ b/android/prebuilt_etc.go
@@ -145,6 +145,9 @@
 			fmt.Fprintln(w, "LOCAL_PATH :=", moduleDir)
 			fmt.Fprintln(w, "LOCAL_MODULE :=", name+nameSuffix)
 			fmt.Fprintln(w, "LOCAL_MODULE_CLASS := ETC")
+			if p.commonProperties.Owner != nil {
+				fmt.Fprintln(w, "LOCAL_MODULE_OWNER :=", *p.commonProperties.Owner)
+			}
 			fmt.Fprintln(w, "LOCAL_MODULE_TAGS := optional")
 			fmt.Fprintln(w, "LOCAL_PREBUILT_MODULE_FILE :=", p.outputFilePath.String())
 			fmt.Fprintln(w, "LOCAL_MODULE_PATH :=", "$(OUT_DIR)/"+p.installDirPath.RelPathString())
diff --git a/android/prebuilt_etc_test.go b/android/prebuilt_etc_test.go
index 8ab978b..d1a80af 100644
--- a/android/prebuilt_etc_test.go
+++ b/android/prebuilt_etc_test.go
@@ -15,8 +15,11 @@
 package android
 
 import (
+	"bufio"
+	"bytes"
 	"io/ioutil"
 	"os"
+	"strings"
 	"testing"
 )
 
@@ -130,3 +133,47 @@
 		t.Errorf("expected bar.conf, got %q", p.outputFilePath.Base())
 	}
 }
+
+func TestPrebuiltEtcAndroidMk(t *testing.T) {
+	ctx := testPrebuiltEtc(t, `
+		prebuilt_etc {
+			name: "foo",
+			src: "foo.conf",
+			owner: "abc",
+			filename_from_src: true,
+		}
+	`)
+
+	data := AndroidMkData{}
+	data.Required = append(data.Required, "modA", "moduleB")
+
+	expected := map[string]string{
+		"LOCAL_MODULE":                "foo",
+		"LOCAL_MODULE_CLASS":          "ETC",
+		"LOCAL_MODULE_OWNER":          "abc",
+		"LOCAL_INSTALLED_MODULE_STEM": "foo.conf",
+		"LOCAL_REQUIRED_MODULES":      "modA moduleB",
+	}
+
+	mod := ctx.ModuleForTests("foo", "android_arm64_armv8-a_core").Module().(*PrebuiltEtc)
+	buf := &bytes.Buffer{}
+	mod.AndroidMk().Custom(buf, "foo", "", "", data)
+	for k, expected := range expected {
+		found := false
+		scanner := bufio.NewScanner(bytes.NewReader(buf.Bytes()))
+		for scanner.Scan() {
+			line := scanner.Text()
+			tok := strings.Split(line, " := ")
+			if tok[0] == k {
+				found = true
+				if tok[1] != expected {
+					t.Errorf("Incorrect %s '%s', expected '%s'", k, tok[1], expected)
+				}
+			}
+		}
+
+		if !found {
+			t.Errorf("No %s defined, saw %s", k, buf.String())
+		}
+	}
+}