Upstream version 11.39.244.0
[platform/framework/web/crosswalk.git] / src / xwalk / app / tools / android / handle_xml.py
old mode 100644 (file)
new mode 100755 (executable)
index 2b68360..b9fe761
@@ -24,6 +24,14 @@ def EditElementAttribute(doc, node, name, value):
     item.setAttribute(name, value)
 
 
+def EditElementValueByNodeName(doc, node, name, value):
+  items = doc.getElementsByTagName(node)
+  for item in items:
+    if item.attributes['name'].value == name:
+      item.firstChild.data = value
+      break
+
+
 def AddElementAttributeAndText(doc, node, name, value, data):
   root = doc.documentElement
   item = doc.createElement(node)
@@ -33,14 +41,34 @@ def AddElementAttributeAndText(doc, node, name, value, data):
   root.appendChild(item)
 
 
-def AddThemeStyle(doc, node, name, value):
-  item = doc.getElementsByTagName(node)[0]
-  src_str = item.attributes[name].value
-  src_str = src_str + '.' + value
-  item.attributes[name].value = src_str
+def CompareNodes(node1, node2):
+  if node1.tagName != node2.tagName or node1.attributes is None:
+    return False
+  if node2.attributes is None:
+    return True
 
+  for item in node2.attributes.items():
+    if not item in node1.attributes.items():
+      return False
+  return True
 
-def RemoveThemeStyle(doc, node, name, value):
-  item = doc.getElementsByTagName(node)[0]
-  dest_str = item.attributes[name].value.replace('.' + value, '')
-  item.attributes[name].value = dest_str
+
+def MergeNodes(node1, node2):
+  tmp_node_list = []
+  for item2 in node2.childNodes:
+    if item2.nodeType != item2.ELEMENT_NODE:
+      continue
+    item1 = None
+    for tmp_item in node1.childNodes:
+      if tmp_item.nodeType != tmp_item.ELEMENT_NODE:
+        continue
+      if CompareNodes(tmp_item, item2):
+        item1 = tmp_item
+        break
+    if item1 is not None:
+      MergeNodes(item1, item2)
+    else:
+      tmp_node_list.append(item2)
+
+  for item in tmp_node_list:
+    node1.appendChild(item)