AAPT2: Error on uncompiled XML or PNG files in link phase

Incorrectly passing text XML and unprocessed PNG files to
the AAPT2 link phase should raise an error.

Test: manual incorrect invocation of aapt2
Change-Id: Iab47f99bc378b5d1c4f4d87098f08243b9a4dc6a
diff --git a/tools/aapt2/link/Link.cpp b/tools/aapt2/link/Link.cpp
index a42d868..6dd34e3 100644
--- a/tools/aapt2/link/Link.cpp
+++ b/tools/aapt2/link/Link.cpp
@@ -1299,6 +1299,17 @@
         }
       }
       return true;
+    } else if (util::stringEndsWith(src.path, ".xml") ||
+               util::stringEndsWith(src.path, ".png")) {
+      // Since AAPT compiles these file types and appends .flat to them, seeing
+      // their raw extensions is a sign that they weren't compiled.
+      const StringPiece fileType =
+          util::stringEndsWith(src.path, ".xml") ? "XML" : "PNG";
+      mContext->getDiagnostics()->error(DiagMessage(src)
+                                        << "uncompiled " << fileType
+                                        << " file passed as argument. Must be "
+                                           "compiled first into .flat file.");
+      return false;
     }
 
     // Ignore non .flat files. This could be classes.dex or something else that