From: Andrzej Surdej Date: Thu, 21 Feb 2013 10:55:55 +0000 (+0100) Subject: Tizen appservice 'disposition' attribute added. X-Git-Tag: accepted/tizen_2.1/20130425.023916~20^2~12^2~14 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b4c104912e430657c32ab93af62504005aa61727;p=framework%2Fweb%2Fwrt-installer.git Tizen appservice 'disposition' attribute added. [Issue#] LINUXWRT-58 [Problem] Support for multi activity [Cause] N/A [Solution] Attribute parsed and stored into database. [Verification] To verify build repo with tests and run installer tests. Last test should pass. Before running tests remove wrt-extra package. This commit requires: https://tizendev.org/gerrit/#/c/47691/ Also some clean up is done. Change-Id: I81773b460872d441bcf3cacdaa3b90aedd060dd4 --- diff --git a/packaging/wrt-installer.spec b/packaging/wrt-installer.spec index 40c9333..bd2a2ec 100644 --- a/packaging/wrt-installer.spec +++ b/packaging/wrt-installer.spec @@ -113,4 +113,5 @@ mkdir -p /opt/share/icons/default/small %{_libdir}/systemd/user/wrt-preinstall-widgets.service %if %{with_tests} %attr(755,root,root) %{_bindir}/wrt-installer-tests-* + /opt/share/widget/tests/installer/widgets/* %endif diff --git a/src/configuration_parser/widget_parser.cpp b/src/configuration_parser/widget_parser.cpp index b1407a0..7703f4b 100644 --- a/src/configuration_parser/widget_parser.cpp +++ b/src/configuration_parser/widget_parser.cpp @@ -1058,6 +1058,10 @@ class AppServiceParser : public ElementParser m_scheme = attribute.value; } else if (attribute.name == L"mime") { m_mime = attribute.value; + } else if (attribute.name == L"disposition") { + if (attribute.value == L"inline") + m_disposition = + ConfigParserData::ServiceInfo::Disposition::INLINE; } } @@ -1096,7 +1100,8 @@ class AppServiceParser : public ElementParser m_src.IsNull() ? nullString : *m_src, m_operation.IsNull() ? nullString : *m_operation, m_scheme.IsNull() ? nullString : *m_scheme, - m_mime.IsNull() ? nullString : *m_mime); + m_mime.IsNull() ? nullString : *m_mime, + m_disposition); FOREACH(iterator, m_data.appServiceList) { if (iterator->m_operation == serviceInfo.m_operation && @@ -1131,6 +1136,7 @@ class AppServiceParser : public ElementParser m_operation(DPL::OptionalString::Null), m_scheme(DPL::OptionalString::Null), m_mime(DPL::OptionalString::Null), + m_disposition(ConfigParserData::ServiceInfo::Disposition::WINDOW), m_data(data) {} @@ -1139,6 +1145,7 @@ class AppServiceParser : public ElementParser DPL::OptionalString m_operation; DPL::OptionalString m_scheme; DPL::OptionalString m_mime; + ConfigParserData::ServiceInfo::Disposition m_disposition; ConfigParserData& m_data; }; diff --git a/tests/general/CMakeLists.txt b/tests/general/CMakeLists.txt index e72a998..9c9bb92 100644 --- a/tests/general/CMakeLists.txt +++ b/tests/general/CMakeLists.txt @@ -26,22 +26,6 @@ PKG_CHECK_MODULES(COMMON_LIB_PKGS dpl-utils-efl dpl-wrt-dao-ro dpl-event-efl - glib-2.0 - gthread-2.0 - edje - ecore - ecore-x - ecore-imf - ecore-ipc - ecore-evas - ecore-file - ecore-input - evas - eina - elementary - vconf - aul - libidn xmlsec1 libiri REQUIRED @@ -78,3 +62,15 @@ target_link_libraries(${INSTALLER_TESTS_TARGET} ${TARGET_CORE_MODULE_LIB} ${COMMON_LIB_PKGS_LIBRARIES} ) + +#widgets +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/widgets/manifest.wgt DESTINATION /opt/share/widget/tests/installer/widgets/) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/widgets/bg-00-with_bg.wgt DESTINATION /opt/share/widget/tests/installer/widgets/) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/widgets/bg-01-missing_file.wgt DESTINATION /opt/share/widget/tests/installer/widgets/) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/widgets/bg-02-without_bg.wgt DESTINATION /opt/share/widget/tests/installer/widgets/) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/widgets/nonroot.wgt DESTINATION /opt/share/widget/tests/installer/widgets/) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/widgets/inst_nplug_1.wgt DESTINATION /opt/share/widget/tests/installer/widgets/) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/widgets/inst_nplug_2.wgt DESTINATION /opt/share/widget/tests/installer/widgets/) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/widgets/inst_nplug_3.wgt DESTINATION /opt/share/widget/tests/installer/widgets/) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/widgets/inst_nplug_4.wgt DESTINATION /opt/share/widget/tests/installer/widgets/) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/widgets/appservice_dispos.wgt DESTINATION /opt/share/widget/tests/installer/widgets/) \ No newline at end of file diff --git a/tests/general/TestCases.cpp b/tests/general/TestCases.cpp index a0a978a..32cab9b 100644 --- a/tests/general/TestCases.cpp +++ b/tests/general/TestCases.cpp @@ -22,8 +22,10 @@ */ #include +#include #include #include +#include #include #include #include @@ -32,7 +34,7 @@ using namespace InstallerWrapper; namespace { -const std::string miscWidgetsStuff = "/opt/share/widget/tests/misc/"; +const std::string miscWidgetsStuff = "/opt/share/widget/tests/installer/"; struct Result { bool m_exc; @@ -244,3 +246,60 @@ RUNNER_TEST(pluginFileAndSubdir) RUNNER_ASSERT_MSG(false, "Invalid widget package installed"); } } + +RUNNER_TEST_GROUP_INIT(ParsingTizenAppservice) +namespace { + +} + +/* +Name: correct_csp_policy +Description: Tests if widget policy is correctly parsed from config file + and stored into database +Expected: widget should be installed and policy should mach +*/ +RUNNER_TEST(tizen_appservice_disposition) +{ + std::string tizenId; + RUNNER_ASSERT(install(miscWidgetsStuff + "widgets/appservice_dispos.wgt", + tizenId) == InstallerWrapper::Success); + + WrtDB::WidgetDAOReadOnly dao(DPL::FromASCIIString(tizenId)); + WidgetApplicationServiceList appsvcList; + dao.getAppServiceList(appsvcList); + uninstall(tizenId); + + RUNNER_ASSERT_MSG(appsvcList.size() == 4, "Incorrect list size"); + WidgetApplicationService 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; + 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; + 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; + 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; + RUNNER_ASSERT_MSG( + std::find(appsvcList.begin(), appsvcList.end(), s) != appsvcList.end(), + "Unable to find service ####"); +} diff --git a/tests/general/widgets/appservice_dispos.wgt b/tests/general/widgets/appservice_dispos.wgt new file mode 100644 index 0000000..9451a4f Binary files /dev/null and b/tests/general/widgets/appservice_dispos.wgt differ diff --git a/tests/general/widgets/content_listener.wgt b/tests/general/widgets/content_listener.wgt deleted file mode 100644 index b2e6fa2..0000000 Binary files a/tests/general/widgets/content_listener.wgt and /dev/null differ diff --git a/tests/general/widgets/content_listener/config.xml b/tests/general/widgets/content_listener/config.xml deleted file mode 100644 index 40d861c..0000000 --- a/tests/general/widgets/content_listener/config.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - listener02 - - diff --git a/tests/general/widgets/content_listener/hook.js b/tests/general/widgets/content_listener/hook.js deleted file mode 100644 index 959a8b0..0000000 --- a/tests/general/widgets/content_listener/hook.js +++ /dev/null @@ -1,3 +0,0 @@ -var id = "listener02"; - -function hook(id, result, message){}; \ No newline at end of file diff --git a/tests/general/widgets/content_listener/index.html b/tests/general/widgets/content_listener/index.html deleted file mode 100644 index 81c7f09..0000000 --- a/tests/general/widgets/content_listener/index.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - Custom handlers - - -

FAIL

- - - - diff --git a/tests/general/widgets/content_listener/test.html b/tests/general/widgets/content_listener/test.html deleted file mode 100644 index e0a0c10..0000000 --- a/tests/general/widgets/content_listener/test.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - Custom handlers - - -

FAIL

- - - - diff --git a/tests/general/widgets/content_listener2.wgt b/tests/general/widgets/content_listener2.wgt deleted file mode 100644 index 99b090c..0000000 Binary files a/tests/general/widgets/content_listener2.wgt and /dev/null differ diff --git a/tests/general/widgets/content_listener2/config.xml b/tests/general/widgets/content_listener2/config.xml deleted file mode 100644 index 6ab4a6b..0000000 --- a/tests/general/widgets/content_listener2/config.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - listener04 - - diff --git a/tests/general/widgets/content_listener2/hook.js b/tests/general/widgets/content_listener2/hook.js deleted file mode 100644 index 959a8b0..0000000 --- a/tests/general/widgets/content_listener2/hook.js +++ /dev/null @@ -1,3 +0,0 @@ -var id = "listener02"; - -function hook(id, result, message){}; \ No newline at end of file diff --git a/tests/general/widgets/content_listener2/index.html b/tests/general/widgets/content_listener2/index.html deleted file mode 100644 index 81c7f09..0000000 --- a/tests/general/widgets/content_listener2/index.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - Custom handlers - - -

FAIL

- - - - diff --git a/tests/general/widgets/content_listener2/test.html b/tests/general/widgets/content_listener2/test.html deleted file mode 100644 index e0a0c10..0000000 --- a/tests/general/widgets/content_listener2/test.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - Custom handlers - - -

FAIL

- - - - diff --git a/tests/general/widgets/minimal.wgt b/tests/general/widgets/minimal.wgt deleted file mode 100644 index e21996b..0000000 Binary files a/tests/general/widgets/minimal.wgt and /dev/null differ diff --git a/tests/general/widgets/protocol_listener.wgt b/tests/general/widgets/protocol_listener.wgt deleted file mode 100644 index 23d7a21..0000000 Binary files a/tests/general/widgets/protocol_listener.wgt and /dev/null differ diff --git a/tests/general/widgets/protocol_listener/config.xml b/tests/general/widgets/protocol_listener/config.xml deleted file mode 100644 index 0956e53..0000000 --- a/tests/general/widgets/protocol_listener/config.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - listener01 - - diff --git a/tests/general/widgets/protocol_listener/hook.js b/tests/general/widgets/protocol_listener/hook.js deleted file mode 100644 index 1300cac..0000000 --- a/tests/general/widgets/protocol_listener/hook.js +++ /dev/null @@ -1,3 +0,0 @@ -var id = "listener01"; - -function hook(id, result, message){}; \ No newline at end of file diff --git a/tests/general/widgets/protocol_listener/index.html b/tests/general/widgets/protocol_listener/index.html deleted file mode 100644 index f3687d9..0000000 --- a/tests/general/widgets/protocol_listener/index.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - Custom handlers - - -

FAIL

- - - - diff --git a/tests/general/widgets/protocol_listener/news.html b/tests/general/widgets/protocol_listener/news.html deleted file mode 100644 index 5fab155..0000000 --- a/tests/general/widgets/protocol_listener/news.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - Custom handlers - - -

FAIL

- - - - diff --git a/tests/general/widgets/protocol_listener2.wgt b/tests/general/widgets/protocol_listener2.wgt deleted file mode 100644 index b828faf..0000000 Binary files a/tests/general/widgets/protocol_listener2.wgt and /dev/null differ diff --git a/tests/general/widgets/protocol_listener2/config.xml b/tests/general/widgets/protocol_listener2/config.xml deleted file mode 100644 index a105a15..0000000 --- a/tests/general/widgets/protocol_listener2/config.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - listener03 - - diff --git a/tests/general/widgets/protocol_listener2/hook.js b/tests/general/widgets/protocol_listener2/hook.js deleted file mode 100644 index 1300cac..0000000 --- a/tests/general/widgets/protocol_listener2/hook.js +++ /dev/null @@ -1,3 +0,0 @@ -var id = "listener01"; - -function hook(id, result, message){}; \ No newline at end of file diff --git a/tests/general/widgets/protocol_listener2/index.html b/tests/general/widgets/protocol_listener2/index.html deleted file mode 100644 index f3687d9..0000000 --- a/tests/general/widgets/protocol_listener2/index.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - Custom handlers - - -

FAIL

- - - - diff --git a/tests/general/widgets/protocol_listener2/news.html b/tests/general/widgets/protocol_listener2/news.html deleted file mode 100644 index 5fab155..0000000 --- a/tests/general/widgets/protocol_listener2/news.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - Custom handlers - - -

FAIL

- - - - diff --git a/tests/general/widgets/register_content.wgt b/tests/general/widgets/register_content.wgt deleted file mode 100644 index 79cb173..0000000 Binary files a/tests/general/widgets/register_content.wgt and /dev/null differ diff --git a/tests/general/widgets/register_content/config.xml b/tests/general/widgets/register_content/config.xml deleted file mode 100644 index a1f2727..0000000 --- a/tests/general/widgets/register_content/config.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - register03 - - diff --git a/tests/general/widgets/register_content/hook.js b/tests/general/widgets/register_content/hook.js deleted file mode 100644 index 4866d86..0000000 --- a/tests/general/widgets/register_content/hook.js +++ /dev/null @@ -1,21 +0,0 @@ -var id = "register03"; - -function hook(id, result, message){}; - -try { - navigator.registerContentHandler("application/test", "?uri=%s", "Example content"); - if (navigator.isContentHandlerRegistered("application/test", "?uri=%s") === 'registered') { - navigator.unregisterContentHandler("application/test", "?uri=%s"); - if (navigator.isContentHandlerRegistered("application/test", "?uri=%s") === 'new') { - document.getElementById('test').innerHTML = 'PASSED'; - document.body.style.backgroundColor = 'green'; - hook(id, 'pass', 'content handler registered'); - } else { - hook(id, 'fail', 'content handler registered (tried to unregister)'); - } - } else { - hook(id, 'fail', 'content handler not registered'); - } -} catch (e) { - hook(id, 'fail', 'widget failed because ' + e.message); -} \ No newline at end of file diff --git a/tests/general/widgets/register_content/index.html b/tests/general/widgets/register_content/index.html deleted file mode 100644 index 5f572a9..0000000 --- a/tests/general/widgets/register_content/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Custom handlers - - -

FAIL

- - - diff --git a/tests/general/widgets/register_content_fail.wgt b/tests/general/widgets/register_content_fail.wgt deleted file mode 100644 index 165c1b2..0000000 Binary files a/tests/general/widgets/register_content_fail.wgt and /dev/null differ diff --git a/tests/general/widgets/register_content_fail/config.xml b/tests/general/widgets/register_content_fail/config.xml deleted file mode 100644 index a037769..0000000 --- a/tests/general/widgets/register_content_fail/config.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - register04 - - diff --git a/tests/general/widgets/register_content_fail/hook.js b/tests/general/widgets/register_content_fail/hook.js deleted file mode 100644 index ffc4bc6..0000000 --- a/tests/general/widgets/register_content_fail/hook.js +++ /dev/null @@ -1,19 +0,0 @@ -var id = "register04"; - -function hook(id, result, message){}; - -try { - try { - navigator.registerContentHandler("text/html", "?uri=%s", "Example http"); - throw new Error("Exception not thrown!"); - } catch (e) { - if (!(e instanceof DOMException) || e.code != 18 || e.name != "SECURITY_ERR") { - throw e; - } - document.getElementById('test').innerHTML = 'PASSED'; - document.body.style.backgroundColor = 'green'; - hook(id, 'pass', 'content handler not registered'); - } -} catch (e) { - hook(id, 'fail', 'widget failed because ' + e.message); -} \ No newline at end of file diff --git a/tests/general/widgets/register_content_fail/index.html b/tests/general/widgets/register_content_fail/index.html deleted file mode 100644 index 5f572a9..0000000 --- a/tests/general/widgets/register_content_fail/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Custom handlers - - -

FAIL

- - - diff --git a/tests/general/widgets/register_protocol.wgt b/tests/general/widgets/register_protocol.wgt deleted file mode 100644 index 36681e1..0000000 Binary files a/tests/general/widgets/register_protocol.wgt and /dev/null differ diff --git a/tests/general/widgets/register_protocol/config.xml b/tests/general/widgets/register_protocol/config.xml deleted file mode 100644 index 4291dfe..0000000 --- a/tests/general/widgets/register_protocol/config.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - register01 - - diff --git a/tests/general/widgets/register_protocol/hook.js b/tests/general/widgets/register_protocol/hook.js deleted file mode 100644 index 05fbb46..0000000 --- a/tests/general/widgets/register_protocol/hook.js +++ /dev/null @@ -1,21 +0,0 @@ -var id = "register01"; - -function hook(id, result, message){}; - -try { - navigator.registerProtocolHandler("news", "?uri=%s", "Example magnet"); - if (navigator.isProtocolHandlerRegistered("news", "?uri=%s") === 'registered') { - navigator.unregisterProtocolHandler("news", "?uri=%s"); - if (navigator.isProtocolHandlerRegistered("news", "?uri=%s") === 'new') { - document.getElementById('test').innerHTML = 'PASSED'; - document.body.style.backgroundColor = 'green'; - hook(id, 'pass', 'protocol handler registered'); - } else { - hook(id, 'fail', 'protocol handler registered (tried to unregister)'); - } - } else { - hook(id, 'fail', 'protocol handler not registered'); - } -} catch (e) { - hook(id, 'fail', 'widget failed because ' + e.message); -} \ No newline at end of file diff --git a/tests/general/widgets/register_protocol/index.html b/tests/general/widgets/register_protocol/index.html deleted file mode 100644 index 5f572a9..0000000 --- a/tests/general/widgets/register_protocol/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Custom handlers - - -

FAIL

- - - diff --git a/tests/general/widgets/register_protocol_fail.wgt b/tests/general/widgets/register_protocol_fail.wgt deleted file mode 100644 index 81f651b..0000000 Binary files a/tests/general/widgets/register_protocol_fail.wgt and /dev/null differ diff --git a/tests/general/widgets/register_protocol_fail/config.xml b/tests/general/widgets/register_protocol_fail/config.xml deleted file mode 100644 index 49ebcb7..0000000 --- a/tests/general/widgets/register_protocol_fail/config.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - register02 - - diff --git a/tests/general/widgets/register_protocol_fail/hook.js b/tests/general/widgets/register_protocol_fail/hook.js deleted file mode 100644 index bc41257..0000000 --- a/tests/general/widgets/register_protocol_fail/hook.js +++ /dev/null @@ -1,19 +0,0 @@ -var id = "register02"; - -function hook(id, result, message){}; - -try { - try { - navigator.registerProtocolHandler("http", "?uri=%s", "Example http"); - throw new Error("Exception not thrown!"); - } catch (e) { - if (!(e instanceof DOMException) || e.code != 18 || e.name != "SECURITY_ERR") { - throw e; - } - document.getElementById('test').innerHTML = 'PASSED'; - document.body.style.backgroundColor = 'green'; - hook(id, 'pass', 'protocol handler not registered'); - } -} catch (e) { - hook(id, 'fail', 'widget failed because ' + e.message); -} \ No newline at end of file diff --git a/tests/general/widgets/register_protocol_fail/index.html b/tests/general/widgets/register_protocol_fail/index.html deleted file mode 100644 index 5f572a9..0000000 --- a/tests/general/widgets/register_protocol_fail/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Custom handlers - - -

FAIL

- - - diff --git a/tests/general/widgets/tizen_appservice_disposition/config.xml b/tests/general/widgets/tizen_appservice_disposition/config.xml new file mode 100755 index 0000000..4544234 --- /dev/null +++ b/tests/general/widgets/tizen_appservice_disposition/config.xml @@ -0,0 +1,12 @@ + + Disposition_attribute + + + + + + + diff --git a/tests/general/widgets/tizen_appservice_disposition/icon.png b/tests/general/widgets/tizen_appservice_disposition/icon.png new file mode 100755 index 0000000..b835ed1 Binary files /dev/null and b/tests/general/widgets/tizen_appservice_disposition/icon.png differ diff --git a/tests/general/widgets/tizen_appservice_disposition/index.htm b/tests/general/widgets/tizen_appservice_disposition/index.htm new file mode 100755 index 0000000..5e7036c --- /dev/null +++ b/tests/general/widgets/tizen_appservice_disposition/index.htm @@ -0,0 +1,8 @@ + + + Disposition attribute + + +

Check database.

+ +