Support path exclusion for native coverage.

Specify list of paths to exclude from coverage instrumentation.

Test: make NATIVE_COVERAGE=true COVERAGE_PATHS=hardware/interfaces
COVERAGE_EXCLUDE_PATHS=hardware/interfaces/graphics
Bug: 35769817

Change-Id: I3bf10e5e5697d140d6cff73d000768b00aa28ca4
diff --git a/android/config.go b/android/config.go
index b4b0be8..1d8cdba 100644
--- a/android/config.go
+++ b/android/config.go
@@ -477,12 +477,22 @@
 }
 
 func (c *deviceConfig) CoverageEnabledForPath(path string) bool {
+	coverage := false
 	if c.config.ProductVariables.CoveragePaths != nil {
 		for _, prefix := range *c.config.ProductVariables.CoveragePaths {
 			if strings.HasPrefix(path, prefix) {
-				return true
+				coverage = true
+				break
 			}
 		}
 	}
-	return false
+	if coverage && c.config.ProductVariables.CoverageExcludePaths != nil {
+		for _, prefix := range *c.config.ProductVariables.CoverageExcludePaths {
+			if strings.HasPrefix(path, prefix) {
+				coverage = false
+				break
+			}
+		}
+	}
+	return coverage
 }