[Release] wrt-installer_0.1.38
authorJihoon Chung <jihoon.chung@samsung.com>
Tue, 23 Apr 2013 09:30:58 +0000 (18:30 +0900)
committerJihoon Chung <jihoon.chung@samsung.com>
Tue, 23 Apr 2013 09:30:58 +0000 (18:30 +0900)
packaging/wrt-installer.spec
src/configuration_parser/widget_parser.cpp
src/jobs/widget_install/task_encrypt_resource.cpp
src/jobs/widget_install/task_manifest_file.cpp
tests/general/ParsingTizenAppserviceTests.cpp

index a7619cc..fc55d5b 100644 (file)
@@ -1,7 +1,7 @@
-#git:framework/web/wrt-installer wrt-installer 0.1.37
+#git:framework/web/wrt-installer wrt-installer 0.1.38
 Name:       wrt-installer
 Summary:    Installer for tizen Webruntime
-Version:    0.1.37
+Version:    0.1.38
 Release:    1
 Group:      Development/Libraries
 License:    Apache License, Version 2.0
index e22f4a6..da4e1b9 100644 (file)
@@ -37,7 +37,9 @@
 #include <dpl/log/log.h>
 #include <dpl/fast_delegate.h>
 #include <dpl/foreach.h>
+#include <pcrecpp.h>
 #include <algorithm>
+#include <string>
 #include <cstdio>
 #include <cerrno>
 
@@ -1263,34 +1265,84 @@ class ApplicationParser : public ElementParser
 
     virtual void Verify()
     {
+        VerifyIdAndPackage();
+        VerifyVersion();
+    }
+
+    ApplicationParser(ConfigParserData& data) :
+        ElementParser(),
+        m_data(data),
+        m_id(DPL::OptionalString::Null),
+        m_version(DPL::OptionalString::Null),
+        m_properNamespace(false)
+    {}
+
+  private:
+    void VerifyIdAndPackage()
+    {
+        if (!m_package)
+        {
+            ThrowMsg(Exception::ParseError,
+                     "application element must have package attribute");
+        }
+        else
+        {
+            pcrecpp::RE re(REGEXP_PACKAGE);
+            if (!re.FullMatch(DPL::ToUTF8String(*m_package)))
+            {
+                ThrowMsg(Exception::ParseError,
+                         "invalid format of package attribute");
+            }
+        }
+
         if (!m_id) {
             ThrowMsg(Exception::ParseError,
                      "application element must have id attribute");
         }
-
-        if (!!m_package) {
-            m_data.tizenPkgId = m_package;
+        else
+        {
+            std::string package;
+            pcrecpp::RE re(REGEXP_ID);
+            if (!re.FullMatch(DPL::ToUTF8String(*m_id), &package))
+            {
+                ThrowMsg(Exception::ParseError,
+                         "invalid format of id attribute");
+            }
+            if (package != DPL::ToUTF8String(*m_package))
+            {
+                ThrowMsg(Exception::ParseError,
+                         "invalid package prefix in id attribute");
+            }
         }
 
-        if (!m_version) {
+        m_data.tizenAppId = m_id;
+        m_data.tizenPkgId = m_package;
+    }
+
+    void VerifyVersion()
+    {
+        if (!m_version)
+        {
             ThrowMsg(Exception::ParseError,
                      "application element must have required_version attribute");
         }
+        else
+        {
+            pcrecpp::RE re(REGEXP_VERSION);
+            if (!re.FullMatch(DPL::ToUTF8String(*m_version)))
+            {
+                ThrowMsg(Exception::ParseError,
+                         "invalid format of version attribute");
+            }
+        }
 
-        //TODO check if id and version format is right
-        m_data.tizenAppId = m_id;
         m_data.tizenMinVersionRequired = m_version;
     }
 
-    ApplicationParser(ConfigParserData& data) :
-        ElementParser(),
-        m_data(data),
-        m_id(DPL::OptionalString::Null),
-        m_version(DPL::OptionalString::Null),
-        m_properNamespace(false)
-    {}
+    static const char* const REGEXP_PACKAGE;
+    static const char* const REGEXP_ID;
+    static const char* const REGEXP_VERSION;
 
-  private:
     ConfigParserData& m_data;
     DPL::OptionalString m_id;
     DPL::OptionalString m_package;
@@ -1298,6 +1350,10 @@ class ApplicationParser : public ElementParser
     bool m_properNamespace;
 };
 
+const char* const ApplicationParser::REGEXP_PACKAGE = "[0-9A-Za-z]{10}";
+const char* const ApplicationParser::REGEXP_ID = "([0-9A-Za-z]{10})\\..{2,52}";
+const char* const ApplicationParser::REGEXP_VERSION = "\\d+\\.\\d+(\\.\\d+)?";
+
 class SplashParser : public ElementParser
 {
   public:
index bca5665..647817e 100644 (file)
@@ -347,6 +347,10 @@ void TaskEncryptResource::EncryptFile(const std::string &fileName)
             ByteBuffer *getBuffer = EncryptChunkByTrustZone(
                     &appInfo,
                     inChunk.get(), bytesRead);
+            if (getBuffer == NULL) {
+                ThrowMsg(Exceptions::EncryptionFailed,
+                        "Encryption Failed using TrustZone");
+            }
             int decBufSize = getBuffer->GetRemaining();
 
             outChunk.reset(new unsigned char[decBufSize]);
index 18ddf7e..7074609 100644 (file)
@@ -635,6 +635,7 @@ void TaskManifestFile::writeManifest(const DPL::String & path)
     setWidgetName(manifest, uiApp);
     setWidgetIds(manifest, uiApp);
     setWidgetIcons(uiApp);
+    setWidgetDescription(manifest);
     setWidgetManifest(manifest);
     setWidgetOtherInfo(uiApp);
     setAppControlsInfo(uiApp);
index 0ac368b..5896f41 100644 (file)
@@ -23,6 +23,7 @@
 
 #include <string>
 #include <algorithm>
+#include <dpl/log/log.h>
 #include <dpl/test/test_runner.h>
 #include <dpl/wrt-dao-ro/widget_dao_read_only.h>
 #include <InstallerWrapper.h>
@@ -46,16 +47,17 @@ RUNNER_TEST(tizen_appservice_disposition)
             tizenId) == InstallerWrapper::Success);
 
     WrtDB::WidgetDAOReadOnly dao(DPL::FromASCIIString(tizenId));
