Move cts_audio_quality off abandoned tinyxml.

Bug: http://b/30215664
Change-Id: I5b7d831960751b3dacdd4a0b53161051faef5d56
diff --git a/suite/audio_quality/executable/Android.mk b/suite/audio_quality/executable/Android.mk
index 26b5379..b22d542 100644
--- a/suite/audio_quality/executable/Android.mk
+++ b/suite/audio_quality/executable/Android.mk
@@ -17,9 +17,8 @@
 LOCAL_PATH:= $(call my-dir)
 include $(CLEAR_VARS)
 LOCAL_SRC_FILES := $(call all-subdir-cpp-files)
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/../lib/include  external/tinyalsa/include/  libcore/include \
-	$(LOCAL_PATH)/../lib/src
-LOCAL_STATIC_LIBRARIES += libutils liblog libcutils libtinyalsa libtinyxml
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/../lib/include $(LOCAL_PATH)/../lib/src
+LOCAL_STATIC_LIBRARIES += libutils liblog libcutils libtinyalsa libtinyxml2
 LOCAL_WHOLE_STATIC_LIBRARIES := libcts_audio_quality
 LOCAL_CFLAGS:= -g -fno-exceptions
 LOCAL_LDFLAGS:= -g -lrt -ldl -lm -fno-exceptions -lpthread
diff --git a/suite/audio_quality/lib/Android.mk b/suite/audio_quality/lib/Android.mk
index 44fbebb..cd19e85 100644
--- a/suite/audio_quality/lib/Android.mk
+++ b/suite/audio_quality/lib/Android.mk
@@ -17,9 +17,8 @@
 LOCAL_PATH:= $(call my-dir)
 include $(CLEAR_VARS)
 LOCAL_SRC_FILES := $(call all-subdir-cpp-files)
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/include $(LOCAL_PATH)/src \
-	external/tinyalsa/include/ external/tinyxml/ libcore/include
-LOCAL_STATIC_LIBRARIES += libutils liblog libtinyalsa libcutils libtinyxml
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/include $(LOCAL_PATH)/src
+LOCAL_STATIC_LIBRARIES += libutils liblog libtinyalsa libcutils libtinyxml2
 LOCAL_CFLAGS:= -g -fno-exceptions
 LOCAL_LDFLAGS:= -g -lrt -ldl -lm -fno-exceptions
 LOCAL_MODULE_HOST_OS := linux
diff --git a/suite/audio_quality/lib/include/GenericFactory.h b/suite/audio_quality/lib/include/GenericFactory.h
index 9f74b7f..9dc9c02 100644
--- a/suite/audio_quality/lib/include/GenericFactory.h
+++ b/suite/audio_quality/lib/include/GenericFactory.h
@@ -26,7 +26,7 @@
  */
 class GenericFactory {
 public:
-
+    virtual ~GenericFactory();
     virtual ClientInterface* createClientInterface();
     virtual TaskGeneric* createTask(TaskGeneric::TaskType type);
 };
diff --git a/suite/audio_quality/lib/include/task/ModelBuilder.h b/suite/audio_quality/lib/include/task/ModelBuilder.h
index d8d9e6b..c997000 100644
--- a/suite/audio_quality/lib/include/task/ModelBuilder.h
+++ b/suite/audio_quality/lib/include/task/ModelBuilder.h
@@ -21,8 +21,9 @@
 #include <utils/String8.h>
 #include "TaskAll.h"
 
-class TiXmlElement;
-
+namespace tinyxml2 {
+class XMLElement;
+};
 
 class GenericFactory;
 
@@ -48,11 +49,11 @@
     };
 
 private:
-    virtual bool parseAttributes(const TiXmlElement& elem, TaskGeneric& task);
-    virtual TaskGeneric* parseGeneric(const TiXmlElement& elem, int tableIndex);
-    virtual TaskCase* parseCase(const TiXmlElement& root);
-    virtual TaskBatch* parseBatch(const TiXmlElement& root, const android::String8& xmlFileName);
-    virtual TaskCase* parseInclude(const TiXmlElement& elem, const android::String8& path);
+    virtual bool parseAttributes(const tinyxml2::XMLElement& elem, TaskGeneric& task);
+    virtual TaskGeneric* parseGeneric(const tinyxml2::XMLElement& elem, int tableIndex);
+    virtual TaskCase* parseCase(const tinyxml2::XMLElement& root);
+    virtual TaskBatch* parseBatch(const tinyxml2::XMLElement& root, const android::String8& xmlFileName);
+    virtual TaskCase* parseInclude(const tinyxml2::XMLElement& elem, const android::String8& path);
 
     struct ParsingInfo {
         const char* name; // XML element name
diff --git a/suite/audio_quality/lib/src/GenericFactory.cpp b/suite/audio_quality/lib/src/GenericFactory.cpp
index 2402055..d70d907 100644
--- a/suite/audio_quality/lib/src/GenericFactory.cpp
+++ b/suite/audio_quality/lib/src/GenericFactory.cpp
@@ -69,3 +69,6 @@
     LOGD("GenericFactory::createTask 0x%x, type %d", task, type);
     return task;
 }
