-#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
#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>
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;
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:
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]);
setWidgetName(manifest, uiApp);
setWidgetIds(manifest, uiApp);
setWidgetIcons(uiApp);
+ setWidgetDescription(manifest);
setWidgetManifest(manifest);
setWidgetOtherInfo(uiApp);
setAppControlsInfo(uiApp);
#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>
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 #");
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 ##");
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 ###");
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 ####");