-    WidgetApplicationServiceList appsvcList;
-    dao.getAppServiceList(appsvcList);
+    WrtDB::WidgetAppControlList appsvcList;
+    dao.getAppControlList(appsvcList);
     uninstall(tizenId);
 
+    LogDebug("Actual size" << appsvcList.size());
     RUNNER_ASSERT_MSG(appsvcList.size() == 4, "Incorrect list size");
-    WidgetApplicationService s;
+    WrtDB::WidgetAppControl s;
     s.src = DPL::FromUTF8String("edit1.html");
     s.operation = DPL::FromUTF8String("http://tizen.org/appsvc/operation/edit");
     s.mime = DPL::FromUTF8String("image/jpg");      /* mime type */
-    s.disposition = WidgetApplicationService::Disposition::WINDOW;
+    s.disposition = WrtDB::WidgetAppControl::Disposition::WINDOW;
     RUNNER_ASSERT_MSG(
         std::find(appsvcList.begin(), appsvcList.end(), s) != appsvcList.end(),
         "Unable to find service #");
@@ -63,7 +65,7 @@ RUNNER_TEST(tizen_appservice_disposition)
     s.src = DPL::FromUTF8String("edit2.html");
     s.operation = DPL::FromUTF8String("http://tizen.org/appsvc/operation/view");
     s.mime = DPL::FromUTF8String("audio/ogg");      /* mime type */
-    s.disposition = WidgetApplicationService::Disposition::WINDOW;
+    s.disposition = WrtDB::WidgetAppControl::Disposition::WINDOW;
     RUNNER_ASSERT_MSG(
         std::find(appsvcList.begin(), appsvcList.end(), s) != appsvcList.end(),
         "Unable to find service ##");
@@ -71,7 +73,7 @@ RUNNER_TEST(tizen_appservice_disposition)
     s.src = DPL::FromUTF8String("edit3.html");
     s.operation = DPL::FromUTF8String("http://tizen.org/appsvc/operation/call");
     s.mime = DPL::FromUTF8String("image/png");      /* mime type */
-    s.disposition = WidgetApplicationService::Disposition::INLINE;
+    s.disposition = WrtDB::WidgetAppControl::Disposition::INLINE;
     RUNNER_ASSERT_MSG(
         std::find(appsvcList.begin(), appsvcList.end(), s) != appsvcList.end(),
         "Unable to find service ###");
@@ -79,7 +81,7 @@ RUNNER_TEST(tizen_appservice_disposition)
     s.src = DPL::FromUTF8String("edit4.html");
     s.operation = DPL::FromUTF8String("http://tizen.org/appsvc/operation/send");
     s.mime = DPL::FromUTF8String("text/css");      /* mime type */
-    s.disposition = WidgetApplicationService::Disposition::WINDOW;
+    s.disposition = WrtDB::WidgetAppControl::Disposition::WINDOW;
     RUNNER_ASSERT_MSG(
         std::find(appsvcList.begin(), appsvcList.end(), s) != appsvcList.end(),
         "Unable to find service ####");