+
+GenericFactory::~GenericFactory() {
+}
diff --git a/suite/audio_quality/lib/src/task/ModelBuilder.cpp b/suite/audio_quality/lib/src/task/ModelBuilder.cpp
index dc06ffc..78e5138 100644
--- a/suite/audio_quality/lib/src/task/ModelBuilder.cpp
+++ b/suite/audio_quality/lib/src/task/ModelBuilder.cpp
@@ -14,7 +14,7 @@
  * the License.
  */
 
-#include <tinyxml.h>
+#include <tinyxml2.h>
 
 #include <memory>
 
@@ -22,6 +22,8 @@
 #include "GenericFactory.h"
 #include "task/ModelBuilder.h"
 
+using namespace tinyxml2;
+
 static const int MAX_NO_CHILDREN = 8;
 static const ModelBuilder::ChildInfo CASE_TABLE[] = {
     { TaskGeneric::ETaskSetup, true },
@@ -83,12 +85,13 @@
 TaskGeneric* ModelBuilder::parseTestDescriptionXml(const android::String8& xmlFileName,
         bool caseOnly)
 {
-    TiXmlDocument doc(xmlFileName.string());
-    if (!doc.LoadFile()) {
-        LOGE("ModelBuilder::parseTestDescriptionXml cannot load file %s", xmlFileName.string());
+    XMLDocument doc;
+    int error = doc.LoadFile(xmlFileName.string());
+    if (error != XML_NO_ERROR) {
+        LOGE("ModelBuilder::parseTestDescriptionXml cannot load file %s: %d", xmlFileName.string(), error);
         return NULL;
     }
-    const TiXmlElement* root;
+    const XMLElement* root;
     if ((root = doc.FirstChildElement("case")) != NULL) {
         return parseCase(*root);
     } else if (!caseOnly && ((root = doc.FirstChildElement("batch")) != NULL)) {
@@ -99,7 +102,7 @@
     }
 }
 
-TaskGeneric* ModelBuilder::parseGeneric(const TiXmlElement& self, int tableIndex)
+TaskGeneric* ModelBuilder::parseGeneric(const XMLElement& self, int tableIndex)
 {
     TaskGeneric::TaskType typeSelf(mParsingTable[tableIndex].type);
     int Nchildren = mParsingTable[tableIndex].Nchildren;
@@ -118,7 +121,7 @@
     }
 
     // handle children
-    const TiXmlElement* child = self.FirstChildElement();
+    const XMLElement* child = self.FirstChildElement();
     while (child != NULL) {
         TaskGeneric::TaskType childType(TaskGeneric::ETaskInvalid);
         int i;
@@ -175,14 +178,14 @@
 }
 
 
-TaskCase* ModelBuilder::parseCase(const TiXmlElement& root)
+TaskCase* ModelBuilder::parseCase(const XMLElement& root)
 {
     // position 0 of mParsingTable should be "case"
     return reinterpret_cast<TaskCase*>(parseGeneric(root, 0));
 }
 
 
-TaskBatch* ModelBuilder::parseBatch(const TiXmlElement& root, const android::String8& xmlFileName)
+TaskBatch* ModelBuilder::parseBatch(const XMLElement& root, const android::String8& xmlFileName)
 {
     std::unique_ptr<TaskBatch> batch(
             reinterpret_cast<TaskBatch*>(mFactory->createTask(TaskGeneric::ETaskBatch)));
@@ -194,7 +197,7 @@
         return NULL;
     }
 
-    const TiXmlElement* inc = root.FirstChildElement("include");
+    const XMLElement* inc = root.FirstChildElement("include");
     if (inc == NULL) {
         LOGE("ModelBuilder::handleBatch no include inside batch");
         return NULL;
@@ -231,7 +234,7 @@
     return batch.release();
 }
 
-TaskCase* ModelBuilder::parseInclude(const TiXmlElement& elem, const android::String8& path)
+TaskCase* ModelBuilder::parseInclude(const XMLElement& elem, const android::String8& path)
 {
     const char* fileName = elem.Attribute("file");
     if (fileName == NULL) {
@@ -245,9 +248,9 @@
     return reinterpret_cast<TaskCase*>(parseTestDescriptionXml(incFile, true));
 }
 
-bool ModelBuilder::parseAttributes(const TiXmlElement& elem, TaskGeneric& task)
+bool ModelBuilder::parseAttributes(const XMLElement& elem, TaskGeneric& task)
 {
-    const TiXmlAttribute* attr = elem.FirstAttribute();
+    const XMLAttribute* attr = elem.FirstAttribute();
     while (1) {
         if (attr == NULL) {
             break;
diff --git a/suite/audio_quality/test/Android.mk b/suite/audio_quality/test/Android.mk
index 5af29f0..7a84802 100644
--- a/suite/audio_quality/test/Android.mk
+++ b/suite/audio_quality/test/Android.mk
@@ -22,15 +22,13 @@
 LOCAL_C_INCLUDES := \
     $(LOCAL_PATH)/../lib/include \
     $(LOCAL_PATH)/../lib/src \
-    external/tinyalsa/include/ \
-    libcore/include \
 
 LOCAL_STATIC_LIBRARIES := \
     libutils \
     liblog \
     libcutils \
     libtinyalsa \
-    libtinyxml \
+    libtinyxml2 \
 
 # need to keep everything in libcts_.. Otherwise, linker will drop some
 # functions and linker error happens