Fixed installer couldn't add account to manifest file
[platform/framework/web/wrt-installer.git] / src / jobs / widget_install / manifest.cpp
index f143d46..977f58e 100644 (file)
@@ -155,9 +155,10 @@ void Manifest::serialize(xmlTextWriterPtr writer)
         writeAttribute(writer, "type", this->type);
         writeAttribute(writer, "version", this->version);
         if (!this->installLocation.IsNull()) {
-            writeAttribute(writer, "install-location", (*this->installLocation),
-                           (*this->installLocation).empty());
+            writeAttribute(writer, "install-location", (*this->installLocation));
         }
+        writeAttribute(writer, "storeclient-id", this->storeClientId,
+                !this->storeClientId.empty());
 
         FOREACH(l, this->label)
         {
@@ -193,6 +194,14 @@ void Manifest::serialize(xmlTextWriterPtr writer)
         FOREACH(l, this->livebox) {
             l->serialize(writer);
         }
+        FOREACH(acc, this->account)
+        {
+            acc->serialize(writer);
+        }
+
+        if (!this->privileges.isEmpty()) {
+            this->privileges.serialize(writer);
+        }
     }
     endElement(writer);
 }
@@ -281,6 +290,9 @@ void UiApplication::serialize(xmlTextWriterPtr writer)
         writeAttribute(writer, "name", *c);
         endElement(writer);
     }
+    FOREACH(m, this->metadata) {
+        m->serialize(writer);
+    }
     endElement(writer);
 }
 
@@ -356,11 +368,25 @@ void LiveBox::serialize(xmlTextWriterPtr writer)
     writeAttribute(writer, "nodisplay", "false");
 
     if (!this->label.empty()) {
-        startElement(writer, "label");
-        writeText(writer, this->label);
-        endElement(writer);
+        int defaultLabelChk = 0;
+        FOREACH(m, this->label)
+        {
+            std::pair<DPL::String, DPL::String> boxLabel = *m;
+            startElement(writer, "label");
+            if (!boxLabel.first.empty()) {
+                writeAttribute(writer, "xml:lang", boxLabel.first);
+            } else {
+                defaultLabelChk++;
+            }
+            writeText(writer, boxLabel.second);
+            endElement(writer);
+        }
+        if(!defaultLabelChk) {
+            startElement(writer, "label");
+            writeText(writer, DPL::FromUTF8String("NO NAME"));
+            endElement(writer);
+        }
     }
-
     if (!this->icon.empty()) {
         startElement(writer, "icon");
         writeText(writer, this->icon);
@@ -382,14 +408,20 @@ void LiveBox::serialize(xmlTextWriterPtr writer)
         writeAttribute(writer, "mouse_event", this->box.boxMouseEvent);
         writeAttribute(writer, "touch_effect", this->box.boxTouchEffect);
 
-        FOREACH(m, this->box.boxSize)
+        FOREACH(it, this->box.boxSize)
         {
-            std::pair<DPL::String, DPL::String> boxSize = *m;
             startElement(writer, "size");
-            if (!boxSize.second.empty()) {
-                writeAttribute(writer, "preview", boxSize.second);
+            if (!(*it).m_preview.empty()) {
+                writeAttribute(writer, "preview", (*it).m_preview);
+            }
+            if (!(*it).m_useDecoration.empty()) {
+                writeAttribute(writer, "need_frame", (*it).m_useDecoration);
+            } else {
+                // default value of use-decoration is "true"
+                writeAttribute(writer, "need_frame", DPL::String(L"true"));
             }
-            writeText(writer, boxSize.first);
+
+            writeText(writer, (*it).m_size);
             endElement(writer);
         }
 
@@ -422,5 +454,62 @@ void LiveBox::serialize(xmlTextWriterPtr writer)
 
     endElement(writer);
 }
+
+void Account::serialize(xmlTextWriterPtr writer)
+{
+    startElement(writer, "account");
+    {
+        startElement(writer, "account-provider");
+        writeAttribute(writer, "appid", this->provider.appid);
+        writeAttribute(writer, "multiple-accounts-support",
+                this->provider.multiAccount);
+
+        FOREACH(i, this->provider.icon)
+        {
+            startElement(writer, "icon");
+            writeAttribute(writer, "section", i->first);
+            writeText(writer, i->second);
+            endElement(writer);
+        }
+        FOREACH(n, this->provider.name)
+        {
+            writeElementWithOneAttribute(writer, "label",
+                    n->getString(), "xml:lang",
+                    n->getLang(), n->hasLang());
+        }
+        FOREACH(c, this->provider.capability)
+        {
+            startElement(writer, "capability");
+            writeText(writer, *c);
+            endElement(writer);
+        }
+        endElement(writer);
+    }
+    endElement(writer);
+}
+
+void Privilege::serialize(xmlTextWriterPtr writer)
+{
+    startElement(writer, "privileges");
+    {
+        FOREACH(it, this->name)
+        {
+            startElement(writer, "privilege");
+            writeText(writer, *it);
+            endElement(writer);
+        }
+    }
+    endElement(writer);
+}
+
+void Metadata::serialize(xmlTextWriterPtr writer)
+{
+    startElement(writer, "metadata");
+    writeAttribute(writer, "key", *this->key);
+    if (!this->value.IsNull()) {
+        writeAttribute(writer, "value", *this->value);
+    }
+    endElement(writer);
+}
 } //namespace Jobs
 } //namespace WidgetInstall