src/XmlHandler/PrivilegeHandler.cpp
src/XmlHandler/Parser/ManifestParser.cpp
src/XmlHandler/Parser/ManifestAccountsParser.cpp
+ src/XmlHandler/Parser/ManifestAppControlsParser.cpp
src/XmlHandler/Parser/ManifestLiveboxesParser.cpp
src/backend/backend.cpp
src/Util/InstallerUtil.cpp
#ifndef _INSTALLER_DEFS_H_
#define _INSTALLER_DEFS_H_
-#define OSP_INSTALLER_VERSION "osp-installer version=20130107.1"
+#define OSP_INSTALLER_VERSION "osp-installer version=20130107.2"
#define DIR_BIN L"/bin"
#define DIR_INFO L"/info"
AppControlData::AppControlData()
-:__pOperationDataList(null)
+:__pOperationList(null)
+,__pMimeTypeList(null)
+,__pUriList(null)
+
{
- __pOperationDataList = new (std::nothrow) ArrayListT<OperationData*>;
+ __pOperationList = new (std::nothrow) ArrayListT<String*>;
+ __pMimeTypeList = new (std::nothrow) ArrayListT<String*>;
+ __pUriList = new (std::nothrow) ArrayListT<String*>;
}
AppControlData::~AppControlData()
{
- __pOperationDataList->RemoveAll();
- delete __pOperationDataList;
-}
+ __pOperationList->RemoveAll();
+ delete __pOperationList;
+
+ __pMimeTypeList->RemoveAll();
+ delete __pMimeTypeList;
+ __pUriList->RemoveAll();
+ delete __pUriList;
+}
AccountData::AccountData()
:__pNameList(null)
}
result
-LiveboxData::SetName(const String& name)
+LiveboxData::SetProviderName(const String& providerName)
{
- __name = name;
+ __providerName = providerName;
return E_SUCCESS;
}
const String&
-LiveboxData::GetName(void) const
+LiveboxData::GetProviderName(void) const
{
- return __name;
+ return __providerName;
}
result
AppData::AppData()
:__pCategoryList(null)
-,__pAppControlData(null)
,__pAccountDataList(null)
+,__pAppControlDataList(null)
+,__legacyAppControls(false)
{
__pCategoryList = new (std::nothrow) ArrayListT<String*>;
- __pAppControlData = new (std::nothrow) AppControlData;
__pAccountDataList = new (std::nothrow) ArrayListT<AccountData*>;
+ __pAppControlDataList = new (std::nothrow) ArrayListT<AppControlData*>;
}
AppData::~AppData()
__pCategoryList->RemoveAll();
delete __pCategoryList;
- delete __pAppControlData;
-
__pAccountDataList->RemoveAll();
delete __pAccountDataList;
+
+ __pAppControlDataList->RemoveAll();
+ delete __pAppControlDataList;
}
#include "InstallerDefs.h"
-
-class OperationData
- : public Tizen::Base::Object
-{
-public:
- OperationData(){};
- virtual ~OperationData(){};
-
- Tizen::Base::String __id;
- Tizen::Base::String __mimeType;
- Tizen::Base::String __uri;
-};
-
-
-class AppControlData
- : public Tizen::Base::Object
-{
-public:
- AppControlData();
- virtual ~AppControlData();
-
- Tizen::Base::Collection::IListT<OperationData*>* __pOperationDataList;
-};
-
-
-class AccountData
- : public Tizen::Base::Object
-{
-public:
- AccountData();
- virtual ~AccountData();
-
- Tizen::Base::String __providerId;
- Tizen::Base::String __multipleAccountsSupport;
- Tizen::Base::String __accountIcon;
- Tizen::Base::String __accountSmallIcon;
- Tizen::Base::Collection::HashMap* __pNameList;
-};
-
-
class LiveboxData
: public Tizen::Base::Object
{
result SetIcon(const Tizen::Base::String& icon);
const Tizen::Base::String& GetIcon(void) const;
- result SetName(const Tizen::Base::String& name);
- const Tizen::Base::String& GetName(void) const;
+ result SetProviderName(const Tizen::Base::String& providerName);
+ const Tizen::Base::String& GetProviderName(void) const;
result AddName(const Tizen::Base::String& language, const Tizen::Base::String& name);
Tizen::Base::Collection::HashMap* GetNameList(void) const;
long long __updatePeriod;
Tizen::Base::String __popupEnabled;
Tizen::Base::String __icon;
- Tizen::Base::String __name;
+ Tizen::Base::String __providerName;
Tizen::Base::Collection::HashMap* __pNameList;
Tizen::Base::Collection::ArrayList* __pSizeList;
};
+class AccountData
+ : public Tizen::Base::Object
+{
+public:
+ AccountData();
+ virtual ~AccountData();
+
+ Tizen::Base::String __providerId;
+ Tizen::Base::String __multipleAccountsSupport;
+ Tizen::Base::String __accountIcon;
+ Tizen::Base::String __accountSmallIcon;
+ Tizen::Base::Collection::HashMap* __pNameList;
+};
+
+
+class AppControlData
+ : public Tizen::Base::Object
+{
+public:
+ AppControlData();
+ virtual ~AppControlData();
+
+ Tizen::Base::Collection::IListT<Tizen::Base::String*>* __pOperationList;
+ Tizen::Base::Collection::IListT<Tizen::Base::String*>* __pMimeTypeList;
+ Tizen::Base::Collection::IListT<Tizen::Base::String*>* __pUriList;
+};
+
+
class ContentData
: public Tizen::Base::Object
{
AppData();
virtual ~AppData();
- Tizen::Base::Collection::IListT<Tizen::Base::String*>* __pCategoryList;
- AppControlData* __pAppControlData;
Tizen::Base::String name;
+ Tizen::Base::Collection::IListT<Tizen::Base::String*>* __pCategoryList;
Tizen::Base::Collection::IListT<AccountData*>* __pAccountDataList;
+ Tizen::Base::Collection::IListT<AppControlData*>* __pAppControlDataList;
+
+ bool __legacyAppControls;
private:
};
__pWriter->StartElement("livebox");
- __pWriter->WriteAttribute("appid", pAppInfoImpl->GetPackageName() + "." + pLiveboxData->GetName() );
+ __pWriter->WriteAttribute("appid", pAppInfoImpl->GetPackageName() + "." + pLiveboxData->GetProviderName());
__pWriter->WriteAttribute("period", period);
__pWriter->WriteAttribute("pinup", "false");
WriteLanguageValue(pLiveboxNameList, label);
-// if (pLiveboxData->GetIcon().IsEmpty() == false)
-// {
-// String liveboxIcon;
-// liveboxIcon.Format(1024, L"%ls%ls/%ls", pPackageInfoImpl->GetAppRootPath().GetPointer(), DIR_SHARED_RES, pLiveboxData->GetIcon().GetPointer());
-//
-// __pWriter->StartElement("icon");
-// __pWriter->WriteString(liveboxIcon);
-// __pWriter->EndElement();
-// }
-
String menuIcon = pAppInfoImpl->GetMainmenuIcon();
if (menuIcon.IsEmpty() == false)
{
__pWriter->EndElement();
}
- WriteAppControl(pAppInfoImpl);
- WriteAppControl(index);
+ IListT<AppData*>* pAppDataList = __pContext->__pAppDataList;
+ TryReturn(pAppDataList, false, "[osp-installer] pAppDataList is null");
+
+ AppData* pAppData = null;
+ pAppDataList->GetAt(index, pAppData);
+ TryReturn(pAppData, false, "[osp-installer] pAppData is null");
+
+ if (pAppData->__legacyAppControls == true)
+ {
+ AppLogTag(OSP_INSTALLER, "Write(): AppControls spec is legacy");
+ WriteAppControl(pAppInfoImpl);
+ }
+ else
+ {
+ WriteAppControl(index);
+ }
__pWriter->EndElement();
pAppDataList->GetAt(index, pAppData);
TryReturn(pAppData, false, "[osp-installer] pAppData is null");
- if (pAppData->__pAppControlData)
+ IListT<AppControlData*>* pAppControlDataList = pAppData->__pAppControlDataList;
+ TryReturn(pAppControlDataList, false, "[osp-installer] pAppControlDataList is null");
+
+ for (int i = 0; i < pAppControlDataList->GetCount(); i++)
{
- if (pAppData->__pAppControlData->__pOperationDataList)
+ __pWriter->StartElement("application-service");
+
+ AppControlData* pAppControlData = null;
+ pAppControlDataList->GetAt(i, pAppControlData);
+ TryReturn(pAppControlData, false, "[osp-installer] pAppControlData is null");
+
+ IListT<String*>* pOperationList = pAppControlData->__pOperationList;
+ TryReturn(pOperationList, false, "[osp-installer] pOperationList is null");
+ for (int sub = 0; sub < pOperationList->GetCount(); sub++)
{
- int operationCount = pAppData->__pAppControlData->__pOperationDataList->GetCount();
+ String* pOperation = null;
+ pOperationList->GetAt(sub, pOperation);
+ TryReturn(pOperation, false, "[osp-installer] pOperation is null");
- for (int i = 0; i < operationCount; i++)
- {
- OperationData* pOperationData = null;
- pAppData->__pAppControlData->__pOperationDataList->GetAt(i, pOperationData);
+ __pWriter->StartElement("operation");
+ __pWriter->WriteAttribute("name", *pOperation);
+ __pWriter->EndElement(); // end of "operation"
+ }
- if (pOperationData == null) continue;
+ IListT<String*>* pMimeTypeList = pAppControlData->__pMimeTypeList;
+ TryReturn(pMimeTypeList, false, "[osp-installer] pMimeTypeList is null");
+ for (int sub = 0; sub < pMimeTypeList->GetCount(); sub++)
+ {
+ String* pMimeType = null;
+ pMimeTypeList->GetAt(sub, pMimeType);
+ TryReturn(pMimeType, false, "[osp-installer] pMimeType is null");
- __pWriter->StartElement("application-service");
- __pWriter->StartElement("operation");
- __pWriter->WriteAttribute("name", pOperationData->__id);
- __pWriter->EndElement(); // end of "operation"
+ if (pMimeType->IsEmpty() == true) continue;
- if (pOperationData->__uri.IsEmpty() == false)
- {
- __pWriter->StartElement("uri");
- __pWriter->WriteAttribute("name", pOperationData->__uri);
- __pWriter->EndElement();
- }
+ __pWriter->StartElement("mime");
+ __pWriter->WriteAttribute("name", *pMimeType);
+ __pWriter->EndElement(); // end of "mime"
+ }
- if (pOperationData->__mimeType.IsEmpty() == false)
- {
- __pWriter->StartElement("mime");
- __pWriter->WriteAttribute("name", pOperationData->__mimeType);
- __pWriter->EndElement();
- }
+ IListT<String*>* pUriList = pAppControlData->__pUriList;
+ TryReturn(pUriList, false, "[osp-installer] pUriList is null");
+ for (int sub = 0; sub < pUriList->GetCount(); sub++)
+ {
+ String* pUri = null;
+ pUriList->GetAt(sub, pUri);
+ TryReturn(pUri, false, "[osp-installer] pUri is null");
- __pWriter->EndElement(); // end of ""application-service""
- }
+ if (pUri->IsEmpty() == true) continue;
+
+ __pWriter->StartElement("uri");
+ __pWriter->WriteAttribute("name", *pUri);
+ __pWriter->EndElement(); // end of "uri"
}
+
+ __pWriter->EndElement(); // end of "application-service"
}
return true;
#include "ManifestHandler.h"
#include "PrivilegeHandler.h"
#include "InstallerUtil.h"
-#include "ManifestAccountsParser.h"
#include "ManifestLiveboxesParser.h"
+#include "ManifestAccountsParser.h"
+#include "ManifestAppControlsParser.h"
using namespace Tizen::Base;
using namespace Tizen::Base::Collection;
,__isDefaultName(false)
,__isDefaultAppDetected(false)
,__pAppData(null)
-,__pSubModeAppControlData(null)
-,__pOperationData(null)
+,__pSubModeAppControlDataList(null)
,__isParserMode(false)
{
}
{
status = OnDataControlStartElement();
}
- else if (strcasecmp(pName, "AppControl") == 0)
- {
- status = OnAppControlStartElement();
- }
- else if (strcasecmp(pName, "Capability") == 0)
- {
- status = OnCapabilityStartElement();
- }
- else if (strcasecmp(pName, "Resolution") == 0)
- {
- status = OnResolutionStartElement();
- }
else if (strcasecmp(pName, "Privileges") == 0)
{
status = OnPrivilegesStartElement();
{
status = OnContentStartElement();
}
- else if (strcasecmp(pName, "Operation") == 0)
- {
- status = OnOperationStartElement();
- }
else if (strcasecmp(pName, "Liveboxes") == 0)
{
status = OnLiveboxesStartElement(pName);
{
status = OnAccountsStartElement(pName);
}
+ else if (strcasecmp(pName, "AppControls") == 0)
+ {
+ status = OnAppControlsStartElement(pName);
+ }
if (!status)
{
TryReturn(__pParser, false, "[osp-installer] __pParser is null");
__pParser->OnEndElement(pName);
- if (strcasecmp(pName, "Accounts") == 0)
+ if (strcasecmp(pName, "Liveboxes") == 0)
+ {
+ status = OnLiveboxesEndElement();
+ }
+ else if (strcasecmp(pName, "Accounts") == 0)
{
status = OnAccountsEndElement();
}
- else if (strcasecmp(pName, "Liveboxes") == 0)
+ else if (strcasecmp(pName, "AppControls") == 0)
{
- status = OnLiveboxesEndElement();
+ status = OnAppControlsEndElement();
}
return status;
{
status = OnServiceAppEndElement();
}
- else if (strcasecmp(pName, "AppControl") == 0)
- {
- status = OnAppControlEndElement();
- }
else if (strcasecmp(pName, "DataControl") == 0)
{
status = OnDataControlEndElement();
{
status = OnNotificationEndElement();
}
- else if (strcasecmp(pName, "Capability") == 0)
- {
- status = OnCapabilityEndElement();
- }
- else if (strcasecmp(pName, "Resolution") == 0)
- {
- status = OnResolutionEndElement();
- }
else if (strcasecmp(pName, "Apps") == 0)
{
status = OnAppsEndElement();
{
status = OnManifestEndElement();
}
- else if (strcasecmp(pName, "Operation") == 0)
- {
- status = OnOperationEndElement();
- }
if (!status)
{
{
status = OnCategoryValue(pCharacters);
}
- else if (strcasecmp(pName, "MimeType") == 0)
- {
- status = OnMimeTypeValue(pCharacters);
- }
- else if (strcasecmp(pName, "Uri") == 0)
- {
- status = OnUriValue(pCharacters);
- }
if (!status)
{
return true;
}
-bool
-ManifestHandler::OnAppControlStartElement(void)
-{
- XmlAttribute *pAttr = null;
- char *pAttrValue1 = null;
- char *pAttrValue2 = null;
-
- pAttr = GetAttribute();
- TryReturn(pAttr, true, "[osp-installer] pAttr is null");
-
- pAttrValue1 = pAttr->Find("ProviderId");
- TryReturn(pAttrValue1, true, "[osp-installer] pAttrValue1 is null");
-
- pAttrValue2 = pAttr->Find("Category");
- TryReturn(pAttrValue2, true, "[osp-installer] pAttrValue2 is null");
-
- __pAppControlInfoImpl = new (std::nothrow) _AppControlInfoImpl;
- TryReturn(__pAppControlInfoImpl, false, "[osp-installer] __pAppControlInfoImpl is null");
-
- __pAppControlInfoImpl->SetProviderId(pAttrValue1);
- __pAppControlInfoImpl->SetCategory(pAttrValue2);
-
- AppLogTag(OSP_INSTALLER, "<AppControl ProviderId=\"%s\" Category=\"%s\">", pAttrValue1, pAttrValue2);
-
- return true;
-}
-
-bool
-ManifestHandler::OnCapabilityStartElement(void)
-{
- XmlAttribute *pAttr = null;
- char *pAttrValue = null;
-
- pAttr = GetAttribute();
- TryReturn(pAttr, true, "[osp-installer] pAttr is null");
-
- pAttrValue = pAttr->Find("OperationId");
- TryReturn(pAttrValue, true, "[osp-installer] pAttrValue1 is null");
-
- __pAppControlCapabilityInfoImpl = new (std::nothrow) _AppControlCapabilityInfoImpl;
- TryReturn(__pAppControlCapabilityInfoImpl, false, "[osp-installer] __pAppControlCapabilityInfoImpl is null");
-
- __pAppControlCapabilityInfoImpl->SetOperationId(pAttrValue);
-
- AppLogTag(OSP_INSTALLER, "<Capability OperationId=\"%s\">", pAttrValue);
-
- return true;
-}
-
-bool
-ManifestHandler::OnResolutionStartElement(void)
-{
- XmlAttribute *pAttr = null;
- char *pAttrValue1 = null;
- char *pAttrValue2 = null;
-
- pAttr = GetAttribute();
- TryReturn(pAttr, true, "[osp-installer] pAttr is null");
-
- pAttrValue1 = pAttr->Find("MimeType");
- pAttrValue2 = pAttr->Find("UriScheme");
-
- __pAppControlResolutionInfoImpl = new (std::nothrow) _AppControlResolutionInfoImpl;
- TryReturn(__pAppControlResolutionInfoImpl, false, "[osp-installer] __pAppControlResolutionInfoImpl is null");
-
- if (pAttrValue1)
- {
- String* pMimeType = new (std::nothrow) String(pAttrValue1);
- __pAppControlResolutionInfoImpl->SetMimeType(pMimeType);
- }
-
- if (pAttrValue2)
- {
- String* pUriScheme = new (std::nothrow) String(pAttrValue2);
- __pAppControlResolutionInfoImpl->SetUriScheme(pUriScheme);
- }
-
- AppLogTag(OSP_INSTALLER, "<Resolution MimeType=\"%s\" UriScheme=\"%s\">", pAttrValue1, pAttrValue2);
-
- return true;
-}
-
-bool
-ManifestHandler::OnOperationStartElement(void)
-{
- XmlAttribute *pAttr = null;
- char *pId = null;
-
- pAttr = GetAttribute();
- TryReturn(pAttr, true, "[osp-installer] pAttr is null");
-
- pId = pAttr->Find("Id");
- TryReturn(pId, true, "[osp-installer] pId is null");
-
- __pOperationData = new (std::nothrow) OperationData;
- TryReturn(__pOperationData, false, "[osp-installer] __pOperationData is null");
-
- __pOperationData->__id = pId;
-
- AppLogTag(OSP_INSTALLER, "<Operation Id=\"%s\">", pId);
-
- return true;
-}
bool
ManifestHandler::OnDataControlStartElement(void)
}
bool
+ManifestHandler::OnAppControlsStartElement(const char *pName)
+{
+ __pParser = new (std::nothrow) ManifestAppControlsParser;
+ TryReturn(__pParser, false, "[osp-installer] __pParser is null");
+
+ __isParserMode = true;
+ AppLogTag(OSP_INSTALLER, "------------------------------------------");
+ __pParser->Construct(this);
+
+ return __pParser->OnStartElement(pName);
+}
+
+bool
ManifestHandler::OnPrivilegesEndElement(void)
{
if (__pContext->IsVerificationMode() == false)
__isDefaultName = false;
+ if (__pContext->__isSubMode == true)
+ {
+ __pSubModeAppControlDataList = __pAppData->__pAppControlDataList;
+ __pAppData->__pAppControlDataList = null;
+ }
+
__pContext->__pAppDataList->Add(__pAppData);
__pAppData = null;
__isDefaultName = false;
+ if (__pContext->__isSubMode == true)
+ {
+ __pSubModeAppControlDataList = __pAppData->__pAppControlDataList;
+ __pAppData->__pAppControlDataList = null;
+ }
+
__pContext->__pAppDataList->Add(__pAppData);
__pAppData = null;
__pAppData = new (std::nothrow) AppData;
TryReturn(__pAppData, false, "[osp-installer] __pAppData is null");
- __pAppData->__pAppControlData = __pSubModeAppControlData;
- __pSubModeAppControlData = null;
+ __pAppData->__pAppControlDataList = __pSubModeAppControlDataList;
+ __pSubModeAppControlDataList = null;
__pContext->__pAppDataList->Add(__pAppData);
}
}
bool
-ManifestHandler::OnAppControlEndElement(void)
-{
- __pPackageAppInfoImpl->AddAppControl(__pAppControlInfoImpl);
- __pAppControlInfoImpl = null;
- AppLogTag(OSP_INSTALLER, "</AppControl>");
-
- if (__pContext->__isSubMode == true)
- {
- __pSubModeAppControlData = __pAppData->__pAppControlData;
- __pAppData->__pAppControlData = null;
- }
-
- return true;
-}
-
-bool
-ManifestHandler::OnCapabilityEndElement(void)
-{
- if (__pAppControlInfoImpl)
- {
- __pAppControlInfoImpl->AddCapability(__pAppControlCapabilityInfoImpl);
- __pAppControlCapabilityInfoImpl = null;
- }
- AppLogTag(OSP_INSTALLER, "</Capability>");
-
- return true;
-}
-
-bool
-ManifestHandler::OnResolutionEndElement(void)
-{
- __pAppControlCapabilityInfoImpl->AddResolution(__pAppControlResolutionInfoImpl);
- __pAppControlResolutionInfoImpl = null;
- AppLogTag(OSP_INSTALLER, "</Resolution>");
-
- return true;
-}
-
-bool
-ManifestHandler::OnOperationEndElement(void)
-{
- __pAppData->__pAppControlData->__pOperationDataList->Add(__pOperationData);
-
- return true;
-}
-
-bool
ManifestHandler::OnDataControlEndElement(void)
{
__pPackageAppInfoImpl->AddDataControl(__pDataControlInfoImpl);
}
bool
+ManifestHandler::OnLiveboxesEndElement(void)
+{
+ delete __pParser;
+ __isParserMode = false;
+ AppLogTag(OSP_INSTALLER, "------------------------------------------");
+
+ return true;
+}
+
+bool
ManifestHandler::OnAccountsEndElement(void)
{
delete __pParser;
}
bool
-ManifestHandler::OnLiveboxesEndElement(void)
+ManifestHandler::OnAppControlsEndElement(void)
{
delete __pParser;
__isParserMode = false;
}
bool
-ManifestHandler::OnMimeTypeValue(const char* pCharacters)
-{
- __pOperationData->__mimeType = pCharacters;
-
- AppLogTag(OSP_INSTALLER, "<MimeType>%s</MimeType>", pCharacters);
- return true;
-}
-
-bool
-ManifestHandler::OnUriValue(const char* pCharacters)
-{
- __pOperationData->__uri = pCharacters;
-
- AppLogTag(OSP_INSTALLER, "<Uri>%s</Uri>", pCharacters);
- return true;
-
-}
-
-bool
ManifestHandler::FindElement(const char *pName)
{
bool res = false;
bool OnContentsStartElement(void);
bool OnContentStartElement(void);
+ // Parsers
bool OnLiveboxesStartElement(const char *pName);
bool OnAccountsStartElement(const char *pName);
+ bool OnAppControlsStartElement(const char *pName);
// EndElement
bool OnPrivilegesEndElement(void);
bool OnUiScalabilityEndElement(void);
bool OnUiThemeEndElement(void);
- bool OnAppControlEndElement(void);
- bool OnCapabilityEndElement(void);
- bool OnResolutionEndElement(void);
- bool OnOperationEndElement(void);
bool OnDataControlEndElement(void);
bool OnDataControlTypeEndElement(void);
bool OnConditionEndElement(void);
bool OnContentsEndElement(void);
bool OnContentEndElement(void);
+ // Parsers
bool OnLiveboxesEndElement(void);
bool OnAccountsEndElement(void);
+ bool OnAppControlsEndElement(void);
bool OnManifestEndElement(void);
bool __isDefaultAppDetected;
AppData* __pAppData;
- AppControlData* __pSubModeAppControlData;
- OperationData* __pOperationData;
+ Tizen::Base::Collection::IListT<AppControlData*>* __pSubModeAppControlDataList;
bool __isParserMode;
ManifestParser* __pParser;
+ friend class ManifestAppControlsParser;
+
}; // ManifestHandler
#endif // _MANIFEST_HANDLER_H_
--- /dev/null
+//
+// Open Service Platform
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+/**
+ * @file ManifestAppControlsParser.cpp
+ * @brief This is the implementation file for %ManifestAppControlsParser class.
+ */
+
+#include <FIoFile.h>
+#include <FSys_SystemInfoImpl.h>
+#include <FAppPkg_PackageInfoImpl.h>
+#include <FBase_StringConverter.h>
+
+#include "ManifestAppControlsParser.h"
+#include "InstallerUtil.h"
+#include "InstallationContext.h"
+#include "ManifestHandler.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Utility;
+using namespace Tizen::App::Package;
+using namespace Tizen::Io;
+using namespace Tizen::System;
+
+ManifestAppControlsParser::ManifestAppControlsParser(void)
+:__pContext(null)
+,__pAppControlData(null)
+,__legacyAppControls(false)
+{
+}
+
+ManifestAppControlsParser::~ManifestAppControlsParser(void)
+{
+ delete __pAppControlData;
+}
+
+bool
+ManifestAppControlsParser::OnStartElement(const char *pName)
+{
+ TryReturn(pName, true, "[osp-installer] pName is null");
+ bool status = true;
+
+ if (strcasecmp(pName, "AppControls") == 0)
+ {
+ status = OnAppControlsStartElement();
+ }
+ else if (strcasecmp(pName, "AppControl") == 0)
+ {
+ status = OnAppControlStartElement();
+ }
+ else if (strcasecmp(pName, "Capability") == 0)
+ {
+ status = OnCapabilityStartElement();
+ }
+ else if (strcasecmp(pName, "Resolution") == 0)
+ {
+ status = OnResolutionStartElement();
+ }
+
+ return status;
+}
+
+bool
+ManifestAppControlsParser::OnEndElement(const char *pName)
+{
+ TryReturn(pName, true, "[osp-installer] pName is null");
+ bool status = true;
+
+ if (strcasecmp(pName, "AppControls") == 0)
+ {
+ status = OnAppControlsEndElement();
+ }
+ else if (strcasecmp(pName, "AppControl") == 0)
+ {
+ status = OnAppControlEndElement();
+ }
+ else if (strcasecmp(pName, "Capability") == 0)
+ {
+ status = OnCapabilityEndElement();
+ }
+ else if (strcasecmp(pName, "Resolution") == 0)
+ {
+ status = OnResolutionEndElement();
+ }
+
+ return true;
+}
+
+bool
+ManifestAppControlsParser::OnCharacters(const char *pCharacters)
+{
+ TryReturn(pCharacters, true, "[osp-installer] pCharacters is null");
+ bool status = true;
+
+ ManifestHandler* pHandler = GetHandler();
+ TryReturn(pHandler, false, "[osp-installer] pHandler is null");
+
+ char *pName = pHandler->GetElementName();
+ TryReturn(pName, false, "[osp-installer] pName is null");
+
+ if (strcasecmp(pName, "Operation") == 0)
+ {
+ status = OnOperationValue(pCharacters);
+ }
+ else if (strcasecmp(pName, "MimeType") == 0)
+ {
+ status = OnMimeTypeValue(pCharacters);
+ }
+ else if (strcasecmp(pName, "Uri") == 0)
+ {
+ status = OnUriValue(pCharacters);
+ }
+
+ return true;
+}
+
+bool
+ManifestAppControlsParser::OnAppControlsStartElement(void)
+{
+ ManifestHandler* __pHandler = GetHandler();
+ TryReturn(__pHandler, false, "[osp-installer] __pHandler is null");
+
+ __pContext = __pHandler->GetContext();
+ TryReturn(__pContext, false, "[osp-installer] __pContext is null");
+
+ AppLogTag(OSP_INSTALLER, " <AppControls>");
+ return true;
+}
+
+bool
+ManifestAppControlsParser::OnAppControlStartElement(void)
+{
+ ManifestHandler* pHandler = GetHandler();
+ TryReturn(pHandler, false, "[osp-installer] pHandler is null");
+
+ AppData* pAppData = pHandler->GetAppData();
+ TryReturn(pAppData, false, "[osp-installer] pAppData is null");
+
+ AppLogTag(OSP_INSTALLER, " <AppControl>");
+
+ XmlAttribute *pAttr = pHandler->GetAttribute();
+ if (pAttr == null)
+ {
+ __pAppControlData = new (std::nothrow) AppControlData;
+ TryReturn(__pAppControlData, false, "[osp-installer] __pAppControlData is null");
+ __legacyAppControls = false;
+
+ return true;
+ }
+
+ pHandler->__pAppControlInfoImpl = new (std::nothrow) _AppControlInfoImpl;
+ TryReturn(pHandler->__pAppControlInfoImpl, false, "[osp-installer] pHandler->__pAppControlInfoImpl is null");
+
+ char* pProviderId = pAttr->Find("ProviderId");
+ if (pProviderId)
+ {
+ AppLogTag(OSP_INSTALLER, " - ProviderId=%s", pProviderId);
+ pHandler->__pAppControlInfoImpl->SetProviderId(pProviderId);
+ __legacyAppControls = true;
+ }
+
+ char* pCategory = pAttr->Find("Category");
+ if (pCategory)
+ {
+ AppLogTag(OSP_INSTALLER, " - Category=%s", pCategory);
+ pHandler->__pAppControlInfoImpl->SetCategory(pCategory);
+ }
+
+ return true;
+}
+
+bool
+ManifestAppControlsParser::OnCapabilityStartElement(void)
+{
+ if (__legacyAppControls == false)
+ {
+ return true;
+ }
+
+ ManifestHandler* pHandler = GetHandler();
+ TryReturn(pHandler, false, "[osp-installer] pHandler is null");
+
+ XmlAttribute *pAttr = pHandler->GetAttribute();
+ TryReturn(pAttr, true, "[osp-installer] pAttr is null");
+
+ AppLogTag(OSP_INSTALLER, " <Capability>");
+
+ char* pOperationId = pAttr->Find("OperationId");
+ if (pOperationId)
+ {
+ AppLogTag(OSP_INSTALLER, " - OperationId=%s", pOperationId);
+
+ pHandler->__pAppControlCapabilityInfoImpl = new (std::nothrow) _AppControlCapabilityInfoImpl;
+ TryReturn(pHandler->__pAppControlCapabilityInfoImpl, false, "[osp-installer] pHandler->__pAppControlCapabilityInfoImpl is null");
+
+ pHandler->__pAppControlCapabilityInfoImpl->SetOperationId(pOperationId);
+ }
+
+ return true;
+}
+
+bool
+ManifestAppControlsParser::OnResolutionStartElement(void)
+{
+ if (__legacyAppControls == false)
+ {
+ return true;
+ }
+
+ ManifestHandler* pHandler = GetHandler();
+ TryReturn(pHandler, false, "[osp-installer] pHandler is null");
+
+ XmlAttribute *pAttr = pHandler->GetAttribute();
+ TryReturn(pAttr, true, "[osp-installer] pAttr is null");
+
+ pHandler->__pAppControlResolutionInfoImpl = new (std::nothrow) _AppControlResolutionInfoImpl;
+ TryReturn(pHandler->__pAppControlResolutionInfoImpl, false, "[osp-installer] pHandler->__pAppControlResolutionInfoImpl is null");
+
+ AppLogTag(OSP_INSTALLER, " <Resolution>");
+
+ char* pMimeType = pAttr->Find("MimeType");
+ if (pMimeType)
+ {
+ AppLogTag(OSP_INSTALLER, " - MimeType=%s", pMimeType);
+ pHandler->__pAppControlResolutionInfoImpl->SetMimeType(new (std::nothrow) String(pMimeType));
+ }
+
+ char* pUriScheme = pAttr->Find("UriScheme");
+ if (pUriScheme)
+ {
+ AppLogTag(OSP_INSTALLER, " - UriScheme=%s", pUriScheme);
+ pHandler->__pAppControlResolutionInfoImpl->SetUriScheme(new (std::nothrow) String(pUriScheme));
+ }
+
+ return true;
+}
+
+bool
+ManifestAppControlsParser::OnAppControlsEndElement(void)
+{
+ ManifestHandler* pHandler = GetHandler();
+ TryReturn(pHandler, false, "[osp-installer] pHandler is null");
+
+ AppData* pAppData = pHandler->GetAppData();
+ TryReturn(pAppData, false, "[osp-installer] pAppData is null");
+
+ pAppData->__legacyAppControls = __legacyAppControls;
+ AppLogTag(OSP_INSTALLER, " </AppControls>");
+
+ if (pAppData->__legacyAppControls == true)
+ {
+ AppLogTag(OSP_INSTALLER, " AppControls spec is legacy");
+ }
+
+ return true;
+}
+
+bool
+ManifestAppControlsParser::OnAppControlEndElement(void)
+{
+ ManifestHandler* pHandler = GetHandler();
+ TryReturn(pHandler, false, "[osp-installer] pHandler is null");
+
+ AppData* pAppData = pHandler->GetAppData();
+ TryReturn(pAppData, false, "[osp-installer] pAppData is null");
+
+ AppLogTag(OSP_INSTALLER, " </AppControl>");
+
+ if (__legacyAppControls == true)
+ {
+ pHandler->__pPackageAppInfoImpl->AddAppControl(pHandler->__pAppControlInfoImpl);
+ pHandler->__pAppControlInfoImpl = null;
+ }
+ else
+ {
+ pAppData->__pAppControlDataList->Add(__pAppControlData);
+ __pAppControlData = null;
+ }
+
+ return true;
+}
+
+bool
+ManifestAppControlsParser::OnCapabilityEndElement(void)
+{
+ if (__legacyAppControls == false)
+ {
+ return true;
+ }
+
+ ManifestHandler* pHandler = GetHandler();
+ TryReturn(pHandler, false, "[osp-installer] pHandler is null");
+
+ if (pHandler->__pAppControlInfoImpl)
+ {
+ pHandler->__pAppControlInfoImpl->AddCapability(pHandler->__pAppControlCapabilityInfoImpl);
+ pHandler->__pAppControlCapabilityInfoImpl = null;
+ }
+ AppLogTag(OSP_INSTALLER, " </Capability>");
+
+ return true;
+}
+
+bool
+ManifestAppControlsParser::OnResolutionEndElement(void)
+{
+ if (__legacyAppControls == false)
+ {
+ return true;
+ }
+
+ ManifestHandler* pHandler = GetHandler();
+ TryReturn(pHandler, false, "[osp-installer] pHandler is null");
+
+ pHandler->__pAppControlCapabilityInfoImpl->AddResolution(pHandler->__pAppControlResolutionInfoImpl);
+ pHandler->__pAppControlResolutionInfoImpl = null;
+
+ AppLogTag(OSP_INSTALLER, " </Resolution>");
+
+ return true;
+}
+
+bool
+ManifestAppControlsParser::OnOperationValue(const char* pCharacters)
+{
+ if (__legacyAppControls == true)
+ {
+ return true;
+ }
+
+ if (pCharacters && pCharacters[0])
+ {
+ String* pStr = new (std::nothrow) String(pCharacters);
+ if (__pAppControlData->__pOperationList->Contains(pStr) == false)
+ {
+ AppLogTag(OSP_INSTALLER, " <Operation>%s</Operation>", pCharacters);
+ __pAppControlData->__pOperationList->Add(pStr);
+ }
+ }
+
+ return true;
+}
+
+bool
+ManifestAppControlsParser::OnMimeTypeValue(const char* pCharacters)
+{
+ if (__legacyAppControls == true)
+ {
+ return true;
+ }
+
+ if (pCharacters && pCharacters[0])
+ {
+ String* pStr = new (std::nothrow) String(pCharacters);
+ if (__pAppControlData->__pMimeTypeList->Contains(pStr) == false)
+ {
+ AppLogTag(OSP_INSTALLER, " <MimeType>%s</MimeType>", pCharacters);
+ __pAppControlData->__pMimeTypeList->Add(pStr);
+ }
+ }
+
+ return true;
+}
+
+bool
+ManifestAppControlsParser::OnUriValue(const char* pCharacters)
+{
+ if (__legacyAppControls == true)
+ {
+ return true;
+ }
+
+ if (pCharacters && pCharacters[0])
+ {
+ String* pStr = new (std::nothrow) String(pCharacters);
+ if (__pAppControlData->__pUriList->Contains(pStr) == false)
+ {
+ AppLogTag(OSP_INSTALLER, " <Uri>%s</Uri>", pCharacters);
+ __pAppControlData->__pUriList->Add(pStr);
+ }
+ }
+
+ return true;
+}
--- /dev/null
+//
+// Open Service Platform
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+/**
+ * @file ManifestAppControlsParser.h
+ * @brief This is the header file for the %ManifestAppControlsParser class.
+ *
+ * This header file contains the declarations of the %ManifestAppControlsParser class.
+ */
+#ifndef _MANIFEST_APPCONTROLS_PARSER_H_
+#define _MANIFEST_APPCONTROLS_PARSER_H_
+
+#include <FBaseString.h>
+
+#include <FAppPkg_PackageInfoImpl.h>
+
+#include "ManifestParser.h"
+#include "InstallationContext.h"
+
+/**
+ * @class ManifestAppControlsParser
+ * @brief This class represents the class of ManifestAppControlsParser.
+ * @since 1.0
+ *
+ * This class represents the class of ManifestAppControlsParser.
+ *
+ */
+class ManifestAppControlsParser
+ : public ManifestParser
+{
+public:
+ ManifestAppControlsParser(void);
+ virtual ~ManifestAppControlsParser(void);
+
+ virtual bool OnStartElement(const char *pName);
+ virtual bool OnEndElement(const char *pName);
+ virtual bool OnCharacters(const char *pCharacters);
+
+private:
+ bool OnAppControlsStartElement(void);
+ bool OnAppControlStartElement(void);
+ bool OnCapabilityStartElement(void);
+ bool OnResolutionStartElement(void);
+
+ bool OnAppControlsEndElement(void);
+ bool OnAppControlEndElement(void);
+
+ bool OnCapabilityEndElement(void);
+ bool OnResolutionEndElement(void);
+
+ bool OnOperationValue(const char* pCharacters);
+ bool OnMimeTypeValue(const char* pCharacters);
+ bool OnUriValue(const char* pCharacters);
+
+private:
+ InstallationContext* __pContext;
+ AppControlData* __pAppControlData;
+
+ bool __legacyAppControls;
+
+}; // ManifestAppControlsParser
+
+#endif // _MANIFEST_APPCONTROLS_PARSER_H_
char *pProviderName = pAttr->Find("ProviderName");
if (pProviderName)
{
- __pLiveboxData->SetName(pProviderName);
+ __pLiveboxData->SetProviderName(pProviderName);
AppLogTag(OSP_INSTALLER, " - ProviderName=%s", pProviderName);
}