Move unit tests into separate test directory 72/243672/1
authorJunghyun Yeon <jungh.yeon@samsung.com>
Tue, 8 Sep 2020 23:50:22 +0000 (08:50 +0900)
committerJunghyun Yeon <jungh.yeon@samsung.com>
Wed, 9 Sep 2020 05:15:59 +0000 (14:15 +0900)
Move unit tests code and make it work at buildtime

Change-Id: I3ea342d4e1315239e32def4338ca7879d8514c93
Signed-off-by: Junghyun Yeon <jungh.yeon@samsung.com>
197 files changed:
CMakeLists.txt
packaging/wgt-manifest-handlers.spec
src/CMakeLists.txt
src/unit_tests/CMakeLists.txt [deleted file]
src/unit_tests/account_handler_unittest.cc [deleted file]
src/unit_tests/addon_handler_unittest.cc [deleted file]
src/unit_tests/appwidget_handler_unittest.cc [deleted file]
src/unit_tests/base_test.h [deleted file]
src/unit_tests/content_handler_unittest.cc [deleted file]
src/unit_tests/csp_handler_unittest.cc [deleted file]
src/unit_tests/launch_screen_handler_unittest.cc [deleted file]
src/unit_tests/parser_manifest_util_unittest.cc [deleted file]
src/unit_tests/service_handler_unittest.cc [deleted file]
src/unit_tests/splash_handler_unittest.cc [deleted file]
src/unit_tests/test_samples/bad_manifest.xml [deleted file]
src/unit_tests/test_samples/bad_signatures/author-signature.xml [deleted file]
src/unit_tests/test_samples/bad_signatures/config.xml [deleted file]
src/unit_tests/test_samples/bad_signatures/icon.png [deleted file]
src/unit_tests/test_samples/bad_signatures/index.html [deleted file]
src/unit_tests/test_samples/bad_signatures/signature1.xml [deleted file]
src/unit_tests/test_samples/bad_signatures/version.txt [deleted file]
src/unit_tests/test_samples/good_manifest.xml [deleted file]
src/unit_tests/test_samples/good_signatures/author-signature.xml [deleted file]
src/unit_tests/test_samples/good_signatures/config.xml [deleted file]
src/unit_tests/test_samples/good_signatures/icon.png [deleted file]
src/unit_tests/test_samples/good_signatures/index.html [deleted file]
src/unit_tests/test_samples/good_signatures/signature1.xml [deleted file]
src/unit_tests/test_samples/good_signatures/version.txt [deleted file]
src/unit_tests/test_samples/tpk-sample-manifest.xml [deleted file]
src/unit_tests/test_samples/xmls/AccountHandlerTest.Capability_Many/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AccountHandlerTest.Capability_One/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AccountHandlerTest.Icon_Missing/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AccountHandlerTest.Icon_More/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AccountHandlerTest.MAS_False/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AccountHandlerTest.MAS_Missing/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AccountHandlerTest.MAS_True/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AccountHandlerTest.MAS_Wrong/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AccountHandlerTest.Many/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AccountHandlerTest.Name_Missing/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AccountHandlerTest.Name_More/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AccountHandlerTest.Valid/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AddonHandlerTest.NoPackageNameTest/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AddonHandlerTest.NoRequiredVersionTest/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AddonHandlerTest.PackageNameTest/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AddonHandlerTest.RequiredVersionTest/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AddonHandlerTest.Valid/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_auto_launch_not_bool/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_box_size_invalid/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_box_size_none/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_box_size_use_decoration_invalid/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_mouse_event_not_bool/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_none/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_pd_height_invalid/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_pd_height_ood/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_pd_src_none/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_pd_width_invalid/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_src_none/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_touch_effect_not_bool/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_two/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_icon_none/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_icon_src_none/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_icon_two/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_label_none/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_id_invalid_1/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_id_invalid_2/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_id_none/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_primary_none/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_primary_not_bool/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_update_period_invalid/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_update_period_ood/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox2/config.xml [deleted file]
src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox2_app_widget_primary_two_true/config.xml [deleted file]
src/unit_tests/test_samples/xmls/CSPHandlerTest.InvalidNamespace/config.xml [deleted file]
src/unit_tests/test_samples/xmls/CSPHandlerTest.Valid/config.xml [deleted file]
src/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.Empty/config.xml [deleted file]
src/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.InvalidNamespace/config.xml [deleted file]
src/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.InvalidReadyWhen/config.xml [deleted file]
src/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.Valid/config.xml [deleted file]
src/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.ValidComplex/config.xml [deleted file]
src/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.ValidMultiBackgroundImages/config.xml [deleted file]
src/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.ValidMultiImages/config.xml [deleted file]
src/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.ValidMultiScreenOrientation/config.xml [deleted file]
src/unit_tests/test_samples/xmls/SplashHandlerTest.InvalidNamespace/config.xml [deleted file]
src/unit_tests/test_samples/xmls/SplashHandlerTest.NoSrc/config.xml [deleted file]
src/unit_tests/test_samples/xmls/SplashHandlerTest.Valid/config.xml [deleted file]
src/unit_tests/test_samples/xmls/WarpHandlerTest.InvalidNamespace/config.xml [deleted file]
src/unit_tests/test_samples/xmls/WarpHandlerTest.InvalidURL_AuthorizationPart/config.xml [deleted file]
src/unit_tests/test_samples/xmls/WarpHandlerTest.InvalidURL_NoHost/config.xml [deleted file]
src/unit_tests/test_samples/xmls/WarpHandlerTest.InvalidURL_NotURL/config.xml [deleted file]
src/unit_tests/test_samples/xmls/WarpHandlerTest.SubdomainFalse/config.xml [deleted file]
src/unit_tests/test_samples/xmls/WarpHandlerTest.SubdomainInvalid/config.xml [deleted file]
src/unit_tests/test_samples/xmls/WarpHandlerTest.SubdomainTrue/config.xml [deleted file]
src/unit_tests/test_samples/xmls/WarpHandlerTest.ValidMultiple/config.xml [deleted file]
src/unit_tests/test_samples/xmls/WarpHandlerTest.ValidURL/config.xml [deleted file]
src/unit_tests/test_samples/xmls/WarpHandlerTest.ValidWildcard/config.xml [deleted file]
src/unit_tests/test_samples/xmls/XmlNormalization/config.xml [deleted file]
src/unit_tests/warp_handler_unittest.cc [deleted file]
src/unit_tests/xml_normalization_unittest.cc [deleted file]
test/CMakeLists.txt [new file with mode: 0644]
test/unit_tests/CMakeLists.txt [new file with mode: 0644]
test/unit_tests/account_handler_unittest.cc [new file with mode: 0644]
test/unit_tests/addon_handler_unittest.cc [new file with mode: 0644]
test/unit_tests/appwidget_handler_unittest.cc [new file with mode: 0644]
test/unit_tests/base_test.h [new file with mode: 0644]
test/unit_tests/content_handler_unittest.cc [new file with mode: 0644]
test/unit_tests/csp_handler_unittest.cc [new file with mode: 0644]
test/unit_tests/launch_screen_handler_unittest.cc [new file with mode: 0644]
test/unit_tests/main.cc [new file with mode: 0644]
test/unit_tests/parser_manifest_util_unittest.cc [new file with mode: 0644]
test/unit_tests/service_handler_unittest.cc [new file with mode: 0644]
test/unit_tests/splash_handler_unittest.cc [new file with mode: 0644]
test/unit_tests/test_samples/bad_manifest.xml [new file with mode: 0644]
test/unit_tests/test_samples/bad_signatures/author-signature.xml [new file with mode: 0644]
test/unit_tests/test_samples/bad_signatures/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/bad_signatures/icon.png [new file with mode: 0644]
test/unit_tests/test_samples/bad_signatures/index.html [new file with mode: 0644]
test/unit_tests/test_samples/bad_signatures/signature1.xml [new file with mode: 0644]
test/unit_tests/test_samples/bad_signatures/version.txt [new file with mode: 0644]
test/unit_tests/test_samples/good_manifest.xml [new file with mode: 0644]
test/unit_tests/test_samples/good_signatures/author-signature.xml [new file with mode: 0644]
test/unit_tests/test_samples/good_signatures/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/good_signatures/icon.png [new file with mode: 0644]
test/unit_tests/test_samples/good_signatures/index.html [new file with mode: 0644]
test/unit_tests/test_samples/good_signatures/signature1.xml [new file with mode: 0644]
test/unit_tests/test_samples/good_signatures/version.txt [new file with mode: 0644]
test/unit_tests/test_samples/tpk-sample-manifest.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AccountHandlerTest.Capability_Many/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AccountHandlerTest.Capability_One/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AccountHandlerTest.Icon_Missing/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AccountHandlerTest.Icon_More/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AccountHandlerTest.MAS_False/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AccountHandlerTest.MAS_Missing/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AccountHandlerTest.MAS_True/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AccountHandlerTest.MAS_Wrong/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AccountHandlerTest.Many/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AccountHandlerTest.Name_Missing/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AccountHandlerTest.Name_More/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AccountHandlerTest.Valid/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AddonHandlerTest.NoPackageNameTest/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AddonHandlerTest.NoRequiredVersionTest/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AddonHandlerTest.PackageNameTest/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AddonHandlerTest.RequiredVersionTest/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AddonHandlerTest.Valid/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_auto_launch_not_bool/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_box_size_invalid/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_box_size_none/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_box_size_use_decoration_invalid/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_mouse_event_not_bool/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_none/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_pd_height_invalid/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_pd_height_ood/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_pd_src_none/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_pd_width_invalid/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_src_none/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_touch_effect_not_bool/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_two/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_icon_none/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_icon_src_none/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_icon_two/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_label_none/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_id_invalid_1/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_id_invalid_2/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_id_none/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_primary_none/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_primary_not_bool/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_update_period_invalid/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_update_period_ood/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox2/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox2_app_widget_primary_two_true/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/CSPHandlerTest.InvalidNamespace/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/CSPHandlerTest.Valid/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.Empty/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.InvalidNamespace/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.InvalidReadyWhen/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.Valid/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.ValidComplex/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.ValidMultiBackgroundImages/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.ValidMultiImages/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.ValidMultiScreenOrientation/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/SplashHandlerTest.InvalidNamespace/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/SplashHandlerTest.NoSrc/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/SplashHandlerTest.Valid/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/WarpHandlerTest.InvalidNamespace/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/WarpHandlerTest.InvalidURL_AuthorizationPart/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/WarpHandlerTest.InvalidURL_NoHost/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/WarpHandlerTest.InvalidURL_NotURL/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/WarpHandlerTest.SubdomainFalse/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/WarpHandlerTest.SubdomainInvalid/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/WarpHandlerTest.SubdomainTrue/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/WarpHandlerTest.ValidMultiple/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/WarpHandlerTest.ValidURL/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/WarpHandlerTest.ValidWildcard/config.xml [new file with mode: 0644]
test/unit_tests/test_samples/xmls/XmlNormalization/config.xml [new file with mode: 0644]
test/unit_tests/warp_handler_unittest.cc [new file with mode: 0644]
test/unit_tests/xml_normalization_unittest.cc [new file with mode: 0644]

index 2273def341f50797751339bdee721c0b80167559..d8642ece81fc4c31cef507c9b12653dcb2ae4769 100644 (file)
@@ -28,6 +28,9 @@ SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EXTRA_LINKER_FLAGS}")
 # Targets
 SET(TARGET_LIBNAME_WGT_MANIFEST_HANDLERS "wgt-manifest-handlers")
 
+ENABLE_TESTING()
+SET(TARGET_WGT_MANIFEST_HANDLERS_UNIT_TEST "wgt-manifest-handlers-unit-test")
+
 ADD_DEFINITIONS("-DPROJECT_TAG=\"wgt-manifest-handlers\"")
 
 ADD_DEFINITIONS("-DSHAREDIR=\"${SHAREDIR}\"")
@@ -41,11 +44,12 @@ PKG_CHECK_MODULES(XGDMIME_DEPS REQUIRED xdgmime)
 PKG_CHECK_MODULES(MANIFEST_PARSER_DEPS REQUIRED manifest-parser)
 PKG_CHECK_MODULES(MANIFEST_PARSER_UTILS_DEPS REQUIRED manifest-parser-utils)
 PKG_CHECK_MODULES(CAPI_SYSTEM_INFO REQUIRED capi-system-info)
+PKG_CHECK_MODULES(GMOCK_DEPS REQUIRED gmock)
 
-FIND_PACKAGE(GTest REQUIRED)
 FIND_PACKAGE(Boost REQUIRED COMPONENTS system filesystem)
 
 # xmlsec1 - choose crypto library which to use
 ADD_DEFINITIONS("-DXMLSEC_CRYPTO_OPENSSL")
 
 ADD_SUBDIRECTORY(src)
+ADD_SUBDIRECTORY(test)
index 7585cd5a827036abc9ae6bf7e5e45b3de162099e..4682a5f83f2791763e4a9b1c997cb4d378de6818 100644 (file)
@@ -9,11 +9,16 @@ Source100:      %{name}.manifest
 
 BuildRequires:  boost-devel
 BuildRequires:  cmake
-BuildRequires:  gtest-devel
+BuildRequires:  pkgconfig(gmock)
 BuildRequires:  pkgconfig(xdgmime)
 BuildRequires:  pkgconfig(manifest-parser)
 BuildRequires:  pkgconfig(capi-system-info)
 
+%if 0%{?gcov:1}
+BuildRequires: lcov
+BuildRequires: zip
+%endif
+
 %description
 This is a meta package that installs wgt manifest handlers.
 
@@ -41,6 +46,14 @@ cp %{SOURCE100} .
 export CFLAGS="$(echo $CFLAGS | sed 's/-Wl,--as-needed//g')"
 export CXXFLAGS="$(echo $CXXFLAGS | sed 's/-Wl,--as-needed//g')"
 export FFLAGS="$(echo $FFLAGS | sed 's/-Wl,--as-needed//g')"
+
+%if 0%{?gcov:1}
+export CFLAGS+=" -fprofile-arcs -ftest-coverage"
+export CXXFLAGS+=" -fprofile-arcs -ftest-coverage"
+export FFLAGS=" -fprofile-arcs -ftest-coverage"
+export LDFLAGS+=" -lgcov"
+%endif
+
 # BUILD_PARSER macro is defined so we can build two separate projects
 # with cmake, which are on one repository. Later this macro
 # is used in CMakeLists.txt files to distinguish, which project
@@ -52,9 +65,29 @@ MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'`
 
 make %{?_smp_mflags}
 
+%if 0%{?gcov:1}
+mkdir -p gcov-obj
+find . -name '*.gcno' ! -path './gcov-obj/*' -exec cp '{}' gcov-obj ';'
+%endif
+
+%check
+export LD_LIBRARY_PATH=../../src/wgt_manifest_handlers
+ctest -V
+%if 0%{?gcov:1}
+lcov -c --ignore-errors graph --no-external -q -d . -o wgt-manifest-handlers.info
+genhtml wgt-manifest-handlers.info -o wgt-manifest-handlers.out
+zip -r wgt-manifest-handlers.zip wgt-manifest-handlers.out
+install -m 0644 wgt-manifest-handlers.zip %{buildroot}%{_datadir}/gcov/
+%endif
+
 %install
 %make_install
 
+%if 0%{?gcov:1}
+mkdir -p %{buildroot}%{_datadir}/gcov/obj
+install -m 0644 gcov-obj/* %{buildroot}%{_datadir}/gcov/obj
+%endif
+
 %post -p /sbin/ldconfig
 
 %postun -p /sbin/ldconfig
@@ -71,7 +104,26 @@ make %{?_smp_mflags}
 %{_libdir}/libwgt-manifest-handlers.so
 %{_includedir}/wgt_manifest_handlers/*.h
 
-%files tests
-%manifest %{name}.manifest
-%{_bindir}/manifest-parser-ut/*
-%{_datadir}/manifest-parser-ut/*
+#%files tests
+#%manifest %{name}.manifest
+#%{_bindir}/manifest-parser-ut/*
+#%{_datadir}/manifest-parser-ut/*
+
+#################################################
+# wgt-manifest-handlers-gcov
+#################################################
+%if 0%{?gcov:1}
+%package gcov
+Summary:    Simple string key-val dictionary ADT (gcov)
+Group:      Application Framework/Testing
+
+%description gcov
+Simple string key-val dictionary ADT gcov objects
+%endif
+
+%if 0%{?gcov:1}
+%files gcov
+%defattr(-,root,root,-)
+%{_datadir}/gcov/*
+%endif
+
index fe97f7fcead464a20725cfa6a04eb448cb6fca42..3ba0889c8076822593dbcc71ddbec5abf4507e61 100644 (file)
@@ -1,2 +1 @@
 ADD_SUBDIRECTORY(wgt_manifest_handlers)
-ADD_SUBDIRECTORY(unit_tests)
\ No newline at end of file
diff --git a/src/unit_tests/CMakeLists.txt b/src/unit_tests/CMakeLists.txt
deleted file mode 100644 (file)
index 88dd104..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-SET(PRJ_PATH ..)
-
-SET(TESTS
-  parser_manifest_util_unittest
-  service_handler_unittest
-  content_handler_unittest
-  appwidget_handler_unittest
-  warp_handler_unittest
-  csp_handler_unittest
-  account_handler_unittest
-  launch_screen_handler_unittest
-  splash_handler_unittest
-  xml_normalization_unittest
-  addon_handler_unittest
-)
-SET(DESTINATION_DIR manifest-parser-ut)
-
-INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../)
-
-INSTALL(DIRECTORY test_samples/ DESTINATION ${SHAREDIR}/${DESTINATION_DIR}/test_samples)
-
-FOREACH(test ${TESTS})
-  ADD_EXECUTABLE(${test} "${test}.cc")
-
-  APPLY_PKG_CONFIG(${test} PUBLIC
-    Boost
-    GTEST
-    MANIFEST_PARSER_DEPS
-    MANIFEST_PARSER_UTILS_DEPS
-  )
-
-  INSTALL(TARGETS ${test} DESTINATION ${BINDIR}/${DESTINATION_DIR})
-  # FindGTest module do not sets all needed libraries in GTEST_LIBRARIES and
-  # GTest main libraries is still missing, so additional linking of
-  # GTEST_MAIN_LIBRARIES is needed.
-  TARGET_LINK_LIBRARIES(${test} PUBLIC ${TARGET_LIBNAME_PARSER}
-      ${TARGET_LIBNAME_WGT_MANIFEST_HANDLERS} ${GTEST_MAIN_LIBRARIES})
-ENDFOREACH(test)
diff --git a/src/unit_tests/account_handler_unittest.cc b/src/unit_tests/account_handler_unittest.cc
deleted file mode 100644 (file)
index ed2c75a..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-// Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
-// Use of this source code is governed by an apache 2.0 license that can be
-// found in the LICENSE file.
-
-
-#include <boost/filesystem/path.hpp>
-
-#include <gtest/gtest.h>
-
-#include <manifest_parser/manifest.h>
-#include <manifest_parser/manifest_util.h>
-
-#include <memory>
-
-#include "unit_tests/base_test.h"
-#include "wgt_manifest_handlers/account_handler.h"
-
-namespace bf = boost::filesystem;
-
-namespace {
-
-const bf::path kXmlDirectory("/usr/share/manifest-parser-ut/test_samples/xmls");
-
-struct RegistryPolicyForAccount {
-  static std::unique_ptr<parser::ManifestHandlerRegistry> GetRegistry() {
-    using wgt::parse::AccountHandler;
-    std::unique_ptr<parser::ManifestHandlerRegistry> registry;
-    registry.reset(new parser::ManifestHandlerRegistry());
-    registry->RegisterManifestHandler(new AccountHandler());
-    return registry;
-  }
-};
-
-}  // namespace
-
-namespace parser {
-
-class AccountHandlerTest : public BaseTest<RegistryPolicyForAccount> {
-  void SetUp() override {
-    BaseTest<RegistryPolicyForAccount>::SetUp();
-    std::string error;
-    bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-    std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-    ASSERT_FALSE(!manifest);
-    SetManifest(manifest);
-  }
-};
-
-TEST_F(AccountHandlerTest, Valid) {
-  ASSERT_TRUE(ParseAppManifest()) << GetError();
-  ASSERT_TRUE(ValidateAppManifest()) << GetError();
-  std::shared_ptr<const wgt::parse::AccountInfo> data =
-      std::static_pointer_cast<const wgt::parse::AccountInfo>(
-          GetManifestData(wgt::parse::AccountInfo::Key()));
-  ASSERT_TRUE(!!data);
-  ASSERT_EQ(data->accounts().size(), 1);
-  auto account = data->accounts()[0];
-  ASSERT_EQ(account.names.size(), 1);
-  ASSERT_EQ(account.names[0].first, "name");
-  ASSERT_EQ(account.names[0].second, "");
-  ASSERT_EQ(account.icon_paths.size(), 1);
-  ASSERT_EQ(account.icon_paths[0].first, "Account");
-  ASSERT_EQ(account.icon_paths[0].second, "icon");
-  ASSERT_EQ(account.capabilities.size(), 0);
-}
-
-TEST_F(AccountHandlerTest, Many) {
-  ASSERT_TRUE(ParseAppManifest()) << GetError();
-  ASSERT_TRUE(ValidateAppManifest()) << GetError();
-  std::shared_ptr<const wgt::parse::AccountInfo> data =
-      std::static_pointer_cast<const wgt::parse::AccountInfo>(
-          GetManifestData(wgt::parse::AccountInfo::Key()));
-  ASSERT_TRUE(!!data);
-  ASSERT_EQ(data->accounts().size(), 2);
-
-  auto account1 = data->accounts()[0];
-  ASSERT_EQ(account1.names.size(), 2);
-  ASSERT_EQ(account1.names[0].first, "name");
-  ASSERT_EQ(account1.names[0].second, "");
-  ASSERT_EQ(account1.names[1].first, "name_en_gb");
-  ASSERT_EQ(account1.names[1].second, "en-GB");
-  ASSERT_EQ(account1.icon_paths.size(), 1);
-  ASSERT_EQ(account1.icon_paths[0].first, "Account");
-  ASSERT_EQ(account1.icon_paths[0].second, "icon");
-  ASSERT_EQ(account1.capabilities.size(), 0);
-  ASSERT_FALSE(account1.multiple_account_support);
-
-  auto account2 = data->accounts()[1];
-  ASSERT_EQ(account2.names.size(), 1);
-  ASSERT_EQ(account2.names[0].first, "name2");
-  ASSERT_EQ(account2.names[0].second, "");
-  ASSERT_EQ(account2.icon_paths.size(), 2);
-  ASSERT_EQ(account2.icon_paths[0].first, "Account");
-  ASSERT_EQ(account2.icon_paths[0].second, "icon2");
-  ASSERT_EQ(account2.icon_paths[1].first, "AccountSmall");
-  ASSERT_EQ(account2.icon_paths[1].second, "icon2s");
-  ASSERT_EQ(account2.capabilities.size(), 0);
-  ASSERT_TRUE(account2.multiple_account_support);
-}
-
-TEST_F(AccountHandlerTest, MAS_False) {
-  ASSERT_TRUE(ParseAppManifest()) << GetError();
-  ASSERT_TRUE(ValidateAppManifest()) << GetError();
-  std::shared_ptr<const wgt::parse::AccountInfo> data =
-      std::static_pointer_cast<const wgt::parse::AccountInfo>(
-          GetManifestData(wgt::parse::AccountInfo::Key()));
-  ASSERT_TRUE(!!data);
-  ASSERT_EQ(data->accounts().size(), 1);
-  auto account = data->accounts()[0];
-  ASSERT_FALSE(account.multiple_account_support);
-}
-
-TEST_F(AccountHandlerTest, MAS_True) {
-  ASSERT_TRUE(ParseAppManifest()) << GetError();
-  ASSERT_TRUE(ValidateAppManifest()) << GetError();
-  std::shared_ptr<const wgt::parse::AccountInfo> data =
-      std::static_pointer_cast<const wgt::parse::AccountInfo>(
-          GetManifestData(wgt::parse::AccountInfo::Key()));
-  ASSERT_TRUE(!!data);
-  ASSERT_EQ(data->accounts().size(), 1);
-  auto account = data->accounts()[0];
-  ASSERT_TRUE(account.multiple_account_support);
-}
-
-TEST_F(AccountHandlerTest, MAS_Missing) {
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AccountHandlerTest, MAS_Wrong) {
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AccountHandlerTest, Capability_One) {
-  ASSERT_TRUE(ParseAppManifest()) << GetError();
-  ASSERT_TRUE(ValidateAppManifest()) << GetError();
-  std::shared_ptr<const wgt::parse::AccountInfo> data =
-      std::static_pointer_cast<const wgt::parse::AccountInfo>(
-          GetManifestData(wgt::parse::AccountInfo::Key()));
-  ASSERT_TRUE(!!data);
-  ASSERT_EQ(data->accounts().size(), 1);
-  auto account = data->accounts()[0];
-  ASSERT_EQ(account.capabilities.size(), 1);
-  ASSERT_EQ(account.capabilities[0], "cap1");
-}
-
-TEST_F(AccountHandlerTest, Capability_Many) {
-  ASSERT_TRUE(ParseAppManifest()) << GetError();
-  ASSERT_TRUE(ValidateAppManifest()) << GetError();
-  std::shared_ptr<const wgt::parse::AccountInfo> data =
-      std::static_pointer_cast<const wgt::parse::AccountInfo>(
-          GetManifestData(wgt::parse::AccountInfo::Key()));
-  ASSERT_TRUE(!!data);
-  ASSERT_EQ(data->accounts().size(), 1);
-  auto account = data->accounts()[0];
-  ASSERT_EQ(account.capabilities.size(), 3);
-  ASSERT_EQ(account.capabilities[0], "cap1");
-  ASSERT_EQ(account.capabilities[1], "cap2");
-  ASSERT_EQ(account.capabilities[2], "cap3");
-}
-
-TEST_F(AccountHandlerTest, Name_Missing) {
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AccountHandlerTest, Name_More) {
-  ASSERT_TRUE(ParseAppManifest()) << GetError();
-  ASSERT_TRUE(ValidateAppManifest()) << GetError();
-  std::shared_ptr<const wgt::parse::AccountInfo> data =
-      std::static_pointer_cast<const wgt::parse::AccountInfo>(
-          GetManifestData(wgt::parse::AccountInfo::Key()));
-  ASSERT_TRUE(!!data);
-  ASSERT_EQ(data->accounts().size(), 1);
-  auto account = data->accounts()[0];
-  ASSERT_EQ(account.names.size(), 4);
-  ASSERT_EQ(account.names[0].first, "name");
-  ASSERT_EQ(account.names[0].second, "");
-  ASSERT_EQ(account.names[1].first, "name_en");
-  ASSERT_EQ(account.names[1].second, "en");
-  ASSERT_EQ(account.names[2].first, "name_de");
-  ASSERT_EQ(account.names[2].second, "de");
-  ASSERT_EQ(account.names[3].first, "name_ru");
-  ASSERT_EQ(account.names[3].second, "ru");
-}
-
-TEST_F(AccountHandlerTest, Icon_Missing) {
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AccountHandlerTest, Icon_More) {
-  ASSERT_TRUE(ParseAppManifest()) << GetError();
-  ASSERT_TRUE(ValidateAppManifest()) << GetError();
-  std::shared_ptr<const wgt::parse::AccountInfo> data =
-      std::static_pointer_cast<const wgt::parse::AccountInfo>(
-          GetManifestData(wgt::parse::AccountInfo::Key()));
-  ASSERT_TRUE(!!data);
-  ASSERT_EQ(data->accounts().size(), 1);
-  auto account = data->accounts()[0];
-  ASSERT_EQ(account.icon_paths.size(), 2);
-  ASSERT_EQ(account.icon_paths[0].first, "Account");
-  ASSERT_EQ(account.icon_paths[0].second, "icon");
-  ASSERT_EQ(account.icon_paths[1].first, "AccountSmall");
-  ASSERT_EQ(account.icon_paths[1].second, "icon2");
-}
-
-}  // namespace parser
diff --git a/src/unit_tests/addon_handler_unittest.cc b/src/unit_tests/addon_handler_unittest.cc
deleted file mode 100644 (file)
index ff806eb..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright (c) 2019 Samsung Electronics Co., Ltd All Rights Reserved
-// Use of this source code is governed by an apache 2.0 license that can be
-// found in the LICENSE file.
-
-
-#include <boost/filesystem/path.hpp>
-
-#include <gtest/gtest.h>
-
-#include <manifest_parser/manifest.h>
-#include <manifest_parser/manifest_util.h>
-
-#include <memory>
-
-#include "unit_tests/base_test.h"
-#include "wgt_manifest_handlers/addon_handler.h"
-
-namespace bf = boost::filesystem;
-
-namespace {
-
-const bf::path kXmlDirectory("/usr/share/manifest-parser-ut/test_samples/xmls");
-
-struct RegistryPolicyForAddon {
-  static std::unique_ptr<parser::ManifestHandlerRegistry> GetRegistry() {
-    using wgt::parse::AddonHandler;
-    std::unique_ptr<parser::ManifestHandlerRegistry> registry;
-    registry.reset(new parser::ManifestHandlerRegistry());
-    registry->RegisterManifestHandler(new AddonHandler());
-    return registry;
-  }
-};
-
-}  // namespace
-
-namespace parser {
-
-class AddonHandlerTest : public BaseTest<RegistryPolicyForAddon> {
-  void SetUp() override {
-    BaseTest<RegistryPolicyForAddon>::SetUp();
-    std::string error;
-    bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-    std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-    ASSERT_FALSE(!manifest);
-    SetManifest(manifest);
-  }
-};
-
-TEST_F(AddonHandlerTest, Valid) {
-  ASSERT_TRUE(ParseAppManifest()) << GetError();
-  ASSERT_TRUE(ValidateAppManifest()) << GetError();
-  std::shared_ptr<const wgt::parse::AddonInfo> data =
-      std::static_pointer_cast<const wgt::parse::AddonInfo>(
-          GetManifestData(wgt::parse::AddonInfo::Key()));
-  EXPECT_TRUE(!!data);
-}
-
-TEST_F(AddonHandlerTest, PackageNameTest) {
-  ASSERT_TRUE(ParseAppManifest()) << GetError();
-  ASSERT_TRUE(ValidateAppManifest()) << GetError();
-  std::shared_ptr<const wgt::parse::AddonInfo> data =
-      std::static_pointer_cast<const wgt::parse::AddonInfo>(
-          GetManifestData(wgt::parse::AddonInfo::Key()));
-  ASSERT_TRUE(!!data);
-  EXPECT_EQ(data->package(), "package0id");
-}
-
-TEST_F(AddonHandlerTest, RequiredVersionTest) {
-  ASSERT_TRUE(ParseAppManifest()) << GetError();
-  ASSERT_TRUE(ValidateAppManifest()) << GetError();
-  std::shared_ptr<const wgt::parse::AddonInfo> data =
-      std::static_pointer_cast<const wgt::parse::AddonInfo>(
-          GetManifestData(wgt::parse::AddonInfo::Key()));
-  ASSERT_TRUE(!!data);
-  EXPECT_EQ(data->required_version(), "5.5");
-}
-
-TEST_F(AddonHandlerTest, NoPackageNameTest) {
-  ASSERT_TRUE(ParseAppManifest()) << GetError();
-  EXPECT_FALSE(ValidateAppManifest());
-}
-
-TEST_F(AddonHandlerTest, NoRequiredVersionTest) {
-  ASSERT_TRUE(ParseAppManifest()) << GetError();
-  EXPECT_FALSE(ValidateAppManifest());
-}
-
-}  // namespace parser
diff --git a/src/unit_tests/appwidget_handler_unittest.cc b/src/unit_tests/appwidget_handler_unittest.cc
deleted file mode 100644 (file)
index d08caa8..0000000
+++ /dev/null
@@ -1,427 +0,0 @@
-// Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
-// Use of this source code is governed by an apache 2.0 license that can be
-// found in the LICENSE file.
-
-#include <boost/filesystem/path.hpp>
-
-#include <gtest/gtest.h>
-
-#include <manifest_parser/manifest.h>
-#include <manifest_parser/manifest_util.h>
-
-#include <algorithm>
-#include <memory>
-#include <vector>
-
-#include "unit_tests/base_test.h"
-#include "wgt_manifest_handlers/application_manifest_constants.h"
-#include "wgt_manifest_handlers/appwidget_handler.h"
-#include "wgt_manifest_handlers/tizen_application_handler.h"
-
-namespace bf = boost::filesystem;
-
-namespace {
-
-const bf::path kXmlDirectory("/usr/share/manifest-parser-ut/test_samples/xmls");
-
-struct RegistryPolicyForAppWidget {
-  static std::unique_ptr<parser::ManifestHandlerRegistry> GetRegistry() {
-    std::unique_ptr<parser::ManifestHandlerRegistry> registry;
-    registry.reset(new parser::ManifestHandlerRegistry());
-    registry->RegisterManifestHandler(
-        new wgt::parse::TizenApplicationHandler());
-    registry->RegisterManifestHandler(
-        new wgt::parse::AppWidgetHandler());
-    return registry;
-  }
-};
-
-}  // namespace
-
-namespace parser {
-
-class AppWidgetHandlerTest : public BaseTest<RegistryPolicyForAppWidget> {
-};
-
-TEST_F(AppWidgetHandlerTest, dbox1) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::AppWidgetInfo> data =
-      std::static_pointer_cast<const wgt::parse::AppWidgetInfo>(
-          GetManifestData(
-              wgt::application_widget_keys::kTizenAppWidgetFullKey));
-  ASSERT_EQ(data->app_widgets().size(), 1);
-  const wgt::parse::AppWidget& app_widget = *data->app_widgets().begin();
-  ASSERT_EQ(app_widget.auto_launch, true);
-  ASSERT_EQ(app_widget.content_mouse_event, true);
-  ASSERT_EQ(app_widget.content_touch_effect, false);
-  ASSERT_EQ(app_widget.content_src, "box/index.html");
-  ASSERT_EQ(app_widget.id, "aaaaaaa100.dbox1.default");
-  ASSERT_EQ(app_widget.primary, true);
-  ASSERT_EQ(app_widget.label.default_value, "dbox1 default label");
-  ASSERT_EQ(app_widget.label.lang_value_map.size(), 2);
-  ASSERT_EQ(app_widget.label.lang_value_map.count("pl"), 1);
-  ASSERT_EQ(app_widget.label.lang_value_map.find("pl")->second,
-            "dbox1 pl label");
-  ASSERT_EQ(app_widget.label.lang_value_map.count("en"), 1);
-  ASSERT_EQ(app_widget.label.lang_value_map.find("en")->second,
-            "dbox1 en label");
-  ASSERT_EQ(app_widget.icon_src, "icon.png");
-  ASSERT_EQ(app_widget.max_instance, 0);
-  ASSERT_EQ(app_widget.update_period.size(), 1);
-  ASSERT_EQ(app_widget.update_period.at(0), 2000.0);
-
-  ASSERT_EQ(app_widget.content_size.size(), 3);
-  auto size1 = std::find_if(app_widget.content_size.begin(),
-                            app_widget.content_size.end(),
-                            [](const wgt::parse::AppWidgetSize& size) {
-        return size.type == wgt::parse::k1x1;
-      });
-  auto size2 = std::find_if(app_widget.content_size.begin(),
-                            app_widget.content_size.end(),
-                            [](const wgt::parse::AppWidgetSize& size) {
-        return size.type == wgt::parse::k2x1;
-      });
-  auto size3 = std::find_if(app_widget.content_size.begin(),
-                            app_widget.content_size.end(),
-                            [](const wgt::parse::AppWidgetSize& size) {
-        return size.type == wgt::parse::k2x2;
-      });
-  ASSERT_NE(size1, app_widget.content_size.end());
-  ASSERT_NE(size2, app_widget.content_size.end());
-  ASSERT_NE(size3, app_widget.content_size.end());
-}
-
-TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_icon_none) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::AppWidgetInfo> data =
-      std::static_pointer_cast<const wgt::parse::AppWidgetInfo>(
-          GetManifestData(
-              wgt::application_widget_keys::kTizenAppWidgetFullKey));
-  ASSERT_EQ(data->app_widgets().size(), 1);
-  const wgt::parse::AppWidget& app_widget = *data->app_widgets().begin();
-  ASSERT_TRUE(app_widget.icon_src.empty());
-}
-
-TEST_F(AppWidgetHandlerTest, dbox2) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::AppWidgetInfo> data =
-      std::static_pointer_cast<const wgt::parse::AppWidgetInfo>(
-          GetManifestData(
-              wgt::application_widget_keys::kTizenAppWidgetFullKey));
-  ASSERT_EQ(data->app_widgets().size(), 2);
-  auto result1 = std::find_if(data->app_widgets().begin(),
-                              data->app_widgets().end(),
-                              [](const wgt::parse::AppWidget& candidate) {
-        return candidate.id == "aaaaaaa200.dbox2.default";
-      });
-  auto result2 = std::find_if(data->app_widgets().begin(),
-                              data->app_widgets().end(),
-                              [](const wgt::parse::AppWidget& candidate) {
-        return candidate.id == "aaaaaaa200.dbox2.second";
-      });
-  ASSERT_NE(result1, data->app_widgets().end());
-  ASSERT_NE(result2, data->app_widgets().end());
-
-  const wgt::parse::AppWidget& app_widget1 = *result1;
-  ASSERT_EQ(app_widget1.auto_launch, true);
-  ASSERT_EQ(app_widget1.content_mouse_event, true);
-  ASSERT_EQ(app_widget1.content_touch_effect, false);
-  ASSERT_EQ(app_widget1.content_src, "box/index.html");
-  ASSERT_EQ(app_widget1.id, "aaaaaaa200.dbox2.default");
-  ASSERT_EQ(app_widget1.primary, true);
-  ASSERT_EQ(app_widget1.label.default_value, "dbox2 default label");
-  ASSERT_EQ(app_widget1.label.lang_value_map.size(), 2);
-  ASSERT_EQ(app_widget1.label.lang_value_map.count("pl"), 1);
-  ASSERT_EQ(app_widget1.label.lang_value_map.find("pl")->second,
-            "dbox2 pl label");
-  ASSERT_EQ(app_widget1.label.lang_value_map.count("en"), 1);
-  ASSERT_EQ(app_widget1.label.lang_value_map.find("en")->second,
-            "dbox2 en label");
-  ASSERT_EQ(app_widget1.icon_src, "icon.png");
-  ASSERT_EQ(app_widget1.max_instance, 0);
-  ASSERT_EQ(app_widget1.update_period.size(), 1);
-  ASSERT_EQ(app_widget1.update_period.at(0), 2000.0);
-
-  const wgt::parse::AppWidget& app_widget2 = *result2;
-  ASSERT_EQ(app_widget2.auto_launch, false);
-  ASSERT_EQ(app_widget2.content_mouse_event, false);
-  ASSERT_EQ(app_widget2.content_touch_effect, true);
-  ASSERT_EQ(app_widget2.content_src, "box/index2.html");
-  ASSERT_EQ(app_widget2.id, "aaaaaaa200.dbox2.second");
-  ASSERT_EQ(app_widget2.primary, false);
-  ASSERT_EQ(app_widget2.label.default_value, "dbox2 default label 2");
-  ASSERT_EQ(app_widget2.label.lang_value_map.size(), 2);
-  ASSERT_EQ(app_widget2.label.lang_value_map.count("pl"), 1);
-  ASSERT_EQ(app_widget2.label.lang_value_map.find("pl")->second,
-            "dbox2 pl label 2");
-  ASSERT_EQ(app_widget2.label.lang_value_map.count("en"), 1);
-  ASSERT_EQ(app_widget2.label.lang_value_map.find("en")->second,
-            "dbox2 en label 2");
-  ASSERT_EQ(app_widget2.icon_src, "icon2.png");
-  ASSERT_EQ(app_widget2.max_instance, 0);
-  ASSERT_EQ(app_widget2.update_period.size(), 1);
-  ASSERT_EQ(app_widget2.update_period.at(0), 4000.0);
-}
-
-TEST_F(AppWidgetHandlerTest, dbox2_app_widget_primary_two_true) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::AppWidgetInfo> data =
-      std::static_pointer_cast<const wgt::parse::AppWidgetInfo>(
-          GetManifestData(
-              wgt::application_widget_keys::kTizenAppWidgetFullKey));
-  ASSERT_EQ(data->app_widgets().size(), 2);
-  auto result1 = std::find_if(data->app_widgets().begin(),
-                              data->app_widgets().end(),
-                              [](const wgt::parse::AppWidget& candidate) {
-        return candidate.id == "aaaaaaa201.dbox2.default";
-      });
-  auto result2 = std::find_if(data->app_widgets().begin(),
-                              data->app_widgets().end(),
-                              [](const wgt::parse::AppWidget& candidate) {
-        return candidate.id == "aaaaaaa201.dbox2.second";
-      });
-  ASSERT_NE(result1, data->app_widgets().end());
-  ASSERT_NE(result2, data->app_widgets().end());
-
-  const wgt::parse::AppWidget& app_widget1 = *result1;
-  ASSERT_EQ(app_widget1.primary, true);
-
-  const wgt::parse::AppWidget& app_widget2 = *result2;
-  ASSERT_EQ(app_widget2.primary, true);
-}
-
-TEST_F(AppWidgetHandlerTest, dbox1_app_widget_auto_launch_not_bool) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_content_box_size_invalid) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_content_box_size_none) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AppWidgetHandlerTest,
-       dbox1_app_widget_box_content_box_size_use_decoration_invalid) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AppWidgetHandlerTest,
-       dbox1_app_widget_box_content_mouse_event_not_bool) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_content_none) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_content_pd_height_invalid) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_content_pd_height_ood) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_content_pd_src_none) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_content_pd_width_invalid) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_content_src_none) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AppWidgetHandlerTest,
-       dbox1_app_widget_box_content_touch_effect_not_bool) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_content_two) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_icon_src_none) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_icon_two) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_label_none) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AppWidgetHandlerTest, dbox1_app_widget_id_invalid_1) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AppWidgetHandlerTest, dbox1_app_widget_id_invalid_2) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AppWidgetHandlerTest, dbox1_app_widget_id_none) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AppWidgetHandlerTest, dbox1_app_widget_primary_none) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AppWidgetHandlerTest, dbox1_app_widget_primary_not_bool) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AppWidgetHandlerTest, dbox1_app_widget_update_period_invalid) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(AppWidgetHandlerTest, dbox1_app_widget_update_period_ood) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-}  // namespace parser
diff --git a/src/unit_tests/base_test.h b/src/unit_tests/base_test.h
deleted file mode 100644 (file)
index e3ebe1d..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
-// Use of this source code is governed by an apache 2.0 license that can be
-// found in the LICENSE file.
-
-#ifndef UNIT_TESTS_BASE_TEST_H_
-#define UNIT_TESTS_BASE_TEST_H_
-
-#include <gtest/gtest.h>
-
-#include <manifest_parser/manifest_parser_impl.h>
-#include <manifest_parser/manifest_parser.h>
-
-#include <memory>
-#include <string>
-
-namespace parser {
-
-/**
- * Base class for unittests of handlers
- *
- * Requires policy class parameter implementing static method:
- *  - std::unique_ptr<parser::ManifestHandlerRegistry> GetRegistry();
- * which must return valid registry for given tests.
- */
-template<typename RegistryPolicy>
-class BaseTest : public testing::Test {
- public:
-  void SetUp() override {
-    parser_.reset(new ManifestParserImpl(RegistryPolicy::GetRegistry()));
-  }
-  void TearDown() override { parser_.reset(); }
-  void SetManifest(std::shared_ptr<Manifest> manifest) {
-    parser_->SetManifest(manifest);
-  }
-  bool ParseAppManifest() {
-    return parser_->ParseAppManifest(&error_);
-  }
-  bool ValidateAppManifest() {
-    return parser_->ValidateAppManifest(&error_);
-  }
-  std::shared_ptr<const ManifestData> GetManifestData(const std::string& key) {
-    return parser_->GetManifestData(key);
-  }
-
-  std::string GetMyName() const {
-    std::string suite =
-        testing::UnitTest::GetInstance()->current_test_info()->test_case_name();
-    std::string case_name =
-        testing::UnitTest::GetInstance()->current_test_info()->name();
-    return suite + '.' + case_name;
-  }
-
-  const std::string& GetError() const {
-    return error_;
-  }
-
- private:
-  std::unique_ptr<ManifestParserImpl> parser_;
-  std::string error_;
-};
-
-}  // namespace parser
-
-#endif  // UNIT_TESTS_BASE_TEST_H_
diff --git a/src/unit_tests/content_handler_unittest.cc b/src/unit_tests/content_handler_unittest.cc
deleted file mode 100644 (file)
index 63b337a..0000000
+++ /dev/null
@@ -1,370 +0,0 @@
-// Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
-// Use of this source code is governed by a apache-2.0 license that can be
-// found in the LICENSE file.
-
-#include <boost/filesystem/path.hpp>
-
-#include <gtest/gtest.h>
-
-#include <manifest_parser/manifest.h>
-#include <manifest_parser/manifest_util.h>
-
-#include <memory>
-#include <vector>
-
-#include "unit_tests/base_test.h"
-#include "wgt_manifest_handlers/application_manifest_constants.h"
-#include "wgt_manifest_handlers/content_handler.h"
-
-namespace bf = boost::filesystem;
-
-namespace {
-
-const char kWidgetKey[] = "widget";
-const char kNamespaceKey[] = "@namespace";
-const char kTizenContentTagKey[] = "content";
-const char kTizenNamespacePrefix[] = "http://tizen.org/ns/widgets";
-const char kWidgetNamespacePrefix[] = "http://www.w3.org/ns/widgets";
-const char kTizenContentEncodingKey[] = "@encoding";
-const char kTizenContentTypeKey[] = "@type";
-const char kTizenContentKey[] = "widget.content";
-const char kMimeMainComponent[] = "";
-const char kMimeCharsetComponent[] = "charset";
-const char kDefaultMimeType[] = "text/html";
-const char kDefaultEncoding[] = "UTF-8";
-const char kTizenContentSrcKey[] = "@src";
-
-struct RegistryPolicyForContent {
-  static std::unique_ptr<parser::ManifestHandlerRegistry> GetRegistry() {
-    std::unique_ptr<parser::ManifestHandlerRegistry> registry;
-    registry.reset(new parser::ManifestHandlerRegistry());
-    registry->RegisterManifestHandler(new wgt::parse::ContentHandler());
-    return registry;
-  }
-};
-
-}  // namespace
-
-namespace parser {
-
-class ContentHandlerTest : public BaseTest<RegistryPolicyForContent> {
-};
-
-TEST_F(ContentHandlerTest, NoContentEntry) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  ASSERT_TRUE(!GetManifestData(kTizenContentKey));
-}
-
-TEST_F(ContentHandlerTest, SingleContentEntry) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  content->SetString(kTizenContentSrcKey, "my_index.html");
-  widget->Set(kTizenContentTagKey, content.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::ContentInfo> content_info =
-      std::dynamic_pointer_cast<const wgt::parse::ContentInfo>(
-          GetManifestData(kTizenContentKey));
-  ASSERT_TRUE(!!content_info);
-  ASSERT_EQ(content_info->is_tizen_content(), false);
-  ASSERT_EQ(content_info->src(), "my_index.html");
-}
-
-TEST_F(ContentHandlerTest, SingleContentEntrySrcEmpty) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  content->SetString(kTizenContentSrcKey, "");
-  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kTizenContentTagKey, content.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check empty
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::ContentInfo> content_info =
-      std::dynamic_pointer_cast<const wgt::parse::ContentInfo>(
-          GetManifestData(kTizenContentKey));
-  ASSERT_FALSE(!!content_info);
-}
-
-TEST_F(ContentHandlerTest, SingleTizenContentEntry) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  content->SetString(kTizenContentSrcKey, "http://www.tizen.app/my_index.html");
-  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kTizenContentTagKey, content.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::ContentInfo> content_info =
-      std::dynamic_pointer_cast<const wgt::parse::ContentInfo>(
-          GetManifestData(kTizenContentKey));
-  ASSERT_TRUE(!!content_info);
-  ASSERT_EQ(content_info->is_tizen_content(), true);
-  ASSERT_EQ(content_info->src(), "http://www.tizen.app/my_index.html");
-}
-
-TEST_F(ContentHandlerTest, SingleTizenContentEntryNotURL) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  content->SetString(kTizenContentSrcKey, "relative_NOT_url");
-  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kTizenContentTagKey, content.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check error
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::ContentInfo> content_info =
-      std::dynamic_pointer_cast<const wgt::parse::ContentInfo>(
-          GetManifestData(kTizenContentKey));
-  ASSERT_TRUE(!!content_info);
-  ASSERT_EQ(content_info->is_tizen_content(), true);
-  ASSERT_EQ(content_info->src(), "relative_NOT_url");
-}
-
-TEST_F(ContentHandlerTest, MultipleContentEntryW3CTakeFirst) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<ListValue> list(new ListValue());
-  std::unique_ptr<DictionaryValue> content1(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content2(new DictionaryValue());
-  content1->SetString(kTizenContentSrcKey, "w3c_1_index.html");
-  content2->SetString(kTizenContentSrcKey, "w3c_2_index.html");
-  list->Append(content1.release());
-  list->Append(content2.release());
-  widget->Set(kTizenContentTagKey, list.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::ContentInfo> content_info =
-      std::dynamic_pointer_cast<const wgt::parse::ContentInfo>(
-          GetManifestData(kTizenContentKey));
-  ASSERT_TRUE(!!content_info);
-  ASSERT_EQ(content_info->is_tizen_content(), false);
-  ASSERT_EQ(content_info->src(), "w3c_1_index.html");
-}
-
-TEST_F(ContentHandlerTest, MultipleContentEntryTizenTakeFirst) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<ListValue> list(new ListValue());
-  std::unique_ptr<DictionaryValue> content1(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content2(new DictionaryValue());
-  content1->SetString(kTizenContentSrcKey,
-                      "http://www.tizen.app/tizen_1_index.html");
-  content1->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  content2->SetString(kTizenContentSrcKey,
-                      "http://www.tizen.app/tizen_2_index.html");
-  content2->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  list->Append(content1.release());
-  list->Append(content2.release());
-  widget->Set(kTizenContentTagKey, list.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::ContentInfo> content_info =
-      std::dynamic_pointer_cast<const wgt::parse::ContentInfo>(
-          GetManifestData(kTizenContentKey));
-  ASSERT_TRUE(!!content_info);
-  ASSERT_EQ(content_info->is_tizen_content(), true);
-  ASSERT_EQ(content_info->src(), "http://www.tizen.app/tizen_1_index.html");
-}
-
-TEST_F(ContentHandlerTest, MultipleContentEntryTizenPrioritizedAsFirst) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<ListValue> list(new ListValue());
-  std::unique_ptr<DictionaryValue> content1(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content2(new DictionaryValue());
-  content1->SetString(kTizenContentSrcKey,
-                      "http://www.tizen.app/tizen_index.html");
-  content1->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  content2->SetString(kTizenContentSrcKey, "my_index.html");
-  list->Append(content1.release());
-  list->Append(content2.release());
-  widget->Set(kTizenContentTagKey, list.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::ContentInfo> content_info =
-      std::dynamic_pointer_cast<const wgt::parse::ContentInfo>(
-          GetManifestData(kTizenContentKey));
-  ASSERT_TRUE(!!content_info);
-  ASSERT_EQ(content_info->is_tizen_content(), true);
-  ASSERT_EQ(content_info->src(), "http://www.tizen.app/tizen_index.html");
-}
-
-TEST_F(ContentHandlerTest, MultipleContentEntryTizenPrioritizedAsSecond) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<ListValue> list(new ListValue());
-  std::unique_ptr<DictionaryValue> content1(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content2(new DictionaryValue());
-  content1->SetString(kTizenContentSrcKey, "my_index.html");
-  content2->SetString(kTizenContentSrcKey,
-                      "http://www.tizen.app/tizen_index.html");
-  content2->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  list->Append(content1.release());
-  list->Append(content2.release());
-  widget->Set(kTizenContentTagKey, list.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::ContentInfo> content_info =
-      std::dynamic_pointer_cast<const wgt::parse::ContentInfo>(
-          GetManifestData(kTizenContentKey));
-  ASSERT_TRUE(!!content_info);
-  ASSERT_EQ(content_info->is_tizen_content(), true);
-  ASSERT_EQ(content_info->src(), "http://www.tizen.app/tizen_index.html");
-}
-
-TEST_F(ContentHandlerTest, MultipleContentEntryW3CIgnoreIfNotFirst) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<ListValue> list(new ListValue());
-  std::unique_ptr<DictionaryValue> content1(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content2(new DictionaryValue());
-  content2->SetString(kTizenContentSrcKey, "w3c_2_index.html");
-  list->Append(content1.release());
-  list->Append(content2.release());
-  widget->Set(kTizenContentTagKey, list.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check empty
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::ContentInfo> content_info =
-      std::dynamic_pointer_cast<const wgt::parse::ContentInfo>(
-          GetManifestData(kTizenContentKey));
-  ASSERT_FALSE(!!content_info);
-}
-
-TEST_F(ContentHandlerTest, MultipleContentEntryW3CIgnoreIfFirstEmpty) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<ListValue> list(new ListValue());
-  std::unique_ptr<DictionaryValue> content1(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content2(new DictionaryValue());
-  content1->SetString(kTizenContentSrcKey, "");
-  content2->SetString(kTizenContentSrcKey, "w3c_2_index.html");
-  list->Append(content1.release());
-  list->Append(content2.release());
-  widget->Set(kTizenContentTagKey, list.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check empty
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::ContentInfo> content_info =
-      std::dynamic_pointer_cast<const wgt::parse::ContentInfo>(
-          GetManifestData(kTizenContentKey));
-  ASSERT_FALSE(!!content_info);
-}
-
-TEST_F(ContentHandlerTest, MultipleContentBackToW3CWhenTizenEntryBroken) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<ListValue> list(new ListValue());
-  std::unique_ptr<DictionaryValue> content1(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content2(new DictionaryValue());
-  content1->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  content2->SetString(kTizenContentSrcKey, "w3c_1_index.html");
-  list->Append(content1.release());
-  list->Append(content2.release());
-  widget->Set(kTizenContentTagKey, list.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check w3c when tizen:content broken
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::ContentInfo> content_info =
-      std::dynamic_pointer_cast<const wgt::parse::ContentInfo>(
-          GetManifestData(kTizenContentKey));
-  ASSERT_TRUE(!!content_info);
-  ASSERT_EQ(content_info->is_tizen_content(), false);
-  ASSERT_EQ(content_info->src(), "w3c_1_index.html");
-}
-
-TEST_F(ContentHandlerTest, MultipleMoreContentEntry) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<ListValue> list(new ListValue());
-  std::unique_ptr<DictionaryValue> content1(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content2(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content3(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content4(new DictionaryValue());
-  content1->SetString(kTizenContentSrcKey, "w3c_1_index.html");
-  content2->SetString(kTizenContentSrcKey, "w3c_2_index.html");
-  content3->SetString(kTizenContentSrcKey,
-                      "http://www.tizen.app/tizen_3_index.html");
-  content3->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  content4->SetString(kTizenContentSrcKey,
-                      "http://www.tizen.app/tizen_4_index.html");
-  content4->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  list->Append(content1.release());
-  list->Append(content2.release());
-  list->Append(content3.release());
-  list->Append(content4.release());
-  widget->Set(kTizenContentTagKey, list.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::ContentInfo> content_info =
-      std::dynamic_pointer_cast<const wgt::parse::ContentInfo>(
-          GetManifestData(kTizenContentKey));
-  ASSERT_TRUE(!!content_info);
-  ASSERT_EQ(content_info->is_tizen_content(), true);
-  ASSERT_EQ(content_info->src(), "http://www.tizen.app/tizen_3_index.html");
-}
-
-}  // namespace parser
diff --git a/src/unit_tests/csp_handler_unittest.cc b/src/unit_tests/csp_handler_unittest.cc
deleted file mode 100644 (file)
index 7a4d359..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
-// Use of this source code is governed by an apache 2.0 license that can be
-// found in the LICENSE file.
-
-#include <boost/filesystem/path.hpp>
-
-#include <gtest/gtest.h>
-
-#include <manifest_parser/manifest.h>
-#include <manifest_parser/manifest_util.h>
-
-#include <memory>
-
-#include "unit_tests/base_test.h"
-#include "wgt_manifest_handlers/csp_handler.h"
-
-namespace bf = boost::filesystem;
-
-namespace {
-
-const bf::path kXmlDirectory("/usr/share/manifest-parser-ut/test_samples/xmls");
-
-struct RegistryPolicyForCSP {
-  static std::unique_ptr<parser::ManifestHandlerRegistry> GetRegistry() {
-    using wgt::parse::CSPHandler;
-    std::unique_ptr<parser::ManifestHandlerRegistry> registry;
-    registry.reset(new parser::ManifestHandlerRegistry());
-    registry->RegisterManifestHandler(
-        new CSPHandler(CSPHandler::SecurityType::CSP));
-    registry->RegisterManifestHandler(
-        new CSPHandler(CSPHandler::SecurityType::CSP_REPORT_ONLY));
-    return registry;
-  }
-};
-
-}  // namespace
-
-namespace parser {
-
-class CSPHandlerTest : public BaseTest<RegistryPolicyForCSP> {
-  void SetUp() override {
-    BaseTest<RegistryPolicyForCSP>::SetUp();
-    std::string error;
-    bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-    std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-    ASSERT_FALSE(!manifest);
-    SetManifest(manifest);
-  }
-};
-
-TEST_F(CSPHandlerTest, InvalidNamespace) {
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::CSPInfo> data =
-      std::static_pointer_cast<const wgt::parse::CSPInfo>(
-          GetManifestData(wgt::parse::CSPInfo::Key()));
-  ASSERT_TRUE(!data);
-  std::shared_ptr<const wgt::parse::CSPInfo> data_report_only =
-      std::static_pointer_cast<const wgt::parse::CSPInfo>(
-          GetManifestData(wgt::parse::CSPInfo::Report_only_key()));
-  ASSERT_TRUE(!data_report_only);
-}
-
-TEST_F(CSPHandlerTest, Valid) {
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::CSPInfo> data =
-      std::static_pointer_cast<const wgt::parse::CSPInfo>(
-          GetManifestData(wgt::parse::CSPInfo::Key()));
-  ASSERT_TRUE(!!data);
-  ASSERT_EQ(data->security_rules(), "script-src 'self'");
-  std::shared_ptr<const wgt::parse::CSPInfo> data_report_only =
-      std::static_pointer_cast<const wgt::parse::CSPInfo>(
-          GetManifestData(wgt::parse::CSPInfo::Report_only_key()));
-  ASSERT_TRUE(!!data_report_only);
-  ASSERT_EQ(data_report_only->security_rules(),
-      "script-src 'self'; report-uri=\"http://example.com/report.cgi\"");
-}
-
-}  // namespace parser
diff --git a/src/unit_tests/launch_screen_handler_unittest.cc b/src/unit_tests/launch_screen_handler_unittest.cc
deleted file mode 100644 (file)
index 773eafd..0000000
+++ /dev/null
@@ -1,319 +0,0 @@
-// Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
-// Use of this source code is governed by an apache 2.0 license that can be
-// found in the LICENSE file.
-
-#include <boost/filesystem/path.hpp>
-
-#include <gtest/gtest.h>
-
-#include <manifest_parser/manifest.h>
-#include <manifest_parser/manifest_util.h>
-
-#include <memory>
-#include <vector>
-
-#include "unit_tests/base_test.h"
-#include "wgt_manifest_handlers/application_manifest_constants.h"
-#include "wgt_manifest_handlers/launch_screen_handler.h"
-
-namespace bf = boost::filesystem;
-
-namespace {
-
-const bf::path kXmlDirectory("/usr/share/manifest-parser-ut/test_samples/xmls");
-
-struct RegistryPolicyForLaunchScreen {
-  static std::unique_ptr<parser::ManifestHandlerRegistry> GetRegistry() {
-    std::unique_ptr<parser::ManifestHandlerRegistry> registry;
-    registry.reset(new parser::ManifestHandlerRegistry());
-    registry->RegisterManifestHandler(new wgt::parse::LaunchScreenHandler());
-    return registry;
-  }
-};
-
-}  // namespace
-
-namespace parser {
-
-class LaunchScreenHandlerTest : public BaseTest<RegistryPolicyForLaunchScreen> {
-};
-
-TEST_F(LaunchScreenHandlerTest, Valid) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-
-  std::shared_ptr<const wgt::parse::LaunchScreenInfo> data =
-       std::static_pointer_cast<const wgt::parse::LaunchScreenInfo>(
-           GetManifestData(wgt::parse::LaunchScreenInfo::Key()));
-  ASSERT_EQ(wgt::parse::ReadyWhen::FIRSTPAINT, data->ready_when());
-
-  std::map<wgt::parse::ScreenOrientation, wgt::parse::LaunchScreenData>
-      testData = data->launch_screen_data();
-  ASSERT_EQ(1, testData.size());
-
-  wgt::parse::LaunchScreenData launchData =
-      testData.find(wgt::parse::ScreenOrientation::AUTO)->second;
-  std::vector<std::pair<std::string, boost::optional<int>>> strPair =
-      launchData.background_images;
-  ASSERT_EQ(1, strPair.size());
-  ASSERT_EQ("bg_image.png", strPair[0].first);
-  ASSERT_EQ(boost::none, strPair[0].second);
-
-  ASSERT_EQ(255, launchData.background_color.get()->red);
-  ASSERT_EQ(0, launchData.background_color.get()->green);
-  ASSERT_EQ(0, launchData.background_color.get()->blue);
-
-  strPair = launchData.images;
-  ASSERT_EQ(1, strPair.size());
-  ASSERT_EQ("default_image.gif", strPair[0].first);
-  ASSERT_EQ(boost::none, strPair[0].second);
-
-  std::vector<std::string> strData = launchData.image_border;
-  ASSERT_EQ(6, strData.size());
-  ASSERT_EQ("30px", strData[0]);
-  ASSERT_EQ("30px", strData[1]);
-  ASSERT_EQ("20px", strData[2]);
-  ASSERT_EQ("10px", strData[3]);
-  ASSERT_EQ("repeat", strData[4]);
-  ASSERT_EQ("round", strData[5]);
-}
-
-TEST_F(LaunchScreenHandlerTest, ValidMultiScreenOrientation) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-
-  std::shared_ptr<const wgt::parse::LaunchScreenInfo> data =
-       std::static_pointer_cast<const wgt::parse::LaunchScreenInfo>(
-           GetManifestData(wgt::parse::LaunchScreenInfo::Key()));
-  ASSERT_EQ(wgt::parse::ReadyWhen::FIRSTPAINT, data->ready_when());
-
-  std::map<wgt::parse::ScreenOrientation, wgt::parse::LaunchScreenData>
-      testData = data->launch_screen_data();
-  ASSERT_EQ(3, testData.size());
-
-  wgt::parse::LaunchScreenData launchData =
-      testData.find(wgt::parse::ScreenOrientation::AUTO)->second;
-  ASSERT_EQ(255, launchData.background_color.get()->red);
-  ASSERT_EQ(0, launchData.background_color.get()->green);
-  ASSERT_EQ(0, launchData.background_color.get()->blue);
-
-  launchData = testData.find(wgt::parse::ScreenOrientation::PORTRAIT)->second;
-  ASSERT_EQ(0, launchData.background_color.get()->red);
-  ASSERT_EQ(255, launchData.background_color.get()->green);
-  ASSERT_EQ(0, launchData.background_color.get()->blue);
-
-  launchData = testData.find(wgt::parse::ScreenOrientation::LANDSCAPE)->second;
-  ASSERT_EQ(0, launchData.background_color.get()->red);
-  ASSERT_EQ(0, launchData.background_color.get()->green);
-  ASSERT_EQ(255, launchData.background_color.get()->blue);
-}
-
-TEST_F(LaunchScreenHandlerTest, ValidMultiImages) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-
-  std::shared_ptr<const wgt::parse::LaunchScreenInfo> data =
-       std::static_pointer_cast<const wgt::parse::LaunchScreenInfo>(
-           GetManifestData(wgt::parse::LaunchScreenInfo::Key()));
-  ASSERT_EQ(wgt::parse::ReadyWhen::FIRSTPAINT, data->ready_when());
-
-  std::map<wgt::parse::ScreenOrientation, wgt::parse::LaunchScreenData>
-      testData = data->launch_screen_data();
-  ASSERT_EQ(1, testData.size());
-
-  wgt::parse::LaunchScreenData launchData =
-      testData.find(wgt::parse::ScreenOrientation::AUTO)->second;
-  std::vector<std::pair<std::string, boost::optional<int>>> strPair =
-      launchData.images;
-  ASSERT_EQ(2, strPair.size());
-  ASSERT_EQ("default_image.gif", strPair[0].first);
-  ASSERT_EQ(1, strPair[0].second);
-  ASSERT_EQ("default_image2x.jpg", strPair[1].first);
-  ASSERT_EQ(2, strPair[1].second);
-}
-
-TEST_F(LaunchScreenHandlerTest, ValidMultiBackgroundImages) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-
-  std::shared_ptr<const wgt::parse::LaunchScreenInfo> data =
-       std::static_pointer_cast<const wgt::parse::LaunchScreenInfo>(
-           GetManifestData(wgt::parse::LaunchScreenInfo::Key()));
-  ASSERT_EQ(wgt::parse::ReadyWhen::FIRSTPAINT, data->ready_when());
-
-  std::map<wgt::parse::ScreenOrientation, wgt::parse::LaunchScreenData>
-      testData = data->launch_screen_data();
-  ASSERT_EQ(1, testData.size());
-
-  wgt::parse::LaunchScreenData launchData =
-      testData.find(wgt::parse::ScreenOrientation::AUTO)->second;
-  std::vector<std::pair<std::string, boost::optional<int>>> strPair =
-      launchData.background_images;
-  ASSERT_EQ(2, strPair.size());
-  ASSERT_EQ("bg_image.png", strPair[0].first);
-  ASSERT_EQ(1, strPair[0].second);
-  ASSERT_EQ("bg_image2x.bmp", strPair[1].first);
-  ASSERT_EQ(2, strPair[1].second);
-}
-
-TEST_F(LaunchScreenHandlerTest, ValidComplex) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-
-  std::shared_ptr<const wgt::parse::LaunchScreenInfo> data =
-       std::static_pointer_cast<const wgt::parse::LaunchScreenInfo>(
-           GetManifestData(wgt::parse::LaunchScreenInfo::Key()));
-  ASSERT_EQ(wgt::parse::ReadyWhen::FIRSTPAINT, data->ready_when());
-
-  std::map<wgt::parse::ScreenOrientation, wgt::parse::LaunchScreenData>
-      testData = data->launch_screen_data();
-  ASSERT_EQ(3, testData.size());
-
-  wgt::parse::LaunchScreenData launchData =
-      testData.find(wgt::parse::ScreenOrientation::AUTO)->second;
-  std::vector<std::pair<std::string, boost::optional<int>>> strPair =
-      launchData.background_images;
-  ASSERT_EQ(2, strPair.size());
-  ASSERT_EQ("bg_image.png", strPair[0].first);
-  ASSERT_EQ(1, strPair[0].second);
-  ASSERT_EQ("bg_image2x.bmp", strPair[1].first);
-  ASSERT_EQ(2, strPair[1].second);
-
-  ASSERT_EQ(255, launchData.background_color.get()->red);
-  ASSERT_EQ(0, launchData.background_color.get()->green);
-  ASSERT_EQ(0, launchData.background_color.get()->blue);
-
-  strPair = launchData.images;
-  ASSERT_EQ(2, strPair.size());
-  ASSERT_EQ("default_image.gif", strPair[0].first);
-  ASSERT_EQ(1, strPair[0].second);
-  ASSERT_EQ("default_image2x.jpg", strPair[1].first);
-  ASSERT_EQ(2, strPair[1].second);
-
-  std::vector<std::string> strData = launchData.image_border;
-  ASSERT_EQ(6, strData.size());
-  ASSERT_EQ("30px", strData[0]);
-  ASSERT_EQ("30px", strData[1]);
-  ASSERT_EQ("20px", strData[2]);
-  ASSERT_EQ("10px", strData[3]);
-  ASSERT_EQ("repeat", strData[4]);
-  ASSERT_EQ("round", strData[5]);
-
-  launchData = testData.find(wgt::parse::ScreenOrientation::PORTRAIT)->second;
-  strPair = launchData.background_images;
-  ASSERT_EQ(1, strPair.size());
-  ASSERT_EQ("bg_image.png", strPair[0].first);
-  ASSERT_EQ(boost::none, strPair[0].second);
-
-  ASSERT_EQ(0, launchData.background_color.get()->red);
-  ASSERT_EQ(255, launchData.background_color.get()->green);
-  ASSERT_EQ(0, launchData.background_color.get()->blue);
-
-  strPair = launchData.images;
-  ASSERT_EQ(1, strPair.size());
-  ASSERT_EQ("portrait_image.png", strPair[0].first);
-  ASSERT_EQ(boost::none, strPair[0].second);
-
-  strData = launchData.image_border;
-  ASSERT_EQ(1, strData.size());
-  ASSERT_EQ("repeat", strData[0]);
-
-  launchData = testData.find(wgt::parse::ScreenOrientation::LANDSCAPE)->second;
-  strPair = launchData.background_images;
-  ASSERT_EQ(1, strPair.size());
-  ASSERT_EQ("bg_image.png", strPair[0].first);
-  ASSERT_EQ(boost::none, strPair[0].second);
-
-  ASSERT_EQ(0, launchData.background_color.get()->red);
-  ASSERT_EQ(0, launchData.background_color.get()->green);
-  ASSERT_EQ(255, launchData.background_color.get()->blue);
-
-  strPair = launchData.images;
-  ASSERT_EQ(1, strPair.size());
-  ASSERT_EQ("landscape_image.gif", strPair[0].first);
-  ASSERT_EQ(boost::none, strPair[0].second);
-
-  strData = launchData.image_border;
-  ASSERT_EQ(1, strData.size());
-  ASSERT_EQ("repeat", strData[0]);
-}
-
-TEST_F(LaunchScreenHandlerTest, InvalidNamespace) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-
-  ASSERT_FALSE(ParseAppManifest());
-}
-
-TEST_F(LaunchScreenHandlerTest, Empty) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-
-  std::shared_ptr<const wgt::parse::LaunchScreenInfo> data =
-       std::static_pointer_cast<const wgt::parse::LaunchScreenInfo>(
-           GetManifestData(wgt::parse::LaunchScreenInfo::Key()));
-  ASSERT_EQ(wgt::parse::ReadyWhen::FIRSTPAINT, data->ready_when());
-
-  std::map<wgt::parse::ScreenOrientation, wgt::parse::LaunchScreenData>
-      testData = data->launch_screen_data();
-  ASSERT_EQ(0, testData.size());
-}
-
-TEST_F(LaunchScreenHandlerTest, InvalidReadyWhen) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-
-  ASSERT_FALSE(ParseAppManifest());
-}
-
-}  // namespace parser
diff --git a/src/unit_tests/parser_manifest_util_unittest.cc b/src/unit_tests/parser_manifest_util_unittest.cc
deleted file mode 100644 (file)
index e13a6d2..0000000
+++ /dev/null
@@ -1,239 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE-xwalk file.
-
-#include <boost/filesystem/fstream.hpp>
-#include <boost/filesystem/path.hpp>
-#include <boost/filesystem/operations.hpp>
-#include <gtest/gtest.h>
-
-#include "manifest_parser/manifest.h"
-#include "manifest_parser/manifest_util.h"
-#include "wgt_manifest_handlers/application_manifest_constants.h"
-
-namespace bf = boost::filesystem;
-
-namespace parser {
-
-class ManifestUtilTest : public testing::Test {
-};
-
-TEST_F(ManifestUtilTest, LoadApplicationWithValidPath) {
-  boost::filesystem::path install_dir("/usr/share/manifest-parser-ut");
-  ASSERT_TRUE(&install_dir);
-  install_dir /= "test_samples";
-  install_dir /= "good_manifest.xml";
-
-  std::string error;
-  std::shared_ptr<Manifest> manifest(
-      LoadManifest(install_dir.string(), &error));
-  ASSERT_TRUE(error.empty());
-  EXPECT_TRUE(manifest.get());
-
-  std::string app_id;
-  manifest->GetString("widget.application.@id", &app_id);
-  EXPECT_STREQ("nNBDOItqjN.WebSettingSample", app_id.c_str());
-}
-
-TEST_F(ManifestUtilTest,
-       LoadApplicationGivesHelpfullErrorOnMissingManifest) {
-  boost::filesystem::path install_dir("/usr/share/manifest-parser-ut");
-  ASSERT_TRUE(&install_dir);
-  install_dir /= "test_samples";
-  install_dir /= "bad_manifest.xml";
-  std::string error;
-  std::shared_ptr<Manifest> manifest(
-      LoadManifest(install_dir.string(), &error));
-  ASSERT_FALSE(error.empty());
-  ASSERT_STREQ("Manifest file is missing or unreadable.", error.c_str());
-  EXPECT_FALSE(manifest.get());
-}
-
-// Tests IsPropSupportDir method
-TEST_F(ManifestUtilTest, IsPropSupportDirTest) {
-  xmlChar kWidgetNodeKey[] = "widget";
-  xmlChar kNameNodeKey[] = "name";
-  xmlChar kVersionAttributeKey[] = "version";
-  xmlChar kShortAttributeKey[] = "short";
-  xmlNode node, sec_node;
-  node.name = kWidgetNodeKey;
-  sec_node.name = kNameNodeKey;
-  xmlAttr attr, sec_attr;
-  attr.name = kVersionAttributeKey;
-  sec_attr.name = kShortAttributeKey;
-  ASSERT_TRUE(IsPropSupportDir(&node, &attr));
-  ASSERT_TRUE(IsPropSupportDir(&sec_node, &sec_attr));
-  ASSERT_TRUE(!IsPropSupportDir(&node, &sec_attr));
-  ASSERT_TRUE(!IsPropSupportDir(&sec_node, &attr));
-  ASSERT_TRUE(!IsPropSupportDir(&node, &sec_attr));
-}
-
-// Tests IsElementSupportSpanAndDir method
-TEST_F(ManifestUtilTest, IsElementSupportSpanAndDirTest) {
-  std::map <const char*, bool> nodeNames = {
-    { "name", true },
-    { "description", true },
-    { "author", true },
-    { "license", true },
-    { "badlicense", false }
-  };
-  xmlNode node;
-  for (const auto& p : nodeNames) {
-    node.name = reinterpret_cast<xmlChar*>(const_cast<char*>(p.first));
-    EXPECT_TRUE(IsElementSupportSpanAndDir(&node) == p.second);
-  }
-}
-
-// Tests IsTrimRequiredForElement
-TEST_F(ManifestUtilTest, IsTrimRequiredForElementTest) {
-  std::map<const char*, bool> elements {
-    { "name", true },
-    { "author", true },
-    { "badname", false },
-    { "badauthor", false }
-  };
-  xmlNode node;
-  for (const auto& p : elements) {
-    node.name = reinterpret_cast<xmlChar*>(const_cast<char*>(p.first));
-    EXPECT_TRUE(IsTrimRequiredForElement(&node) == p.second);
-  }
-}
-
-// Tests IsTrimRequiredForProp method
-TEST_F(ManifestUtilTest, IsTrimRequiredForPropTest) {
-  struct node{
-    bool operator <(const node& rhs) const {
-      return node_name_ < rhs.node_name_;
-    }
-    const char* node_name_;
-    const char* attr_name_;
-  };
-
-  std::map<node, bool> nodes = {
-    { {"widget", "id"}, true },
-    { {"widget", "version"}, true },
-    { {"widget", "defaultlocale"}, true },
-    { {"name", "short"}, true },
-    { {"author", "email"}, true },
-    { {"author", "href"}, true },
-    { {"license", "href"}, true },
-    { {"icon", "path"}, true },
-    { {"widget", "email"}, false },
-    { {"name", "path"}, false },
-    { {"author", "id"}, false }
-  };
-
-  xmlNode node;
-  xmlAttr attr;
-  for (const auto& p : nodes) {
-    node.name =
-        reinterpret_cast<xmlChar*>(const_cast<char*>(p.first.node_name_));
-    attr.name =
-        reinterpret_cast<xmlChar*>(const_cast<char*>(p.first.attr_name_));
-    EXPECT_TRUE(IsTrimRequiredForProp(&node, &attr) == p.second);
-  }
-}
-
-// Tests GetNodeDir method with proper values
-TEST_F(ManifestUtilTest, GetNodeDirTestProperValues) {
-  const char* xml = "<widget dir=\"rtl\">"
-                    "<name>ppa emoS</name>"
-                    "</widget>";
-  xmlDoc* doc = xmlParseMemory(xml, strlen(xml));
-  ASSERT_TRUE(doc);
-  xmlNode* root = doc->children;
-  ASSERT_TRUE(root);
-  std::string inherit_dir("ltr");
-  EXPECT_STREQ("rtl", GetNodeDir(root, inherit_dir).c_str());
-}
-
-// Tests GetNodeDir method with default dir
-TEST_F(ManifestUtilTest, GetNodeDirTestDefaultValues) {
-  const char* xml = "<widget>"
-                    "<name>Some app</name>"
-                    "</widget>";
-  xmlDoc* doc = xmlParseMemory(xml, strlen(xml));
-  ASSERT_TRUE(doc);
-  xmlNode* root = doc->children;
-  ASSERT_TRUE(root);
-  std::string inherit_dir("ltr");
-  EXPECT_STREQ("ltr", GetNodeDir(root, inherit_dir).c_str());
-}
-
-// Tests GetNodeText method with rtl text direction
-TEST_F(ManifestUtilTest, GetNodeTextTestXmlElementNode) {
-  const char* xml = "<widget dir=\"rtl\">"
-                    "<name>ppa emoS</name>"
-                    "</widget>";
-  std::map<int, char> control_chars = {
-    { 0, '\xe2' }, { 1, '\x80' }, { 2, '\xab' },
-    { 14, '\xe2' }, { 15, '\x80' }, { 16, '\xac' },
-  };
-  xmlDoc* doc = xmlParseMemory(xml, strlen(xml));
-  ASSERT_TRUE(doc);
-  xmlNode* root = doc->children;
-  ASSERT_TRUE(root);
-  std::string inherit_dir("ltr");
-  std::string s = GetNodeText(root, inherit_dir);
-  for (const auto& p : control_chars)
-    EXPECT_EQ(p.second, s[p.first]);
-}
-
-// Tests GetNodeText method with rtl and ltr text direction
-TEST_F(ManifestUtilTest, GetNodeTextTestTwoXmlElementNodes) {
-  const char* xml = "<widget dir=\"rtl\">"
-                    "<name>ppa emoS</name>"
-                    "<description dir=\"ltr\">Desc</description>"
-                    "</widget>";
-  std::map<int, char> control_chars = {
-    { 0, '\xe2' }, { 1, '\x80' }, { 2, '\xab' },
-    { 14, '\xe2' }, { 15, '\x80' }, { 16, '\xac' },
-    { 17, '\xe2' }, { 18, '\x80' }, { 19, '\xaa' },
-    { 24, '\xe2' }, { 25, '\x80' }, { 26, '\xac' }
-  };
-  xmlDoc* doc = xmlParseMemory(xml, strlen(xml));
-  ASSERT_TRUE(doc);
-  xmlNode* root = doc->children;
-  ASSERT_TRUE(root);
-  std::string inherit_dir("ltr");
-  std::string s = GetNodeText(root, inherit_dir);
-  for (const auto& p : control_chars)
-    EXPECT_EQ(p.second, s[p.first]);
-}
-
-// Tests LoadXMLNode method with proper xml tree
-TEST_F(ManifestUtilTest, LoadXMLNodeTestProperXMLTree) {
-  const char* xml = "<root>"
-                    "<widget dir=\"ltr\">"
-                    "<name short=\"SA\">Some app</name>"
-                    "<description>Desc</description>"
-                    "<author dir=\"rtl\">enoemoS</author>"
-                    "</widget>"
-                    "</root>";
-  std::map<std::string, std::string> expected_vals = {
-    { "widget.@dir", "ltr" },
-    { "widget.name.@short",
-      std::string("\xE2\x80\xAA") + "SA" + "\xE2\x80\xAC" },
-    { "widget.name.#text",
-      std::string("\xE2\x80\xAA") + "Some app" + "\xE2\x80\xAC" },
-    { "widget.description.#text",
-      std::string("\xE2\x80\xAA") + "Desc" + "\xE2\x80\xAC" },
-    { "widget.author.@dir", "rtl" },
-    { "widget.author.#text",
-      std::string("\xE2\x80\xAB") + "enoemoS" + "\xE2\x80\xAC" }
-  };
-
-  xmlDoc* doc = xmlParseMemory(xml, strlen(xml));
-  ASSERT_TRUE(doc);
-  xmlNode* root = doc->children;
-  std::unique_ptr<DictionaryValue> val = LoadXMLNode(root);
-
-  std::string test_str;
-  for (const auto& p : expected_vals) {
-    ASSERT_TRUE(val->GetString(p.first, &test_str));
-    EXPECT_STREQ(p.second.c_str(), test_str.c_str());
-  }
-}
-
-}  // namespace parser
diff --git a/src/unit_tests/service_handler_unittest.cc b/src/unit_tests/service_handler_unittest.cc
deleted file mode 100644 (file)
index de2bf23..0000000
+++ /dev/null
@@ -1,1001 +0,0 @@
-// Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
-// Use of this source code is governed by a apache-2.0 license that can be
-// found in the LICENSE file.
-
-#include <boost/filesystem/path.hpp>
-
-#include <gtest/gtest.h>
-
-#include <manifest_parser/manifest.h>
-#include <manifest_parser/manifest_util.h>
-
-#include <memory>
-#include <vector>
-
-#include "unit_tests/base_test.h"
-#include "wgt_manifest_handlers/application_manifest_constants.h"
-#include "wgt_manifest_handlers/service_handler.h"
-
-namespace bf = boost::filesystem;
-
-namespace {
-
-const char kWidgetKey[] = "widget";
-const char kTizenServiceKey[] = "widget.service";
-const char kTizenServiceContentKey[] = "content";
-const char kTizenServiceContentSrcKey[] = "@src";
-const char kTizenServiceIdKey[] = "@id";
-const char kTizenNamespacePrefix[] = "http://tizen.org/ns/widgets";
-const char kTizenServiceOnBootKey[] = "@on-boot";
-const char kTizenServiceNameKey[] = "name";
-const char kTizenServiceCategoryNameKey[] = "@name";
-const char kTizenServiceCategoryKey[] = "category";
-const char kTizenServiceIconKey[] = "icon";
-const char kNamespaceKey[] = "@namespace";
-const char kServiceKey[] = "service";
-const char kTizenServiceAutoRestartKey[] = "@auto-restart";
-const char kTizenServiceIconSrcKey[] = "@src";
-const char kTizenServiceDescriptionKey[] = "description";
-const char kTizenServiceMetadataKeyKey[] = "@key";
-const char kTizenServiceMetadataValueKey[] = "@value";
-const char kTizenServiceMetadataKey[] = "metadata";
-const char kXmlLangKey[] = "@lang";
-const char kXmlTextKey[] = "#text";
-
-
-struct RegistryPolicyForService {
-  static std::unique_ptr<parser::ManifestHandlerRegistry> GetRegistry() {
-    std::unique_ptr<parser::ManifestHandlerRegistry> registry;
-    registry.reset(new parser::ManifestHandlerRegistry());
-    registry->RegisterManifestHandler(new wgt::parse::ServiceHandler());
-    return registry;
-  }
-};
-
-}  // namespace
-
-namespace parser {
-
-class ServiceHandlerTest : public BaseTest<RegistryPolicyForService> {
-};
-
-TEST_F(ServiceHandlerTest, NoServiceEntry) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-}
-
-TEST_F(ServiceHandlerTest, SingleServiceEntryDefault) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
-  content->SetString(kTizenServiceContentSrcKey, "service.js");
-  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kXmlTextKey, "name");
-  service->Set(kTizenServiceContentKey, content.release());
-  service->Set(kTizenServiceNameKey, name.release());
-  service->SetString(kTizenServiceIdKey, "correct001.appId");
-  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kServiceKey, service.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
-  std::shared_ptr<const wgt::parse::ServiceList> service_list =
-      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
-          GetManifestData(kTizenServiceKey));
-  ASSERT_TRUE(!!service_list);
-  ASSERT_EQ(service_list->services.size(), 1);
-  ASSERT_EQ(service_list->services[0].id(), "correct001.appId");
-  ASSERT_EQ(service_list->services[0].auto_restart(), false);
-  ASSERT_EQ(service_list->services[0].on_boot(), false);
-  ASSERT_EQ(service_list->services[0].content(), "service.js");
-  ASSERT_EQ(service_list->services[0].names().size(), 1);
-  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
-  ASSERT_EQ(service_list->services[0].categories().size(), 0);
-  ASSERT_EQ(service_list->services[0].metadata_set().size(), 0);
-}
-
-TEST_F(ServiceHandlerTest, SingleServiceEntryOnBootOn) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
-  content->SetString(kTizenServiceContentSrcKey, "service.js");
-  content->SetString(::kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kXmlTextKey, "name");
-  service->Set(kTizenServiceContentKey, content.release());
-  service->Set(kTizenServiceNameKey, name.release());
-  service->SetString(kTizenServiceIdKey, "correct002.appId");
-  service->SetString(kTizenServiceOnBootKey, "true");
-  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kServiceKey, service.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
-  std::shared_ptr<const wgt::parse::ServiceList> service_list =
-      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
-          GetManifestData(kTizenServiceKey));
-  ASSERT_TRUE(!!service_list);
-  ASSERT_EQ(service_list->services.size(), 1);
-  ASSERT_EQ(service_list->services[0].id(), "correct002.appId");
-  ASSERT_EQ(service_list->services[0].auto_restart(), false);
-  ASSERT_EQ(service_list->services[0].on_boot(), true);
-  ASSERT_EQ(service_list->services[0].content(), "service.js");
-  ASSERT_EQ(service_list->services[0].names().size(), 1);
-  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
-}
-
-TEST_F(ServiceHandlerTest, SingleServiceEntryAutoRestartOn) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
-  content->SetString(kTizenServiceContentSrcKey, "service.js");
-  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kXmlTextKey, "name");
-  service->Set(kTizenServiceContentKey, content.release());
-  service->Set(kTizenServiceNameKey, name.release());
-  service->SetString(kTizenServiceIdKey, "correct003.appId");
-  service->SetString(kTizenServiceOnBootKey, "false");
-  service->SetString(kTizenServiceAutoRestartKey, "true");
-  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kServiceKey, service.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
-  std::shared_ptr<const wgt::parse::ServiceList> service_list =
-      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
-          GetManifestData(kTizenServiceKey));
-  ASSERT_TRUE(!!service_list);
-  ASSERT_EQ(service_list->services.size(), 1);
-  ASSERT_EQ(service_list->services[0].id(), "correct003.appId");
-  ASSERT_EQ(service_list->services[0].auto_restart(), true);
-  ASSERT_EQ(service_list->services[0].on_boot(), false);
-  ASSERT_EQ(service_list->services[0].content(), "service.js");
-  ASSERT_EQ(service_list->services[0].names().size(), 1);
-  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
-}
-
-TEST_F(ServiceHandlerTest, SingleServiceEntryWrongId) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
-  content->SetString(kTizenServiceContentSrcKey, "service.js");
-  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kXmlTextKey, "name");
-  service->Set(kTizenServiceContentKey, content.release());
-  service->Set(kTizenServiceNameKey, name.release());
-  service->SetString(kTizenServiceIdKey, "wrongid.appId");
-  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kServiceKey, service.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_FALSE(ValidateAppManifest());
-}
-
-TEST_F(ServiceHandlerTest, SingleServiceEntryIdTypeMismatch) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
-  content->SetString(kTizenServiceContentSrcKey, "service.js");
-  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kXmlTextKey, "name");
-  service->Set(kTizenServiceContentKey, content.release());
-  service->Set(kTizenServiceNameKey, name.release());
-  service->SetInteger(kTizenServiceIdKey, 1410);
-  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kServiceKey, service.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_FALSE(ParseAppManifest());
-}
-
-TEST_F(ServiceHandlerTest, SingleServiceEntryNameMissing) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  content->SetString(kTizenServiceContentSrcKey, "service.js");
-  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  service->Set(kTizenServiceContentKey, content.release());
-  service->SetInteger(kTizenServiceIdKey, 1410);
-  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kServiceKey, service.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_FALSE(ParseAppManifest());
-}
-
-TEST_F(ServiceHandlerTest, SingleServiceEntryIdSingleNameNotInTizen) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
-  content->SetString(kTizenServiceContentSrcKey, "service.js");
-  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kXmlTextKey, "name");
-  service->Set(kTizenServiceContentKey, content.release());
-  service->SetInteger(kTizenServiceIdKey, 1410);
-  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kServiceKey, service.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_FALSE(ParseAppManifest());
-}
-
-TEST_F(ServiceHandlerTest, SingleServiceEntryMultipleNames) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  content->SetString(kTizenServiceContentSrcKey, "service.js");
-  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-
-  std::unique_ptr<ListValue> name_list(new ListValue());
-  for (auto& pair : {std::make_pair(std::string(), "first"),
-                     std::make_pair(std::string("en"), "second"),
-                     std::make_pair(std::string("de"), "third")}) {
-    std::unique_ptr<DictionaryValue> name(new DictionaryValue());
-    name->SetString(kNamespaceKey, kTizenNamespacePrefix);
-    if (!pair.first.empty()) name->SetString(kXmlLangKey, pair.first);
-    name->SetString(kXmlTextKey, pair.second);
-    name_list->Append(name.release());
-  }
-  service->Set(kTizenServiceNameKey, name_list.release());
-
-  service->Set(kTizenServiceContentKey, content.release());
-  service->SetString(kTizenServiceIdKey, "correct003.appId");
-  service->SetString(kTizenServiceOnBootKey, "false");
-  service->SetString(kTizenServiceAutoRestartKey, "true");
-  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kServiceKey, service.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
-  std::shared_ptr<const wgt::parse::ServiceList> service_list =
-      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
-          GetManifestData(kTizenServiceKey));
-  ASSERT_TRUE(!!service_list);
-  ASSERT_EQ(service_list->services.size(), 1);
-  ASSERT_EQ(service_list->services[0].id(), "correct003.appId");
-  ASSERT_EQ(service_list->services[0].auto_restart(), true);
-  ASSERT_EQ(service_list->services[0].on_boot(), false);
-  ASSERT_EQ(service_list->services[0].content(), "service.js");
-  ASSERT_EQ(service_list->services[0].names().size(), 3);
-  ASSERT_EQ(service_list->services[0].names()[0].first, "");
-  ASSERT_EQ(service_list->services[0].names()[0].second, "first");
-  ASSERT_EQ(service_list->services[0].names()[1].first, "en");
-  ASSERT_EQ(service_list->services[0].names()[1].second, "second");
-  ASSERT_EQ(service_list->services[0].names()[2].first, "de");
-  ASSERT_EQ(service_list->services[0].names()[2].second, "third");
-}
-
-TEST_F(ServiceHandlerTest, SingleServiceEntryIdSingleContentNotInTizen) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
-  content->SetString(kTizenServiceContentSrcKey, "service.js");
-  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kXmlTextKey, "name");
-  service->Set(kTizenServiceNameKey, name.release());
-  service->SetInteger(kTizenServiceIdKey, 1410);
-  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kServiceKey, service.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_FALSE(ParseAppManifest());
-}
-
-TEST_F(ServiceHandlerTest, SingleServiceEntryContentMissing) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
-  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kXmlTextKey, "name");
-  service->Set(kTizenServiceNameKey, name.release());
-  service->SetInteger(kTizenServiceIdKey, 1410);
-  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kServiceKey, service.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_FALSE(ParseAppManifest());
-}
-
-TEST_F(ServiceHandlerTest, SingleServiceEntryMultipleContents) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
-
-  std::unique_ptr<ListValue> content_list(new ListValue());
-  for (auto& start_file : {"content1.js", "content2.js"}) {
-    std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-    content->SetString(kTizenServiceContentSrcKey, start_file);
-    content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-    content_list->Append(content.release());
-  }
-  service->Set(kTizenServiceContentKey, content_list.release());
-
-  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kXmlTextKey, "name");
-  service->Set(kTizenServiceNameKey, name.release());
-  service->SetInteger(kTizenServiceIdKey, 1410);
-  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kServiceKey, service.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_FALSE(ParseAppManifest());
-}
-
-TEST_F(ServiceHandlerTest, SingleServiceEntrySingleIcon) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> icon(new DictionaryValue());
-  content->SetString(kTizenServiceContentSrcKey, "service.js");
-  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kXmlTextKey, "name");
-  icon->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  icon->SetString(kTizenServiceIconSrcKey, "my_icon.png");
-  service->Set(kTizenServiceIconKey, icon.release());
-  service->Set(kTizenServiceContentKey, content.release());
-  service->Set(kTizenServiceNameKey, name.release());
-  service->SetString(kTizenServiceIdKey, "correct001.appId");
-  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kServiceKey, service.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
-  std::shared_ptr<const wgt::parse::ServiceList> service_list =
-      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
-          GetManifestData(kTizenServiceKey));
-  ASSERT_TRUE(!!service_list);
-  ASSERT_EQ(service_list->services.size(), 1);
-  ASSERT_EQ(service_list->services[0].id(), "correct001.appId");
-  ASSERT_EQ(service_list->services[0].auto_restart(), false);
-  ASSERT_EQ(service_list->services[0].on_boot(), false);
-  ASSERT_EQ(service_list->services[0].content(), "service.js");
-  ASSERT_EQ(service_list->services[0].names().size(), 1);
-  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
-  ASSERT_EQ(service_list->services[0].icon(), "my_icon.png");
-}
-
-TEST_F(ServiceHandlerTest, SingleServiceEntrySingleIconNotInTizen) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> icon(new DictionaryValue());
-  content->SetString(kTizenServiceContentSrcKey, "service.js");
-  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kXmlTextKey, "name");
-  icon->SetString(kTizenServiceIconSrcKey, "my_icon.png");
-  service->Set(kTizenServiceIconKey, icon.release());
-  service->Set(kTizenServiceContentKey, content.release());
-  service->Set(kTizenServiceNameKey, name.release());
-  service->SetString(kTizenServiceIdKey, "correct001.appId");
-  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kServiceKey, service.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
-  std::shared_ptr<const wgt::parse::ServiceList> service_list =
-      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
-          GetManifestData(kTizenServiceKey));
-  ASSERT_TRUE(!!service_list);
-  ASSERT_EQ(service_list->services.size(), 1);
-  ASSERT_EQ(service_list->services[0].id(), "correct001.appId");
-  ASSERT_EQ(service_list->services[0].auto_restart(), false);
-  ASSERT_EQ(service_list->services[0].on_boot(), false);
-  ASSERT_EQ(service_list->services[0].content(), "service.js");
-  ASSERT_EQ(service_list->services[0].names().size(), 1);
-  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
-  ASSERT_EQ(service_list->services[0].icon(), "");
-}
-
-TEST_F(ServiceHandlerTest, SingleServiceEntryMultipleIcon) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
-  content->SetString(kTizenServiceContentSrcKey, "service.js");
-  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kXmlTextKey, "name");
-
-  std::unique_ptr<ListValue> icon_list(new ListValue());
-  for (auto& icon_value : {"icon1.png", "icon2.png"}) {
-    std::unique_ptr<DictionaryValue> icon(new DictionaryValue());
-    icon->SetString(kNamespaceKey, kTizenNamespacePrefix);
-    icon->SetString(kTizenServiceIconSrcKey, icon_value);
-    icon_list->Append(icon.release());
-  }
-
-  service->Set(kTizenServiceIconKey, icon_list.release());
-  service->Set(kTizenServiceContentKey, content.release());
-  service->Set(kTizenServiceNameKey, name.release());
-  service->SetString(kTizenServiceIdKey, "correct001.appId");
-  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kServiceKey, service.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_FALSE(ParseAppManifest());
-}
-
-TEST_F(ServiceHandlerTest, SingleServiceEntrySingleDescription) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> description(new DictionaryValue());
-  content->SetString(kTizenServiceContentSrcKey, "service.js");
-  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kXmlTextKey, "name");
-  description->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  description->SetString(kXmlTextKey, "my description");
-  service->Set(kTizenServiceDescriptionKey, description.release());
-  service->Set(kTizenServiceContentKey, content.release());
-  service->Set(kTizenServiceNameKey, name.release());
-  service->SetString(kTizenServiceIdKey, "correct001.appId");
-  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kServiceKey, service.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
-  std::shared_ptr<const wgt::parse::ServiceList> service_list =
-      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
-          GetManifestData(kTizenServiceKey));
-  ASSERT_TRUE(!!service_list);
-  ASSERT_EQ(service_list->services.size(), 1);
-  ASSERT_EQ(service_list->services[0].id(), "correct001.appId");
-  ASSERT_EQ(service_list->services[0].auto_restart(), false);
-  ASSERT_EQ(service_list->services[0].on_boot(), false);
-  ASSERT_EQ(service_list->services[0].content(), "service.js");
-  ASSERT_EQ(service_list->services[0].names().size(), 1);
-  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
-  ASSERT_EQ(service_list->services[0].description(), "my description");
-}
-
-TEST_F(ServiceHandlerTest, SingleServiceEntrySingleDescriptionNotInTizen) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> description(new DictionaryValue());
-  content->SetString(kTizenServiceContentSrcKey, "service.js");
-  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kXmlTextKey, "name");
-  description->SetString(kXmlTextKey, "my description");
-  service->Set(kTizenServiceDescriptionKey, description.release());
-  service->Set(kTizenServiceContentKey, content.release());
-  service->Set(kTizenServiceNameKey, name.release());
-  service->SetString(kTizenServiceIdKey, "correct001.appId");
-  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kServiceKey, service.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
-  std::shared_ptr<const wgt::parse::ServiceList> service_list =
-      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
-          GetManifestData(kTizenServiceKey));
-  ASSERT_TRUE(!!service_list);
-  ASSERT_EQ(service_list->services.size(), 1);
-  ASSERT_EQ(service_list->services[0].id(), "correct001.appId");
-  ASSERT_EQ(service_list->services[0].auto_restart(), false);
-  ASSERT_EQ(service_list->services[0].on_boot(), false);
-  ASSERT_EQ(service_list->services[0].content(), "service.js");
-  ASSERT_EQ(service_list->services[0].names().size(), 1);
-  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
-  ASSERT_EQ(service_list->services[0].description(), "");
-}
-
-TEST_F(ServiceHandlerTest, SingleServiceEntryMultipleDescription) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
-  content->SetString(kTizenServiceContentSrcKey, "service.js");
-  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kXmlTextKey, "name");
-
-  std::unique_ptr<ListValue> description_list(new ListValue());
-  for (auto& desc_value : {"1", "2"}) {
-    std::unique_ptr<DictionaryValue> description(new DictionaryValue());
-    description->SetString(kNamespaceKey, kTizenNamespacePrefix);
-    description->SetString(kXmlTextKey, desc_value);
-    description_list->Append(description.release());
-  }
-  service->Set(kTizenServiceDescriptionKey, description_list.release());
-
-  service->Set(kTizenServiceContentKey, content.release());
-  service->Set(kTizenServiceNameKey, name.release());
-  service->SetString(kTizenServiceIdKey, "correct001.appId");
-  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kServiceKey, service.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_FALSE(ParseAppManifest());
-}
-
-TEST_F(ServiceHandlerTest, SingleServiceEntrySingleMetadata) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> metadata(new DictionaryValue());
-  content->SetString(kTizenServiceContentSrcKey, "service.js");
-  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kXmlTextKey, "name");
-  metadata->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  metadata->SetString(kTizenServiceMetadataKeyKey, "unique key");
-  metadata->SetString(kTizenServiceMetadataValueKey, "some value");
-  service->Set(kTizenServiceMetadataKey, metadata.release());
-  service->Set(kTizenServiceContentKey, content.release());
-  service->Set(kTizenServiceNameKey, name.release());
-  service->SetString(kTizenServiceIdKey, "correct001.appId");
-  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kServiceKey, service.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
-  std::shared_ptr<const wgt::parse::ServiceList> service_list =
-      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
-          GetManifestData(kTizenServiceKey));
-  ASSERT_TRUE(!!service_list);
-  ASSERT_EQ(service_list->services.size(), 1);
-  ASSERT_EQ(service_list->services[0].id(), "correct001.appId");
-  ASSERT_EQ(service_list->services[0].auto_restart(), false);
-  ASSERT_EQ(service_list->services[0].on_boot(), false);
-  ASSERT_EQ(service_list->services[0].content(), "service.js");
-  ASSERT_EQ(service_list->services[0].names().size(), 1);
-  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
-  ASSERT_EQ(service_list->services[0].metadata_set().size(), 1);
-  ASSERT_EQ(service_list->services[0].metadata_set()[0].first, "unique key");
-  ASSERT_EQ(service_list->services[0].metadata_set()[0].second, "some value");
-}
-
-TEST_F(ServiceHandlerTest, SingleServiceEntrySingleMetadataNotInTizen) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> metadata(new DictionaryValue());
-  content->SetString(kTizenServiceContentSrcKey, "service.js");
-  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kXmlTextKey, "name");
-  metadata->SetString(kTizenServiceMetadataKeyKey, "unique key");
-  metadata->SetString(kTizenServiceMetadataValueKey, "some value");
-  service->Set(kTizenServiceMetadataKey, metadata.release());
-  service->Set(kTizenServiceContentKey, content.release());
-  service->Set(kTizenServiceNameKey, name.release());
-  service->SetString(kTizenServiceIdKey, "correct001.appId");
-  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kServiceKey, service.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
-  std::shared_ptr<const wgt::parse::ServiceList> service_list =
-      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
-          GetManifestData(kTizenServiceKey));
-  ASSERT_TRUE(!!service_list);
-  ASSERT_EQ(service_list->services.size(), 1);
-  ASSERT_EQ(service_list->services[0].id(), "correct001.appId");
-  ASSERT_EQ(service_list->services[0].auto_restart(), false);
-  ASSERT_EQ(service_list->services[0].on_boot(), false);
-  ASSERT_EQ(service_list->services[0].content(), "service.js");
-  ASSERT_EQ(service_list->services[0].names().size(), 1);
-  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
-  ASSERT_EQ(service_list->services[0].metadata_set().size(), 0);
-}
-
-TEST_F(ServiceHandlerTest, SingleServiceEntryMultipleMetadata) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
-  content->SetString(kTizenServiceContentSrcKey, "service.js");
-  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kXmlTextKey, "name");
-
-  std::unique_ptr<ListValue> metadata_list(new ListValue());
-  std::unique_ptr<DictionaryValue> metadata(new DictionaryValue());
-  metadata->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  metadata->SetString(kTizenServiceMetadataKeyKey, "unique key");
-  metadata->SetString(kTizenServiceMetadataValueKey, "some value");
-  metadata_list->Append(metadata.release());
-  std::unique_ptr<DictionaryValue> metadata2(new DictionaryValue());
-  metadata2->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  metadata2->SetString(kTizenServiceMetadataKeyKey, "unique key 2");
-  metadata_list->Append(metadata2.release());
-  service->Set(kTizenServiceMetadataKey, metadata_list.release());
-
-  service->Set(kTizenServiceContentKey, content.release());
-  service->Set(kTizenServiceNameKey, name.release());
-  service->SetString(kTizenServiceIdKey, "correct001.appId");
-  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kServiceKey, service.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
-  std::shared_ptr<const wgt::parse::ServiceList> service_list =
-      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
-          GetManifestData(kTizenServiceKey));
-  ASSERT_TRUE(!!service_list);
-  ASSERT_EQ(service_list->services.size(), 1);
-  ASSERT_EQ(service_list->services[0].id(), "correct001.appId");
-  ASSERT_EQ(service_list->services[0].auto_restart(), false);
-  ASSERT_EQ(service_list->services[0].on_boot(), false);
-  ASSERT_EQ(service_list->services[0].content(), "service.js");
-  ASSERT_EQ(service_list->services[0].names().size(), 1);
-  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
-  ASSERT_EQ(service_list->services[0].metadata_set().size(), 2);
-  ASSERT_EQ(service_list->services[0].metadata_set()[0].first, "unique key");
-  ASSERT_EQ(service_list->services[0].metadata_set()[0].second, "some value");
-  ASSERT_EQ(service_list->services[0].metadata_set()[1].first, "unique key 2");
-  ASSERT_EQ(service_list->services[0].metadata_set()[1].second, "");
-}
-
-TEST_F(ServiceHandlerTest, SingleServiceEntryMultipleMetadataMixedNamespaces) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
-  content->SetString(kTizenServiceContentSrcKey, "service.js");
-  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kXmlTextKey, "name");
-
-  std::unique_ptr<ListValue> metadata_list(new ListValue());
-
-  std::unique_ptr<DictionaryValue> metadata(new DictionaryValue());
-  metadata->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  metadata->SetString(kTizenServiceMetadataKeyKey, "unique key");
-  metadata->SetString(kTizenServiceMetadataValueKey, "some value");
-  metadata_list->Append(metadata.release());
-
-  std::unique_ptr<DictionaryValue> metadata2(new DictionaryValue());
-  metadata2->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  metadata2->SetString(kTizenServiceMetadataKeyKey, "unique key 2");
-  metadata_list->Append(metadata2.release());
-
-  std::unique_ptr<DictionaryValue> metadata3(new DictionaryValue());
-  metadata3->SetString(kTizenServiceMetadataKeyKey, "unique key 3");
-  metadata_list->Append(metadata3.release());
-
-  service->Set(kTizenServiceMetadataKey, metadata_list.release());
-
-  service->Set(kTizenServiceContentKey, content.release());
-  service->Set(kTizenServiceNameKey, name.release());
-  service->SetString(kTizenServiceIdKey, "correct001.appId");
-  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kServiceKey, service.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
-  std::shared_ptr<const wgt::parse::ServiceList> service_list =
-      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
-          GetManifestData(kTizenServiceKey));
-  ASSERT_TRUE(!!service_list);
-  ASSERT_EQ(service_list->services.size(), 1);
-  ASSERT_EQ(service_list->services[0].id(), "correct001.appId");
-  ASSERT_EQ(service_list->services[0].auto_restart(), false);
-  ASSERT_EQ(service_list->services[0].on_boot(), false);
-  ASSERT_EQ(service_list->services[0].content(), "service.js");
-  ASSERT_EQ(service_list->services[0].names().size(), 1);
-  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
-  ASSERT_EQ(service_list->services[0].metadata_set().size(), 2);
-  ASSERT_EQ(service_list->services[0].metadata_set()[0].first, "unique key");
-  ASSERT_EQ(service_list->services[0].metadata_set()[0].second, "some value");
-  ASSERT_EQ(service_list->services[0].metadata_set()[1].first, "unique key 2");
-  ASSERT_EQ(service_list->services[0].metadata_set()[1].second, "");
-}
-
-TEST_F(ServiceHandlerTest, SingleServiceEntrySingleCategory) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> category(new DictionaryValue());
-  content->SetString(kTizenServiceContentSrcKey, "service.js");
-  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kXmlTextKey, "name");
-  category->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  category->SetString(kTizenServiceCategoryNameKey, "category name");
-  service->Set(kTizenServiceCategoryKey, category.release());
-  service->Set(kTizenServiceContentKey, content.release());
-  service->Set(kTizenServiceNameKey, name.release());
-  service->SetString(kTizenServiceIdKey, "correct001.appId");
-  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kServiceKey, service.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
-  std::shared_ptr<const wgt::parse::ServiceList> service_list =
-      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
-          GetManifestData(kTizenServiceKey));
-  ASSERT_TRUE(!!service_list);
-  ASSERT_EQ(service_list->services.size(), 1);
-  ASSERT_EQ(service_list->services[0].id(), "correct001.appId");
-  ASSERT_EQ(service_list->services[0].auto_restart(), false);
-  ASSERT_EQ(service_list->services[0].on_boot(), false);
-  ASSERT_EQ(service_list->services[0].content(), "service.js");
-  ASSERT_EQ(service_list->services[0].names().size(), 1);
-  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
-  ASSERT_EQ(service_list->services[0].categories().size(), 1);
-  ASSERT_EQ(service_list->services[0].categories()[0], "category name");
-}
-
-TEST_F(ServiceHandlerTest, SingleServiceEntrySingleCategoryNotInTizen) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> category(new DictionaryValue());
-  content->SetString(kTizenServiceContentSrcKey, "service.js");
-  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kXmlTextKey, "name");
-  category->SetString(kTizenServiceCategoryNameKey, "category name");
-  service->Set(kTizenServiceCategoryKey, category.release());
-  service->Set(kTizenServiceContentKey, content.release());
-  service->Set(kTizenServiceNameKey, name.release());
-  service->SetString(kTizenServiceIdKey, "correct001.appId");
-  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kServiceKey, service.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
-  std::shared_ptr<const wgt::parse::ServiceList> service_list =
-      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
-          GetManifestData(kTizenServiceKey));
-  ASSERT_TRUE(!!service_list);
-  ASSERT_EQ(service_list->services.size(), 1);
-  ASSERT_EQ(service_list->services[0].id(), "correct001.appId");
-  ASSERT_EQ(service_list->services[0].auto_restart(), false);
-  ASSERT_EQ(service_list->services[0].on_boot(), false);
-  ASSERT_EQ(service_list->services[0].content(), "service.js");
-  ASSERT_EQ(service_list->services[0].names().size(), 1);
-  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
-  ASSERT_EQ(service_list->services[0].categories().size(), 0);
-}
-
-TEST_F(ServiceHandlerTest, SingleServiceEntryMultipleCategory) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
-  content->SetString(kTizenServiceContentSrcKey, "service.js");
-  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  name->SetString(kXmlTextKey, "name");
-
-  std::unique_ptr<ListValue> catogory_list(new ListValue());
-  for (auto& name : {"category name 1", "category name 2", "category name 3"}) {
-    std::unique_ptr<DictionaryValue> category(new DictionaryValue());
-    category->SetString(kNamespaceKey, kTizenNamespacePrefix);
-    category->SetString(kTizenServiceCategoryNameKey, name);
-    catogory_list->Append(category.release());
-  }
-  service->Set(kTizenServiceCategoryKey, catogory_list.release());
-
-  service->Set(kTizenServiceContentKey, content.release());
-  service->Set(kTizenServiceNameKey, name.release());
-  service->SetString(kTizenServiceIdKey, "correct001.appId");
-  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  widget->Set(kServiceKey, service.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
-  std::shared_ptr<const wgt::parse::ServiceList> service_list =
-      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
-          GetManifestData(kTizenServiceKey));
-  ASSERT_TRUE(!!service_list);
-  ASSERT_EQ(service_list->services.size(), 1);
-  ASSERT_EQ(service_list->services[0].id(), "correct001.appId");
-  ASSERT_EQ(service_list->services[0].auto_restart(), false);
-  ASSERT_EQ(service_list->services[0].on_boot(), false);
-  ASSERT_EQ(service_list->services[0].content(), "service.js");
-  ASSERT_EQ(service_list->services[0].names().size(), 1);
-  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
-  ASSERT_EQ(service_list->services[0].categories().size(), 3);
-  ASSERT_EQ(service_list->services[0].categories()[0], "category name 1");
-  ASSERT_EQ(service_list->services[0].categories()[1], "category name 2");
-  ASSERT_EQ(service_list->services[0].categories()[2], "category name 3");
-}
-
-TEST_F(ServiceHandlerTest, MultipleServiceEntry) {
-  // Set test values
-  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
-  std::unique_ptr<ListValue> list(new ListValue());
-  std::unique_ptr<DictionaryValue> service1(new DictionaryValue());
-  std::unique_ptr<DictionaryValue> service2(new DictionaryValue());
-  service1->SetString(kTizenServiceIdKey, "correct004.appId");
-  service1->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  service2->SetString(kTizenServiceIdKey, "correct005.appId");
-  service2->SetString(kNamespaceKey, kTizenNamespacePrefix);
-  for (auto& service : {service1.get(), service2.get()}) {
-    std::unique_ptr<DictionaryValue> content(new DictionaryValue());
-    std::unique_ptr<DictionaryValue> name(new DictionaryValue());
-    content->SetString(kTizenServiceContentSrcKey, "service.js");
-    content->SetString(kNamespaceKey, kTizenNamespacePrefix);
-    name->SetString(kNamespaceKey, kTizenNamespacePrefix);
-    name->SetString(kXmlTextKey, "name");
-    service->Set(kTizenServiceContentKey, content.release());
-    service->Set(kTizenServiceNameKey, name.release());
-  }
-  list->Append(service1.release());
-  list->Append(service2.release());
-  widget->Set(kServiceKey, list.release());
-  value->Set(kWidgetKey, widget.release());
-  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
-  SetManifest(manifest);
-  // Check correctness
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
-  std::shared_ptr<const wgt::parse::ServiceList> service_list =
-      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
-          GetManifestData(wgt::parse::ServiceInfo::Key()));
-  ASSERT_TRUE(!!service_list);
-  ASSERT_EQ(service_list->services.size(), 2);
-  ASSERT_EQ(service_list->services[0].id(), "correct004.appId");
-  ASSERT_EQ(service_list->services[1].id(), "correct005.appId");
-  ASSERT_EQ(service_list->services[0].content(), "service.js");
-  ASSERT_EQ(service_list->services[0].names().size(), 1);
-  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
-  ASSERT_EQ(service_list->services[1].content(), "service.js");
-  ASSERT_EQ(service_list->services[1].names().size(), 1);
-  ASSERT_EQ(service_list->services[1].names()[0].second, "name");
-}
-
-}  // namespace parser
diff --git a/src/unit_tests/splash_handler_unittest.cc b/src/unit_tests/splash_handler_unittest.cc
deleted file mode 100644 (file)
index f4dbe13..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
-// Use of this source code is governed by an apache 2.0 license that can be
-// found in the LICENSE file.
-
-#include <boost/filesystem/path.hpp>
-
-#include <gtest/gtest.h>
-
-#include <manifest_parser/manifest.h>
-#include <manifest_parser/manifest_util.h>
-
-#include <memory>
-#include <vector>
-
-#include "unit_tests/base_test.h"
-#include "wgt_manifest_handlers/application_manifest_constants.h"
-#include "wgt_manifest_handlers/splash_screen_handler.h"
-
-namespace bf = boost::filesystem;
-
-namespace {
-
-const bf::path kXmlDirectory("/usr/share/manifest-parser-ut/test_samples/xmls");
-
-struct RegistryPolicyForSplash {
-  static std::unique_ptr<parser::ManifestHandlerRegistry> GetRegistry() {
-    std::unique_ptr<parser::ManifestHandlerRegistry> registry;
-    registry.reset(new parser::ManifestHandlerRegistry());
-    registry->RegisterManifestHandler(new wgt::parse::SplashScreenHandler());
-    return registry;
-  }
-};
-
-}  // namespace
-
-namespace parser {
-
-class SplashHandlerTest : public BaseTest<RegistryPolicyForSplash> {
-};
-
-TEST_F(SplashHandlerTest, InvalidNamespace) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::SplashScreenInfo> data =
-      std::static_pointer_cast<const wgt::parse::SplashScreenInfo>(
-          GetManifestData(wgt::parse::SplashScreenInfo::Key()));
-  ASSERT_TRUE(!data);
-}
-
-TEST_F(SplashHandlerTest, NoSrc) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
-}
-
-TEST_F(SplashHandlerTest, Valid) {
-  std::string error;
-  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-  ASSERT_FALSE(!manifest);
-  SetManifest(manifest);
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::SplashScreenInfo> data =
-      std::static_pointer_cast<const wgt::parse::SplashScreenInfo>(
-          GetManifestData(wgt::parse::SplashScreenInfo::Key()));
-  ASSERT_EQ(data->src(), "splash.html");
-}
-
-}  // namespace parser
diff --git a/src/unit_tests/test_samples/bad_manifest.xml b/src/unit_tests/test_samples/bad_manifest.xml
deleted file mode 100644 (file)
index 26214ca..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<widget id="http://yourdomain/WebSettingSample" version="1.0.0" viewmodes="maximized">
-  <tizen:application id="nNBDOItqjN.WebSettingSample" package="nNBDOItqjN" required_version="2.2"/>
-  <content>index.html</content>
-  <feature>http://tizen.org/feature/screen.size.all</content>
-  <icon>icon.png</icon>
-  <name name="WebSettingSample"/>
-  <tizen:privilege>http://tizen.org/privilege/websetting</tizen:privilege>
-</widget>
diff --git a/src/unit_tests/test_samples/bad_signatures/author-signature.xml b/src/unit_tests/test_samples/bad_signatures/author-signature.xml
deleted file mode 100644 (file)
index d5b9249..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="AuthorSignature">
-<SignedInfo>
-<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></CanonicalizationMethod>
-<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"></SignatureMethod>
-<Reference URI="config.xml">
-<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>iEX0LuZs81Q6Du/SkXgbMd+Qa6puMxgyRUCLqhrfpJ8=</DigestValue>
-</Reference>
-<Reference URI="icon.png">
-<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs=</DigestValue>
-</Reference>
-<Reference URI="index.html">
-<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>rJOIi81O4OG/Gar/hwrjvD623MpScv6TMdurRZgzDf0=</DigestValue>
-</Reference>
-<Reference URI="version.txt">
-<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>MjYb9c/C/J56bHY6rlIjfDqkpjFtsUBjLLkco/rcfFY=</DigestValue>
-</Reference>
-<Reference URI="#prop">
-<Transforms>
-<Transform Algorithm="http://www.w3.org/2006/12/xml-c14n11"></Transform>
-</Transforms>
-<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>lpo8tUDs054eLlBQXiDPVDVKfw30ZZdtkRs1jd7H5K8=</DigestValue>
-</Reference>
-</SignedInfo>
-<SignatureValue>
-c7Jd7btw6Bi9MxzKVv6JY9xcegxv42DhOzZhyrjz3EMN/60dhcGJClfKBY39FwH6exMajoThyFIW
-djtnp7pqIiQJCJkGRs0vAQThcm8JniVSbUwHMcMw7WjAW5VPsLQZKmEe16YW00YkoT6KfZLC1ySw
-48WNrHrCrTcj6LZRrld=
-</SignatureValue>
-<KeyInfo>
-<X509Data>
-<X509Certificate>
-MIIC2zCCAcOgAwIBAgIGAUudC0tkMA0GCSqGSIb3DQEBBQUAMFYxGjAYBgNVBAoMEVRpemVuIEFz
-c29jaWF0aW9uMRowGAYDVQQLDBFUaXplbiBBc3NvY2lhdGlvbjEcMBoGA1UEAwwTVGl6ZW4gRGV2
-ZWxvcGVycyBDQTAeFw0xMjExMDEwMDAwMDBaFw0xOTAxMDEwMDAwMDBaMFcxCzAJBgNVBAYTAlBM
-MQ8wDQYDVQQHDAZXYXJzYXcxEDAOBgNVBAoMB1NhbXN1bmcxFDASBgNVBAsMC1dlYlBsYXRmb3Jt
-MQ8wDQYDVQQDDAZhdXRob3IwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM0kQ8aPoKnJaBjk
-3ET7XdOS5C3ueSemfA8tYNihWQ3VX95CKX38ARLpaAGRSfOdo2L1vTIBtaO/UWEEl/XKQzqwem22
-A9UuLwl0rJNDeoq5Xz5oJD1z9eA+uuNde6cAcPmxRQDsilnVZNHlpATdDOeKUSs8+Y5UxPDz1c6j
-kUTpAgMBAAGjMjAwMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUF
-BwMDMA0GCSqGSIb3DQEBBQUAA4IBAQC2kGzwMPMgxRrAi3ZaRu+i8x2ApZEWW4Y5uaZ9s7p4483A
-l+RBZ1/zHhkmZaekhCm2YwOpWIkXLiQc2wm9YRq+W1OorrArl/wgxtpO7hajlCxDS3X8GgJqCy7v
-8vQYTBvNXayQaRB496mC9lLZDjRL9ycYnPk55eimL3HEYclbibDjOvks4bdN/fedA8jovir+wA+b
-tIC+GGkiwGco6URdxigydxdpNEwRECCl78YVybf9agKeowXL08kwDZN9DAHCixu76kw1qtpfwm3T
-t/lz7VB1pDFhjzfuG6runH4H257bBYLkJnSBchiNItMuK2zvTVP8HsQmBeOLAFGtsoas
-</X509Certificate>
-<X509Certificate>
-MIIDOTCCAiGgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMRowGAYDVQQKDBFUaXplbiBBc3NvY2lh
-dGlvbjEaMBgGA1UECwwRVGl6ZW4gQXNzb2NpYXRpb24xHjAcBgNVBAMMFVRpemVuIERldmVsb3Bl
-cnMgUm9vdDAeFw0xMjAxMDEwMDAwMDBaFw0yNzAxMDEwMDAwMDBaMFYxGjAYBgNVBAoMEVRpemVu
-IEFzc29jaWF0aW9uMRowGAYDVQQLDBFUaXplbiBBc3NvY2lhdGlvbjEcMBoGA1UEAwwTVGl6ZW4g
-RGV2ZWxvcGVycyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANVGhRGmMIUyBA7o
-PCz8Sxut6z6HNkF4oDIuzuKaMzRYPeWodwe9O0gmqAkToQHfwg2giRhE5GoPld0fq+OYMMwSasCu
-g8dwODx1eDeSYVuOLWRxpAmbTXOsSFi6VoWeyaPEm18JBHvZBsU5YQtgZ6Kp7MqzvQg3pXOxtajj
-vyHxiatJl+xXrHgcXC1wgyG3buty7u/Fi2mvKXJ0PRJcCjjK81dqe/Vr20sRUCrbk02zbm5ggFt/
-jIEhV8wbFRQpliobc7J4dSTKhFfrqGM8rdd54LYhD7gSI1CFSe16pUXfcVR7FhJztRaiGLnCrwBE
-dyTZ248+D4L/qR/D0axb3jcCAwEAAaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOC
-AQEAnOXXQ/1O/QTDHyrmQDtFziqPY3xWlJBqJtEqXiT7Y+Ljpe66e+Ee/OjQMlZe8gu21/8cKklH
-95RxjopMWCVedXDUbWdvS2+CdyvVW/quT2E0tjqIzXDekUTYwwhlPWlGxvfj3VsxqSFq3p8Brl04
-1Gx5RKAGyKVsMfTLhbbwSWwApuBUxYfcNpKwLWGPXkysu+HctY03OKv4/xKBnVWiN8ex/Sgesi0M
-+OBAOMdZMPK32uJBTeKFx1xZgTLIhk45V0hPOomPjZloiv0LSS11eyd451ufjW0iHRE7WlpR6EvI
-W6TFyZgMpQq+kg4hWl2SBTf3s2VI8Ygz7gj8TMlClg==
-</X509Certificate>
-</X509Data>
-</KeyInfo>
-<Object Id="prop"><SignatureProperties xmlns:dsp="http://www.w3.org/2009/xmldsig-properties"><SignatureProperty Id="profile" Target="#AuthorSignature"><dsp:Profile URI="http://www.w3.org/ns/widgets-digsig#profile"></dsp:Profile></SignatureProperty><SignatureProperty Id="role" Target="#AuthorSignature"><dsp:Role URI="http://www.w3.org/ns/widgets-digsig#role-author"></dsp:Role></SignatureProperty><SignatureProperty Id="identifier" Target="#AuthorSignature"><dsp:Identifier></dsp:Identifier></SignatureProperty></SignatureProperties></Object>
-</Signature>
diff --git a/src/unit_tests/test_samples/bad_signatures/config.xml b/src/unit_tests/test_samples/bad_signatures/config.xml
deleted file mode 100644 (file)
index 7b0bd2d..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/AppInstallersTest" version="1.0.0" viewmodes="maximized">
-    <tizen:application id="ZK6wgb4nwt.AppInstallersTest" package="ZK6wgb4nwt" required_version="2.3"/>
-    <content src="index.html"/>
-    <feature name="http://tizen.org/feature/screen.size.all"/>
-    <icon src="icon.png"/>
-    <name>AppInstallersTest</name>
-    <tizen:profile name="mobile"/>
-</widget>
diff --git a/src/unit_tests/test_samples/bad_signatures/icon.png b/src/unit_tests/test_samples/bad_signatures/icon.png
deleted file mode 100644 (file)
index 9765b1b..0000000
Binary files a/src/unit_tests/test_samples/bad_signatures/icon.png and /dev/null differ
diff --git a/src/unit_tests/test_samples/bad_signatures/index.html b/src/unit_tests/test_samples/bad_signatures/index.html
deleted file mode 100644 (file)
index d4f1aef..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
-    <meta name="description" content="Tizen basic template generated by Tizen Web IDE"/>
-
-    <title>Tizen Web IDE - Tizen - Tizen basic Application</title>
-</head>
-
-<body>
-  <header>
-    <hgroup>
-      <h1>Tizen app</h1>
-      <h2>An empty template of tizen</h2>
-    </hgroup>
-  </header>
-
-  <nav>
-    <ul>
-       <li><a href="#">Home</a></li>
-       <li><a href="#">About Us</a></li>
-       <li><a href="#">Contact Us</a></li>
-    </ul>
-  </nav>
-
-  <article>
-    <p>This is an empty template of Tizen Web Application. Tizen will support multiple device categories:</p>
-    <ul>
-      <li>smartphones, tablets and smart TVs
-      <li>netbooks, in-vehicle infotainment devices
-    </ul>
-    <section>
-      <p>This is a basic section of a document.</p>
-      <p>The following button displays a time using JavaScript.</p>
-      <div id="divbutton1">
-        <button>Clock</button>
-      </div>
-    </section>
-  </article>
-
-  <footer>
-    <p>&copy; 2012 Company Name. All rights reserved.</p>
-  </footer>    
-</body>
-</html>
diff --git a/src/unit_tests/test_samples/bad_signatures/signature1.xml b/src/unit_tests/test_samples/bad_signatures/signature1.xml
deleted file mode 100644 (file)
index 12a7d2a..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="DistributorSignature">
-<SignedInfo>
-<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></CanonicalizationMethod>
-<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"></SignatureMethod>
-<Reference URI="author-signature.xml">
-<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>opfWp60FUsKzpdQBgTp3x31PB1GzC9mS6M7B6n2m63c=</DigestValue>
-</Reference>
-<Reference URI="config.xml">
-<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>iEX0LuZs81Q6Du/SkXgbMd+Qa6puMxgyRUCLqhrfpJ8=</DigestValue>
-</Reference>
-<Reference URI="icon.png">
-<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs=</DigestValue>
-</Reference>
-<Reference URI="index.html">
-<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>rJOIi81O4OG/Gar/hwrjvD623MpScv6TMdurRZgzDf0=</DigestValue>
-</Reference>
-<Reference URI="version.txt">
-<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>MjYb9c/C/J56bHY6rlIjfDqkpjFtsUBjLLkco/rcfFY=</DigestValue>
-</Reference>
-<Reference URI="#prop">
-<Transforms>
-<Transform Algorithm="http://www.w3.org/2006/12/xml-c14n11"></Transform>
-</Transforms>
-<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>u/jU3U4Zm5ihTMSjKGlGYbWzDfRkGphPPHx3gJIYEJ4=</DigestValue>
-</Reference>
-</SignedInfo>
-<SignatureValue>
-O6yHkXzPKe+8nGxjh06ivDImxKSKygVOgvZzmKKHVWn879K2K8vY08/f7FXKG+zRXEouXbZd7aip
-IGyOCpulXUzESCQMIiffzMVgTV0Ho+kXx44xbME/XKy7DJYpZOvZFXX1S9ZXvU2BmmgHtWWLS/gc
-sFiYVHpRxLnify3npXF=
-</SignatureValue>
-<KeyInfo>
-<X509Data>
-<X509Certificate>
-MIICmzCCAgQCCQDXI7WLdVZwiTANBgkqhkiG9w0BAQUFADCBjzELMAkGA1UEBhMCS1IxDjAMBgNV
-BAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6ZW4gVGVzdCBDQTEiMCAGA1UE
-CwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEkMCIGA1UEAwwbVGl6ZW4gUHVibGljIERpc3Ry
-aWJ1dG9yIENBMB4XDTEyMTAyOTEzMDMwNFoXDTIyMTAyNzEzMDMwNFowgZMxCzAJBgNVBAYTAktS
-MQ4wDAYDVQQIDAVTdXdvbjEOMAwGA1UEBwwFU3V3b24xFjAUBgNVBAoMDVRpemVuIFRlc3QgQ0Ex
-IjAgBgNVBAsMGVRpemVuIERpc3RyaWJ1dG9yIFRlc3QgQ0ExKDAmBgNVBAMMH1RpemVuIFB1Ymxp
-YyBEaXN0cmlidXRvciBTaWduZXIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALtMvlc5hENK
-90ZdA+y66+Sy0enD1gpZDBh5T9RP0oRsptJv5jjNTseQbQi0SZOdOXb6J7iQdlBCtR343RpIEz8H
-mrBy7mSY7mgwoU4EPpp4CTSUeAuKcmvrNOngTp5Hv7Ngf02TTHOLK3hZLpGayaDviyNZB5PdqQdB
-hokKjzAzAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAvGp1gxxAIlFfhJH1efjb9BJK/rtRkbYn9+Ez
-GEbEULg1svsgnyWisFimI3uFvgI/swzr1eKVY3Sc8MQ3+Fdy3EkbDZ2+WAubhcEkorTWjzWz2fL1
-vKaYjeIsuEX6TVRUugHWudPzcEuQRLQf8ibZWjbQdBmpeQYBMg5x+xKLCJc=
-</X509Certificate>
-<X509Certificate>
-MIICtDCCAh2gAwIBAgIJAMDbehElPNKvMA0GCSqGSIb3DQEBBQUAMIGVMQswCQYDVQQGEwJLUjEO
-MAwGA1UECAwFU3V3b24xDjAMBgNVBAcMBVN1d29uMRYwFAYDVQQKDA1UaXplbiBUZXN0IENBMSMw
-IQYDVQQLDBpUVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEpMCcGA1UEAwwgVGl6ZW4gUHVibGlj
-IERpc3RyaWJ1dG9yIFJvb3QgQ0EwHhcNMTIxMDI5MTMwMjUwWhcNMjIxMDI3MTMwMjUwWjCBjzEL
-MAkGA1UEBhMCS1IxDjAMBgNVBAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6
-ZW4gVGVzdCBDQTEiMCAGA1UECwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEkMCIGA1UEAwwb
-VGl6ZW4gUHVibGljIERpc3RyaWJ1dG9yIENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDe
-OTS/3nXvkDEmsFCJIvRlQ3RKDcxdWJJp625pFqHdmoJBdV+x6jl1raGK2Y1sp2Gdvpjc/z92yzAp
-bE/UVLPh/tRNZPeGhzU4ejDDm7kzdr2f7Ia0U98K+OoY12ucwg7TYNItj9is7Cj4blGfuMDzd2ah
-2AgnCGlwNwV/pv+uVQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBACqJ
-KO33YdoGudwanZIxMdXuxnnD9R6u72ltKk1S4zPfMJJv482CRGCI4FK6djhlsI4i0Lt1SVIJEed+
-yc3qckGm19dW+4xdlkekon7pViEBWuyHw8OWv3RXtTum1+PGHjBJ2eYY4ZKIpz73U/1NC16sTB/0
-VhfnkHwPltmrpYVe
-</X509Certificate>
-</X509Data>
-</KeyInfo>
-<Object Id="prop"><SignatureProperties xmlns:dsp="http://www.w3.org/2009/xmldsig-properties"><SignatureProperty Id="profile" Target="#DistributorSignature"><dsp:Profile URI="http://www.w3.org/ns/widgets-digsig#profile"></dsp:Profile></SignatureProperty><SignatureProperty Id="role" Target="#DistributorSignature"><dsp:Role URI="http://www.w3.org/ns/widgets-digsig#role-distributor"></dsp:Role></SignatureProperty><SignatureProperty Id="identifier" Target="#DistributorSignature"><dsp:Identifier></dsp:Identifier></SignatureProperty></SignatureProperties></Object>
-</Signature>
diff --git a/src/unit_tests/test_samples/bad_signatures/version.txt b/src/unit_tests/test_samples/bad_signatures/version.txt
deleted file mode 100644 (file)
index 029d105..0000000
+++ /dev/null
@@ -1 +0,0 @@
-3.0.130
diff --git a/src/unit_tests/test_samples/good_manifest.xml b/src/unit_tests/test_samples/good_manifest.xml
deleted file mode 100644 (file)
index be0c148..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets"
-  id="http://yourdomain/WebSettingSample" version="1.0.0" viewmodes="maximized">
-    <tizen:application id="nNBDOItqjN.WebSettingSample" package="nNBDOItqjN" required_version="2.2"/>
-    <content src="index.html"/>
-    <feature name="http://tizen.org/feature/screen.size.all"/>
-    <icon src="icon.png"/>
-    <name>WebSettingSample</name>
-    <tizen:privilege name="http://tizen.org/privilege/websetting"/>
-</widget>
diff --git a/src/unit_tests/test_samples/good_signatures/author-signature.xml b/src/unit_tests/test_samples/good_signatures/author-signature.xml
deleted file mode 100644 (file)
index 83ef530..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="AuthorSignature">
-<SignedInfo>
-<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></CanonicalizationMethod>
-<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"></SignatureMethod>
-<Reference URI="config.xml">
-<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>iEX0LuZs81Q6Du/SkXgbMd+Qa6puMxgyRUCLqhrfpJ8=</DigestValue>
-</Reference>
-<Reference URI="icon.png">
-<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs=</DigestValue>
-</Reference>
-<Reference URI="index.html">
-<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>rJOIi81O4OG/Gar/hwrjvD623MpScv6TMdurRZgzDf0=</DigestValue>
-</Reference>
-<Reference URI="version.txt">
-<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>MjYb9c/C/J56bHY6rlIjfDqkpjFtsUBjLLkco/rcfFY=</DigestValue>
-</Reference>
-<Reference URI="#prop">
-<Transforms>
-<Transform Algorithm="http://www.w3.org/2006/12/xml-c14n11"></Transform>
-</Transforms>
-<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>lpo8tUDs054eLlBQXiDPVDVKfw30ZZdtkRs1jd7H5K8=</DigestValue>
-</Reference>
-</SignedInfo>
-<SignatureValue>
-c7Jd7btw6Bi9MxzKVv6JY9xcegxv42DhOzZhyrjz3EMN/60dhcGJClfKBY39FwH6exMajoThyFIW
-djtnp7pqIiQJCJkGRs0vAQThcm8JniVSbUwHMcMw7WjAW5VPsLQZKmEe16YW00YkoT6KfZLC1ySw
-48WNrHrCrTcj6LZRrlc=
-</SignatureValue>
-<KeyInfo>
-<X509Data>
-<X509Certificate>
-MIIC2zCCAcOgAwIBAgIGAUudC0tkMA0GCSqGSIb3DQEBBQUAMFYxGjAYBgNVBAoMEVRpemVuIEFz
-c29jaWF0aW9uMRowGAYDVQQLDBFUaXplbiBBc3NvY2lhdGlvbjEcMBoGA1UEAwwTVGl6ZW4gRGV2
-ZWxvcGVycyBDQTAeFw0xMjExMDEwMDAwMDBaFw0xOTAxMDEwMDAwMDBaMFcxCzAJBgNVBAYTAlBM
-MQ8wDQYDVQQHDAZXYXJzYXcxEDAOBgNVBAoMB1NhbXN1bmcxFDASBgNVBAsMC1dlYlBsYXRmb3Jt
-MQ8wDQYDVQQDDAZhdXRob3IwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM0kQ8aPoKnJaBjk
-3ET7XdOS5C3ueSemfA8tYNihWQ3VX95CKX38ARLpaAGRSfOdo2L1vTIBtaO/UWEEl/XKQzqwem22
-A9UuLwl0rJNDeoq5Xz5oJD1z9eA+uuNde6cAcPmxRQDsilnVZNHlpATdDOeKUSs8+Y5UxPDz1c6j
-kUTpAgMBAAGjMjAwMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUF
-BwMDMA0GCSqGSIb3DQEBBQUAA4IBAQC2kGzwMPMgxRrAi3ZaRu+i8x2ApZEWW4Y5uaZ9s7p4483A
-l+RBZ1/zHhkmZaekhCm2YwOpWIkXLiQc2wm9YRq+W1OorrArl/wgxtpO7hajlCxDS3X8GgJqCy7v
-8vQYTBvNXayQaRB496mC9lLZDjRL9ycYnPk55eimL3HEYclbibDjOvks4bdN/fedA8jovir+wA+b
-tIC+GGkiwGco6URdxigydxdpNEwRECCl78YVybf9agKeowXL08kwDZN9DAHCixu76kw1qtpfwm3T
-t/lz7VB1pDFhjzfuG6runH4H257bBYLkJnSBchiNItMuK2zvTVP8HsQmBeOLAFGtsoas
-</X509Certificate>
-<X509Certificate>
-MIIDOTCCAiGgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMRowGAYDVQQKDBFUaXplbiBBc3NvY2lh
-dGlvbjEaMBgGA1UECwwRVGl6ZW4gQXNzb2NpYXRpb24xHjAcBgNVBAMMFVRpemVuIERldmVsb3Bl
-cnMgUm9vdDAeFw0xMjAxMDEwMDAwMDBaFw0yNzAxMDEwMDAwMDBaMFYxGjAYBgNVBAoMEVRpemVu
-IEFzc29jaWF0aW9uMRowGAYDVQQLDBFUaXplbiBBc3NvY2lhdGlvbjEcMBoGA1UEAwwTVGl6ZW4g
-RGV2ZWxvcGVycyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANVGhRGmMIUyBA7o
-PCz8Sxut6z6HNkF4oDIuzuKaMzRYPeWodwe9O0gmqAkToQHfwg2giRhE5GoPld0fq+OYMMwSasCu
-g8dwODx1eDeSYVuOLWRxpAmbTXOsSFi6VoWeyaPEm18JBHvZBsU5YQtgZ6Kp7MqzvQg3pXOxtajj
-vyHxiatJl+xXrHgcXC1wgyG3buty7u/Fi2mvKXJ0PRJcCjjK81dqe/Vr20sRUCrbk02zbm5ggFt/
-jIEhV8wbFRQpliobc7J4dSTKhFfrqGM8rdd54LYhD7gSI1CFSe16pUXfcVR7FhJztRaiGLnCrwBE
-dyTZ248+D4L/qR/D0axb3jcCAwEAAaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOC
-AQEAnOXXQ/1O/QTDHyrmQDtFziqPY3xWlJBqJtEqXiT7Y+Ljpe66e+Ee/OjQMlZe8gu21/8cKklH
-95RxjopMWCVedXDUbWdvS2+CdyvVW/quT2E0tjqIzXDekUTYwwhlPWlGxvfj3VsxqSFq3p8Brl04
-1Gx5RKAGyKVsMfTLhbbwSWwApuBUxYfcNpKwLWGPXkysu+HctY03OKv4/xKBnVWiN8ex/Sgesi0M
-+OBAOMdZMPK32uJBTeKFx1xZgTLIhk45V0hPOomPjZloiv0LSS11eyd451ufjW0iHRE7WlpR6EvI
-W6TFyZgMpQq+kg4hWl2SBTf3s2VI8Ygz7gj8TMlClg==
-</X509Certificate>
-</X509Data>
-</KeyInfo>
-<Object Id="prop"><SignatureProperties xmlns:dsp="http://www.w3.org/2009/xmldsig-properties"><SignatureProperty Id="profile" Target="#AuthorSignature"><dsp:Profile URI="http://www.w3.org/ns/widgets-digsig#profile"></dsp:Profile></SignatureProperty><SignatureProperty Id="role" Target="#AuthorSignature"><dsp:Role URI="http://www.w3.org/ns/widgets-digsig#role-author"></dsp:Role></SignatureProperty><SignatureProperty Id="identifier" Target="#AuthorSignature"><dsp:Identifier></dsp:Identifier></SignatureProperty></SignatureProperties></Object>
-</Signature>
\ No newline at end of file
diff --git a/src/unit_tests/test_samples/good_signatures/config.xml b/src/unit_tests/test_samples/good_signatures/config.xml
deleted file mode 100644 (file)
index 7b0bd2d..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/AppInstallersTest" version="1.0.0" viewmodes="maximized">
-    <tizen:application id="ZK6wgb4nwt.AppInstallersTest" package="ZK6wgb4nwt" required_version="2.3"/>
-    <content src="index.html"/>
-    <feature name="http://tizen.org/feature/screen.size.all"/>
-    <icon src="icon.png"/>
-    <name>AppInstallersTest</name>
-    <tizen:profile name="mobile"/>
-</widget>
diff --git a/src/unit_tests/test_samples/good_signatures/icon.png b/src/unit_tests/test_samples/good_signatures/icon.png
deleted file mode 100644 (file)
index 9765b1b..0000000
Binary files a/src/unit_tests/test_samples/good_signatures/icon.png and /dev/null differ
diff --git a/src/unit_tests/test_samples/good_signatures/index.html b/src/unit_tests/test_samples/good_signatures/index.html
deleted file mode 100644 (file)
index d4f1aef..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <meta charset="utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
-    <meta name="description" content="Tizen basic template generated by Tizen Web IDE"/>
-
-    <title>Tizen Web IDE - Tizen - Tizen basic Application</title>
-</head>
-
-<body>
-  <header>
-    <hgroup>
-      <h1>Tizen app</h1>
-      <h2>An empty template of tizen</h2>
-    </hgroup>
-  </header>
-
-  <nav>
-    <ul>
-       <li><a href="#">Home</a></li>
-       <li><a href="#">About Us</a></li>
-       <li><a href="#">Contact Us</a></li>
-    </ul>
-  </nav>
-
-  <article>
-    <p>This is an empty template of Tizen Web Application. Tizen will support multiple device categories:</p>
-    <ul>
-      <li>smartphones, tablets and smart TVs
-      <li>netbooks, in-vehicle infotainment devices
-    </ul>
-    <section>
-      <p>This is a basic section of a document.</p>
-      <p>The following button displays a time using JavaScript.</p>
-      <div id="divbutton1">
-        <button>Clock</button>
-      </div>
-    </section>
-  </article>
-
-  <footer>
-    <p>&copy; 2012 Company Name. All rights reserved.</p>
-  </footer>    
-</body>
-</html>
diff --git a/src/unit_tests/test_samples/good_signatures/signature1.xml b/src/unit_tests/test_samples/good_signatures/signature1.xml
deleted file mode 100644 (file)
index 5ab592b..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="DistributorSignature">
-<SignedInfo>
-<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></CanonicalizationMethod>
-<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"></SignatureMethod>
-<Reference URI="author-signature.xml">
-<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>opfWp60FUsKzpdQBgTp3x31PB1GzC9mS6M7B6n2m63c=</DigestValue>
-</Reference>
-<Reference URI="config.xml">
-<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>iEX0LuZs81Q6Du/SkXgbMd+Qa6puMxgyRUCLqhrfpJ8=</DigestValue>
-</Reference>
-<Reference URI="icon.png">
-<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs=</DigestValue>
-</Reference>
-<Reference URI="index.html">
-<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>rJOIi81O4OG/Gar/hwrjvD623MpScv6TMdurRZgzDf0=</DigestValue>
-</Reference>
-<Reference URI="version.txt">
-<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>MjYb9c/C/J56bHY6rlIjfDqkpjFtsUBjLLkco/rcfFY=</DigestValue>
-</Reference>
-<Reference URI="#prop">
-<Transforms>
-<Transform Algorithm="http://www.w3.org/2006/12/xml-c14n11"></Transform>
-</Transforms>
-<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
-<DigestValue>u/jU3U4Zm5ihTMSjKGlGYbWzDfRkGphPPHx3gJIYEJ4=</DigestValue>
-</Reference>
-</SignedInfo>
-<SignatureValue>
-O6yHkXzPKe+8nGxjh06ivDImxKSKygVOgvZzmKKHVWn879K2K8vY08/f7FXKG+zRXEouXbZd7aip
-IGyOCpulXUzESCQMIiffzMVgTV0Ho+kXx44xbME/XKy7DJYpZOvZFXX1S9ZXvU2BmmgHtWWLS/gc
-sFiYVHpRxLnify3npXE=
-</SignatureValue>
-<KeyInfo>
-<X509Data>
-<X509Certificate>
-MIICmzCCAgQCCQDXI7WLdVZwiTANBgkqhkiG9w0BAQUFADCBjzELMAkGA1UEBhMCS1IxDjAMBgNV
-BAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6ZW4gVGVzdCBDQTEiMCAGA1UE
-CwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEkMCIGA1UEAwwbVGl6ZW4gUHVibGljIERpc3Ry
-aWJ1dG9yIENBMB4XDTEyMTAyOTEzMDMwNFoXDTIyMTAyNzEzMDMwNFowgZMxCzAJBgNVBAYTAktS
-MQ4wDAYDVQQIDAVTdXdvbjEOMAwGA1UEBwwFU3V3b24xFjAUBgNVBAoMDVRpemVuIFRlc3QgQ0Ex
-IjAgBgNVBAsMGVRpemVuIERpc3RyaWJ1dG9yIFRlc3QgQ0ExKDAmBgNVBAMMH1RpemVuIFB1Ymxp
-YyBEaXN0cmlidXRvciBTaWduZXIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALtMvlc5hENK
-90ZdA+y66+Sy0enD1gpZDBh5T9RP0oRsptJv5jjNTseQbQi0SZOdOXb6J7iQdlBCtR343RpIEz8H
-mrBy7mSY7mgwoU4EPpp4CTSUeAuKcmvrNOngTp5Hv7Ngf02TTHOLK3hZLpGayaDviyNZB5PdqQdB
-hokKjzAzAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAvGp1gxxAIlFfhJH1efjb9BJK/rtRkbYn9+Ez
-GEbEULg1svsgnyWisFimI3uFvgI/swzr1eKVY3Sc8MQ3+Fdy3EkbDZ2+WAubhcEkorTWjzWz2fL1
-vKaYjeIsuEX6TVRUugHWudPzcEuQRLQf8ibZWjbQdBmpeQYBMg5x+xKLCJc=
-</X509Certificate>
-<X509Certificate>
-MIICtDCCAh2gAwIBAgIJAMDbehElPNKvMA0GCSqGSIb3DQEBBQUAMIGVMQswCQYDVQQGEwJLUjEO
-MAwGA1UECAwFU3V3b24xDjAMBgNVBAcMBVN1d29uMRYwFAYDVQQKDA1UaXplbiBUZXN0IENBMSMw
-IQYDVQQLDBpUVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEpMCcGA1UEAwwgVGl6ZW4gUHVibGlj
-IERpc3RyaWJ1dG9yIFJvb3QgQ0EwHhcNMTIxMDI5MTMwMjUwWhcNMjIxMDI3MTMwMjUwWjCBjzEL
-MAkGA1UEBhMCS1IxDjAMBgNVBAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6
-ZW4gVGVzdCBDQTEiMCAGA1UECwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEkMCIGA1UEAwwb
-VGl6ZW4gUHVibGljIERpc3RyaWJ1dG9yIENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDe
-OTS/3nXvkDEmsFCJIvRlQ3RKDcxdWJJp625pFqHdmoJBdV+x6jl1raGK2Y1sp2Gdvpjc/z92yzAp
-bE/UVLPh/tRNZPeGhzU4ejDDm7kzdr2f7Ia0U98K+OoY12ucwg7TYNItj9is7Cj4blGfuMDzd2ah
-2AgnCGlwNwV/pv+uVQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBACqJ
-KO33YdoGudwanZIxMdXuxnnD9R6u72ltKk1S4zPfMJJv482CRGCI4FK6djhlsI4i0Lt1SVIJEed+
-yc3qckGm19dW+4xdlkekon7pViEBWuyHw8OWv3RXtTum1+PGHjBJ2eYY4ZKIpz73U/1NC16sTB/0
-VhfnkHwPltmrpYVe
-</X509Certificate>
-</X509Data>
-</KeyInfo>
-<Object Id="prop"><SignatureProperties xmlns:dsp="http://www.w3.org/2009/xmldsig-properties"><SignatureProperty Id="profile" Target="#DistributorSignature"><dsp:Profile URI="http://www.w3.org/ns/widgets-digsig#profile"></dsp:Profile></SignatureProperty><SignatureProperty Id="role" Target="#DistributorSignature"><dsp:Role URI="http://www.w3.org/ns/widgets-digsig#role-distributor"></dsp:Role></SignatureProperty><SignatureProperty Id="identifier" Target="#DistributorSignature"><dsp:Identifier></dsp:Identifier></SignatureProperty></SignatureProperties></Object>
-</Signature>
\ No newline at end of file
diff --git a/src/unit_tests/test_samples/good_signatures/version.txt b/src/unit_tests/test_samples/good_signatures/version.txt
deleted file mode 100644 (file)
index 029d105..0000000
+++ /dev/null
@@ -1 +0,0 @@
-3.0.130
diff --git a/src/unit_tests/test_samples/tpk-sample-manifest.xml b/src/unit_tests/test_samples/tpk-sample-manifest.xml
deleted file mode 100644 (file)
index c661101..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<manifest xmlns="http://tizen.org/ns/packages" api-version="2.3" package="org.tizen.testapp" version="1.0.0">
-    <author email="tester@samsung.com" href="www.tizen.org">tester</author>
-    <description>This is default description</description>
-    <description xml:lang="en-us">This is test description</description>
-    <ui-application appid="org.tizen.testapp" exec="testapp" multiple="false" nodisplay="false" taskmanage="true" type="capp">
-        <label>testapp</label>
-        <label xml:lang="en-us">Test</label>
-        <icon>testapp.png</icon>
-        <app-control>
-            <mime name="EditMime"/>
-            <operation name="http://tizen.org/appcontrol/operation/edit"/>
-            <uri name="EditUri"/>
-        </app-control>
-        <app-control>
-            <operation name="http://tizen.org/appcontrol/operation/view"/>
-            <uri name="ViewUri"/>
-            <mime name="ViewMime"/>
-        </app-control>
-        <metadata key="metakey1" value="metaval1"/>
-        <metadata key="metakey2" value="metaval2"/>
-        <datacontrol access="ReadOnly" providerid="http://testapp.com/datacontrol/provider/testapp" type="Sql"/>
-        <datacontrol access="ReadOnly" providerid="http://testapp.com/datacontrol/provider/testapp" type="Map"/>
-    </ui-application>
-    <account>
-        <account-provider appid="org.tizen.testapp" multiple-accounts-support="false" providerid="com.samsung">
-            <icon section="account">testapp.png</icon>
-            <icon section="account-small">testapp.png</icon>
-            <label xml:lang="en-gb">account icon</label>
-            <label>Samsung</label>
-            <capability>http://tizen.org/account/capability/calendar</capability>
-            <capability>http://tizen.org/account/capability/photo</capability>
-        </account-provider>
-    </account>
-    <privileges>
-        <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
-        <privilege>http://tizen.org/privilege/packagemanager.info</privilege>
-    </privileges>
-    <feature name="http://tizen.org/feature/camera.front.flash">true</feature>
-    <feature name="http://tizen.org/feature/camera">true</feature>
-    <feature name="http://tizen.org/feature/camera.back.flash">true</feature>
-    <feature name="http://tizen.org/feature/camera.front">true</feature>
-</manifest>
diff --git a/src/unit_tests/test_samples/xmls/AccountHandlerTest.Capability_Many/config.xml b/src/unit_tests/test_samples/xmls/AccountHandlerTest.Capability_Many/config.xml
deleted file mode 100644 (file)
index 7f1941e..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <tizen:account multiple-account-support="false">
-    <tizen:display-name>name</tizen:display-name>
-    <tizen:icon section="Account">icon</tizen:icon>
-    <tizen:capability>cap1</tizen:capability>
-    <tizen:capability>cap2</tizen:capability>
-    <tizen:capability>cap3</tizen:capability>
-  </tizen:account>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AccountHandlerTest.Capability_One/config.xml b/src/unit_tests/test_samples/xmls/AccountHandlerTest.Capability_One/config.xml
deleted file mode 100644 (file)
index cd92675..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <tizen:account multiple-account-support="false">
-    <tizen:display-name>name</tizen:display-name>
-    <tizen:icon section="Account">icon</tizen:icon>
-    <tizen:capability>cap1</tizen:capability>
-  </tizen:account>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AccountHandlerTest.Icon_Missing/config.xml b/src/unit_tests/test_samples/xmls/AccountHandlerTest.Icon_Missing/config.xml
deleted file mode 100644 (file)
index 687e4e7..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <tizen:account multiple-account-support="false">
-    <tizen:display-name>name</tizen:display-name>
-  </tizen:account>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AccountHandlerTest.Icon_More/config.xml b/src/unit_tests/test_samples/xmls/AccountHandlerTest.Icon_More/config.xml
deleted file mode 100644 (file)
index 5b85621..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <tizen:account multiple-account-support="false">
-    <tizen:display-name>name</tizen:display-name>
-    <tizen:icon section="Account">icon</tizen:icon>
-    <tizen:icon section="AccountSmall">icon2</tizen:icon>
-  </tizen:account>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AccountHandlerTest.MAS_False/config.xml b/src/unit_tests/test_samples/xmls/AccountHandlerTest.MAS_False/config.xml
deleted file mode 100644 (file)
index 97b02c8..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <tizen:account multiple-account-support="false">
-    <tizen:display-name>name</tizen:display-name>
-    <tizen:icon section="Account">icon</tizen:icon>
-  </tizen:account>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AccountHandlerTest.MAS_Missing/config.xml b/src/unit_tests/test_samples/xmls/AccountHandlerTest.MAS_Missing/config.xml
deleted file mode 100644 (file)
index 81a40c7..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <tizen:account>
-    <tizen:display-name>name</tizen:display-name>
-    <tizen:icon section="Account">icon</tizen:icon>
-  </tizen:account>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AccountHandlerTest.MAS_True/config.xml b/src/unit_tests/test_samples/xmls/AccountHandlerTest.MAS_True/config.xml
deleted file mode 100644 (file)
index 7b4a52b..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <tizen:account multiple-account-support="true">
-    <tizen:display-name>name</tizen:display-name>
-    <tizen:icon section="Account">icon</tizen:icon>
-  </tizen:account>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AccountHandlerTest.MAS_Wrong/config.xml b/src/unit_tests/test_samples/xmls/AccountHandlerTest.MAS_Wrong/config.xml
deleted file mode 100644 (file)
index 5d9a101..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <tizen:account multiple-account-support="wrong">
-    <tizen:display-name>name</tizen:display-name>
-    <tizen:icon section="Account">icon</tizen:icon>
-  </tizen:account>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AccountHandlerTest.Many/config.xml b/src/unit_tests/test_samples/xmls/AccountHandlerTest.Many/config.xml
deleted file mode 100644 (file)
index 1d6324a..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <tizen:account multiple-account-support="false">
-    <tizen:display-name>name</tizen:display-name>
-    <tizen:display-name xml:lang="en-GB">name_en_gb</tizen:display-name>
-    <tizen:icon section="Account">icon</tizen:icon>
-  </tizen:account>
-  <tizen:account multiple-account-support="true">
-    <tizen:display-name>name2</tizen:display-name>
-    <tizen:icon section="Account">icon2</tizen:icon>
-    <tizen:icon section="AccountSmall">icon2s</tizen:icon>
-  </tizen:account>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AccountHandlerTest.Name_Missing/config.xml b/src/unit_tests/test_samples/xmls/AccountHandlerTest.Name_Missing/config.xml
deleted file mode 100644 (file)
index 7924721..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <tizen:account multiple-account-support="false">
-    <tizen:icon section="Account">icon</tizen:icon>
-  </tizen:account>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AccountHandlerTest.Name_More/config.xml b/src/unit_tests/test_samples/xmls/AccountHandlerTest.Name_More/config.xml
deleted file mode 100644 (file)
index 2de53c8..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <tizen:account multiple-account-support="false">
-    <tizen:display-name>name</tizen:display-name>
-    <tizen:display-name xml:lang="en">name_en</tizen:display-name>
-    <tizen:display-name xml:lang="de">name_de</tizen:display-name>
-    <tizen:display-name xml:lang="ru">name_ru</tizen:display-name>
-    <tizen:icon section="Account">icon</tizen:icon>
-  </tizen:account>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AccountHandlerTest.Valid/config.xml b/src/unit_tests/test_samples/xmls/AccountHandlerTest.Valid/config.xml
deleted file mode 100644 (file)
index 97b02c8..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <tizen:account multiple-account-support="false">
-    <tizen:display-name>name</tizen:display-name>
-    <tizen:icon section="Account">icon</tizen:icon>
-  </tizen:account>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AddonHandlerTest.NoPackageNameTest/config.xml b/src/unit_tests/test_samples/xmls/AddonHandlerTest.NoPackageNameTest/config.xml
deleted file mode 100644 (file)
index 082e5af..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:addon required_version="5.5">
-  </tizen:addon>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AddonHandlerTest.NoRequiredVersionTest/config.xml b/src/unit_tests/test_samples/xmls/AddonHandlerTest.NoRequiredVersionTest/config.xml
deleted file mode 100644 (file)
index 2e678d9..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:addon package="package0id">
-  </tizen:addon>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AddonHandlerTest.PackageNameTest/config.xml b/src/unit_tests/test_samples/xmls/AddonHandlerTest.PackageNameTest/config.xml
deleted file mode 100644 (file)
index ee69cf5..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:addon package="package0id" required_version="5.5">
-  </tizen:addon>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AddonHandlerTest.RequiredVersionTest/config.xml b/src/unit_tests/test_samples/xmls/AddonHandlerTest.RequiredVersionTest/config.xml
deleted file mode 100644 (file)
index ee69cf5..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:addon package="package0id" required_version="5.5">
-  </tizen:addon>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AddonHandlerTest.Valid/config.xml b/src/unit_tests/test_samples/xmls/AddonHandlerTest.Valid/config.xml
deleted file mode 100644 (file)
index ee69cf5..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:addon package="package0id" required_version="5.5">
-  </tizen:addon>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1/config.xml
deleted file mode 100644 (file)
index 1345024..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa100.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="720" height="200"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa100.dbox1" package="aaaaaaa100" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_auto_launch_not_bool/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_auto_launch_not_bool/config.xml
deleted file mode 100644 (file)
index d3ce80a..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa102.dbox1.default" primary="true" update-period="2000.0" auto-launch="ab12">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="720" height="200"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa102.dbox1" package="aaaaaaa102" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_box_size_invalid/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_box_size_invalid/config.xml
deleted file mode 100644 (file)
index c5d3d1d..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa106.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
-            <tizen:box-size>3x3</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="720" height="200"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa106.dbox1" package="aaaaaaa106" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_box_size_none/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_box_size_none/config.xml
deleted file mode 100644 (file)
index 8153a46..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa108.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
-            <tizen:pd src="pd/index.html" width="720" height="200"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa108.dbox1" package="aaaaaaa108" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_box_size_use_decoration_invalid/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_box_size_use_decoration_invalid/config.xml
deleted file mode 100644 (file)
index 0db7cee..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa110.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="ab12">2x2</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="720" height="200"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa110.dbox1" package="aaaaaaa110" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_mouse_event_not_bool/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_mouse_event_not_bool/config.xml
deleted file mode 100644 (file)
index 3db2289..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa111.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content src="box/index.html" mouse-event="ab12" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="720" height="200"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa111.dbox1" package="aaaaaaa111" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_none/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_none/config.xml
deleted file mode 100644 (file)
index 224f9d6..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa103.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa103.dbox1" package="aaaaaaa103" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_pd_height_invalid/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_pd_height_invalid/config.xml
deleted file mode 100644 (file)
index f1124eb..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa112.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="720" height="abc"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa112.dbox1" package="aaaaaaa112" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_pd_height_ood/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_pd_height_ood/config.xml
deleted file mode 100644 (file)
index 5616cca..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa113.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="720" height="-500"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa113.dbox1" package="aaaaaaa113" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_pd_src_none/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_pd_src_none/config.xml
deleted file mode 100644 (file)
index a204c27..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa114.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
-            <tizen:pd width="720" height="200"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa114.dbox1" package="aaaaaaa114" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_pd_width_invalid/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_pd_width_invalid/config.xml
deleted file mode 100644 (file)
index ddaf2b4..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa115.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="abc" height="200"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa115.dbox1" package="aaaaaaa115" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_src_none/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_src_none/config.xml
deleted file mode 100644 (file)
index 47c0375..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa116.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content mouse-event="true" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="720" height="200"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa116.dbox1" package="aaaaaaa116" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_touch_effect_not_bool/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_touch_effect_not_bool/config.xml
deleted file mode 100644 (file)
index 74801fd..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa117.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="ab12">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="720" height="200"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa117.dbox1" package="aaaaaaa117" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_two/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_two/config.xml
deleted file mode 100644 (file)
index 713f59a..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa105.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="720" height="200"/>
-        </tizen:box-content>
-        <tizen:box-content src="box/index.html" mouse-event="false" touch-effect="true">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="true">2x2</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="730" height="300"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa105.dbox1" package="aaaaaaa105" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_icon_none/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_icon_none/config.xml
deleted file mode 100644 (file)
index 121e8cd..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa133.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="720" height="200"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa133.dbox1" package="aaaaaaa133" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_icon_src_none/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_icon_src_none/config.xml
deleted file mode 100644 (file)
index d1ff0ba..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa120.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
-        <tizen:box-icon/>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="720" height="200"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa120.dbox1" package="aaaaaaa120" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_icon_two/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_icon_two/config.xml
deleted file mode 100644 (file)
index b13a850..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa119.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="720" height="200"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa119.dbox1" package="aaaaaaa119" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_label_none/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_label_none/config.xml
deleted file mode 100644 (file)
index d789524..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa121.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="720" height="200"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa121.dbox1" package="aaaaaaa121" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_id_invalid_1/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_id_invalid_1/config.xml
deleted file mode 100644 (file)
index 1118bc7..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget id="9999999123.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="720" height="200"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa123.dbox1" package="aaaaaaa123" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_id_invalid_2/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_id_invalid_2/config.xml
deleted file mode 100644 (file)
index edb9961..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa124.dbox1.the-default" primary="true" update-period="2000.0" auto-launch="true">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="720" height="200"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa124.dbox1" package="aaaaaaa124" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_id_none/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_id_none/config.xml
deleted file mode 100644 (file)
index 1475f83..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget primary="true" update-period="2000.0" auto-launch="true">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="720" height="200"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa125.dbox1" package="aaaaaaa125" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_primary_none/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_primary_none/config.xml
deleted file mode 100644 (file)
index c4b8cac..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa128.dbox1.default" update-period="2000.0" auto-launch="true">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="720" height="200"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa128.dbox1" package="aaaaaaa128" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_primary_not_bool/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_primary_not_bool/config.xml
deleted file mode 100644 (file)
index 90df03d..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa129.dbox1.default" primary="ab12" update-period="2000.0" auto-launch="true">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="720" height="200"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa129.dbox1" package="aaaaaaa129" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_update_period_invalid/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_update_period_invalid/config.xml
deleted file mode 100644 (file)
index b40e72e..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa130.dbox1.default" primary="true" update-period="ab12" auto-launch="true">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="720" height="200"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa130.dbox1" package="aaaaaaa130" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_update_period_ood/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_update_period_ood/config.xml
deleted file mode 100644 (file)
index 4267dae..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa131.dbox1.default" primary="true" update-period="1000.0" auto-launch="true">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="720" height="200"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa131.dbox1" package="aaaaaaa131" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox1</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox2/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox2/config.xml
deleted file mode 100644 (file)
index 9c18e5d..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox2" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa200.dbox2.default" primary="true" update-period="2000.0" auto-launch="true">
-        <tizen:box-label>dbox2 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox2 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox2 en label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="720" height="200"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:app-widget id="aaaaaaa200.dbox2.second" primary="false" update-period="4000.0" auto-launch="false">
-        <tizen:box-label>dbox2 default label 2</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox2 pl label 2</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox2 en label 2</tizen:box-label>
-        <tizen:box-icon src="icon2.png"/>
-        <tizen:box-content src="box/index2.html" mouse-event="false" touch-effect="true">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon2.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="true">2x2</tizen:box-size>
-            <tizen:pd src="pd/index2.html" width="740" height="300"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa200.dbox2" package="aaaaaaa200" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox2</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox2_app_widget_primary_two_true/config.xml b/src/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox2_app_widget_primary_two_true/config.xml
deleted file mode 100644 (file)
index cce08fd..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox2" version="1.0.0">
-    <tizen:app-widget id="aaaaaaa201.dbox2.default" primary="true" update-period="2000.0" auto-launch="true">
-        <tizen:box-label>dbox2 default label</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox2 pl label</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox2 en label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="720" height="200"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:app-widget id="aaaaaaa201.dbox2.second" primary="true" update-period="4000.0" auto-launch="false">
-        <tizen:box-label>dbox2 default label 2</tizen:box-label>
-        <tizen:box-label xml:lang="pl">dbox2 pl label 2</tizen:box-label>
-        <tizen:box-label xml:lang="en">dbox2 en label 2</tizen:box-label>
-        <tizen:box-icon src="icon2.png"/>
-        <tizen:box-content src="box/index2.html" mouse-event="false" touch-effect="true">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:box-size preview="icon2.png">2x1</tizen:box-size>
-            <tizen:box-size use-decoration="true">2x2</tizen:box-size>
-            <tizen:pd src="pd/index2.html" width="740" height="300"/>
-        </tizen:box-content>
-    </tizen:app-widget>
-    <tizen:application id="aaaaaaa201.dbox2" package="aaaaaaa201" required_version="2.2"/>
-    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
-    <icon src="icon.png"/>
-    <name>dbox2</name>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/CSPHandlerTest.InvalidNamespace/config.xml b/src/unit_tests/test_samples/xmls/CSPHandlerTest.InvalidNamespace/config.xml
deleted file mode 100644 (file)
index cc66b87..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <content-security-policy>script-src 'self'</content-security-policy>
-  <content-security-policy-report-only>script-src 'self'; report-uri="http://example.com/report.cgi"</content-security-policy-report-only>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/CSPHandlerTest.Valid/config.xml b/src/unit_tests/test_samples/xmls/CSPHandlerTest.Valid/config.xml
deleted file mode 100644 (file)
index 6e90b48..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <tizen:content-security-policy>script-src 'self'</tizen:content-security-policy>
-  <tizen:content-security-policy>ignore me</tizen:content-security-policy>
-  <tizen:content-security-policy-report-only>script-src 'self'; report-uri="http://example.com/report.cgi"</tizen:content-security-policy-report-only>
-  <tizen:content-security-policy-report-only>ignore me</tizen:content-security-policy-report-only>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.Empty/config.xml b/src/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.Empty/config.xml
deleted file mode 100644 (file)
index 5578f74..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <tizen:launch_screen>
-  </tizen:launch_screen>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.InvalidNamespace/config.xml b/src/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.InvalidNamespace/config.xml
deleted file mode 100644 (file)
index 5cb1d0f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <launch_screen ready_when="first-paint">
-    <tizen:ls_default background_color="#ff0000"/>
-  </launch_screen>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.InvalidReadyWhen/config.xml b/src/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.InvalidReadyWhen/config.xml
deleted file mode 100644 (file)
index fc18660..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <tizen:launch_screen ready_when="invalid-option">
-    <tizen:ls_default background_color="#ff0000"/>
-  </tizen:launch_screen>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.Valid/config.xml b/src/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.Valid/config.xml
deleted file mode 100644 (file)
index 52fe372..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <tizen:launch_screen ready_when="first-paint">
-    <tizen:ls_default background_color="#ff0000" background_image="bg_image.png"
-                        image="default_image.gif"
-                        image_border="30px 30px 20px 10px repeat round"/>
-  </tizen:launch_screen>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.ValidComplex/config.xml b/src/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.ValidComplex/config.xml
deleted file mode 100644 (file)
index 777d72b..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <tizen:launch_screen ready_when="first-paint">
-    <tizen:ls_default background_color="#ff0000" background_image="bg_image.png 1x, bg_image2x.bmp 2x"
-                        image="default_image.gif 1x, default_image2x.jpg 2x"
-                        image_border="30px 30px 20px 10px repeat round"/>
-    <tizen:ls_portrait background_color="#00ff00" background_image="bg_image.png"
-                        image="portrait_image.png" image_border="repeat"/>
-    <tizen:ls_landscape background_color="#0000ff" background_image="bg_image.png"
-                        image="landscape_image.gif" image_border="repeat"/>
-  </tizen:launch_screen>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.ValidMultiBackgroundImages/config.xml b/src/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.ValidMultiBackgroundImages/config.xml
deleted file mode 100644 (file)
index c789d8b..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <tizen:launch_screen ready_when="first-paint">
-    <tizen:ls_default background_image="bg_image.png 1x, bg_image2x.bmp 2x"/>
-  </tizen:launch_screen>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.ValidMultiImages/config.xml b/src/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.ValidMultiImages/config.xml
deleted file mode 100644 (file)
index 8a34fba..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <tizen:launch_screen ready_when="first-paint">
-    <tizen:ls_default image="default_image.gif 1x, default_image2x.jpg 2x"/>
-  </tizen:launch_screen>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.ValidMultiScreenOrientation/config.xml b/src/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.ValidMultiScreenOrientation/config.xml
deleted file mode 100644 (file)
index d82042c..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <tizen:launch_screen ready_when="first-paint">
-    <tizen:ls_default background_color="#ff0000"/>
-    <tizen:ls_portrait background_color="#00ff00"/>
-    <tizen:ls_landscape background_color="#0000ff"/>
-  </tizen:launch_screen>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/SplashHandlerTest.InvalidNamespace/config.xml b/src/unit_tests/test_samples/xmls/SplashHandlerTest.InvalidNamespace/config.xml
deleted file mode 100644 (file)
index 2f3f515..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <splash src="splash.html" />
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/SplashHandlerTest.NoSrc/config.xml b/src/unit_tests/test_samples/xmls/SplashHandlerTest.NoSrc/config.xml
deleted file mode 100644 (file)
index 42c61ba..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <tizen:splash />
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/SplashHandlerTest.Valid/config.xml b/src/unit_tests/test_samples/xmls/SplashHandlerTest.Valid/config.xml
deleted file mode 100644 (file)
index bbd2a26..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <tizen:splash src="splash.html"/>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/WarpHandlerTest.InvalidNamespace/config.xml b/src/unit_tests/test_samples/xmls/WarpHandlerTest.InvalidNamespace/config.xml
deleted file mode 100644 (file)
index 249d3e3..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <tizen:access origin="http://www.myhost.com" />
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/WarpHandlerTest.InvalidURL_AuthorizationPart/config.xml b/src/unit_tests/test_samples/xmls/WarpHandlerTest.InvalidURL_AuthorizationPart/config.xml
deleted file mode 100644 (file)
index 5535bc8..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <access origin="http://www.user@myhost.com" />
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/WarpHandlerTest.InvalidURL_NoHost/config.xml b/src/unit_tests/test_samples/xmls/WarpHandlerTest.InvalidURL_NoHost/config.xml
deleted file mode 100644 (file)
index ac7616b..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <access origin="http://" />
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/WarpHandlerTest.InvalidURL_NotURL/config.xml b/src/unit_tests/test_samples/xmls/WarpHandlerTest.InvalidURL_NotURL/config.xml
deleted file mode 100644 (file)
index 89c821a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <access origin="invalid" />
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/WarpHandlerTest.SubdomainFalse/config.xml b/src/unit_tests/test_samples/xmls/WarpHandlerTest.SubdomainFalse/config.xml
deleted file mode 100644 (file)
index ba0959a..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <access origin="http://www.myhost.com" subdomains="false" />
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/WarpHandlerTest.SubdomainInvalid/config.xml b/src/unit_tests/test_samples/xmls/WarpHandlerTest.SubdomainInvalid/config.xml
deleted file mode 100644 (file)
index 06dc9c1..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <access origin="http://www.myhost.com" subdomains="invalid" />
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/WarpHandlerTest.SubdomainTrue/config.xml b/src/unit_tests/test_samples/xmls/WarpHandlerTest.SubdomainTrue/config.xml
deleted file mode 100644 (file)
index 516fd61..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <access origin="http://www.myhost.com" subdomains="true" />
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/WarpHandlerTest.ValidMultiple/config.xml b/src/unit_tests/test_samples/xmls/WarpHandlerTest.ValidMultiple/config.xml
deleted file mode 100644 (file)
index d379e32..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <access origin="http://www.myhost.com" />
-  <access origin="http://www.mywebsite.com" subdomains="true"/>
-  <access origin="http://www.sub.mydomain.com"/>
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/WarpHandlerTest.ValidURL/config.xml b/src/unit_tests/test_samples/xmls/WarpHandlerTest.ValidURL/config.xml
deleted file mode 100644 (file)
index 12c3237..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <access origin="http://www.myhost.com" />
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/WarpHandlerTest.ValidWildcard/config.xml b/src/unit_tests/test_samples/xmls/WarpHandlerTest.ValidWildcard/config.xml
deleted file mode 100644 (file)
index d8e8881..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0"?>
-<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
-  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-  <access origin="*" />
-</widget>
diff --git a/src/unit_tests/test_samples/xmls/XmlNormalization/config.xml b/src/unit_tests/test_samples/xmls/XmlNormalization/config.xml
deleted file mode 100644 (file)
index 9cb60c4..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- all long values here are 10000+ characters long -->
-<widget xmlns:tizen="http://tizen.org/ns/widgets" xmlns="http://www.w3.org/ns/widgets">
-    <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
-    <!-- value (of attribute): 8192 limit -->
-    <content src="1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.html"/>
-    <feature name="http://tizen.org/feature/screen.size.all"/>
-    <!-- value (of attribute): 8192 limit -->
-    <icon src="1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.png"/>
-    <!-- value (of key): 8192 limit -->
-    <name>1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890</name>
-    <tizen:profile name="mobile"/>
-    <!-- key: 80 limit -->
-    <_keyname10_abcdefg20_abcdefg30_abcdefg40_abcdefg50_abcdefg60_abcdefg70_abcdefg80_234567>value_a</_keyname10_abcdefg20_abcdefg30_abcdefg40_abcdefg50_abcdefg60_abcdefg70_abcdefg80_234567>
-    <!-- attribute: 2048 limit -->
-    <key_attribute attr1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890="value_b"/>
-    <!-- metadata: key2048 limit -->
-    <tizen:metadata key="_keyname10_abcdefg20_abcdefg30_abcdefg40_abcdefg50_abcdefg60_abcdefg70_abcdefg80_234567" value="attr1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"/>
-    <tizen:app-widget id="package0id.appid.default" primary="true" update-period="2000.0" auto-launch="true">
-        <tizen:box-label>dbox1 default label</tizen:box-label>
-        <tizen:box-icon src="icon.png"/>
-        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
-            <tizen:box-size>1x1</tizen:box-size>
-            <tizen:pd src="pd/index.html" width="720" height="200"/>
-        </tizen:box-content>
-        <tizen:widget-metadata key="_keyname10_abcdefg20_abcdefg30_abcdefg40_abcdefg50_abcdefg60_abcdefg70_abcdefg80_234567" value="attr1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"/>
-    </tizen:app-widget>
-    <preference name="Akeyname10_abcdefg20_abcdefg30_abcdefg40_abcdefg50_abcdefg60_abcdefg70_abcdefg80_234567" value="Aattr1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"/>
-    <preference name="Bkeyname10_abcdefg20_abcdefg30_abcdefg40_abcdefg50_abcdefg60_abcdefg70_abcdefg80_234567" value="Battr1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"/>
-    <preference name="Ckeyname10_abcdefg20_abcdefg30_abcdefg40_abcdefg50_abcdefg60_abcdefg70_abcdefg80_234567" value="Cattr1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"/>
-</widget>
diff --git a/src/unit_tests/warp_handler_unittest.cc b/src/unit_tests/warp_handler_unittest.cc
deleted file mode 100644 (file)
index ed1ef0c..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-// Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
-// Use of this source code is governed by an apache 2.0 license that can be
-// found in the LICENSE file.
-
-#include <boost/filesystem/path.hpp>
-
-#include <gtest/gtest.h>
-
-#include <manifest_parser/manifest.h>
-#include <manifest_parser/manifest_util.h>
-
-#include <memory>
-#include <vector>
-
-#include "unit_tests/base_test.h"
-#include "wgt_manifest_handlers/warp_handler.h"
-
-namespace bf = boost::filesystem;
-
-namespace {
-
-const bf::path kXmlDirectory("/usr/share/manifest-parser-ut/test_samples/xmls");
-
-struct RegistryPolicyForWarp {
-  static std::unique_ptr<parser::ManifestHandlerRegistry> GetRegistry() {
-    std::unique_ptr<parser::ManifestHandlerRegistry> registry;
-    registry.reset(new parser::ManifestHandlerRegistry());
-    registry->RegisterManifestHandler(new wgt::parse::WarpHandler());
-    return registry;
-  }
-};
-
-}  // namespace
-
-namespace parser {
-
-class WarpHandlerTest : public BaseTest<RegistryPolicyForWarp> {
-  void SetUp() override {
-    BaseTest<RegistryPolicyForWarp>::SetUp();
-    std::string error;
-    bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
-    std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
-    ASSERT_FALSE(!manifest);
-    SetManifest(manifest);
-  }
-};
-
-#define WARP_IGNORE_TEST(TEST_NAME)                                            \
-    TEST_F(WarpHandlerTest, TEST_NAME) {                                       \
-      ASSERT_TRUE(ParseAppManifest());                                         \
-      ASSERT_TRUE(ValidateAppManifest());                                      \
-      std::shared_ptr<const wgt::parse::WarpInfo> data =                       \
-          std::static_pointer_cast<const wgt::parse::WarpInfo>(                \
-              GetManifestData(wgt::parse::WarpInfo::Key()));                   \
-      ASSERT_TRUE(!data);                                                      \
-    }                                                                          \
-
-WARP_IGNORE_TEST(InvalidNamespace)
-
-TEST_F(WarpHandlerTest, ValidURL) {
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::WarpInfo> data =
-      std::static_pointer_cast<const wgt::parse::WarpInfo>(
-          GetManifestData(wgt::parse::WarpInfo::Key()));
-  ASSERT_TRUE(!!data);
-  auto access_map = data->access_map();
-  ASSERT_EQ(access_map.size(), 1);
-  ASSERT_EQ(access_map[0].first, "http://www.myhost.com");
-  ASSERT_FALSE(access_map[0].second);
-}
-
-TEST_F(WarpHandlerTest, ValidWildcard) {
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::WarpInfo> data =
-      std::static_pointer_cast<const wgt::parse::WarpInfo>(
-          GetManifestData(wgt::parse::WarpInfo::Key()));
-  ASSERT_TRUE(!!data);
-  auto access_map = data->access_map();
-  ASSERT_EQ(access_map.size(), 1);
-  ASSERT_EQ(access_map[0].first, "*");
-  ASSERT_TRUE(access_map[0].second);
-}
-
-WARP_IGNORE_TEST(InvalidURL_NotURL)
-WARP_IGNORE_TEST(InvalidURL_AuthorizationPart)
-WARP_IGNORE_TEST(InvalidURL_NoHost)
-
-TEST_F(WarpHandlerTest, SubdomainTrue) {
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::WarpInfo> data =
-      std::static_pointer_cast<const wgt::parse::WarpInfo>(
-          GetManifestData(wgt::parse::WarpInfo::Key()));
-  ASSERT_TRUE(!!data);
-  auto access_map = data->access_map();
-  ASSERT_EQ(access_map.size(), 1);
-  ASSERT_TRUE(access_map[0].second);
-}
-
-TEST_F(WarpHandlerTest, SubdomainFalse) {
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::WarpInfo> data =
-      std::static_pointer_cast<const wgt::parse::WarpInfo>(
-          GetManifestData(wgt::parse::WarpInfo::Key()));
-  ASSERT_TRUE(!!data);
-  auto access_map = data->access_map();
-  ASSERT_EQ(access_map.size(), 1);
-  ASSERT_FALSE(access_map[0].second);
-}
-
-TEST_F(WarpHandlerTest, SubdomainInvalid) {
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::WarpInfo> data =
-      std::static_pointer_cast<const wgt::parse::WarpInfo>(
-          GetManifestData(wgt::parse::WarpInfo::Key()));
-  ASSERT_TRUE(!!data);
-  auto access_map = data->access_map();
-  ASSERT_EQ(access_map.size(), 1);
-  ASSERT_FALSE(access_map[0].second);
-}
-
-TEST_F(WarpHandlerTest, ValidMultiple) {
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::WarpInfo> data =
-      std::static_pointer_cast<const wgt::parse::WarpInfo>(
-          GetManifestData(wgt::parse::WarpInfo::Key()));
-  ASSERT_TRUE(!!data);
-  auto access_map = data->access_map();
-  ASSERT_EQ(access_map.size(), 3);
-  ASSERT_EQ(access_map[0].first, "http://www.myhost.com");
-  ASSERT_FALSE(access_map[0].second);
-  ASSERT_EQ(access_map[1].first, "http://www.mywebsite.com");
-  ASSERT_TRUE(access_map[1].second);
-  ASSERT_EQ(access_map[2].first, "http://www.sub.mydomain.com");
-  ASSERT_FALSE(access_map[2].second);
-}
-
-}  // namespace parser
diff --git a/src/unit_tests/xml_normalization_unittest.cc b/src/unit_tests/xml_normalization_unittest.cc
deleted file mode 100644 (file)
index 3736e33..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-// Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
-// Use of this source code is governed by an apache 2.0 license that can be
-// found in the LICENSE file.
-
-#include <boost/filesystem/path.hpp>
-
-#include <gtest/gtest.h>
-
-#include <manifest_parser/manifest.h>
-#include <manifest_parser/manifest_util.h>
-
-#include <memory>
-
-#include "unit_tests/base_test.h"
-#include "wgt_manifest_handlers/application_icons_handler.h"
-#include "wgt_manifest_handlers/application_manifest_constants.h"
-#include "wgt_manifest_handlers/appwidget_handler.h"
-#include "wgt_manifest_handlers/content_handler.h"
-#include "wgt_manifest_handlers/metadata_handler.h"
-#include "wgt_manifest_handlers/tizen_application_handler.h"
-#include "wgt_manifest_handlers/widget_handler.h"
-
-namespace bf = boost::filesystem;
-
-namespace {
-
-const bf::path kXmlDirectory("/usr/share/manifest-parser-ut/test_samples/xmls");
-
-struct RegistryPolicyForNormalization {
-  static std::unique_ptr<parser::ManifestHandlerRegistry> GetRegistry() {
-    std::unique_ptr<parser::ManifestHandlerRegistry> registry;
-    registry.reset(new parser::ManifestHandlerRegistry());
-    registry->RegisterManifestHandler(new wgt::parse::WidgetHandler());
-    registry->RegisterManifestHandler(
-        new wgt::parse::TizenApplicationHandler());
-    registry->RegisterManifestHandler(new wgt::parse::MetaDataHandler());
-    registry->RegisterManifestHandler(new wgt::parse::ContentHandler());
-    registry->RegisterManifestHandler(new wgt::parse::AppWidgetHandler());
-    registry->RegisterManifestHandler(
-        new wgt::parse::ApplicationIconsHandler());
-    return registry;
-  }
-};
-
-}  // namespace
-
-namespace parser {
-
-class NormalizationHandlerTest :
-    public BaseTest<RegistryPolicyForNormalization> {
-  void SetUp() override {
-    BaseTest<RegistryPolicyForNormalization>::SetUp();
-
-    std::shared_ptr<ManifestConstraints> constraints(new ManifestConstraints());
-    constraints->set_max_attr_element_length(wgt::kMaxAttrElementLength);
-    constraints->set_element_exceptions(
-        wgt::GetElementsWithDifferentAttributeLength());
-    std::string error;
-    bf::path xml = kXmlDirectory / "XmlNormalization" / "config.xml";
-    std::shared_ptr<Manifest> manifest(
-        LoadManifest(xml.string(), &error, constraints));
-    ASSERT_FALSE(!manifest);
-    SetManifest(manifest);
-  }
-};
-
-TEST_F(NormalizationHandlerTest, NormalizeAttributeValue) {
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::ContentInfo> data =
-      std::static_pointer_cast<const wgt::parse::ContentInfo>(
-          GetManifestData(wgt::parse::ContentInfo::Key()));
-  ASSERT_TRUE(!!data);
-  ASSERT_EQ(data->src().size(), 2048);
-  std::shared_ptr<const wgt::parse::ApplicationIconsInfo> idata =
-      std::static_pointer_cast<const wgt::parse::ApplicationIconsInfo>(
-          GetManifestData(wgt::parse::ApplicationIconsInfo::Key()));
-  ASSERT_TRUE(!!idata);
-  ASSERT_EQ(idata->icons().size(), 1);
-  auto& icons = idata->icons();
-  ASSERT_EQ(icons.begin()->path().size(), 2048);
-}
-
-TEST_F(NormalizationHandlerTest, NormalizeMetadata) {
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::MetaDataInfo> data =
-      std::static_pointer_cast<const wgt::parse::MetaDataInfo>(
-          GetManifestData(wgt::parse::MetaDataInfo::Key()));
-  ASSERT_TRUE(!!data);
-  ASSERT_EQ(data->metadata().size(), 1);
-  auto& metadata = data->metadata();
-  ASSERT_EQ(metadata.begin()->first.size(), 80);
-  ASSERT_EQ(metadata.begin()->second.size(), 8192);
-}
-
-TEST_F(NormalizationHandlerTest, NormalizeWidgetMetadata) {
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::AppWidgetInfo> data =
-      std::static_pointer_cast<const wgt::parse::AppWidgetInfo>(
-          GetManifestData(wgt::parse::AppWidgetInfo::Key()));
-  ASSERT_TRUE(!!data);
-  ASSERT_EQ(data->app_widgets().size(), 1);
-  auto& app_widgets = data->app_widgets();
-  ASSERT_EQ(app_widgets.begin()->metadata.size(), 1);
-  auto& metadata = app_widgets.begin()->metadata;
-  ASSERT_EQ(metadata.begin()->first.size(), 80);
-  ASSERT_EQ(metadata.begin()->second.size(), 8192);
-}
-
-TEST_F(NormalizationHandlerTest, NormalizePreferences) {
-  ASSERT_TRUE(ParseAppManifest());
-  ASSERT_TRUE(ValidateAppManifest());
-  std::shared_ptr<const wgt::parse::WidgetInfo> data =
-      std::static_pointer_cast<const wgt::parse::WidgetInfo>(
-          GetManifestData(wgt::parse::WidgetInfo::Key()));
-  ASSERT_TRUE(!!data);
-  ASSERT_EQ(data->preferences().size(), 3);
-  for (auto& item : data->preferences()) {
-    ASSERT_EQ(item->Name().size(), 80);
-    ASSERT_EQ(item->Value().size(), 8192);
-  }
-}
-
-}  // namespace parser
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
new file mode 100644 (file)
index 0000000..c90fac8
--- /dev/null
@@ -0,0 +1 @@
+ADD_SUBDIRECTORY(unit_tests)
diff --git a/test/unit_tests/CMakeLists.txt b/test/unit_tests/CMakeLists.txt
new file mode 100644 (file)
index 0000000..f5771cc
--- /dev/null
@@ -0,0 +1,66 @@
+AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/ UNIT_TESTS_SRCS)
+AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/mock/ UNIT_TESTS_SRCS)
+
+ADD_EXECUTABLE(${TARGET_WGT_MANIFEST_HANDLERS_UNIT_TEST}
+  ${UNIT_TESTS_SRCS}
+)
+
+TARGET_INCLUDE_DIRECTORIES(${TARGET_WGT_MANIFEST_HANDLERS_UNIT_TEST} PUBLIC
+  "${CMAKE_CURRENT_SOURCE_DIR}/../"
+  "${CMAKE_CURRENT_SOURCE_DIR}/../../src"
+)
+
+APPLY_PKG_CONFIG(${TARGET_WGT_MANIFEST_HANDLERS_UNIT_TEST} PUBLIC
+  GMOCK_DEPS
+  MANIFEST_PARSER_UTILS_DEPS
+  MANIFEST_PARSER_DEPS
+)
+
+TARGET_LINK_LIBRARIES(${TARGET_WGT_MANIFEST_HANDLERS_UNIT_TEST} PRIVATE ${TARGET_LIBNAME_WGT_MANIFEST_HANDLERS})
+SET_TARGET_PROPERTIES(${TARGET_WGT_MANIFEST_HANDLERS_UNIT_TEST} PROPERTIES COMPILE_FLAGS "-fPIE")
+SET_TARGET_PROPERTIES(${TARGET_WGT_MANIFEST_HANDLERS_UNIT_TEST} PROPERTIES LINK_FLAGS "-pie")
+
+ADD_TEST(
+  NAME ${TARGET_WGT_MANIFEST_HANDLERS_UNIT_TEST}
+  COMMAND ${TARGET_WGT_MANIFEST_HANDLERS_UNIT_TEST}
+)
+
+
+#SET(PRJ_PATH ..)
+
+#SET(TESTS
+#  parser_manifest_util_unittest
+#  service_handler_unittest
+#  content_handler_unittest
+#  appwidget_handler_unittest
+#  warp_handler_unittest
+#  csp_handler_unittest
+#  account_handler_unittest
+#  launch_screen_handler_unittest
+#  splash_handler_unittest
+#  xml_normalization_unittest
+#  addon_handler_unittest
+#)
+#SET(DESTINATION_DIR manifest-parser-ut)
+
+#INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../)
+
+#INSTALL(DIRECTORY test_samples/ DESTINATION ${SHAREDIR}/${DESTINATION_DIR}/test_samples)
+
+#FOREACH(test ${TESTS})
+#  ADD_EXECUTABLE(${test} "${test}.cc")
+
+#  APPLY_PKG_CONFIG(${test} PUBLIC
+#    Boost
+#    GMOCK_DEPS
+#    MANIFEST_PARSER_DEPS
+#    MANIFEST_PARSER_UTILS_DEPS
+#  )
+
+#  INSTALL(TARGETS ${test} DESTINATION ${BINDIR}/${DESTINATION_DIR})
+#  # FindGTest module do not sets all needed libraries in GTEST_LIBRARIES and
+#  # GTest main libraries is still missing, so additional linking of
+#  # GTEST_MAIN_LIBRARIES is needed.
+#  TARGET_LINK_LIBRARIES(${test} PUBLIC ${TARGET_LIBNAME_PARSER}
+#      ${TARGET_LIBNAME_WGT_MANIFEST_HANDLERS} ${GTEST_MAIN_LIBRARIES})
+#ENDFOREACH(test)
diff --git a/test/unit_tests/account_handler_unittest.cc b/test/unit_tests/account_handler_unittest.cc
new file mode 100644 (file)
index 0000000..c80492f
--- /dev/null
@@ -0,0 +1,205 @@
+// Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+// Use of this source code is governed by an apache 2.0 license that can be
+// found in the LICENSE file.
+
+
+#include <boost/filesystem/path.hpp>
+
+#include <gtest/gtest.h>
+
+#include <manifest_parser/manifest.h>
+#include <manifest_parser/manifest_util.h>
+
+#include <memory>
+
+#include "unit_tests/base_test.h"
+#include "wgt_manifest_handlers/account_handler.h"
+
+namespace bf = boost::filesystem;
+
+namespace {
+
+const bf::path kXmlDirectory("test_samples/xmls");
+
+struct RegistryPolicyForAccount {
+  static std::unique_ptr<parser::ManifestHandlerRegistry> GetRegistry() {
+    using wgt::parse::AccountHandler;
+    std::unique_ptr<parser::ManifestHandlerRegistry> registry;
+    registry.reset(new parser::ManifestHandlerRegistry());
+    registry->RegisterManifestHandler(new AccountHandler());
+    return registry;
+  }
+};
+
+}  // namespace
+
+namespace parser {
+
+class AccountHandlerTest : public BaseTest<RegistryPolicyForAccount> {
+  void SetUp() override {
+    BaseTest<RegistryPolicyForAccount>::SetUp();
+    std::string error;
+    bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+    std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+    ASSERT_FALSE(!manifest);
+    SetManifest(manifest);
+  }
+};
+
+TEST_F(AccountHandlerTest, Valid) {
+  ASSERT_TRUE(ParseAppManifest()) << GetError();
+  ASSERT_TRUE(ValidateAppManifest()) << GetError();
+  std::shared_ptr<const wgt::parse::AccountInfo> data =
+      std::static_pointer_cast<const wgt::parse::AccountInfo>(
+          GetManifestData(wgt::parse::AccountInfo::Key()));
+  ASSERT_TRUE(!!data);
+  ASSERT_EQ(data->accounts().size(), 1);
+  auto account = data->accounts()[0];
+  ASSERT_EQ(account.names.size(), 1);
+  ASSERT_EQ(account.names[0].first, "name");
+  ASSERT_EQ(account.names[0].second, "");
+  ASSERT_EQ(account.icon_paths.size(), 1);
+  ASSERT_EQ(account.icon_paths[0].first, "Account");
+  ASSERT_EQ(account.icon_paths[0].second, "icon");
+  ASSERT_EQ(account.capabilities.size(), 0);
+}
+
+TEST_F(AccountHandlerTest, Many) {
+  ASSERT_TRUE(ParseAppManifest()) << GetError();
+  ASSERT_TRUE(ValidateAppManifest()) << GetError();
+  std::shared_ptr<const wgt::parse::AccountInfo> data =
+      std::static_pointer_cast<const wgt::parse::AccountInfo>(
+          GetManifestData(wgt::parse::AccountInfo::Key()));
+  ASSERT_TRUE(!!data);
+  ASSERT_EQ(data->accounts().size(), 2);
+
+  auto account1 = data->accounts()[0];
+  ASSERT_EQ(account1.names.size(), 2);
+  ASSERT_EQ(account1.names[0].first, "name");
+  ASSERT_EQ(account1.names[0].second, "");
+  ASSERT_EQ(account1.names[1].first, "name_en_gb");
+  ASSERT_EQ(account1.names[1].second, "en-GB");
+  ASSERT_EQ(account1.icon_paths.size(), 1);
+  ASSERT_EQ(account1.icon_paths[0].first, "Account");
+  ASSERT_EQ(account1.icon_paths[0].second, "icon");
+  ASSERT_EQ(account1.capabilities.size(), 0);
+  ASSERT_FALSE(account1.multiple_account_support);
+
+  auto account2 = data->accounts()[1];
+  ASSERT_EQ(account2.names.size(), 1);
+  ASSERT_EQ(account2.names[0].first, "name2");
+  ASSERT_EQ(account2.names[0].second, "");
+  ASSERT_EQ(account2.icon_paths.size(), 2);
+  ASSERT_EQ(account2.icon_paths[0].first, "Account");
+  ASSERT_EQ(account2.icon_paths[0].second, "icon2");
+  ASSERT_EQ(account2.icon_paths[1].first, "AccountSmall");
+  ASSERT_EQ(account2.icon_paths[1].second, "icon2s");
+  ASSERT_EQ(account2.capabilities.size(), 0);
+  ASSERT_TRUE(account2.multiple_account_support);
+}
+
+TEST_F(AccountHandlerTest, MAS_False) {
+  ASSERT_TRUE(ParseAppManifest()) << GetError();
+  ASSERT_TRUE(ValidateAppManifest()) << GetError();
+  std::shared_ptr<const wgt::parse::AccountInfo> data =
+      std::static_pointer_cast<const wgt::parse::AccountInfo>(
+          GetManifestData(wgt::parse::AccountInfo::Key()));
+  ASSERT_TRUE(!!data);
+  ASSERT_EQ(data->accounts().size(), 1);
+  auto account = data->accounts()[0];
+  ASSERT_FALSE(account.multiple_account_support);
+}
+
+TEST_F(AccountHandlerTest, MAS_True) {
+  ASSERT_TRUE(ParseAppManifest()) << GetError();
+  ASSERT_TRUE(ValidateAppManifest()) << GetError();
+  std::shared_ptr<const wgt::parse::AccountInfo> data =
+      std::static_pointer_cast<const wgt::parse::AccountInfo>(
+          GetManifestData(wgt::parse::AccountInfo::Key()));
+  ASSERT_TRUE(!!data);
+  ASSERT_EQ(data->accounts().size(), 1);
+  auto account = data->accounts()[0];
+  ASSERT_TRUE(account.multiple_account_support);
+}
+
+TEST_F(AccountHandlerTest, MAS_Missing) {
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AccountHandlerTest, MAS_Wrong) {
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AccountHandlerTest, Capability_One) {
+  ASSERT_TRUE(ParseAppManifest()) << GetError();
+  ASSERT_TRUE(ValidateAppManifest()) << GetError();
+  std::shared_ptr<const wgt::parse::AccountInfo> data =
+      std::static_pointer_cast<const wgt::parse::AccountInfo>(
+          GetManifestData(wgt::parse::AccountInfo::Key()));
+  ASSERT_TRUE(!!data);
+  ASSERT_EQ(data->accounts().size(), 1);
+  auto account = data->accounts()[0];
+  ASSERT_EQ(account.capabilities.size(), 1);
+  ASSERT_EQ(account.capabilities[0], "cap1");
+}
+
+TEST_F(AccountHandlerTest, Capability_Many) {
+  ASSERT_TRUE(ParseAppManifest()) << GetError();
+  ASSERT_TRUE(ValidateAppManifest()) << GetError();
+  std::shared_ptr<const wgt::parse::AccountInfo> data =
+      std::static_pointer_cast<const wgt::parse::AccountInfo>(
+          GetManifestData(wgt::parse::AccountInfo::Key()));
+  ASSERT_TRUE(!!data);
+  ASSERT_EQ(data->accounts().size(), 1);
+  auto account = data->accounts()[0];
+  ASSERT_EQ(account.capabilities.size(), 3);
+  ASSERT_EQ(account.capabilities[0], "cap1");
+  ASSERT_EQ(account.capabilities[1], "cap2");
+  ASSERT_EQ(account.capabilities[2], "cap3");
+}
+
+TEST_F(AccountHandlerTest, Name_Missing) {
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AccountHandlerTest, Name_More) {
+  ASSERT_TRUE(ParseAppManifest()) << GetError();
+  ASSERT_TRUE(ValidateAppManifest()) << GetError();
+  std::shared_ptr<const wgt::parse::AccountInfo> data =
+      std::static_pointer_cast<const wgt::parse::AccountInfo>(
+          GetManifestData(wgt::parse::AccountInfo::Key()));
+  ASSERT_TRUE(!!data);
+  ASSERT_EQ(data->accounts().size(), 1);
+  auto account = data->accounts()[0];
+  ASSERT_EQ(account.names.size(), 4);
+  ASSERT_EQ(account.names[0].first, "name");
+  ASSERT_EQ(account.names[0].second, "");
+  ASSERT_EQ(account.names[1].first, "name_en");
+  ASSERT_EQ(account.names[1].second, "en");
+  ASSERT_EQ(account.names[2].first, "name_de");
+  ASSERT_EQ(account.names[2].second, "de");
+  ASSERT_EQ(account.names[3].first, "name_ru");
+  ASSERT_EQ(account.names[3].second, "ru");
+}
+
+TEST_F(AccountHandlerTest, Icon_Missing) {
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AccountHandlerTest, Icon_More) {
+  ASSERT_TRUE(ParseAppManifest()) << GetError();
+  ASSERT_TRUE(ValidateAppManifest()) << GetError();
+  std::shared_ptr<const wgt::parse::AccountInfo> data =
+      std::static_pointer_cast<const wgt::parse::AccountInfo>(
+          GetManifestData(wgt::parse::AccountInfo::Key()));
+  ASSERT_TRUE(!!data);
+  ASSERT_EQ(data->accounts().size(), 1);
+  auto account = data->accounts()[0];
+  ASSERT_EQ(account.icon_paths.size(), 2);
+  ASSERT_EQ(account.icon_paths[0].first, "Account");
+  ASSERT_EQ(account.icon_paths[0].second, "icon");
+  ASSERT_EQ(account.icon_paths[1].first, "AccountSmall");
+  ASSERT_EQ(account.icon_paths[1].second, "icon2");
+}
+
+}  // namespace parser
diff --git a/test/unit_tests/addon_handler_unittest.cc b/test/unit_tests/addon_handler_unittest.cc
new file mode 100644 (file)
index 0000000..2e07082
--- /dev/null
@@ -0,0 +1,88 @@
+// Copyright (c) 2019 Samsung Electronics Co., Ltd All Rights Reserved
+// Use of this source code is governed by an apache 2.0 license that can be
+// found in the LICENSE file.
+
+
+#include <boost/filesystem/path.hpp>
+
+#include <gtest/gtest.h>
+
+#include <manifest_parser/manifest.h>
+#include <manifest_parser/manifest_util.h>
+
+#include <memory>
+
+#include "unit_tests/base_test.h"
+#include "wgt_manifest_handlers/addon_handler.h"
+
+namespace bf = boost::filesystem;
+
+namespace {
+
+const bf::path kXmlDirectory("test_samples/xmls");
+
+struct RegistryPolicyForAddon {
+  static std::unique_ptr<parser::ManifestHandlerRegistry> GetRegistry() {
+    using wgt::parse::AddonHandler;
+    std::unique_ptr<parser::ManifestHandlerRegistry> registry;
+    registry.reset(new parser::ManifestHandlerRegistry());
+    registry->RegisterManifestHandler(new AddonHandler());
+    return registry;
+  }
+};
+
+}  // namespace
+
+namespace parser {
+
+class AddonHandlerTest : public BaseTest<RegistryPolicyForAddon> {
+  void SetUp() override {
+    BaseTest<RegistryPolicyForAddon>::SetUp();
+    std::string error;
+    bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+    std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+    ASSERT_FALSE(!manifest);
+    SetManifest(manifest);
+  }
+};
+
+TEST_F(AddonHandlerTest, Valid) {
+  ASSERT_TRUE(ParseAppManifest()) << GetError();
+  ASSERT_TRUE(ValidateAppManifest()) << GetError();
+  std::shared_ptr<const wgt::parse::AddonInfo> data =
+      std::static_pointer_cast<const wgt::parse::AddonInfo>(
+          GetManifestData(wgt::parse::AddonInfo::Key()));
+  EXPECT_TRUE(!!data);
+}
+
+TEST_F(AddonHandlerTest, PackageNameTest) {
+  ASSERT_TRUE(ParseAppManifest()) << GetError();
+  ASSERT_TRUE(ValidateAppManifest()) << GetError();
+  std::shared_ptr<const wgt::parse::AddonInfo> data =
+      std::static_pointer_cast<const wgt::parse::AddonInfo>(
+          GetManifestData(wgt::parse::AddonInfo::Key()));
+  ASSERT_TRUE(!!data);
+  EXPECT_EQ(data->package(), "package0id");
+}
+
+TEST_F(AddonHandlerTest, RequiredVersionTest) {
+  ASSERT_TRUE(ParseAppManifest()) << GetError();
+  ASSERT_TRUE(ValidateAppManifest()) << GetError();
+  std::shared_ptr<const wgt::parse::AddonInfo> data =
+      std::static_pointer_cast<const wgt::parse::AddonInfo>(
+          GetManifestData(wgt::parse::AddonInfo::Key()));
+  ASSERT_TRUE(!!data);
+  EXPECT_EQ(data->required_version(), "5.5");
+}
+
+TEST_F(AddonHandlerTest, NoPackageNameTest) {
+  ASSERT_TRUE(ParseAppManifest()) << GetError();
+  EXPECT_FALSE(ValidateAppManifest());
+}
+
+TEST_F(AddonHandlerTest, NoRequiredVersionTest) {
+  ASSERT_TRUE(ParseAppManifest()) << GetError();
+  EXPECT_FALSE(ValidateAppManifest());
+}
+
+}  // namespace parser
diff --git a/test/unit_tests/appwidget_handler_unittest.cc b/test/unit_tests/appwidget_handler_unittest.cc
new file mode 100644 (file)
index 0000000..1ff45c2
--- /dev/null
@@ -0,0 +1,427 @@
+// Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+// Use of this source code is governed by an apache 2.0 license that can be
+// found in the LICENSE file.
+
+#include <boost/filesystem/path.hpp>
+
+#include <gtest/gtest.h>
+
+#include <manifest_parser/manifest.h>
+#include <manifest_parser/manifest_util.h>
+
+#include <algorithm>
+#include <memory>
+#include <vector>
+
+#include "unit_tests/base_test.h"
+#include "wgt_manifest_handlers/application_manifest_constants.h"
+#include "wgt_manifest_handlers/appwidget_handler.h"
+#include "wgt_manifest_handlers/tizen_application_handler.h"
+
+namespace bf = boost::filesystem;
+
+namespace {
+
+const bf::path kXmlDirectory("test_samples/xmls");
+
+struct RegistryPolicyForAppWidget {
+  static std::unique_ptr<parser::ManifestHandlerRegistry> GetRegistry() {
+    std::unique_ptr<parser::ManifestHandlerRegistry> registry;
+    registry.reset(new parser::ManifestHandlerRegistry());
+    registry->RegisterManifestHandler(
+        new wgt::parse::TizenApplicationHandler());
+    registry->RegisterManifestHandler(
+        new wgt::parse::AppWidgetHandler());
+    return registry;
+  }
+};
+
+}  // namespace
+
+namespace parser {
+
+class AppWidgetHandlerTest : public BaseTest<RegistryPolicyForAppWidget> {
+};
+
+TEST_F(AppWidgetHandlerTest, dbox1) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::AppWidgetInfo> data =
+      std::static_pointer_cast<const wgt::parse::AppWidgetInfo>(
+          GetManifestData(
+              wgt::application_widget_keys::kTizenAppWidgetFullKey));
+  ASSERT_EQ(data->app_widgets().size(), 1);
+  const wgt::parse::AppWidget& app_widget = *data->app_widgets().begin();
+  ASSERT_EQ(app_widget.auto_launch, true);
+  ASSERT_EQ(app_widget.content_mouse_event, true);
+  ASSERT_EQ(app_widget.content_touch_effect, false);
+  ASSERT_EQ(app_widget.content_src, "box/index.html");
+  ASSERT_EQ(app_widget.id, "aaaaaaa100.dbox1.default");
+  ASSERT_EQ(app_widget.primary, true);
+  ASSERT_EQ(app_widget.label.default_value, "dbox1 default label");
+  ASSERT_EQ(app_widget.label.lang_value_map.size(), 2);
+  ASSERT_EQ(app_widget.label.lang_value_map.count("pl"), 1);
+  ASSERT_EQ(app_widget.label.lang_value_map.find("pl")->second,
+            "dbox1 pl label");
+  ASSERT_EQ(app_widget.label.lang_value_map.count("en"), 1);
+  ASSERT_EQ(app_widget.label.lang_value_map.find("en")->second,
+            "dbox1 en label");
+  ASSERT_EQ(app_widget.icon_src, "icon.png");
+  ASSERT_EQ(app_widget.max_instance, 0);
+  ASSERT_EQ(app_widget.update_period.size(), 1);
+  ASSERT_EQ(app_widget.update_period.at(0), 2000.0);
+
+  ASSERT_EQ(app_widget.content_size.size(), 3);
+  auto size1 = std::find_if(app_widget.content_size.begin(),
+                            app_widget.content_size.end(),
+                            [](const wgt::parse::AppWidgetSize& size) {
+        return size.type == wgt::parse::k1x1;
+      });
+  auto size2 = std::find_if(app_widget.content_size.begin(),
+                            app_widget.content_size.end(),
+                            [](const wgt::parse::AppWidgetSize& size) {
+        return size.type == wgt::parse::k2x1;
+      });
+  auto size3 = std::find_if(app_widget.content_size.begin(),
+                            app_widget.content_size.end(),
+                            [](const wgt::parse::AppWidgetSize& size) {
+        return size.type == wgt::parse::k2x2;
+      });
+  ASSERT_NE(size1, app_widget.content_size.end());
+  ASSERT_NE(size2, app_widget.content_size.end());
+  ASSERT_NE(size3, app_widget.content_size.end());
+}
+
+TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_icon_none) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::AppWidgetInfo> data =
+      std::static_pointer_cast<const wgt::parse::AppWidgetInfo>(
+          GetManifestData(
+              wgt::application_widget_keys::kTizenAppWidgetFullKey));
+  ASSERT_EQ(data->app_widgets().size(), 1);
+  const wgt::parse::AppWidget& app_widget = *data->app_widgets().begin();
+  ASSERT_TRUE(app_widget.icon_src.empty());
+}
+
+TEST_F(AppWidgetHandlerTest, dbox2) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::AppWidgetInfo> data =
+      std::static_pointer_cast<const wgt::parse::AppWidgetInfo>(
+          GetManifestData(
+              wgt::application_widget_keys::kTizenAppWidgetFullKey));
+  ASSERT_EQ(data->app_widgets().size(), 2);
+  auto result1 = std::find_if(data->app_widgets().begin(),
+                              data->app_widgets().end(),
+                              [](const wgt::parse::AppWidget& candidate) {
+        return candidate.id == "aaaaaaa200.dbox2.default";
+      });
+  auto result2 = std::find_if(data->app_widgets().begin(),
+                              data->app_widgets().end(),
+                              [](const wgt::parse::AppWidget& candidate) {
+        return candidate.id == "aaaaaaa200.dbox2.second";
+      });
+  ASSERT_NE(result1, data->app_widgets().end());
+  ASSERT_NE(result2, data->app_widgets().end());
+
+  const wgt::parse::AppWidget& app_widget1 = *result1;
+  ASSERT_EQ(app_widget1.auto_launch, true);
+  ASSERT_EQ(app_widget1.content_mouse_event, true);
+  ASSERT_EQ(app_widget1.content_touch_effect, false);
+  ASSERT_EQ(app_widget1.content_src, "box/index.html");
+  ASSERT_EQ(app_widget1.id, "aaaaaaa200.dbox2.default");
+  ASSERT_EQ(app_widget1.primary, true);
+  ASSERT_EQ(app_widget1.label.default_value, "dbox2 default label");
+  ASSERT_EQ(app_widget1.label.lang_value_map.size(), 2);
+  ASSERT_EQ(app_widget1.label.lang_value_map.count("pl"), 1);
+  ASSERT_EQ(app_widget1.label.lang_value_map.find("pl")->second,
+            "dbox2 pl label");
+  ASSERT_EQ(app_widget1.label.lang_value_map.count("en"), 1);
+  ASSERT_EQ(app_widget1.label.lang_value_map.find("en")->second,
+            "dbox2 en label");
+  ASSERT_EQ(app_widget1.icon_src, "icon.png");
+  ASSERT_EQ(app_widget1.max_instance, 0);
+  ASSERT_EQ(app_widget1.update_period.size(), 1);
+  ASSERT_EQ(app_widget1.update_period.at(0), 2000.0);
+
+  const wgt::parse::AppWidget& app_widget2 = *result2;
+  ASSERT_EQ(app_widget2.auto_launch, false);
+  ASSERT_EQ(app_widget2.content_mouse_event, false);
+  ASSERT_EQ(app_widget2.content_touch_effect, true);
+  ASSERT_EQ(app_widget2.content_src, "box/index2.html");
+  ASSERT_EQ(app_widget2.id, "aaaaaaa200.dbox2.second");
+  ASSERT_EQ(app_widget2.primary, false);
+  ASSERT_EQ(app_widget2.label.default_value, "dbox2 default label 2");
+  ASSERT_EQ(app_widget2.label.lang_value_map.size(), 2);
+  ASSERT_EQ(app_widget2.label.lang_value_map.count("pl"), 1);
+  ASSERT_EQ(app_widget2.label.lang_value_map.find("pl")->second,
+            "dbox2 pl label 2");
+  ASSERT_EQ(app_widget2.label.lang_value_map.count("en"), 1);
+  ASSERT_EQ(app_widget2.label.lang_value_map.find("en")->second,
+            "dbox2 en label 2");
+  ASSERT_EQ(app_widget2.icon_src, "icon2.png");
+  ASSERT_EQ(app_widget2.max_instance, 0);
+  ASSERT_EQ(app_widget2.update_period.size(), 1);
+  ASSERT_EQ(app_widget2.update_period.at(0), 4000.0);
+}
+
+TEST_F(AppWidgetHandlerTest, dbox2_app_widget_primary_two_true) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::AppWidgetInfo> data =
+      std::static_pointer_cast<const wgt::parse::AppWidgetInfo>(
+          GetManifestData(
+              wgt::application_widget_keys::kTizenAppWidgetFullKey));
+  ASSERT_EQ(data->app_widgets().size(), 2);
+  auto result1 = std::find_if(data->app_widgets().begin(),
+                              data->app_widgets().end(),
+                              [](const wgt::parse::AppWidget& candidate) {
+        return candidate.id == "aaaaaaa201.dbox2.default";
+      });
+  auto result2 = std::find_if(data->app_widgets().begin(),
+                              data->app_widgets().end(),
+                              [](const wgt::parse::AppWidget& candidate) {
+        return candidate.id == "aaaaaaa201.dbox2.second";
+      });
+  ASSERT_NE(result1, data->app_widgets().end());
+  ASSERT_NE(result2, data->app_widgets().end());
+
+  const wgt::parse::AppWidget& app_widget1 = *result1;
+  ASSERT_EQ(app_widget1.primary, true);
+
+  const wgt::parse::AppWidget& app_widget2 = *result2;
+  ASSERT_EQ(app_widget2.primary, true);
+}
+
+TEST_F(AppWidgetHandlerTest, dbox1_app_widget_auto_launch_not_bool) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_content_box_size_invalid) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_content_box_size_none) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AppWidgetHandlerTest,
+       dbox1_app_widget_box_content_box_size_use_decoration_invalid) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AppWidgetHandlerTest,
+       dbox1_app_widget_box_content_mouse_event_not_bool) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_content_none) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_content_pd_height_invalid) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_content_pd_height_ood) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_content_pd_src_none) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_content_pd_width_invalid) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_content_src_none) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AppWidgetHandlerTest,
+       dbox1_app_widget_box_content_touch_effect_not_bool) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_content_two) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_icon_src_none) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_icon_two) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AppWidgetHandlerTest, dbox1_app_widget_box_label_none) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AppWidgetHandlerTest, dbox1_app_widget_id_invalid_1) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AppWidgetHandlerTest, dbox1_app_widget_id_invalid_2) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AppWidgetHandlerTest, dbox1_app_widget_id_none) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AppWidgetHandlerTest, dbox1_app_widget_primary_none) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AppWidgetHandlerTest, dbox1_app_widget_primary_not_bool) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AppWidgetHandlerTest, dbox1_app_widget_update_period_invalid) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(AppWidgetHandlerTest, dbox1_app_widget_update_period_ood) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+}  // namespace parser
diff --git a/test/unit_tests/base_test.h b/test/unit_tests/base_test.h
new file mode 100644 (file)
index 0000000..e3ebe1d
--- /dev/null
@@ -0,0 +1,64 @@
+// Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+// Use of this source code is governed by an apache 2.0 license that can be
+// found in the LICENSE file.
+
+#ifndef UNIT_TESTS_BASE_TEST_H_
+#define UNIT_TESTS_BASE_TEST_H_
+
+#include <gtest/gtest.h>
+
+#include <manifest_parser/manifest_parser_impl.h>
+#include <manifest_parser/manifest_parser.h>
+
+#include <memory>
+#include <string>
+
+namespace parser {
+
+/**
+ * Base class for unittests of handlers
+ *
+ * Requires policy class parameter implementing static method:
+ *  - std::unique_ptr<parser::ManifestHandlerRegistry> GetRegistry();
+ * which must return valid registry for given tests.
+ */
+template<typename RegistryPolicy>
+class BaseTest : public testing::Test {
+ public:
+  void SetUp() override {
+    parser_.reset(new ManifestParserImpl(RegistryPolicy::GetRegistry()));
+  }
+  void TearDown() override { parser_.reset(); }
+  void SetManifest(std::shared_ptr<Manifest> manifest) {
+    parser_->SetManifest(manifest);
+  }
+  bool ParseAppManifest() {
+    return parser_->ParseAppManifest(&error_);
+  }
+  bool ValidateAppManifest() {
+    return parser_->ValidateAppManifest(&error_);
+  }
+  std::shared_ptr<const ManifestData> GetManifestData(const std::string& key) {
+    return parser_->GetManifestData(key);
+  }
+
+  std::string GetMyName() const {
+    std::string suite =
+        testing::UnitTest::GetInstance()->current_test_info()->test_case_name();
+    std::string case_name =
+        testing::UnitTest::GetInstance()->current_test_info()->name();
+    return suite + '.' + case_name;
+  }
+
+  const std::string& GetError() const {
+    return error_;
+  }
+
+ private:
+  std::unique_ptr<ManifestParserImpl> parser_;
+  std::string error_;
+};
+
+}  // namespace parser
+
+#endif  // UNIT_TESTS_BASE_TEST_H_
diff --git a/test/unit_tests/content_handler_unittest.cc b/test/unit_tests/content_handler_unittest.cc
new file mode 100644 (file)
index 0000000..63b337a
--- /dev/null
@@ -0,0 +1,370 @@
+// Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
+// Use of this source code is governed by a apache-2.0 license that can be
+// found in the LICENSE file.
+
+#include <boost/filesystem/path.hpp>
+
+#include <gtest/gtest.h>
+
+#include <manifest_parser/manifest.h>
+#include <manifest_parser/manifest_util.h>
+
+#include <memory>
+#include <vector>
+
+#include "unit_tests/base_test.h"
+#include "wgt_manifest_handlers/application_manifest_constants.h"
+#include "wgt_manifest_handlers/content_handler.h"
+
+namespace bf = boost::filesystem;
+
+namespace {
+
+const char kWidgetKey[] = "widget";
+const char kNamespaceKey[] = "@namespace";
+const char kTizenContentTagKey[] = "content";
+const char kTizenNamespacePrefix[] = "http://tizen.org/ns/widgets";
+const char kWidgetNamespacePrefix[] = "http://www.w3.org/ns/widgets";
+const char kTizenContentEncodingKey[] = "@encoding";
+const char kTizenContentTypeKey[] = "@type";
+const char kTizenContentKey[] = "widget.content";
+const char kMimeMainComponent[] = "";
+const char kMimeCharsetComponent[] = "charset";
+const char kDefaultMimeType[] = "text/html";
+const char kDefaultEncoding[] = "UTF-8";
+const char kTizenContentSrcKey[] = "@src";
+
+struct RegistryPolicyForContent {
+  static std::unique_ptr<parser::ManifestHandlerRegistry> GetRegistry() {
+    std::unique_ptr<parser::ManifestHandlerRegistry> registry;
+    registry.reset(new parser::ManifestHandlerRegistry());
+    registry->RegisterManifestHandler(new wgt::parse::ContentHandler());
+    return registry;
+  }
+};
+
+}  // namespace
+
+namespace parser {
+
+class ContentHandlerTest : public BaseTest<RegistryPolicyForContent> {
+};
+
+TEST_F(ContentHandlerTest, NoContentEntry) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  ASSERT_TRUE(!GetManifestData(kTizenContentKey));
+}
+
+TEST_F(ContentHandlerTest, SingleContentEntry) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  content->SetString(kTizenContentSrcKey, "my_index.html");
+  widget->Set(kTizenContentTagKey, content.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::ContentInfo> content_info =
+      std::dynamic_pointer_cast<const wgt::parse::ContentInfo>(
+          GetManifestData(kTizenContentKey));
+  ASSERT_TRUE(!!content_info);
+  ASSERT_EQ(content_info->is_tizen_content(), false);
+  ASSERT_EQ(content_info->src(), "my_index.html");
+}
+
+TEST_F(ContentHandlerTest, SingleContentEntrySrcEmpty) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  content->SetString(kTizenContentSrcKey, "");
+  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kTizenContentTagKey, content.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check empty
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::ContentInfo> content_info =
+      std::dynamic_pointer_cast<const wgt::parse::ContentInfo>(
+          GetManifestData(kTizenContentKey));
+  ASSERT_FALSE(!!content_info);
+}
+
+TEST_F(ContentHandlerTest, SingleTizenContentEntry) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  content->SetString(kTizenContentSrcKey, "http://www.tizen.app/my_index.html");
+  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kTizenContentTagKey, content.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::ContentInfo> content_info =
+      std::dynamic_pointer_cast<const wgt::parse::ContentInfo>(
+          GetManifestData(kTizenContentKey));
+  ASSERT_TRUE(!!content_info);
+  ASSERT_EQ(content_info->is_tizen_content(), true);
+  ASSERT_EQ(content_info->src(), "http://www.tizen.app/my_index.html");
+}
+
+TEST_F(ContentHandlerTest, SingleTizenContentEntryNotURL) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  content->SetString(kTizenContentSrcKey, "relative_NOT_url");
+  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kTizenContentTagKey, content.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check error
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::ContentInfo> content_info =
+      std::dynamic_pointer_cast<const wgt::parse::ContentInfo>(
+          GetManifestData(kTizenContentKey));
+  ASSERT_TRUE(!!content_info);
+  ASSERT_EQ(content_info->is_tizen_content(), true);
+  ASSERT_EQ(content_info->src(), "relative_NOT_url");
+}
+
+TEST_F(ContentHandlerTest, MultipleContentEntryW3CTakeFirst) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<ListValue> list(new ListValue());
+  std::unique_ptr<DictionaryValue> content1(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content2(new DictionaryValue());
+  content1->SetString(kTizenContentSrcKey, "w3c_1_index.html");
+  content2->SetString(kTizenContentSrcKey, "w3c_2_index.html");
+  list->Append(content1.release());
+  list->Append(content2.release());
+  widget->Set(kTizenContentTagKey, list.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::ContentInfo> content_info =
+      std::dynamic_pointer_cast<const wgt::parse::ContentInfo>(
+          GetManifestData(kTizenContentKey));
+  ASSERT_TRUE(!!content_info);
+  ASSERT_EQ(content_info->is_tizen_content(), false);
+  ASSERT_EQ(content_info->src(), "w3c_1_index.html");
+}
+
+TEST_F(ContentHandlerTest, MultipleContentEntryTizenTakeFirst) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<ListValue> list(new ListValue());
+  std::unique_ptr<DictionaryValue> content1(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content2(new DictionaryValue());
+  content1->SetString(kTizenContentSrcKey,
+                      "http://www.tizen.app/tizen_1_index.html");
+  content1->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  content2->SetString(kTizenContentSrcKey,
+                      "http://www.tizen.app/tizen_2_index.html");
+  content2->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  list->Append(content1.release());
+  list->Append(content2.release());
+  widget->Set(kTizenContentTagKey, list.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::ContentInfo> content_info =
+      std::dynamic_pointer_cast<const wgt::parse::ContentInfo>(
+          GetManifestData(kTizenContentKey));
+  ASSERT_TRUE(!!content_info);
+  ASSERT_EQ(content_info->is_tizen_content(), true);
+  ASSERT_EQ(content_info->src(), "http://www.tizen.app/tizen_1_index.html");
+}
+
+TEST_F(ContentHandlerTest, MultipleContentEntryTizenPrioritizedAsFirst) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<ListValue> list(new ListValue());
+  std::unique_ptr<DictionaryValue> content1(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content2(new DictionaryValue());
+  content1->SetString(kTizenContentSrcKey,
+                      "http://www.tizen.app/tizen_index.html");
+  content1->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  content2->SetString(kTizenContentSrcKey, "my_index.html");
+  list->Append(content1.release());
+  list->Append(content2.release());
+  widget->Set(kTizenContentTagKey, list.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::ContentInfo> content_info =
+      std::dynamic_pointer_cast<const wgt::parse::ContentInfo>(
+          GetManifestData(kTizenContentKey));
+  ASSERT_TRUE(!!content_info);
+  ASSERT_EQ(content_info->is_tizen_content(), true);
+  ASSERT_EQ(content_info->src(), "http://www.tizen.app/tizen_index.html");
+}
+
+TEST_F(ContentHandlerTest, MultipleContentEntryTizenPrioritizedAsSecond) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<ListValue> list(new ListValue());
+  std::unique_ptr<DictionaryValue> content1(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content2(new DictionaryValue());
+  content1->SetString(kTizenContentSrcKey, "my_index.html");
+  content2->SetString(kTizenContentSrcKey,
+                      "http://www.tizen.app/tizen_index.html");
+  content2->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  list->Append(content1.release());
+  list->Append(content2.release());
+  widget->Set(kTizenContentTagKey, list.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::ContentInfo> content_info =
+      std::dynamic_pointer_cast<const wgt::parse::ContentInfo>(
+          GetManifestData(kTizenContentKey));
+  ASSERT_TRUE(!!content_info);
+  ASSERT_EQ(content_info->is_tizen_content(), true);
+  ASSERT_EQ(content_info->src(), "http://www.tizen.app/tizen_index.html");
+}
+
+TEST_F(ContentHandlerTest, MultipleContentEntryW3CIgnoreIfNotFirst) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<ListValue> list(new ListValue());
+  std::unique_ptr<DictionaryValue> content1(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content2(new DictionaryValue());
+  content2->SetString(kTizenContentSrcKey, "w3c_2_index.html");
+  list->Append(content1.release());
+  list->Append(content2.release());
+  widget->Set(kTizenContentTagKey, list.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check empty
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::ContentInfo> content_info =
+      std::dynamic_pointer_cast<const wgt::parse::ContentInfo>(
+          GetManifestData(kTizenContentKey));
+  ASSERT_FALSE(!!content_info);
+}
+
+TEST_F(ContentHandlerTest, MultipleContentEntryW3CIgnoreIfFirstEmpty) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<ListValue> list(new ListValue());
+  std::unique_ptr<DictionaryValue> content1(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content2(new DictionaryValue());
+  content1->SetString(kTizenContentSrcKey, "");
+  content2->SetString(kTizenContentSrcKey, "w3c_2_index.html");
+  list->Append(content1.release());
+  list->Append(content2.release());
+  widget->Set(kTizenContentTagKey, list.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check empty
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::ContentInfo> content_info =
+      std::dynamic_pointer_cast<const wgt::parse::ContentInfo>(
+          GetManifestData(kTizenContentKey));
+  ASSERT_FALSE(!!content_info);
+}
+
+TEST_F(ContentHandlerTest, MultipleContentBackToW3CWhenTizenEntryBroken) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<ListValue> list(new ListValue());
+  std::unique_ptr<DictionaryValue> content1(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content2(new DictionaryValue());
+  content1->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  content2->SetString(kTizenContentSrcKey, "w3c_1_index.html");
+  list->Append(content1.release());
+  list->Append(content2.release());
+  widget->Set(kTizenContentTagKey, list.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check w3c when tizen:content broken
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::ContentInfo> content_info =
+      std::dynamic_pointer_cast<const wgt::parse::ContentInfo>(
+          GetManifestData(kTizenContentKey));
+  ASSERT_TRUE(!!content_info);
+  ASSERT_EQ(content_info->is_tizen_content(), false);
+  ASSERT_EQ(content_info->src(), "w3c_1_index.html");
+}
+
+TEST_F(ContentHandlerTest, MultipleMoreContentEntry) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<ListValue> list(new ListValue());
+  std::unique_ptr<DictionaryValue> content1(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content2(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content3(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content4(new DictionaryValue());
+  content1->SetString(kTizenContentSrcKey, "w3c_1_index.html");
+  content2->SetString(kTizenContentSrcKey, "w3c_2_index.html");
+  content3->SetString(kTizenContentSrcKey,
+                      "http://www.tizen.app/tizen_3_index.html");
+  content3->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  content4->SetString(kTizenContentSrcKey,
+                      "http://www.tizen.app/tizen_4_index.html");
+  content4->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  list->Append(content1.release());
+  list->Append(content2.release());
+  list->Append(content3.release());
+  list->Append(content4.release());
+  widget->Set(kTizenContentTagKey, list.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::ContentInfo> content_info =
+      std::dynamic_pointer_cast<const wgt::parse::ContentInfo>(
+          GetManifestData(kTizenContentKey));
+  ASSERT_TRUE(!!content_info);
+  ASSERT_EQ(content_info->is_tizen_content(), true);
+  ASSERT_EQ(content_info->src(), "http://www.tizen.app/tizen_3_index.html");
+}
+
+}  // namespace parser
diff --git a/test/unit_tests/csp_handler_unittest.cc b/test/unit_tests/csp_handler_unittest.cc
new file mode 100644 (file)
index 0000000..f91086c
--- /dev/null
@@ -0,0 +1,80 @@
+// Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+// Use of this source code is governed by an apache 2.0 license that can be
+// found in the LICENSE file.
+
+#include <boost/filesystem/path.hpp>
+
+#include <gtest/gtest.h>
+
+#include <manifest_parser/manifest.h>
+#include <manifest_parser/manifest_util.h>
+
+#include <memory>
+
+#include "unit_tests/base_test.h"
+#include "wgt_manifest_handlers/csp_handler.h"
+
+namespace bf = boost::filesystem;
+
+namespace {
+
+const bf::path kXmlDirectory("test_samples/xmls");
+
+struct RegistryPolicyForCSP {
+  static std::unique_ptr<parser::ManifestHandlerRegistry> GetRegistry() {
+    using wgt::parse::CSPHandler;
+    std::unique_ptr<parser::ManifestHandlerRegistry> registry;
+    registry.reset(new parser::ManifestHandlerRegistry());
+    registry->RegisterManifestHandler(
+        new CSPHandler(CSPHandler::SecurityType::CSP));
+    registry->RegisterManifestHandler(
+        new CSPHandler(CSPHandler::SecurityType::CSP_REPORT_ONLY));
+    return registry;
+  }
+};
+
+}  // namespace
+
+namespace parser {
+
+class CSPHandlerTest : public BaseTest<RegistryPolicyForCSP> {
+  void SetUp() override {
+    BaseTest<RegistryPolicyForCSP>::SetUp();
+    std::string error;
+    bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+    std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+    ASSERT_FALSE(!manifest);
+    SetManifest(manifest);
+  }
+};
+
+TEST_F(CSPHandlerTest, InvalidNamespace) {
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::CSPInfo> data =
+      std::static_pointer_cast<const wgt::parse::CSPInfo>(
+          GetManifestData(wgt::parse::CSPInfo::Key()));
+  ASSERT_TRUE(!data);
+  std::shared_ptr<const wgt::parse::CSPInfo> data_report_only =
+      std::static_pointer_cast<const wgt::parse::CSPInfo>(
+          GetManifestData(wgt::parse::CSPInfo::Report_only_key()));
+  ASSERT_TRUE(!data_report_only);
+}
+
+TEST_F(CSPHandlerTest, Valid) {
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::CSPInfo> data =
+      std::static_pointer_cast<const wgt::parse::CSPInfo>(
+          GetManifestData(wgt::parse::CSPInfo::Key()));
+  ASSERT_TRUE(!!data);
+  ASSERT_EQ(data->security_rules(), "script-src 'self'");
+  std::shared_ptr<const wgt::parse::CSPInfo> data_report_only =
+      std::static_pointer_cast<const wgt::parse::CSPInfo>(
+          GetManifestData(wgt::parse::CSPInfo::Report_only_key()));
+  ASSERT_TRUE(!!data_report_only);
+  ASSERT_EQ(data_report_only->security_rules(),
+      "script-src 'self'; report-uri=\"http://example.com/report.cgi\"");
+}
+
+}  // namespace parser
diff --git a/test/unit_tests/launch_screen_handler_unittest.cc b/test/unit_tests/launch_screen_handler_unittest.cc
new file mode 100644 (file)
index 0000000..56ff53b
--- /dev/null
@@ -0,0 +1,319 @@
+// Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+// Use of this source code is governed by an apache 2.0 license that can be
+// found in the LICENSE file.
+
+#include <boost/filesystem/path.hpp>
+
+#include <gtest/gtest.h>
+
+#include <manifest_parser/manifest.h>
+#include <manifest_parser/manifest_util.h>
+
+#include <memory>
+#include <vector>
+
+#include "unit_tests/base_test.h"
+#include "wgt_manifest_handlers/application_manifest_constants.h"
+#include "wgt_manifest_handlers/launch_screen_handler.h"
+
+namespace bf = boost::filesystem;
+
+namespace {
+
+const bf::path kXmlDirectory("test_samples/xmls");
+
+struct RegistryPolicyForLaunchScreen {
+  static std::unique_ptr<parser::ManifestHandlerRegistry> GetRegistry() {
+    std::unique_ptr<parser::ManifestHandlerRegistry> registry;
+    registry.reset(new parser::ManifestHandlerRegistry());
+    registry->RegisterManifestHandler(new wgt::parse::LaunchScreenHandler());
+    return registry;
+  }
+};
+
+}  // namespace
+
+namespace parser {
+
+class LaunchScreenHandlerTest : public BaseTest<RegistryPolicyForLaunchScreen> {
+};
+
+TEST_F(LaunchScreenHandlerTest, Valid) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+
+  std::shared_ptr<const wgt::parse::LaunchScreenInfo> data =
+       std::static_pointer_cast<const wgt::parse::LaunchScreenInfo>(
+           GetManifestData(wgt::parse::LaunchScreenInfo::Key()));
+  ASSERT_EQ(wgt::parse::ReadyWhen::FIRSTPAINT, data->ready_when());
+
+  std::map<wgt::parse::ScreenOrientation, wgt::parse::LaunchScreenData>
+      testData = data->launch_screen_data();
+  ASSERT_EQ(1, testData.size());
+
+  wgt::parse::LaunchScreenData launchData =
+      testData.find(wgt::parse::ScreenOrientation::AUTO)->second;
+  std::vector<std::pair<std::string, boost::optional<int>>> strPair =
+      launchData.background_images;
+  ASSERT_EQ(1, strPair.size());
+  ASSERT_EQ("bg_image.png", strPair[0].first);
+  ASSERT_EQ(boost::none, strPair[0].second);
+
+  ASSERT_EQ(255, launchData.background_color.get()->red);
+  ASSERT_EQ(0, launchData.background_color.get()->green);
+  ASSERT_EQ(0, launchData.background_color.get()->blue);
+
+  strPair = launchData.images;
+  ASSERT_EQ(1, strPair.size());
+  ASSERT_EQ("default_image.gif", strPair[0].first);
+  ASSERT_EQ(boost::none, strPair[0].second);
+
+  std::vector<std::string> strData = launchData.image_border;
+  ASSERT_EQ(6, strData.size());
+  ASSERT_EQ("30px", strData[0]);
+  ASSERT_EQ("30px", strData[1]);
+  ASSERT_EQ("20px", strData[2]);
+  ASSERT_EQ("10px", strData[3]);
+  ASSERT_EQ("repeat", strData[4]);
+  ASSERT_EQ("round", strData[5]);
+}
+
+TEST_F(LaunchScreenHandlerTest, ValidMultiScreenOrientation) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+
+  std::shared_ptr<const wgt::parse::LaunchScreenInfo> data =
+       std::static_pointer_cast<const wgt::parse::LaunchScreenInfo>(
+           GetManifestData(wgt::parse::LaunchScreenInfo::Key()));
+  ASSERT_EQ(wgt::parse::ReadyWhen::FIRSTPAINT, data->ready_when());
+
+  std::map<wgt::parse::ScreenOrientation, wgt::parse::LaunchScreenData>
+      testData = data->launch_screen_data();
+  ASSERT_EQ(3, testData.size());
+
+  wgt::parse::LaunchScreenData launchData =
+      testData.find(wgt::parse::ScreenOrientation::AUTO)->second;
+  ASSERT_EQ(255, launchData.background_color.get()->red);
+  ASSERT_EQ(0, launchData.background_color.get()->green);
+  ASSERT_EQ(0, launchData.background_color.get()->blue);
+
+  launchData = testData.find(wgt::parse::ScreenOrientation::PORTRAIT)->second;
+  ASSERT_EQ(0, launchData.background_color.get()->red);
+  ASSERT_EQ(255, launchData.background_color.get()->green);
+  ASSERT_EQ(0, launchData.background_color.get()->blue);
+
+  launchData = testData.find(wgt::parse::ScreenOrientation::LANDSCAPE)->second;
+  ASSERT_EQ(0, launchData.background_color.get()->red);
+  ASSERT_EQ(0, launchData.background_color.get()->green);
+  ASSERT_EQ(255, launchData.background_color.get()->blue);
+}
+
+TEST_F(LaunchScreenHandlerTest, ValidMultiImages) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+
+  std::shared_ptr<const wgt::parse::LaunchScreenInfo> data =
+       std::static_pointer_cast<const wgt::parse::LaunchScreenInfo>(
+           GetManifestData(wgt::parse::LaunchScreenInfo::Key()));
+  ASSERT_EQ(wgt::parse::ReadyWhen::FIRSTPAINT, data->ready_when());
+
+  std::map<wgt::parse::ScreenOrientation, wgt::parse::LaunchScreenData>
+      testData = data->launch_screen_data();
+  ASSERT_EQ(1, testData.size());
+
+  wgt::parse::LaunchScreenData launchData =
+      testData.find(wgt::parse::ScreenOrientation::AUTO)->second;
+  std::vector<std::pair<std::string, boost::optional<int>>> strPair =
+      launchData.images;
+  ASSERT_EQ(2, strPair.size());
+  ASSERT_EQ("default_image.gif", strPair[0].first);
+  ASSERT_EQ(1, strPair[0].second);
+  ASSERT_EQ("default_image2x.jpg", strPair[1].first);
+  ASSERT_EQ(2, strPair[1].second);
+}
+
+TEST_F(LaunchScreenHandlerTest, ValidMultiBackgroundImages) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+
+  std::shared_ptr<const wgt::parse::LaunchScreenInfo> data =
+       std::static_pointer_cast<const wgt::parse::LaunchScreenInfo>(
+           GetManifestData(wgt::parse::LaunchScreenInfo::Key()));
+  ASSERT_EQ(wgt::parse::ReadyWhen::FIRSTPAINT, data->ready_when());
+
+  std::map<wgt::parse::ScreenOrientation, wgt::parse::LaunchScreenData>
+      testData = data->launch_screen_data();
+  ASSERT_EQ(1, testData.size());
+
+  wgt::parse::LaunchScreenData launchData =
+      testData.find(wgt::parse::ScreenOrientation::AUTO)->second;
+  std::vector<std::pair<std::string, boost::optional<int>>> strPair =
+      launchData.background_images;
+  ASSERT_EQ(2, strPair.size());
+  ASSERT_EQ("bg_image.png", strPair[0].first);
+  ASSERT_EQ(1, strPair[0].second);
+  ASSERT_EQ("bg_image2x.bmp", strPair[1].first);
+  ASSERT_EQ(2, strPair[1].second);
+}
+
+TEST_F(LaunchScreenHandlerTest, ValidComplex) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+
+  std::shared_ptr<const wgt::parse::LaunchScreenInfo> data =
+       std::static_pointer_cast<const wgt::parse::LaunchScreenInfo>(
+           GetManifestData(wgt::parse::LaunchScreenInfo::Key()));
+  ASSERT_EQ(wgt::parse::ReadyWhen::FIRSTPAINT, data->ready_when());
+
+  std::map<wgt::parse::ScreenOrientation, wgt::parse::LaunchScreenData>
+      testData = data->launch_screen_data();
+  ASSERT_EQ(3, testData.size());
+
+  wgt::parse::LaunchScreenData launchData =
+      testData.find(wgt::parse::ScreenOrientation::AUTO)->second;
+  std::vector<std::pair<std::string, boost::optional<int>>> strPair =
+      launchData.background_images;
+  ASSERT_EQ(2, strPair.size());
+  ASSERT_EQ("bg_image.png", strPair[0].first);
+  ASSERT_EQ(1, strPair[0].second);
+  ASSERT_EQ("bg_image2x.bmp", strPair[1].first);
+  ASSERT_EQ(2, strPair[1].second);
+
+  ASSERT_EQ(255, launchData.background_color.get()->red);
+  ASSERT_EQ(0, launchData.background_color.get()->green);
+  ASSERT_EQ(0, launchData.background_color.get()->blue);
+
+  strPair = launchData.images;
+  ASSERT_EQ(2, strPair.size());
+  ASSERT_EQ("default_image.gif", strPair[0].first);
+  ASSERT_EQ(1, strPair[0].second);
+  ASSERT_EQ("default_image2x.jpg", strPair[1].first);
+  ASSERT_EQ(2, strPair[1].second);
+
+  std::vector<std::string> strData = launchData.image_border;
+  ASSERT_EQ(6, strData.size());
+  ASSERT_EQ("30px", strData[0]);
+  ASSERT_EQ("30px", strData[1]);
+  ASSERT_EQ("20px", strData[2]);
+  ASSERT_EQ("10px", strData[3]);
+  ASSERT_EQ("repeat", strData[4]);
+  ASSERT_EQ("round", strData[5]);
+
+  launchData = testData.find(wgt::parse::ScreenOrientation::PORTRAIT)->second;
+  strPair = launchData.background_images;
+  ASSERT_EQ(1, strPair.size());
+  ASSERT_EQ("bg_image.png", strPair[0].first);
+  ASSERT_EQ(boost::none, strPair[0].second);
+
+  ASSERT_EQ(0, launchData.background_color.get()->red);
+  ASSERT_EQ(255, launchData.background_color.get()->green);
+  ASSERT_EQ(0, launchData.background_color.get()->blue);
+
+  strPair = launchData.images;
+  ASSERT_EQ(1, strPair.size());
+  ASSERT_EQ("portrait_image.png", strPair[0].first);
+  ASSERT_EQ(boost::none, strPair[0].second);
+
+  strData = launchData.image_border;
+  ASSERT_EQ(1, strData.size());
+  ASSERT_EQ("repeat", strData[0]);
+
+  launchData = testData.find(wgt::parse::ScreenOrientation::LANDSCAPE)->second;
+  strPair = launchData.background_images;
+  ASSERT_EQ(1, strPair.size());
+  ASSERT_EQ("bg_image.png", strPair[0].first);
+  ASSERT_EQ(boost::none, strPair[0].second);
+
+  ASSERT_EQ(0, launchData.background_color.get()->red);
+  ASSERT_EQ(0, launchData.background_color.get()->green);
+  ASSERT_EQ(255, launchData.background_color.get()->blue);
+
+  strPair = launchData.images;
+  ASSERT_EQ(1, strPair.size());
+  ASSERT_EQ("landscape_image.gif", strPair[0].first);
+  ASSERT_EQ(boost::none, strPair[0].second);
+
+  strData = launchData.image_border;
+  ASSERT_EQ(1, strData.size());
+  ASSERT_EQ("repeat", strData[0]);
+}
+
+TEST_F(LaunchScreenHandlerTest, InvalidNamespace) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+
+  ASSERT_FALSE(ParseAppManifest());
+}
+
+TEST_F(LaunchScreenHandlerTest, Empty) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+
+  std::shared_ptr<const wgt::parse::LaunchScreenInfo> data =
+       std::static_pointer_cast<const wgt::parse::LaunchScreenInfo>(
+           GetManifestData(wgt::parse::LaunchScreenInfo::Key()));
+  ASSERT_EQ(wgt::parse::ReadyWhen::FIRSTPAINT, data->ready_when());
+
+  std::map<wgt::parse::ScreenOrientation, wgt::parse::LaunchScreenData>
+      testData = data->launch_screen_data();
+  ASSERT_EQ(0, testData.size());
+}
+
+TEST_F(LaunchScreenHandlerTest, InvalidReadyWhen) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+
+  ASSERT_FALSE(ParseAppManifest());
+}
+
+}  // namespace parser
diff --git a/test/unit_tests/main.cc b/test/unit_tests/main.cc
new file mode 100644 (file)
index 0000000..5f340cd
--- /dev/null
@@ -0,0 +1,25 @@
+// Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
+// Use of this source code is governed by a apache 2.0 license that can be
+// found in the LICENSE file.
+
+#include <gtest/gtest.h>
+#include <gmock/gmock.h>
+
+int main(int argc, char** argv) {
+  int ret = -1;
+  try {
+    testing::InitGoogleTest(&argc, argv);
+  } catch(...) {
+    std::cout << "Exception occurred" << std::endl;
+  }
+
+  try {
+    ret = RUN_ALL_TESTS();
+  } catch (const ::testing::internal::GoogleTestFailureException& e) {
+    ret = -1;
+    std::cout << "GoogleTestFailureException was thrown:" << e.what()
+              << std::endl;
+  }
+
+  return ret;
+}
diff --git a/test/unit_tests/parser_manifest_util_unittest.cc b/test/unit_tests/parser_manifest_util_unittest.cc
new file mode 100644 (file)
index 0000000..44bb28d
--- /dev/null
@@ -0,0 +1,237 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE-xwalk file.
+
+#include <boost/filesystem/fstream.hpp>
+#include <boost/filesystem/path.hpp>
+#include <boost/filesystem/operations.hpp>
+#include <gtest/gtest.h>
+
+#include "manifest_parser/manifest.h"
+#include "manifest_parser/manifest_util.h"
+#include "wgt_manifest_handlers/application_manifest_constants.h"
+
+namespace bf = boost::filesystem;
+
+namespace parser {
+
+class ManifestUtilTest : public testing::Test {
+};
+
+TEST_F(ManifestUtilTest, LoadApplicationWithValidPath) {
+  boost::filesystem::path install_dir("test_samples");
+  ASSERT_TRUE(&install_dir);
+  install_dir /= "good_manifest.xml";
+
+  std::string error;
+  std::shared_ptr<Manifest> manifest(
+      LoadManifest(install_dir.string(), &error));
+  ASSERT_TRUE(error.empty());
+  EXPECT_TRUE(manifest.get());
+
+  std::string app_id;
+  manifest->GetString("widget.application.@id", &app_id);
+  EXPECT_STREQ("nNBDOItqjN.WebSettingSample", app_id.c_str());
+}
+
+TEST_F(ManifestUtilTest,
+       LoadApplicationGivesHelpfullErrorOnMissingManifest) {
+  boost::filesystem::path install_dir("test_samples");
+  ASSERT_TRUE(&install_dir);
+  install_dir /= "bad_manifest.xml";
+  std::string error;
+  std::shared_ptr<Manifest> manifest(
+      LoadManifest(install_dir.string(), &error));
+  ASSERT_FALSE(error.empty());
+  ASSERT_STREQ("Manifest file is missing or unreadable.", error.c_str());
+  EXPECT_FALSE(manifest.get());
+}
+
+// Tests IsPropSupportDir method
+TEST_F(ManifestUtilTest, IsPropSupportDirTest) {
+  xmlChar kWidgetNodeKey[] = "widget";
+  xmlChar kNameNodeKey[] = "name";
+  xmlChar kVersionAttributeKey[] = "version";
+  xmlChar kShortAttributeKey[] = "short";
+  xmlNode node, sec_node;
+  node.name = kWidgetNodeKey;
+  sec_node.name = kNameNodeKey;
+  xmlAttr attr, sec_attr;
+  attr.name = kVersionAttributeKey;
+  sec_attr.name = kShortAttributeKey;
+  ASSERT_TRUE(IsPropSupportDir(&node, &attr));
+  ASSERT_TRUE(IsPropSupportDir(&sec_node, &sec_attr));
+  ASSERT_TRUE(!IsPropSupportDir(&node, &sec_attr));
+  ASSERT_TRUE(!IsPropSupportDir(&sec_node, &attr));
+  ASSERT_TRUE(!IsPropSupportDir(&node, &sec_attr));
+}
+
+// Tests IsElementSupportSpanAndDir method
+TEST_F(ManifestUtilTest, IsElementSupportSpanAndDirTest) {
+  std::map <const char*, bool> nodeNames = {
+    { "name", true },
+    { "description", true },
+    { "author", true },
+    { "license", true },
+    { "badlicense", false }
+  };
+  xmlNode node;
+  for (const auto& p : nodeNames) {
+    node.name = reinterpret_cast<xmlChar*>(const_cast<char*>(p.first));
+    EXPECT_TRUE(IsElementSupportSpanAndDir(&node) == p.second);
+  }
+}
+
+// Tests IsTrimRequiredForElement
+TEST_F(ManifestUtilTest, IsTrimRequiredForElementTest) {
+  std::map<const char*, bool> elements {
+    { "name", true },
+    { "author", true },
+    { "badname", false },
+    { "badauthor", false }
+  };
+  xmlNode node;
+  for (const auto& p : elements) {
+    node.name = reinterpret_cast<xmlChar*>(const_cast<char*>(p.first));
+    EXPECT_TRUE(IsTrimRequiredForElement(&node) == p.second);
+  }
+}
+
+// Tests IsTrimRequiredForProp method
+TEST_F(ManifestUtilTest, IsTrimRequiredForPropTest) {
+  struct node{
+    bool operator <(const node& rhs) const {
+      return node_name_ < rhs.node_name_;
+    }
+    const char* node_name_;
+    const char* attr_name_;
+  };
+
+  std::map<node, bool> nodes = {
+    { {"widget", "id"}, true },
+    { {"widget", "version"}, true },
+    { {"widget", "defaultlocale"}, true },
+    { {"name", "short"}, true },
+    { {"author", "email"}, true },
+    { {"author", "href"}, true },
+    { {"license", "href"}, true },
+    { {"icon", "path"}, true },
+    { {"widget", "email"}, false },
+    { {"name", "path"}, false },
+    { {"author", "id"}, false }
+  };
+
+  xmlNode node;
+  xmlAttr attr;
+  for (const auto& p : nodes) {
+    node.name =
+        reinterpret_cast<xmlChar*>(const_cast<char*>(p.first.node_name_));
+    attr.name =
+        reinterpret_cast<xmlChar*>(const_cast<char*>(p.first.attr_name_));
+    EXPECT_TRUE(IsTrimRequiredForProp(&node, &attr) == p.second);
+  }
+}
+
+// Tests GetNodeDir method with proper values
+TEST_F(ManifestUtilTest, GetNodeDirTestProperValues) {
+  const char* xml = "<widget dir=\"rtl\">"
+                    "<name>ppa emoS</name>"
+                    "</widget>";
+  xmlDoc* doc = xmlParseMemory(xml, strlen(xml));
+  ASSERT_TRUE(doc);
+  xmlNode* root = doc->children;
+  ASSERT_TRUE(root);
+  std::string inherit_dir("ltr");
+  EXPECT_STREQ("rtl", GetNodeDir(root, inherit_dir).c_str());
+}
+
+// Tests GetNodeDir method with default dir
+TEST_F(ManifestUtilTest, GetNodeDirTestDefaultValues) {
+  const char* xml = "<widget>"
+                    "<name>Some app</name>"
+                    "</widget>";
+  xmlDoc* doc = xmlParseMemory(xml, strlen(xml));
+  ASSERT_TRUE(doc);
+  xmlNode* root = doc->children;
+  ASSERT_TRUE(root);
+  std::string inherit_dir("ltr");
+  EXPECT_STREQ("ltr", GetNodeDir(root, inherit_dir).c_str());
+}
+
+// Tests GetNodeText method with rtl text direction
+TEST_F(ManifestUtilTest, GetNodeTextTestXmlElementNode) {
+  const char* xml = "<widget dir=\"rtl\">"
+                    "<name>ppa emoS</name>"
+                    "</widget>";
+  std::map<int, char> control_chars = {
+    { 0, '\xe2' }, { 1, '\x80' }, { 2, '\xab' },
+    { 14, '\xe2' }, { 15, '\x80' }, { 16, '\xac' },
+  };
+  xmlDoc* doc = xmlParseMemory(xml, strlen(xml));
+  ASSERT_TRUE(doc);
+  xmlNode* root = doc->children;
+  ASSERT_TRUE(root);
+  std::string inherit_dir("ltr");
+  std::string s = GetNodeText(root, inherit_dir);
+  for (const auto& p : control_chars)
+    EXPECT_EQ(p.second, s[p.first]);
+}
+
+// Tests GetNodeText method with rtl and ltr text direction
+TEST_F(ManifestUtilTest, GetNodeTextTestTwoXmlElementNodes) {
+  const char* xml = "<widget dir=\"rtl\">"
+                    "<name>ppa emoS</name>"
+                    "<description dir=\"ltr\">Desc</description>"
+                    "</widget>";
+  std::map<int, char> control_chars = {
+    { 0, '\xe2' }, { 1, '\x80' }, { 2, '\xab' },
+    { 14, '\xe2' }, { 15, '\x80' }, { 16, '\xac' },
+    { 17, '\xe2' }, { 18, '\x80' }, { 19, '\xaa' },
+    { 24, '\xe2' }, { 25, '\x80' }, { 26, '\xac' }
+  };
+  xmlDoc* doc = xmlParseMemory(xml, strlen(xml));
+  ASSERT_TRUE(doc);
+  xmlNode* root = doc->children;
+  ASSERT_TRUE(root);
+  std::string inherit_dir("ltr");
+  std::string s = GetNodeText(root, inherit_dir);
+  for (const auto& p : control_chars)
+    EXPECT_EQ(p.second, s[p.first]);
+}
+
+// Tests LoadXMLNode method with proper xml tree
+TEST_F(ManifestUtilTest, LoadXMLNodeTestProperXMLTree) {
+  const char* xml = "<root>"
+                    "<widget dir=\"ltr\">"
+                    "<name short=\"SA\">Some app</name>"
+                    "<description>Desc</description>"
+                    "<author dir=\"rtl\">enoemoS</author>"
+                    "</widget>"
+                    "</root>";
+  std::map<std::string, std::string> expected_vals = {
+    { "widget.@dir", "ltr" },
+    { "widget.name.@short",
+      std::string("\xE2\x80\xAA") + "SA" + "\xE2\x80\xAC" },
+    { "widget.name.#text",
+      std::string("\xE2\x80\xAA") + "Some app" + "\xE2\x80\xAC" },
+    { "widget.description.#text",
+      std::string("\xE2\x80\xAA") + "Desc" + "\xE2\x80\xAC" },
+    { "widget.author.@dir", "rtl" },
+    { "widget.author.#text",
+      std::string("\xE2\x80\xAB") + "enoemoS" + "\xE2\x80\xAC" }
+  };
+
+  xmlDoc* doc = xmlParseMemory(xml, strlen(xml));
+  ASSERT_TRUE(doc);
+  xmlNode* root = doc->children;
+  std::unique_ptr<DictionaryValue> val = LoadXMLNode(root);
+
+  std::string test_str;
+  for (const auto& p : expected_vals) {
+    ASSERT_TRUE(val->GetString(p.first, &test_str));
+    EXPECT_STREQ(p.second.c_str(), test_str.c_str());
+  }
+}
+
+}  // namespace parser
diff --git a/test/unit_tests/service_handler_unittest.cc b/test/unit_tests/service_handler_unittest.cc
new file mode 100644 (file)
index 0000000..de2bf23
--- /dev/null
@@ -0,0 +1,1001 @@
+// Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
+// Use of this source code is governed by a apache-2.0 license that can be
+// found in the LICENSE file.
+
+#include <boost/filesystem/path.hpp>
+
+#include <gtest/gtest.h>
+
+#include <manifest_parser/manifest.h>
+#include <manifest_parser/manifest_util.h>
+
+#include <memory>
+#include <vector>
+
+#include "unit_tests/base_test.h"
+#include "wgt_manifest_handlers/application_manifest_constants.h"
+#include "wgt_manifest_handlers/service_handler.h"
+
+namespace bf = boost::filesystem;
+
+namespace {
+
+const char kWidgetKey[] = "widget";
+const char kTizenServiceKey[] = "widget.service";
+const char kTizenServiceContentKey[] = "content";
+const char kTizenServiceContentSrcKey[] = "@src";
+const char kTizenServiceIdKey[] = "@id";
+const char kTizenNamespacePrefix[] = "http://tizen.org/ns/widgets";
+const char kTizenServiceOnBootKey[] = "@on-boot";
+const char kTizenServiceNameKey[] = "name";
+const char kTizenServiceCategoryNameKey[] = "@name";
+const char kTizenServiceCategoryKey[] = "category";
+const char kTizenServiceIconKey[] = "icon";
+const char kNamespaceKey[] = "@namespace";
+const char kServiceKey[] = "service";
+const char kTizenServiceAutoRestartKey[] = "@auto-restart";
+const char kTizenServiceIconSrcKey[] = "@src";
+const char kTizenServiceDescriptionKey[] = "description";
+const char kTizenServiceMetadataKeyKey[] = "@key";
+const char kTizenServiceMetadataValueKey[] = "@value";
+const char kTizenServiceMetadataKey[] = "metadata";
+const char kXmlLangKey[] = "@lang";
+const char kXmlTextKey[] = "#text";
+
+
+struct RegistryPolicyForService {
+  static std::unique_ptr<parser::ManifestHandlerRegistry> GetRegistry() {
+    std::unique_ptr<parser::ManifestHandlerRegistry> registry;
+    registry.reset(new parser::ManifestHandlerRegistry());
+    registry->RegisterManifestHandler(new wgt::parse::ServiceHandler());
+    return registry;
+  }
+};
+
+}  // namespace
+
+namespace parser {
+
+class ServiceHandlerTest : public BaseTest<RegistryPolicyForService> {
+};
+
+TEST_F(ServiceHandlerTest, NoServiceEntry) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+}
+
+TEST_F(ServiceHandlerTest, SingleServiceEntryDefault) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
+  content->SetString(kTizenServiceContentSrcKey, "service.js");
+  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kXmlTextKey, "name");
+  service->Set(kTizenServiceContentKey, content.release());
+  service->Set(kTizenServiceNameKey, name.release());
+  service->SetString(kTizenServiceIdKey, "correct001.appId");
+  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kServiceKey, service.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
+  std::shared_ptr<const wgt::parse::ServiceList> service_list =
+      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
+          GetManifestData(kTizenServiceKey));
+  ASSERT_TRUE(!!service_list);
+  ASSERT_EQ(service_list->services.size(), 1);
+  ASSERT_EQ(service_list->services[0].id(), "correct001.appId");
+  ASSERT_EQ(service_list->services[0].auto_restart(), false);
+  ASSERT_EQ(service_list->services[0].on_boot(), false);
+  ASSERT_EQ(service_list->services[0].content(), "service.js");
+  ASSERT_EQ(service_list->services[0].names().size(), 1);
+  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
+  ASSERT_EQ(service_list->services[0].categories().size(), 0);
+  ASSERT_EQ(service_list->services[0].metadata_set().size(), 0);
+}
+
+TEST_F(ServiceHandlerTest, SingleServiceEntryOnBootOn) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
+  content->SetString(kTizenServiceContentSrcKey, "service.js");
+  content->SetString(::kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kXmlTextKey, "name");
+  service->Set(kTizenServiceContentKey, content.release());
+  service->Set(kTizenServiceNameKey, name.release());
+  service->SetString(kTizenServiceIdKey, "correct002.appId");
+  service->SetString(kTizenServiceOnBootKey, "true");
+  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kServiceKey, service.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
+  std::shared_ptr<const wgt::parse::ServiceList> service_list =
+      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
+          GetManifestData(kTizenServiceKey));
+  ASSERT_TRUE(!!service_list);
+  ASSERT_EQ(service_list->services.size(), 1);
+  ASSERT_EQ(service_list->services[0].id(), "correct002.appId");
+  ASSERT_EQ(service_list->services[0].auto_restart(), false);
+  ASSERT_EQ(service_list->services[0].on_boot(), true);
+  ASSERT_EQ(service_list->services[0].content(), "service.js");
+  ASSERT_EQ(service_list->services[0].names().size(), 1);
+  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
+}
+
+TEST_F(ServiceHandlerTest, SingleServiceEntryAutoRestartOn) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
+  content->SetString(kTizenServiceContentSrcKey, "service.js");
+  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kXmlTextKey, "name");
+  service->Set(kTizenServiceContentKey, content.release());
+  service->Set(kTizenServiceNameKey, name.release());
+  service->SetString(kTizenServiceIdKey, "correct003.appId");
+  service->SetString(kTizenServiceOnBootKey, "false");
+  service->SetString(kTizenServiceAutoRestartKey, "true");
+  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kServiceKey, service.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
+  std::shared_ptr<const wgt::parse::ServiceList> service_list =
+      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
+          GetManifestData(kTizenServiceKey));
+  ASSERT_TRUE(!!service_list);
+  ASSERT_EQ(service_list->services.size(), 1);
+  ASSERT_EQ(service_list->services[0].id(), "correct003.appId");
+  ASSERT_EQ(service_list->services[0].auto_restart(), true);
+  ASSERT_EQ(service_list->services[0].on_boot(), false);
+  ASSERT_EQ(service_list->services[0].content(), "service.js");
+  ASSERT_EQ(service_list->services[0].names().size(), 1);
+  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
+}
+
+TEST_F(ServiceHandlerTest, SingleServiceEntryWrongId) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
+  content->SetString(kTizenServiceContentSrcKey, "service.js");
+  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kXmlTextKey, "name");
+  service->Set(kTizenServiceContentKey, content.release());
+  service->Set(kTizenServiceNameKey, name.release());
+  service->SetString(kTizenServiceIdKey, "wrongid.appId");
+  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kServiceKey, service.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_FALSE(ValidateAppManifest());
+}
+
+TEST_F(ServiceHandlerTest, SingleServiceEntryIdTypeMismatch) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
+  content->SetString(kTizenServiceContentSrcKey, "service.js");
+  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kXmlTextKey, "name");
+  service->Set(kTizenServiceContentKey, content.release());
+  service->Set(kTizenServiceNameKey, name.release());
+  service->SetInteger(kTizenServiceIdKey, 1410);
+  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kServiceKey, service.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_FALSE(ParseAppManifest());
+}
+
+TEST_F(ServiceHandlerTest, SingleServiceEntryNameMissing) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  content->SetString(kTizenServiceContentSrcKey, "service.js");
+  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  service->Set(kTizenServiceContentKey, content.release());
+  service->SetInteger(kTizenServiceIdKey, 1410);
+  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kServiceKey, service.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_FALSE(ParseAppManifest());
+}
+
+TEST_F(ServiceHandlerTest, SingleServiceEntryIdSingleNameNotInTizen) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
+  content->SetString(kTizenServiceContentSrcKey, "service.js");
+  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kXmlTextKey, "name");
+  service->Set(kTizenServiceContentKey, content.release());
+  service->SetInteger(kTizenServiceIdKey, 1410);
+  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kServiceKey, service.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_FALSE(ParseAppManifest());
+}
+
+TEST_F(ServiceHandlerTest, SingleServiceEntryMultipleNames) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  content->SetString(kTizenServiceContentSrcKey, "service.js");
+  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+
+  std::unique_ptr<ListValue> name_list(new ListValue());
+  for (auto& pair : {std::make_pair(std::string(), "first"),
+                     std::make_pair(std::string("en"), "second"),
+                     std::make_pair(std::string("de"), "third")}) {
+    std::unique_ptr<DictionaryValue> name(new DictionaryValue());
+    name->SetString(kNamespaceKey, kTizenNamespacePrefix);
+    if (!pair.first.empty()) name->SetString(kXmlLangKey, pair.first);
+    name->SetString(kXmlTextKey, pair.second);
+    name_list->Append(name.release());
+  }
+  service->Set(kTizenServiceNameKey, name_list.release());
+
+  service->Set(kTizenServiceContentKey, content.release());
+  service->SetString(kTizenServiceIdKey, "correct003.appId");
+  service->SetString(kTizenServiceOnBootKey, "false");
+  service->SetString(kTizenServiceAutoRestartKey, "true");
+  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kServiceKey, service.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
+  std::shared_ptr<const wgt::parse::ServiceList> service_list =
+      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
+          GetManifestData(kTizenServiceKey));
+  ASSERT_TRUE(!!service_list);
+  ASSERT_EQ(service_list->services.size(), 1);
+  ASSERT_EQ(service_list->services[0].id(), "correct003.appId");
+  ASSERT_EQ(service_list->services[0].auto_restart(), true);
+  ASSERT_EQ(service_list->services[0].on_boot(), false);
+  ASSERT_EQ(service_list->services[0].content(), "service.js");
+  ASSERT_EQ(service_list->services[0].names().size(), 3);
+  ASSERT_EQ(service_list->services[0].names()[0].first, "");
+  ASSERT_EQ(service_list->services[0].names()[0].second, "first");
+  ASSERT_EQ(service_list->services[0].names()[1].first, "en");
+  ASSERT_EQ(service_list->services[0].names()[1].second, "second");
+  ASSERT_EQ(service_list->services[0].names()[2].first, "de");
+  ASSERT_EQ(service_list->services[0].names()[2].second, "third");
+}
+
+TEST_F(ServiceHandlerTest, SingleServiceEntryIdSingleContentNotInTizen) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
+  content->SetString(kTizenServiceContentSrcKey, "service.js");
+  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kXmlTextKey, "name");
+  service->Set(kTizenServiceNameKey, name.release());
+  service->SetInteger(kTizenServiceIdKey, 1410);
+  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kServiceKey, service.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_FALSE(ParseAppManifest());
+}
+
+TEST_F(ServiceHandlerTest, SingleServiceEntryContentMissing) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
+  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kXmlTextKey, "name");
+  service->Set(kTizenServiceNameKey, name.release());
+  service->SetInteger(kTizenServiceIdKey, 1410);
+  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kServiceKey, service.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_FALSE(ParseAppManifest());
+}
+
+TEST_F(ServiceHandlerTest, SingleServiceEntryMultipleContents) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
+
+  std::unique_ptr<ListValue> content_list(new ListValue());
+  for (auto& start_file : {"content1.js", "content2.js"}) {
+    std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+    content->SetString(kTizenServiceContentSrcKey, start_file);
+    content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+    content_list->Append(content.release());
+  }
+  service->Set(kTizenServiceContentKey, content_list.release());
+
+  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kXmlTextKey, "name");
+  service->Set(kTizenServiceNameKey, name.release());
+  service->SetInteger(kTizenServiceIdKey, 1410);
+  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kServiceKey, service.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_FALSE(ParseAppManifest());
+}
+
+TEST_F(ServiceHandlerTest, SingleServiceEntrySingleIcon) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> icon(new DictionaryValue());
+  content->SetString(kTizenServiceContentSrcKey, "service.js");
+  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kXmlTextKey, "name");
+  icon->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  icon->SetString(kTizenServiceIconSrcKey, "my_icon.png");
+  service->Set(kTizenServiceIconKey, icon.release());
+  service->Set(kTizenServiceContentKey, content.release());
+  service->Set(kTizenServiceNameKey, name.release());
+  service->SetString(kTizenServiceIdKey, "correct001.appId");
+  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kServiceKey, service.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
+  std::shared_ptr<const wgt::parse::ServiceList> service_list =
+      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
+          GetManifestData(kTizenServiceKey));
+  ASSERT_TRUE(!!service_list);
+  ASSERT_EQ(service_list->services.size(), 1);
+  ASSERT_EQ(service_list->services[0].id(), "correct001.appId");
+  ASSERT_EQ(service_list->services[0].auto_restart(), false);
+  ASSERT_EQ(service_list->services[0].on_boot(), false);
+  ASSERT_EQ(service_list->services[0].content(), "service.js");
+  ASSERT_EQ(service_list->services[0].names().size(), 1);
+  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
+  ASSERT_EQ(service_list->services[0].icon(), "my_icon.png");
+}
+
+TEST_F(ServiceHandlerTest, SingleServiceEntrySingleIconNotInTizen) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> icon(new DictionaryValue());
+  content->SetString(kTizenServiceContentSrcKey, "service.js");
+  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kXmlTextKey, "name");
+  icon->SetString(kTizenServiceIconSrcKey, "my_icon.png");
+  service->Set(kTizenServiceIconKey, icon.release());
+  service->Set(kTizenServiceContentKey, content.release());
+  service->Set(kTizenServiceNameKey, name.release());
+  service->SetString(kTizenServiceIdKey, "correct001.appId");
+  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kServiceKey, service.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
+  std::shared_ptr<const wgt::parse::ServiceList> service_list =
+      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
+          GetManifestData(kTizenServiceKey));
+  ASSERT_TRUE(!!service_list);
+  ASSERT_EQ(service_list->services.size(), 1);
+  ASSERT_EQ(service_list->services[0].id(), "correct001.appId");
+  ASSERT_EQ(service_list->services[0].auto_restart(), false);
+  ASSERT_EQ(service_list->services[0].on_boot(), false);
+  ASSERT_EQ(service_list->services[0].content(), "service.js");
+  ASSERT_EQ(service_list->services[0].names().size(), 1);
+  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
+  ASSERT_EQ(service_list->services[0].icon(), "");
+}
+
+TEST_F(ServiceHandlerTest, SingleServiceEntryMultipleIcon) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
+  content->SetString(kTizenServiceContentSrcKey, "service.js");
+  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kXmlTextKey, "name");
+
+  std::unique_ptr<ListValue> icon_list(new ListValue());
+  for (auto& icon_value : {"icon1.png", "icon2.png"}) {
+    std::unique_ptr<DictionaryValue> icon(new DictionaryValue());
+    icon->SetString(kNamespaceKey, kTizenNamespacePrefix);
+    icon->SetString(kTizenServiceIconSrcKey, icon_value);
+    icon_list->Append(icon.release());
+  }
+
+  service->Set(kTizenServiceIconKey, icon_list.release());
+  service->Set(kTizenServiceContentKey, content.release());
+  service->Set(kTizenServiceNameKey, name.release());
+  service->SetString(kTizenServiceIdKey, "correct001.appId");
+  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kServiceKey, service.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_FALSE(ParseAppManifest());
+}
+
+TEST_F(ServiceHandlerTest, SingleServiceEntrySingleDescription) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> description(new DictionaryValue());
+  content->SetString(kTizenServiceContentSrcKey, "service.js");
+  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kXmlTextKey, "name");
+  description->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  description->SetString(kXmlTextKey, "my description");
+  service->Set(kTizenServiceDescriptionKey, description.release());
+  service->Set(kTizenServiceContentKey, content.release());
+  service->Set(kTizenServiceNameKey, name.release());
+  service->SetString(kTizenServiceIdKey, "correct001.appId");
+  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kServiceKey, service.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
+  std::shared_ptr<const wgt::parse::ServiceList> service_list =
+      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
+          GetManifestData(kTizenServiceKey));
+  ASSERT_TRUE(!!service_list);
+  ASSERT_EQ(service_list->services.size(), 1);
+  ASSERT_EQ(service_list->services[0].id(), "correct001.appId");
+  ASSERT_EQ(service_list->services[0].auto_restart(), false);
+  ASSERT_EQ(service_list->services[0].on_boot(), false);
+  ASSERT_EQ(service_list->services[0].content(), "service.js");
+  ASSERT_EQ(service_list->services[0].names().size(), 1);
+  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
+  ASSERT_EQ(service_list->services[0].description(), "my description");
+}
+
+TEST_F(ServiceHandlerTest, SingleServiceEntrySingleDescriptionNotInTizen) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> description(new DictionaryValue());
+  content->SetString(kTizenServiceContentSrcKey, "service.js");
+  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kXmlTextKey, "name");
+  description->SetString(kXmlTextKey, "my description");
+  service->Set(kTizenServiceDescriptionKey, description.release());
+  service->Set(kTizenServiceContentKey, content.release());
+  service->Set(kTizenServiceNameKey, name.release());
+  service->SetString(kTizenServiceIdKey, "correct001.appId");
+  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kServiceKey, service.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
+  std::shared_ptr<const wgt::parse::ServiceList> service_list =
+      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
+          GetManifestData(kTizenServiceKey));
+  ASSERT_TRUE(!!service_list);
+  ASSERT_EQ(service_list->services.size(), 1);
+  ASSERT_EQ(service_list->services[0].id(), "correct001.appId");
+  ASSERT_EQ(service_list->services[0].auto_restart(), false);
+  ASSERT_EQ(service_list->services[0].on_boot(), false);
+  ASSERT_EQ(service_list->services[0].content(), "service.js");
+  ASSERT_EQ(service_list->services[0].names().size(), 1);
+  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
+  ASSERT_EQ(service_list->services[0].description(), "");
+}
+
+TEST_F(ServiceHandlerTest, SingleServiceEntryMultipleDescription) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
+  content->SetString(kTizenServiceContentSrcKey, "service.js");
+  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kXmlTextKey, "name");
+
+  std::unique_ptr<ListValue> description_list(new ListValue());
+  for (auto& desc_value : {"1", "2"}) {
+    std::unique_ptr<DictionaryValue> description(new DictionaryValue());
+    description->SetString(kNamespaceKey, kTizenNamespacePrefix);
+    description->SetString(kXmlTextKey, desc_value);
+    description_list->Append(description.release());
+  }
+  service->Set(kTizenServiceDescriptionKey, description_list.release());
+
+  service->Set(kTizenServiceContentKey, content.release());
+  service->Set(kTizenServiceNameKey, name.release());
+  service->SetString(kTizenServiceIdKey, "correct001.appId");
+  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kServiceKey, service.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_FALSE(ParseAppManifest());
+}
+
+TEST_F(ServiceHandlerTest, SingleServiceEntrySingleMetadata) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> metadata(new DictionaryValue());
+  content->SetString(kTizenServiceContentSrcKey, "service.js");
+  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kXmlTextKey, "name");
+  metadata->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  metadata->SetString(kTizenServiceMetadataKeyKey, "unique key");
+  metadata->SetString(kTizenServiceMetadataValueKey, "some value");
+  service->Set(kTizenServiceMetadataKey, metadata.release());
+  service->Set(kTizenServiceContentKey, content.release());
+  service->Set(kTizenServiceNameKey, name.release());
+  service->SetString(kTizenServiceIdKey, "correct001.appId");
+  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kServiceKey, service.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
+  std::shared_ptr<const wgt::parse::ServiceList> service_list =
+      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
+          GetManifestData(kTizenServiceKey));
+  ASSERT_TRUE(!!service_list);
+  ASSERT_EQ(service_list->services.size(), 1);
+  ASSERT_EQ(service_list->services[0].id(), "correct001.appId");
+  ASSERT_EQ(service_list->services[0].auto_restart(), false);
+  ASSERT_EQ(service_list->services[0].on_boot(), false);
+  ASSERT_EQ(service_list->services[0].content(), "service.js");
+  ASSERT_EQ(service_list->services[0].names().size(), 1);
+  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
+  ASSERT_EQ(service_list->services[0].metadata_set().size(), 1);
+  ASSERT_EQ(service_list->services[0].metadata_set()[0].first, "unique key");
+  ASSERT_EQ(service_list->services[0].metadata_set()[0].second, "some value");
+}
+
+TEST_F(ServiceHandlerTest, SingleServiceEntrySingleMetadataNotInTizen) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> metadata(new DictionaryValue());
+  content->SetString(kTizenServiceContentSrcKey, "service.js");
+  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kXmlTextKey, "name");
+  metadata->SetString(kTizenServiceMetadataKeyKey, "unique key");
+  metadata->SetString(kTizenServiceMetadataValueKey, "some value");
+  service->Set(kTizenServiceMetadataKey, metadata.release());
+  service->Set(kTizenServiceContentKey, content.release());
+  service->Set(kTizenServiceNameKey, name.release());
+  service->SetString(kTizenServiceIdKey, "correct001.appId");
+  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kServiceKey, service.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
+  std::shared_ptr<const wgt::parse::ServiceList> service_list =
+      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
+          GetManifestData(kTizenServiceKey));
+  ASSERT_TRUE(!!service_list);
+  ASSERT_EQ(service_list->services.size(), 1);
+  ASSERT_EQ(service_list->services[0].id(), "correct001.appId");
+  ASSERT_EQ(service_list->services[0].auto_restart(), false);
+  ASSERT_EQ(service_list->services[0].on_boot(), false);
+  ASSERT_EQ(service_list->services[0].content(), "service.js");
+  ASSERT_EQ(service_list->services[0].names().size(), 1);
+  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
+  ASSERT_EQ(service_list->services[0].metadata_set().size(), 0);
+}
+
+TEST_F(ServiceHandlerTest, SingleServiceEntryMultipleMetadata) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
+  content->SetString(kTizenServiceContentSrcKey, "service.js");
+  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kXmlTextKey, "name");
+
+  std::unique_ptr<ListValue> metadata_list(new ListValue());
+  std::unique_ptr<DictionaryValue> metadata(new DictionaryValue());
+  metadata->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  metadata->SetString(kTizenServiceMetadataKeyKey, "unique key");
+  metadata->SetString(kTizenServiceMetadataValueKey, "some value");
+  metadata_list->Append(metadata.release());
+  std::unique_ptr<DictionaryValue> metadata2(new DictionaryValue());
+  metadata2->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  metadata2->SetString(kTizenServiceMetadataKeyKey, "unique key 2");
+  metadata_list->Append(metadata2.release());
+  service->Set(kTizenServiceMetadataKey, metadata_list.release());
+
+  service->Set(kTizenServiceContentKey, content.release());
+  service->Set(kTizenServiceNameKey, name.release());
+  service->SetString(kTizenServiceIdKey, "correct001.appId");
+  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kServiceKey, service.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
+  std::shared_ptr<const wgt::parse::ServiceList> service_list =
+      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
+          GetManifestData(kTizenServiceKey));
+  ASSERT_TRUE(!!service_list);
+  ASSERT_EQ(service_list->services.size(), 1);
+  ASSERT_EQ(service_list->services[0].id(), "correct001.appId");
+  ASSERT_EQ(service_list->services[0].auto_restart(), false);
+  ASSERT_EQ(service_list->services[0].on_boot(), false);
+  ASSERT_EQ(service_list->services[0].content(), "service.js");
+  ASSERT_EQ(service_list->services[0].names().size(), 1);
+  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
+  ASSERT_EQ(service_list->services[0].metadata_set().size(), 2);
+  ASSERT_EQ(service_list->services[0].metadata_set()[0].first, "unique key");
+  ASSERT_EQ(service_list->services[0].metadata_set()[0].second, "some value");
+  ASSERT_EQ(service_list->services[0].metadata_set()[1].first, "unique key 2");
+  ASSERT_EQ(service_list->services[0].metadata_set()[1].second, "");
+}
+
+TEST_F(ServiceHandlerTest, SingleServiceEntryMultipleMetadataMixedNamespaces) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
+  content->SetString(kTizenServiceContentSrcKey, "service.js");
+  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kXmlTextKey, "name");
+
+  std::unique_ptr<ListValue> metadata_list(new ListValue());
+
+  std::unique_ptr<DictionaryValue> metadata(new DictionaryValue());
+  metadata->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  metadata->SetString(kTizenServiceMetadataKeyKey, "unique key");
+  metadata->SetString(kTizenServiceMetadataValueKey, "some value");
+  metadata_list->Append(metadata.release());
+
+  std::unique_ptr<DictionaryValue> metadata2(new DictionaryValue());
+  metadata2->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  metadata2->SetString(kTizenServiceMetadataKeyKey, "unique key 2");
+  metadata_list->Append(metadata2.release());
+
+  std::unique_ptr<DictionaryValue> metadata3(new DictionaryValue());
+  metadata3->SetString(kTizenServiceMetadataKeyKey, "unique key 3");
+  metadata_list->Append(metadata3.release());
+
+  service->Set(kTizenServiceMetadataKey, metadata_list.release());
+
+  service->Set(kTizenServiceContentKey, content.release());
+  service->Set(kTizenServiceNameKey, name.release());
+  service->SetString(kTizenServiceIdKey, "correct001.appId");
+  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kServiceKey, service.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
+  std::shared_ptr<const wgt::parse::ServiceList> service_list =
+      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
+          GetManifestData(kTizenServiceKey));
+  ASSERT_TRUE(!!service_list);
+  ASSERT_EQ(service_list->services.size(), 1);
+  ASSERT_EQ(service_list->services[0].id(), "correct001.appId");
+  ASSERT_EQ(service_list->services[0].auto_restart(), false);
+  ASSERT_EQ(service_list->services[0].on_boot(), false);
+  ASSERT_EQ(service_list->services[0].content(), "service.js");
+  ASSERT_EQ(service_list->services[0].names().size(), 1);
+  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
+  ASSERT_EQ(service_list->services[0].metadata_set().size(), 2);
+  ASSERT_EQ(service_list->services[0].metadata_set()[0].first, "unique key");
+  ASSERT_EQ(service_list->services[0].metadata_set()[0].second, "some value");
+  ASSERT_EQ(service_list->services[0].metadata_set()[1].first, "unique key 2");
+  ASSERT_EQ(service_list->services[0].metadata_set()[1].second, "");
+}
+
+TEST_F(ServiceHandlerTest, SingleServiceEntrySingleCategory) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> category(new DictionaryValue());
+  content->SetString(kTizenServiceContentSrcKey, "service.js");
+  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kXmlTextKey, "name");
+  category->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  category->SetString(kTizenServiceCategoryNameKey, "category name");
+  service->Set(kTizenServiceCategoryKey, category.release());
+  service->Set(kTizenServiceContentKey, content.release());
+  service->Set(kTizenServiceNameKey, name.release());
+  service->SetString(kTizenServiceIdKey, "correct001.appId");
+  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kServiceKey, service.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
+  std::shared_ptr<const wgt::parse::ServiceList> service_list =
+      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
+          GetManifestData(kTizenServiceKey));
+  ASSERT_TRUE(!!service_list);
+  ASSERT_EQ(service_list->services.size(), 1);
+  ASSERT_EQ(service_list->services[0].id(), "correct001.appId");
+  ASSERT_EQ(service_list->services[0].auto_restart(), false);
+  ASSERT_EQ(service_list->services[0].on_boot(), false);
+  ASSERT_EQ(service_list->services[0].content(), "service.js");
+  ASSERT_EQ(service_list->services[0].names().size(), 1);
+  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
+  ASSERT_EQ(service_list->services[0].categories().size(), 1);
+  ASSERT_EQ(service_list->services[0].categories()[0], "category name");
+}
+
+TEST_F(ServiceHandlerTest, SingleServiceEntrySingleCategoryNotInTizen) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> category(new DictionaryValue());
+  content->SetString(kTizenServiceContentSrcKey, "service.js");
+  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kXmlTextKey, "name");
+  category->SetString(kTizenServiceCategoryNameKey, "category name");
+  service->Set(kTizenServiceCategoryKey, category.release());
+  service->Set(kTizenServiceContentKey, content.release());
+  service->Set(kTizenServiceNameKey, name.release());
+  service->SetString(kTizenServiceIdKey, "correct001.appId");
+  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kServiceKey, service.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
+  std::shared_ptr<const wgt::parse::ServiceList> service_list =
+      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
+          GetManifestData(kTizenServiceKey));
+  ASSERT_TRUE(!!service_list);
+  ASSERT_EQ(service_list->services.size(), 1);
+  ASSERT_EQ(service_list->services[0].id(), "correct001.appId");
+  ASSERT_EQ(service_list->services[0].auto_restart(), false);
+  ASSERT_EQ(service_list->services[0].on_boot(), false);
+  ASSERT_EQ(service_list->services[0].content(), "service.js");
+  ASSERT_EQ(service_list->services[0].names().size(), 1);
+  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
+  ASSERT_EQ(service_list->services[0].categories().size(), 0);
+}
+
+TEST_F(ServiceHandlerTest, SingleServiceEntryMultipleCategory) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> name(new DictionaryValue());
+  content->SetString(kTizenServiceContentSrcKey, "service.js");
+  content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  name->SetString(kXmlTextKey, "name");
+
+  std::unique_ptr<ListValue> catogory_list(new ListValue());
+  for (auto& name : {"category name 1", "category name 2", "category name 3"}) {
+    std::unique_ptr<DictionaryValue> category(new DictionaryValue());
+    category->SetString(kNamespaceKey, kTizenNamespacePrefix);
+    category->SetString(kTizenServiceCategoryNameKey, name);
+    catogory_list->Append(category.release());
+  }
+  service->Set(kTizenServiceCategoryKey, catogory_list.release());
+
+  service->Set(kTizenServiceContentKey, content.release());
+  service->Set(kTizenServiceNameKey, name.release());
+  service->SetString(kTizenServiceIdKey, "correct001.appId");
+  service->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  widget->Set(kServiceKey, service.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
+  std::shared_ptr<const wgt::parse::ServiceList> service_list =
+      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
+          GetManifestData(kTizenServiceKey));
+  ASSERT_TRUE(!!service_list);
+  ASSERT_EQ(service_list->services.size(), 1);
+  ASSERT_EQ(service_list->services[0].id(), "correct001.appId");
+  ASSERT_EQ(service_list->services[0].auto_restart(), false);
+  ASSERT_EQ(service_list->services[0].on_boot(), false);
+  ASSERT_EQ(service_list->services[0].content(), "service.js");
+  ASSERT_EQ(service_list->services[0].names().size(), 1);
+  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
+  ASSERT_EQ(service_list->services[0].categories().size(), 3);
+  ASSERT_EQ(service_list->services[0].categories()[0], "category name 1");
+  ASSERT_EQ(service_list->services[0].categories()[1], "category name 2");
+  ASSERT_EQ(service_list->services[0].categories()[2], "category name 3");
+}
+
+TEST_F(ServiceHandlerTest, MultipleServiceEntry) {
+  // Set test values
+  std::unique_ptr<DictionaryValue> value(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> widget(new DictionaryValue());
+  std::unique_ptr<ListValue> list(new ListValue());
+  std::unique_ptr<DictionaryValue> service1(new DictionaryValue());
+  std::unique_ptr<DictionaryValue> service2(new DictionaryValue());
+  service1->SetString(kTizenServiceIdKey, "correct004.appId");
+  service1->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  service2->SetString(kTizenServiceIdKey, "correct005.appId");
+  service2->SetString(kNamespaceKey, kTizenNamespacePrefix);
+  for (auto& service : {service1.get(), service2.get()}) {
+    std::unique_ptr<DictionaryValue> content(new DictionaryValue());
+    std::unique_ptr<DictionaryValue> name(new DictionaryValue());
+    content->SetString(kTizenServiceContentSrcKey, "service.js");
+    content->SetString(kNamespaceKey, kTizenNamespacePrefix);
+    name->SetString(kNamespaceKey, kTizenNamespacePrefix);
+    name->SetString(kXmlTextKey, "name");
+    service->Set(kTizenServiceContentKey, content.release());
+    service->Set(kTizenServiceNameKey, name.release());
+  }
+  list->Append(service1.release());
+  list->Append(service2.release());
+  widget->Set(kServiceKey, list.release());
+  value->Set(kWidgetKey, widget.release());
+  std::shared_ptr<Manifest> manifest(new Manifest(std::move(value)));
+  SetManifest(manifest);
+  // Check correctness
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  ASSERT_TRUE(!!GetManifestData(kTizenServiceKey));
+  std::shared_ptr<const wgt::parse::ServiceList> service_list =
+      std::dynamic_pointer_cast<const wgt::parse::ServiceList>(
+          GetManifestData(wgt::parse::ServiceInfo::Key()));
+  ASSERT_TRUE(!!service_list);
+  ASSERT_EQ(service_list->services.size(), 2);
+  ASSERT_EQ(service_list->services[0].id(), "correct004.appId");
+  ASSERT_EQ(service_list->services[1].id(), "correct005.appId");
+  ASSERT_EQ(service_list->services[0].content(), "service.js");
+  ASSERT_EQ(service_list->services[0].names().size(), 1);
+  ASSERT_EQ(service_list->services[0].names()[0].second, "name");
+  ASSERT_EQ(service_list->services[1].content(), "service.js");
+  ASSERT_EQ(service_list->services[1].names().size(), 1);
+  ASSERT_EQ(service_list->services[1].names()[0].second, "name");
+}
+
+}  // namespace parser
diff --git a/test/unit_tests/splash_handler_unittest.cc b/test/unit_tests/splash_handler_unittest.cc
new file mode 100644 (file)
index 0000000..7275d8d
--- /dev/null
@@ -0,0 +1,78 @@
+// Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+// Use of this source code is governed by an apache 2.0 license that can be
+// found in the LICENSE file.
+
+#include <boost/filesystem/path.hpp>
+
+#include <gtest/gtest.h>
+
+#include <manifest_parser/manifest.h>
+#include <manifest_parser/manifest_util.h>
+
+#include <memory>
+#include <vector>
+
+#include "unit_tests/base_test.h"
+#include "wgt_manifest_handlers/application_manifest_constants.h"
+#include "wgt_manifest_handlers/splash_screen_handler.h"
+
+namespace bf = boost::filesystem;
+
+namespace {
+
+const bf::path kXmlDirectory("test_samples/xmls");
+
+struct RegistryPolicyForSplash {
+  static std::unique_ptr<parser::ManifestHandlerRegistry> GetRegistry() {
+    std::unique_ptr<parser::ManifestHandlerRegistry> registry;
+    registry.reset(new parser::ManifestHandlerRegistry());
+    registry->RegisterManifestHandler(new wgt::parse::SplashScreenHandler());
+    return registry;
+  }
+};
+
+}  // namespace
+
+namespace parser {
+
+class SplashHandlerTest : public BaseTest<RegistryPolicyForSplash> {
+};
+
+TEST_F(SplashHandlerTest, InvalidNamespace) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::SplashScreenInfo> data =
+      std::static_pointer_cast<const wgt::parse::SplashScreenInfo>(
+          GetManifestData(wgt::parse::SplashScreenInfo::Key()));
+  ASSERT_TRUE(!data);
+}
+
+TEST_F(SplashHandlerTest, NoSrc) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_FALSE(ParseAppManifest() && ValidateAppManifest());
+}
+
+TEST_F(SplashHandlerTest, Valid) {
+  std::string error;
+  bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+  std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+  ASSERT_FALSE(!manifest);
+  SetManifest(manifest);
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::SplashScreenInfo> data =
+      std::static_pointer_cast<const wgt::parse::SplashScreenInfo>(
+          GetManifestData(wgt::parse::SplashScreenInfo::Key()));
+  ASSERT_EQ(data->src(), "splash.html");
+}
+
+}  // namespace parser
diff --git a/test/unit_tests/test_samples/bad_manifest.xml b/test/unit_tests/test_samples/bad_manifest.xml
new file mode 100644 (file)
index 0000000..26214ca
--- /dev/null
@@ -0,0 +1,8 @@
+<widget id="http://yourdomain/WebSettingSample" version="1.0.0" viewmodes="maximized">
+  <tizen:application id="nNBDOItqjN.WebSettingSample" package="nNBDOItqjN" required_version="2.2"/>
+  <content>index.html</content>
+  <feature>http://tizen.org/feature/screen.size.all</content>
+  <icon>icon.png</icon>
+  <name name="WebSettingSample"/>
+  <tizen:privilege>http://tizen.org/privilege/websetting</tizen:privilege>
+</widget>
diff --git a/test/unit_tests/test_samples/bad_signatures/author-signature.xml b/test/unit_tests/test_samples/bad_signatures/author-signature.xml
new file mode 100644 (file)
index 0000000..d5b9249
--- /dev/null
@@ -0,0 +1,71 @@
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="AuthorSignature">
+<SignedInfo>
+<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></CanonicalizationMethod>
+<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"></SignatureMethod>
+<Reference URI="config.xml">
+<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
+<DigestValue>iEX0LuZs81Q6Du/SkXgbMd+Qa6puMxgyRUCLqhrfpJ8=</DigestValue>
+</Reference>
+<Reference URI="icon.png">
+<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
+<DigestValue>1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs=</DigestValue>
+</Reference>
+<Reference URI="index.html">
+<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
+<DigestValue>rJOIi81O4OG/Gar/hwrjvD623MpScv6TMdurRZgzDf0=</DigestValue>
+</Reference>
+<Reference URI="version.txt">
+<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
+<DigestValue>MjYb9c/C/J56bHY6rlIjfDqkpjFtsUBjLLkco/rcfFY=</DigestValue>
+</Reference>
+<Reference URI="#prop">
+<Transforms>
+<Transform Algorithm="http://www.w3.org/2006/12/xml-c14n11"></Transform>
+</Transforms>
+<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
+<DigestValue>lpo8tUDs054eLlBQXiDPVDVKfw30ZZdtkRs1jd7H5K8=</DigestValue>
+</Reference>
+</SignedInfo>
+<SignatureValue>
+c7Jd7btw6Bi9MxzKVv6JY9xcegxv42DhOzZhyrjz3EMN/60dhcGJClfKBY39FwH6exMajoThyFIW
+djtnp7pqIiQJCJkGRs0vAQThcm8JniVSbUwHMcMw7WjAW5VPsLQZKmEe16YW00YkoT6KfZLC1ySw
+48WNrHrCrTcj6LZRrld=
+</SignatureValue>
+<KeyInfo>
+<X509Data>
+<X509Certificate>
+MIIC2zCCAcOgAwIBAgIGAUudC0tkMA0GCSqGSIb3DQEBBQUAMFYxGjAYBgNVBAoMEVRpemVuIEFz
+c29jaWF0aW9uMRowGAYDVQQLDBFUaXplbiBBc3NvY2lhdGlvbjEcMBoGA1UEAwwTVGl6ZW4gRGV2
+ZWxvcGVycyBDQTAeFw0xMjExMDEwMDAwMDBaFw0xOTAxMDEwMDAwMDBaMFcxCzAJBgNVBAYTAlBM
+MQ8wDQYDVQQHDAZXYXJzYXcxEDAOBgNVBAoMB1NhbXN1bmcxFDASBgNVBAsMC1dlYlBsYXRmb3Jt
+MQ8wDQYDVQQDDAZhdXRob3IwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM0kQ8aPoKnJaBjk
+3ET7XdOS5C3ueSemfA8tYNihWQ3VX95CKX38ARLpaAGRSfOdo2L1vTIBtaO/UWEEl/XKQzqwem22
+A9UuLwl0rJNDeoq5Xz5oJD1z9eA+uuNde6cAcPmxRQDsilnVZNHlpATdDOeKUSs8+Y5UxPDz1c6j
+kUTpAgMBAAGjMjAwMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUF
+BwMDMA0GCSqGSIb3DQEBBQUAA4IBAQC2kGzwMPMgxRrAi3ZaRu+i8x2ApZEWW4Y5uaZ9s7p4483A
+l+RBZ1/zHhkmZaekhCm2YwOpWIkXLiQc2wm9YRq+W1OorrArl/wgxtpO7hajlCxDS3X8GgJqCy7v
+8vQYTBvNXayQaRB496mC9lLZDjRL9ycYnPk55eimL3HEYclbibDjOvks4bdN/fedA8jovir+wA+b
+tIC+GGkiwGco6URdxigydxdpNEwRECCl78YVybf9agKeowXL08kwDZN9DAHCixu76kw1qtpfwm3T
+t/lz7VB1pDFhjzfuG6runH4H257bBYLkJnSBchiNItMuK2zvTVP8HsQmBeOLAFGtsoas
+</X509Certificate>
+<X509Certificate>
+MIIDOTCCAiGgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMRowGAYDVQQKDBFUaXplbiBBc3NvY2lh
+dGlvbjEaMBgGA1UECwwRVGl6ZW4gQXNzb2NpYXRpb24xHjAcBgNVBAMMFVRpemVuIERldmVsb3Bl
+cnMgUm9vdDAeFw0xMjAxMDEwMDAwMDBaFw0yNzAxMDEwMDAwMDBaMFYxGjAYBgNVBAoMEVRpemVu
+IEFzc29jaWF0aW9uMRowGAYDVQQLDBFUaXplbiBBc3NvY2lhdGlvbjEcMBoGA1UEAwwTVGl6ZW4g
+RGV2ZWxvcGVycyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANVGhRGmMIUyBA7o
+PCz8Sxut6z6HNkF4oDIuzuKaMzRYPeWodwe9O0gmqAkToQHfwg2giRhE5GoPld0fq+OYMMwSasCu
+g8dwODx1eDeSYVuOLWRxpAmbTXOsSFi6VoWeyaPEm18JBHvZBsU5YQtgZ6Kp7MqzvQg3pXOxtajj
+vyHxiatJl+xXrHgcXC1wgyG3buty7u/Fi2mvKXJ0PRJcCjjK81dqe/Vr20sRUCrbk02zbm5ggFt/
+jIEhV8wbFRQpliobc7J4dSTKhFfrqGM8rdd54LYhD7gSI1CFSe16pUXfcVR7FhJztRaiGLnCrwBE
+dyTZ248+D4L/qR/D0axb3jcCAwEAAaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOC
+AQEAnOXXQ/1O/QTDHyrmQDtFziqPY3xWlJBqJtEqXiT7Y+Ljpe66e+Ee/OjQMlZe8gu21/8cKklH
+95RxjopMWCVedXDUbWdvS2+CdyvVW/quT2E0tjqIzXDekUTYwwhlPWlGxvfj3VsxqSFq3p8Brl04
+1Gx5RKAGyKVsMfTLhbbwSWwApuBUxYfcNpKwLWGPXkysu+HctY03OKv4/xKBnVWiN8ex/Sgesi0M
++OBAOMdZMPK32uJBTeKFx1xZgTLIhk45V0hPOomPjZloiv0LSS11eyd451ufjW0iHRE7WlpR6EvI
+W6TFyZgMpQq+kg4hWl2SBTf3s2VI8Ygz7gj8TMlClg==
+</X509Certificate>
+</X509Data>
+</KeyInfo>
+<Object Id="prop"><SignatureProperties xmlns:dsp="http://www.w3.org/2009/xmldsig-properties"><SignatureProperty Id="profile" Target="#AuthorSignature"><dsp:Profile URI="http://www.w3.org/ns/widgets-digsig#profile"></dsp:Profile></SignatureProperty><SignatureProperty Id="role" Target="#AuthorSignature"><dsp:Role URI="http://www.w3.org/ns/widgets-digsig#role-author"></dsp:Role></SignatureProperty><SignatureProperty Id="identifier" Target="#AuthorSignature"><dsp:Identifier></dsp:Identifier></SignatureProperty></SignatureProperties></Object>
+</Signature>
diff --git a/test/unit_tests/test_samples/bad_signatures/config.xml b/test/unit_tests/test_samples/bad_signatures/config.xml
new file mode 100644 (file)
index 0000000..7b0bd2d
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/AppInstallersTest" version="1.0.0" viewmodes="maximized">
+    <tizen:application id="ZK6wgb4nwt.AppInstallersTest" package="ZK6wgb4nwt" required_version="2.3"/>
+    <content src="index.html"/>
+    <feature name="http://tizen.org/feature/screen.size.all"/>
+    <icon src="icon.png"/>
+    <name>AppInstallersTest</name>
+    <tizen:profile name="mobile"/>
+</widget>
diff --git a/test/unit_tests/test_samples/bad_signatures/icon.png b/test/unit_tests/test_samples/bad_signatures/icon.png
new file mode 100644 (file)
index 0000000..9765b1b
Binary files /dev/null and b/test/unit_tests/test_samples/bad_signatures/icon.png differ
diff --git a/test/unit_tests/test_samples/bad_signatures/index.html b/test/unit_tests/test_samples/bad_signatures/index.html
new file mode 100644 (file)
index 0000000..d4f1aef
--- /dev/null
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
+    <meta name="description" content="Tizen basic template generated by Tizen Web IDE"/>
+
+    <title>Tizen Web IDE - Tizen - Tizen basic Application</title>
+</head>
+
+<body>
+  <header>
+    <hgroup>
+      <h1>Tizen app</h1>
+      <h2>An empty template of tizen</h2>
+    </hgroup>
+  </header>
+
+  <nav>
+    <ul>
+       <li><a href="#">Home</a></li>
+       <li><a href="#">About Us</a></li>
+       <li><a href="#">Contact Us</a></li>
+    </ul>
+  </nav>
+
+  <article>
+    <p>This is an empty template of Tizen Web Application. Tizen will support multiple device categories:</p>
+    <ul>
+      <li>smartphones, tablets and smart TVs
+      <li>netbooks, in-vehicle infotainment devices
+    </ul>
+    <section>
+      <p>This is a basic section of a document.</p>
+      <p>The following button displays a time using JavaScript.</p>
+      <div id="divbutton1">
+        <button>Clock</button>
+      </div>
+    </section>
+  </article>
+
+  <footer>
+    <p>&copy; 2012 Company Name. All rights reserved.</p>
+  </footer>    
+</body>
+</html>
diff --git a/test/unit_tests/test_samples/bad_signatures/signature1.xml b/test/unit_tests/test_samples/bad_signatures/signature1.xml
new file mode 100644 (file)
index 0000000..12a7d2a
--- /dev/null
@@ -0,0 +1,72 @@
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="DistributorSignature">
+<SignedInfo>
+<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></CanonicalizationMethod>
+<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"></SignatureMethod>
+<Reference URI="author-signature.xml">
+<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
+<DigestValue>opfWp60FUsKzpdQBgTp3x31PB1GzC9mS6M7B6n2m63c=</DigestValue>
+</Reference>
+<Reference URI="config.xml">
+<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
+<DigestValue>iEX0LuZs81Q6Du/SkXgbMd+Qa6puMxgyRUCLqhrfpJ8=</DigestValue>
+</Reference>
+<Reference URI="icon.png">
+<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
+<DigestValue>1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs=</DigestValue>
+</Reference>
+<Reference URI="index.html">
+<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
+<DigestValue>rJOIi81O4OG/Gar/hwrjvD623MpScv6TMdurRZgzDf0=</DigestValue>
+</Reference>
+<Reference URI="version.txt">
+<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
+<DigestValue>MjYb9c/C/J56bHY6rlIjfDqkpjFtsUBjLLkco/rcfFY=</DigestValue>
+</Reference>
+<Reference URI="#prop">
+<Transforms>
+<Transform Algorithm="http://www.w3.org/2006/12/xml-c14n11"></Transform>
+</Transforms>
+<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
+<DigestValue>u/jU3U4Zm5ihTMSjKGlGYbWzDfRkGphPPHx3gJIYEJ4=</DigestValue>
+</Reference>
+</SignedInfo>
+<SignatureValue>
+O6yHkXzPKe+8nGxjh06ivDImxKSKygVOgvZzmKKHVWn879K2K8vY08/f7FXKG+zRXEouXbZd7aip
+IGyOCpulXUzESCQMIiffzMVgTV0Ho+kXx44xbME/XKy7DJYpZOvZFXX1S9ZXvU2BmmgHtWWLS/gc
+sFiYVHpRxLnify3npXF=
+</SignatureValue>
+<KeyInfo>
+<X509Data>
+<X509Certificate>
+MIICmzCCAgQCCQDXI7WLdVZwiTANBgkqhkiG9w0BAQUFADCBjzELMAkGA1UEBhMCS1IxDjAMBgNV
+BAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6ZW4gVGVzdCBDQTEiMCAGA1UE
+CwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEkMCIGA1UEAwwbVGl6ZW4gUHVibGljIERpc3Ry
+aWJ1dG9yIENBMB4XDTEyMTAyOTEzMDMwNFoXDTIyMTAyNzEzMDMwNFowgZMxCzAJBgNVBAYTAktS
+MQ4wDAYDVQQIDAVTdXdvbjEOMAwGA1UEBwwFU3V3b24xFjAUBgNVBAoMDVRpemVuIFRlc3QgQ0Ex
+IjAgBgNVBAsMGVRpemVuIERpc3RyaWJ1dG9yIFRlc3QgQ0ExKDAmBgNVBAMMH1RpemVuIFB1Ymxp
+YyBEaXN0cmlidXRvciBTaWduZXIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALtMvlc5hENK
+90ZdA+y66+Sy0enD1gpZDBh5T9RP0oRsptJv5jjNTseQbQi0SZOdOXb6J7iQdlBCtR343RpIEz8H
+mrBy7mSY7mgwoU4EPpp4CTSUeAuKcmvrNOngTp5Hv7Ngf02TTHOLK3hZLpGayaDviyNZB5PdqQdB
+hokKjzAzAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAvGp1gxxAIlFfhJH1efjb9BJK/rtRkbYn9+Ez
+GEbEULg1svsgnyWisFimI3uFvgI/swzr1eKVY3Sc8MQ3+Fdy3EkbDZ2+WAubhcEkorTWjzWz2fL1
+vKaYjeIsuEX6TVRUugHWudPzcEuQRLQf8ibZWjbQdBmpeQYBMg5x+xKLCJc=
+</X509Certificate>
+<X509Certificate>
+MIICtDCCAh2gAwIBAgIJAMDbehElPNKvMA0GCSqGSIb3DQEBBQUAMIGVMQswCQYDVQQGEwJLUjEO
+MAwGA1UECAwFU3V3b24xDjAMBgNVBAcMBVN1d29uMRYwFAYDVQQKDA1UaXplbiBUZXN0IENBMSMw
+IQYDVQQLDBpUVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEpMCcGA1UEAwwgVGl6ZW4gUHVibGlj
+IERpc3RyaWJ1dG9yIFJvb3QgQ0EwHhcNMTIxMDI5MTMwMjUwWhcNMjIxMDI3MTMwMjUwWjCBjzEL
+MAkGA1UEBhMCS1IxDjAMBgNVBAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6
+ZW4gVGVzdCBDQTEiMCAGA1UECwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEkMCIGA1UEAwwb
+VGl6ZW4gUHVibGljIERpc3RyaWJ1dG9yIENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDe
+OTS/3nXvkDEmsFCJIvRlQ3RKDcxdWJJp625pFqHdmoJBdV+x6jl1raGK2Y1sp2Gdvpjc/z92yzAp
+bE/UVLPh/tRNZPeGhzU4ejDDm7kzdr2f7Ia0U98K+OoY12ucwg7TYNItj9is7Cj4blGfuMDzd2ah
+2AgnCGlwNwV/pv+uVQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBACqJ
+KO33YdoGudwanZIxMdXuxnnD9R6u72ltKk1S4zPfMJJv482CRGCI4FK6djhlsI4i0Lt1SVIJEed+
+yc3qckGm19dW+4xdlkekon7pViEBWuyHw8OWv3RXtTum1+PGHjBJ2eYY4ZKIpz73U/1NC16sTB/0
+VhfnkHwPltmrpYVe
+</X509Certificate>
+</X509Data>
+</KeyInfo>
+<Object Id="prop"><SignatureProperties xmlns:dsp="http://www.w3.org/2009/xmldsig-properties"><SignatureProperty Id="profile" Target="#DistributorSignature"><dsp:Profile URI="http://www.w3.org/ns/widgets-digsig#profile"></dsp:Profile></SignatureProperty><SignatureProperty Id="role" Target="#DistributorSignature"><dsp:Role URI="http://www.w3.org/ns/widgets-digsig#role-distributor"></dsp:Role></SignatureProperty><SignatureProperty Id="identifier" Target="#DistributorSignature"><dsp:Identifier></dsp:Identifier></SignatureProperty></SignatureProperties></Object>
+</Signature>
diff --git a/test/unit_tests/test_samples/bad_signatures/version.txt b/test/unit_tests/test_samples/bad_signatures/version.txt
new file mode 100644 (file)
index 0000000..029d105
--- /dev/null
@@ -0,0 +1 @@
+3.0.130
diff --git a/test/unit_tests/test_samples/good_manifest.xml b/test/unit_tests/test_samples/good_manifest.xml
new file mode 100644 (file)
index 0000000..be0c148
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets"
+  id="http://yourdomain/WebSettingSample" version="1.0.0" viewmodes="maximized">
+    <tizen:application id="nNBDOItqjN.WebSettingSample" package="nNBDOItqjN" required_version="2.2"/>
+    <content src="index.html"/>
+    <feature name="http://tizen.org/feature/screen.size.all"/>
+    <icon src="icon.png"/>
+    <name>WebSettingSample</name>
+    <tizen:privilege name="http://tizen.org/privilege/websetting"/>
+</widget>
diff --git a/test/unit_tests/test_samples/good_signatures/author-signature.xml b/test/unit_tests/test_samples/good_signatures/author-signature.xml
new file mode 100644 (file)
index 0000000..83ef530
--- /dev/null
@@ -0,0 +1,71 @@
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="AuthorSignature">
+<SignedInfo>
+<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></CanonicalizationMethod>
+<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"></SignatureMethod>
+<Reference URI="config.xml">
+<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
+<DigestValue>iEX0LuZs81Q6Du/SkXgbMd+Qa6puMxgyRUCLqhrfpJ8=</DigestValue>
+</Reference>
+<Reference URI="icon.png">
+<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
+<DigestValue>1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs=</DigestValue>
+</Reference>
+<Reference URI="index.html">
+<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
+<DigestValue>rJOIi81O4OG/Gar/hwrjvD623MpScv6TMdurRZgzDf0=</DigestValue>
+</Reference>
+<Reference URI="version.txt">
+<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
+<DigestValue>MjYb9c/C/J56bHY6rlIjfDqkpjFtsUBjLLkco/rcfFY=</DigestValue>
+</Reference>
+<Reference URI="#prop">
+<Transforms>
+<Transform Algorithm="http://www.w3.org/2006/12/xml-c14n11"></Transform>
+</Transforms>
+<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
+<DigestValue>lpo8tUDs054eLlBQXiDPVDVKfw30ZZdtkRs1jd7H5K8=</DigestValue>
+</Reference>
+</SignedInfo>
+<SignatureValue>
+c7Jd7btw6Bi9MxzKVv6JY9xcegxv42DhOzZhyrjz3EMN/60dhcGJClfKBY39FwH6exMajoThyFIW
+djtnp7pqIiQJCJkGRs0vAQThcm8JniVSbUwHMcMw7WjAW5VPsLQZKmEe16YW00YkoT6KfZLC1ySw
+48WNrHrCrTcj6LZRrlc=
+</SignatureValue>
+<KeyInfo>
+<X509Data>
+<X509Certificate>
+MIIC2zCCAcOgAwIBAgIGAUudC0tkMA0GCSqGSIb3DQEBBQUAMFYxGjAYBgNVBAoMEVRpemVuIEFz
+c29jaWF0aW9uMRowGAYDVQQLDBFUaXplbiBBc3NvY2lhdGlvbjEcMBoGA1UEAwwTVGl6ZW4gRGV2
+ZWxvcGVycyBDQTAeFw0xMjExMDEwMDAwMDBaFw0xOTAxMDEwMDAwMDBaMFcxCzAJBgNVBAYTAlBM
+MQ8wDQYDVQQHDAZXYXJzYXcxEDAOBgNVBAoMB1NhbXN1bmcxFDASBgNVBAsMC1dlYlBsYXRmb3Jt
+MQ8wDQYDVQQDDAZhdXRob3IwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM0kQ8aPoKnJaBjk
+3ET7XdOS5C3ueSemfA8tYNihWQ3VX95CKX38ARLpaAGRSfOdo2L1vTIBtaO/UWEEl/XKQzqwem22
+A9UuLwl0rJNDeoq5Xz5oJD1z9eA+uuNde6cAcPmxRQDsilnVZNHlpATdDOeKUSs8+Y5UxPDz1c6j
+kUTpAgMBAAGjMjAwMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUF
+BwMDMA0GCSqGSIb3DQEBBQUAA4IBAQC2kGzwMPMgxRrAi3ZaRu+i8x2ApZEWW4Y5uaZ9s7p4483A
+l+RBZ1/zHhkmZaekhCm2YwOpWIkXLiQc2wm9YRq+W1OorrArl/wgxtpO7hajlCxDS3X8GgJqCy7v
+8vQYTBvNXayQaRB496mC9lLZDjRL9ycYnPk55eimL3HEYclbibDjOvks4bdN/fedA8jovir+wA+b
+tIC+GGkiwGco6URdxigydxdpNEwRECCl78YVybf9agKeowXL08kwDZN9DAHCixu76kw1qtpfwm3T
+t/lz7VB1pDFhjzfuG6runH4H257bBYLkJnSBchiNItMuK2zvTVP8HsQmBeOLAFGtsoas
+</X509Certificate>
+<X509Certificate>
+MIIDOTCCAiGgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMRowGAYDVQQKDBFUaXplbiBBc3NvY2lh
+dGlvbjEaMBgGA1UECwwRVGl6ZW4gQXNzb2NpYXRpb24xHjAcBgNVBAMMFVRpemVuIERldmVsb3Bl
+cnMgUm9vdDAeFw0xMjAxMDEwMDAwMDBaFw0yNzAxMDEwMDAwMDBaMFYxGjAYBgNVBAoMEVRpemVu
+IEFzc29jaWF0aW9uMRowGAYDVQQLDBFUaXplbiBBc3NvY2lhdGlvbjEcMBoGA1UEAwwTVGl6ZW4g
+RGV2ZWxvcGVycyBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANVGhRGmMIUyBA7o
+PCz8Sxut6z6HNkF4oDIuzuKaMzRYPeWodwe9O0gmqAkToQHfwg2giRhE5GoPld0fq+OYMMwSasCu
+g8dwODx1eDeSYVuOLWRxpAmbTXOsSFi6VoWeyaPEm18JBHvZBsU5YQtgZ6Kp7MqzvQg3pXOxtajj
+vyHxiatJl+xXrHgcXC1wgyG3buty7u/Fi2mvKXJ0PRJcCjjK81dqe/Vr20sRUCrbk02zbm5ggFt/
+jIEhV8wbFRQpliobc7J4dSTKhFfrqGM8rdd54LYhD7gSI1CFSe16pUXfcVR7FhJztRaiGLnCrwBE
+dyTZ248+D4L/qR/D0axb3jcCAwEAAaMQMA4wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOC
+AQEAnOXXQ/1O/QTDHyrmQDtFziqPY3xWlJBqJtEqXiT7Y+Ljpe66e+Ee/OjQMlZe8gu21/8cKklH
+95RxjopMWCVedXDUbWdvS2+CdyvVW/quT2E0tjqIzXDekUTYwwhlPWlGxvfj3VsxqSFq3p8Brl04
+1Gx5RKAGyKVsMfTLhbbwSWwApuBUxYfcNpKwLWGPXkysu+HctY03OKv4/xKBnVWiN8ex/Sgesi0M
++OBAOMdZMPK32uJBTeKFx1xZgTLIhk45V0hPOomPjZloiv0LSS11eyd451ufjW0iHRE7WlpR6EvI
+W6TFyZgMpQq+kg4hWl2SBTf3s2VI8Ygz7gj8TMlClg==
+</X509Certificate>
+</X509Data>
+</KeyInfo>
+<Object Id="prop"><SignatureProperties xmlns:dsp="http://www.w3.org/2009/xmldsig-properties"><SignatureProperty Id="profile" Target="#AuthorSignature"><dsp:Profile URI="http://www.w3.org/ns/widgets-digsig#profile"></dsp:Profile></SignatureProperty><SignatureProperty Id="role" Target="#AuthorSignature"><dsp:Role URI="http://www.w3.org/ns/widgets-digsig#role-author"></dsp:Role></SignatureProperty><SignatureProperty Id="identifier" Target="#AuthorSignature"><dsp:Identifier></dsp:Identifier></SignatureProperty></SignatureProperties></Object>
+</Signature>
\ No newline at end of file
diff --git a/test/unit_tests/test_samples/good_signatures/config.xml b/test/unit_tests/test_samples/good_signatures/config.xml
new file mode 100644 (file)
index 0000000..7b0bd2d
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/AppInstallersTest" version="1.0.0" viewmodes="maximized">
+    <tizen:application id="ZK6wgb4nwt.AppInstallersTest" package="ZK6wgb4nwt" required_version="2.3"/>
+    <content src="index.html"/>
+    <feature name="http://tizen.org/feature/screen.size.all"/>
+    <icon src="icon.png"/>
+    <name>AppInstallersTest</name>
+    <tizen:profile name="mobile"/>
+</widget>
diff --git a/test/unit_tests/test_samples/good_signatures/icon.png b/test/unit_tests/test_samples/good_signatures/icon.png
new file mode 100644 (file)
index 0000000..9765b1b
Binary files /dev/null and b/test/unit_tests/test_samples/good_signatures/icon.png differ
diff --git a/test/unit_tests/test_samples/good_signatures/index.html b/test/unit_tests/test_samples/good_signatures/index.html
new file mode 100644 (file)
index 0000000..d4f1aef
--- /dev/null
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
+    <meta name="description" content="Tizen basic template generated by Tizen Web IDE"/>
+
+    <title>Tizen Web IDE - Tizen - Tizen basic Application</title>
+</head>
+
+<body>
+  <header>
+    <hgroup>
+      <h1>Tizen app</h1>
+      <h2>An empty template of tizen</h2>
+    </hgroup>
+  </header>
+
+  <nav>
+    <ul>
+       <li><a href="#">Home</a></li>
+       <li><a href="#">About Us</a></li>
+       <li><a href="#">Contact Us</a></li>
+    </ul>
+  </nav>
+
+  <article>
+    <p>This is an empty template of Tizen Web Application. Tizen will support multiple device categories:</p>
+    <ul>
+      <li>smartphones, tablets and smart TVs
+      <li>netbooks, in-vehicle infotainment devices
+    </ul>
+    <section>
+      <p>This is a basic section of a document.</p>
+      <p>The following button displays a time using JavaScript.</p>
+      <div id="divbutton1">
+        <button>Clock</button>
+      </div>
+    </section>
+  </article>
+
+  <footer>
+    <p>&copy; 2012 Company Name. All rights reserved.</p>
+  </footer>    
+</body>
+</html>
diff --git a/test/unit_tests/test_samples/good_signatures/signature1.xml b/test/unit_tests/test_samples/good_signatures/signature1.xml
new file mode 100644 (file)
index 0000000..5ab592b
--- /dev/null
@@ -0,0 +1,72 @@
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="DistributorSignature">
+<SignedInfo>
+<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></CanonicalizationMethod>
+<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"></SignatureMethod>
+<Reference URI="author-signature.xml">
+<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
+<DigestValue>opfWp60FUsKzpdQBgTp3x31PB1GzC9mS6M7B6n2m63c=</DigestValue>
+</Reference>
+<Reference URI="config.xml">
+<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
+<DigestValue>iEX0LuZs81Q6Du/SkXgbMd+Qa6puMxgyRUCLqhrfpJ8=</DigestValue>
+</Reference>
+<Reference URI="icon.png">
+<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
+<DigestValue>1d0oEZHqPn+QzNzGIHwj9ODby6x9ggFs9uOsav6jPNs=</DigestValue>
+</Reference>
+<Reference URI="index.html">
+<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
+<DigestValue>rJOIi81O4OG/Gar/hwrjvD623MpScv6TMdurRZgzDf0=</DigestValue>
+</Reference>
+<Reference URI="version.txt">
+<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
+<DigestValue>MjYb9c/C/J56bHY6rlIjfDqkpjFtsUBjLLkco/rcfFY=</DigestValue>
+</Reference>
+<Reference URI="#prop">
+<Transforms>
+<Transform Algorithm="http://www.w3.org/2006/12/xml-c14n11"></Transform>
+</Transforms>
+<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></DigestMethod>
+<DigestValue>u/jU3U4Zm5ihTMSjKGlGYbWzDfRkGphPPHx3gJIYEJ4=</DigestValue>
+</Reference>
+</SignedInfo>
+<SignatureValue>
+O6yHkXzPKe+8nGxjh06ivDImxKSKygVOgvZzmKKHVWn879K2K8vY08/f7FXKG+zRXEouXbZd7aip
+IGyOCpulXUzESCQMIiffzMVgTV0Ho+kXx44xbME/XKy7DJYpZOvZFXX1S9ZXvU2BmmgHtWWLS/gc
+sFiYVHpRxLnify3npXE=
+</SignatureValue>
+<KeyInfo>
+<X509Data>
+<X509Certificate>
+MIICmzCCAgQCCQDXI7WLdVZwiTANBgkqhkiG9w0BAQUFADCBjzELMAkGA1UEBhMCS1IxDjAMBgNV
+BAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6ZW4gVGVzdCBDQTEiMCAGA1UE
+CwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEkMCIGA1UEAwwbVGl6ZW4gUHVibGljIERpc3Ry
+aWJ1dG9yIENBMB4XDTEyMTAyOTEzMDMwNFoXDTIyMTAyNzEzMDMwNFowgZMxCzAJBgNVBAYTAktS
+MQ4wDAYDVQQIDAVTdXdvbjEOMAwGA1UEBwwFU3V3b24xFjAUBgNVBAoMDVRpemVuIFRlc3QgQ0Ex
+IjAgBgNVBAsMGVRpemVuIERpc3RyaWJ1dG9yIFRlc3QgQ0ExKDAmBgNVBAMMH1RpemVuIFB1Ymxp
+YyBEaXN0cmlidXRvciBTaWduZXIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALtMvlc5hENK
+90ZdA+y66+Sy0enD1gpZDBh5T9RP0oRsptJv5jjNTseQbQi0SZOdOXb6J7iQdlBCtR343RpIEz8H
+mrBy7mSY7mgwoU4EPpp4CTSUeAuKcmvrNOngTp5Hv7Ngf02TTHOLK3hZLpGayaDviyNZB5PdqQdB
+hokKjzAzAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAvGp1gxxAIlFfhJH1efjb9BJK/rtRkbYn9+Ez
+GEbEULg1svsgnyWisFimI3uFvgI/swzr1eKVY3Sc8MQ3+Fdy3EkbDZ2+WAubhcEkorTWjzWz2fL1
+vKaYjeIsuEX6TVRUugHWudPzcEuQRLQf8ibZWjbQdBmpeQYBMg5x+xKLCJc=
+</X509Certificate>
+<X509Certificate>
+MIICtDCCAh2gAwIBAgIJAMDbehElPNKvMA0GCSqGSIb3DQEBBQUAMIGVMQswCQYDVQQGEwJLUjEO
+MAwGA1UECAwFU3V3b24xDjAMBgNVBAcMBVN1d29uMRYwFAYDVQQKDA1UaXplbiBUZXN0IENBMSMw
+IQYDVQQLDBpUVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEpMCcGA1UEAwwgVGl6ZW4gUHVibGlj
+IERpc3RyaWJ1dG9yIFJvb3QgQ0EwHhcNMTIxMDI5MTMwMjUwWhcNMjIxMDI3MTMwMjUwWjCBjzEL
+MAkGA1UEBhMCS1IxDjAMBgNVBAgMBVN1d29uMQ4wDAYDVQQHDAVTdXdvbjEWMBQGA1UECgwNVGl6
+ZW4gVGVzdCBDQTEiMCAGA1UECwwZVGl6ZW4gRGlzdHJpYnV0b3IgVGVzdCBDQTEkMCIGA1UEAwwb
+VGl6ZW4gUHVibGljIERpc3RyaWJ1dG9yIENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDe
+OTS/3nXvkDEmsFCJIvRlQ3RKDcxdWJJp625pFqHdmoJBdV+x6jl1raGK2Y1sp2Gdvpjc/z92yzAp
+bE/UVLPh/tRNZPeGhzU4ejDDm7kzdr2f7Ia0U98K+OoY12ucwg7TYNItj9is7Cj4blGfuMDzd2ah
+2AgnCGlwNwV/pv+uVQIDAQABoxAwDjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBACqJ
+KO33YdoGudwanZIxMdXuxnnD9R6u72ltKk1S4zPfMJJv482CRGCI4FK6djhlsI4i0Lt1SVIJEed+
+yc3qckGm19dW+4xdlkekon7pViEBWuyHw8OWv3RXtTum1+PGHjBJ2eYY4ZKIpz73U/1NC16sTB/0
+VhfnkHwPltmrpYVe
+</X509Certificate>
+</X509Data>
+</KeyInfo>
+<Object Id="prop"><SignatureProperties xmlns:dsp="http://www.w3.org/2009/xmldsig-properties"><SignatureProperty Id="profile" Target="#DistributorSignature"><dsp:Profile URI="http://www.w3.org/ns/widgets-digsig#profile"></dsp:Profile></SignatureProperty><SignatureProperty Id="role" Target="#DistributorSignature"><dsp:Role URI="http://www.w3.org/ns/widgets-digsig#role-distributor"></dsp:Role></SignatureProperty><SignatureProperty Id="identifier" Target="#DistributorSignature"><dsp:Identifier></dsp:Identifier></SignatureProperty></SignatureProperties></Object>
+</Signature>
\ No newline at end of file
diff --git a/test/unit_tests/test_samples/good_signatures/version.txt b/test/unit_tests/test_samples/good_signatures/version.txt
new file mode 100644 (file)
index 0000000..029d105
--- /dev/null
@@ -0,0 +1 @@
+3.0.130
diff --git a/test/unit_tests/test_samples/tpk-sample-manifest.xml b/test/unit_tests/test_samples/tpk-sample-manifest.xml
new file mode 100644 (file)
index 0000000..c661101
--- /dev/null
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="2.3" package="org.tizen.testapp" version="1.0.0">
+    <author email="tester@samsung.com" href="www.tizen.org">tester</author>
+    <description>This is default description</description>
+    <description xml:lang="en-us">This is test description</description>
+    <ui-application appid="org.tizen.testapp" exec="testapp" multiple="false" nodisplay="false" taskmanage="true" type="capp">
+        <label>testapp</label>
+        <label xml:lang="en-us">Test</label>
+        <icon>testapp.png</icon>
+        <app-control>
+            <mime name="EditMime"/>
+            <operation name="http://tizen.org/appcontrol/operation/edit"/>
+            <uri name="EditUri"/>
+        </app-control>
+        <app-control>
+            <operation name="http://tizen.org/appcontrol/operation/view"/>
+            <uri name="ViewUri"/>
+            <mime name="ViewMime"/>
+        </app-control>
+        <metadata key="metakey1" value="metaval1"/>
+        <metadata key="metakey2" value="metaval2"/>
+        <datacontrol access="ReadOnly" providerid="http://testapp.com/datacontrol/provider/testapp" type="Sql"/>
+        <datacontrol access="ReadOnly" providerid="http://testapp.com/datacontrol/provider/testapp" type="Map"/>
+    </ui-application>
+    <account>
+        <account-provider appid="org.tizen.testapp" multiple-accounts-support="false" providerid="com.samsung">
+            <icon section="account">testapp.png</icon>
+            <icon section="account-small">testapp.png</icon>
+            <label xml:lang="en-gb">account icon</label>
+            <label>Samsung</label>
+            <capability>http://tizen.org/account/capability/calendar</capability>
+            <capability>http://tizen.org/account/capability/photo</capability>
+        </account-provider>
+    </account>
+    <privileges>
+        <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
+        <privilege>http://tizen.org/privilege/packagemanager.info</privilege>
+    </privileges>
+    <feature name="http://tizen.org/feature/camera.front.flash">true</feature>
+    <feature name="http://tizen.org/feature/camera">true</feature>
+    <feature name="http://tizen.org/feature/camera.back.flash">true</feature>
+    <feature name="http://tizen.org/feature/camera.front">true</feature>
+</manifest>
diff --git a/test/unit_tests/test_samples/xmls/AccountHandlerTest.Capability_Many/config.xml b/test/unit_tests/test_samples/xmls/AccountHandlerTest.Capability_Many/config.xml
new file mode 100644 (file)
index 0000000..7f1941e
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <tizen:account multiple-account-support="false">
+    <tizen:display-name>name</tizen:display-name>
+    <tizen:icon section="Account">icon</tizen:icon>
+    <tizen:capability>cap1</tizen:capability>
+    <tizen:capability>cap2</tizen:capability>
+    <tizen:capability>cap3</tizen:capability>
+  </tizen:account>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AccountHandlerTest.Capability_One/config.xml b/test/unit_tests/test_samples/xmls/AccountHandlerTest.Capability_One/config.xml
new file mode 100644 (file)
index 0000000..cd92675
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <tizen:account multiple-account-support="false">
+    <tizen:display-name>name</tizen:display-name>
+    <tizen:icon section="Account">icon</tizen:icon>
+    <tizen:capability>cap1</tizen:capability>
+  </tizen:account>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AccountHandlerTest.Icon_Missing/config.xml b/test/unit_tests/test_samples/xmls/AccountHandlerTest.Icon_Missing/config.xml
new file mode 100644 (file)
index 0000000..687e4e7
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <tizen:account multiple-account-support="false">
+    <tizen:display-name>name</tizen:display-name>
+  </tizen:account>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AccountHandlerTest.Icon_More/config.xml b/test/unit_tests/test_samples/xmls/AccountHandlerTest.Icon_More/config.xml
new file mode 100644 (file)
index 0000000..5b85621
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <tizen:account multiple-account-support="false">
+    <tizen:display-name>name</tizen:display-name>
+    <tizen:icon section="Account">icon</tizen:icon>
+    <tizen:icon section="AccountSmall">icon2</tizen:icon>
+  </tizen:account>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AccountHandlerTest.MAS_False/config.xml b/test/unit_tests/test_samples/xmls/AccountHandlerTest.MAS_False/config.xml
new file mode 100644 (file)
index 0000000..97b02c8
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <tizen:account multiple-account-support="false">
+    <tizen:display-name>name</tizen:display-name>
+    <tizen:icon section="Account">icon</tizen:icon>
+  </tizen:account>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AccountHandlerTest.MAS_Missing/config.xml b/test/unit_tests/test_samples/xmls/AccountHandlerTest.MAS_Missing/config.xml
new file mode 100644 (file)
index 0000000..81a40c7
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <tizen:account>
+    <tizen:display-name>name</tizen:display-name>
+    <tizen:icon section="Account">icon</tizen:icon>
+  </tizen:account>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AccountHandlerTest.MAS_True/config.xml b/test/unit_tests/test_samples/xmls/AccountHandlerTest.MAS_True/config.xml
new file mode 100644 (file)
index 0000000..7b4a52b
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <tizen:account multiple-account-support="true">
+    <tizen:display-name>name</tizen:display-name>
+    <tizen:icon section="Account">icon</tizen:icon>
+  </tizen:account>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AccountHandlerTest.MAS_Wrong/config.xml b/test/unit_tests/test_samples/xmls/AccountHandlerTest.MAS_Wrong/config.xml
new file mode 100644 (file)
index 0000000..5d9a101
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <tizen:account multiple-account-support="wrong">
+    <tizen:display-name>name</tizen:display-name>
+    <tizen:icon section="Account">icon</tizen:icon>
+  </tizen:account>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AccountHandlerTest.Many/config.xml b/test/unit_tests/test_samples/xmls/AccountHandlerTest.Many/config.xml
new file mode 100644 (file)
index 0000000..1d6324a
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <tizen:account multiple-account-support="false">
+    <tizen:display-name>name</tizen:display-name>
+    <tizen:display-name xml:lang="en-GB">name_en_gb</tizen:display-name>
+    <tizen:icon section="Account">icon</tizen:icon>
+  </tizen:account>
+  <tizen:account multiple-account-support="true">
+    <tizen:display-name>name2</tizen:display-name>
+    <tizen:icon section="Account">icon2</tizen:icon>
+    <tizen:icon section="AccountSmall">icon2s</tizen:icon>
+  </tizen:account>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AccountHandlerTest.Name_Missing/config.xml b/test/unit_tests/test_samples/xmls/AccountHandlerTest.Name_Missing/config.xml
new file mode 100644 (file)
index 0000000..7924721
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <tizen:account multiple-account-support="false">
+    <tizen:icon section="Account">icon</tizen:icon>
+  </tizen:account>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AccountHandlerTest.Name_More/config.xml b/test/unit_tests/test_samples/xmls/AccountHandlerTest.Name_More/config.xml
new file mode 100644 (file)
index 0000000..2de53c8
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <tizen:account multiple-account-support="false">
+    <tizen:display-name>name</tizen:display-name>
+    <tizen:display-name xml:lang="en">name_en</tizen:display-name>
+    <tizen:display-name xml:lang="de">name_de</tizen:display-name>
+    <tizen:display-name xml:lang="ru">name_ru</tizen:display-name>
+    <tizen:icon section="Account">icon</tizen:icon>
+  </tizen:account>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AccountHandlerTest.Valid/config.xml b/test/unit_tests/test_samples/xmls/AccountHandlerTest.Valid/config.xml
new file mode 100644 (file)
index 0000000..97b02c8
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <tizen:account multiple-account-support="false">
+    <tizen:display-name>name</tizen:display-name>
+    <tizen:icon section="Account">icon</tizen:icon>
+  </tizen:account>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AddonHandlerTest.NoPackageNameTest/config.xml b/test/unit_tests/test_samples/xmls/AddonHandlerTest.NoPackageNameTest/config.xml
new file mode 100644 (file)
index 0000000..082e5af
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:addon required_version="5.5">
+  </tizen:addon>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AddonHandlerTest.NoRequiredVersionTest/config.xml b/test/unit_tests/test_samples/xmls/AddonHandlerTest.NoRequiredVersionTest/config.xml
new file mode 100644 (file)
index 0000000..2e678d9
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:addon package="package0id">
+  </tizen:addon>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AddonHandlerTest.PackageNameTest/config.xml b/test/unit_tests/test_samples/xmls/AddonHandlerTest.PackageNameTest/config.xml
new file mode 100644 (file)
index 0000000..ee69cf5
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:addon package="package0id" required_version="5.5">
+  </tizen:addon>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AddonHandlerTest.RequiredVersionTest/config.xml b/test/unit_tests/test_samples/xmls/AddonHandlerTest.RequiredVersionTest/config.xml
new file mode 100644 (file)
index 0000000..ee69cf5
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:addon package="package0id" required_version="5.5">
+  </tizen:addon>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AddonHandlerTest.Valid/config.xml b/test/unit_tests/test_samples/xmls/AddonHandlerTest.Valid/config.xml
new file mode 100644 (file)
index 0000000..ee69cf5
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:addon package="package0id" required_version="5.5">
+  </tizen:addon>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1/config.xml
new file mode 100644 (file)
index 0000000..1345024
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa100.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="720" height="200"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa100.dbox1" package="aaaaaaa100" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_auto_launch_not_bool/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_auto_launch_not_bool/config.xml
new file mode 100644 (file)
index 0000000..d3ce80a
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa102.dbox1.default" primary="true" update-period="2000.0" auto-launch="ab12">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="720" height="200"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa102.dbox1" package="aaaaaaa102" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_box_size_invalid/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_box_size_invalid/config.xml
new file mode 100644 (file)
index 0000000..c5d3d1d
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa106.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
+            <tizen:box-size>3x3</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="720" height="200"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa106.dbox1" package="aaaaaaa106" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_box_size_none/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_box_size_none/config.xml
new file mode 100644 (file)
index 0000000..8153a46
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa108.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
+            <tizen:pd src="pd/index.html" width="720" height="200"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa108.dbox1" package="aaaaaaa108" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_box_size_use_decoration_invalid/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_box_size_use_decoration_invalid/config.xml
new file mode 100644 (file)
index 0000000..0db7cee
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa110.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="ab12">2x2</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="720" height="200"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa110.dbox1" package="aaaaaaa110" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_mouse_event_not_bool/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_mouse_event_not_bool/config.xml
new file mode 100644 (file)
index 0000000..3db2289
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa111.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content src="box/index.html" mouse-event="ab12" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="720" height="200"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa111.dbox1" package="aaaaaaa111" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_none/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_none/config.xml
new file mode 100644 (file)
index 0000000..224f9d6
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa103.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa103.dbox1" package="aaaaaaa103" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_pd_height_invalid/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_pd_height_invalid/config.xml
new file mode 100644 (file)
index 0000000..f1124eb
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa112.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="720" height="abc"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa112.dbox1" package="aaaaaaa112" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_pd_height_ood/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_pd_height_ood/config.xml
new file mode 100644 (file)
index 0000000..5616cca
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa113.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="720" height="-500"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa113.dbox1" package="aaaaaaa113" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_pd_src_none/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_pd_src_none/config.xml
new file mode 100644 (file)
index 0000000..a204c27
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa114.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
+            <tizen:pd width="720" height="200"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa114.dbox1" package="aaaaaaa114" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_pd_width_invalid/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_pd_width_invalid/config.xml
new file mode 100644 (file)
index 0000000..ddaf2b4
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa115.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="abc" height="200"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa115.dbox1" package="aaaaaaa115" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_src_none/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_src_none/config.xml
new file mode 100644 (file)
index 0000000..47c0375
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa116.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content mouse-event="true" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="720" height="200"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa116.dbox1" package="aaaaaaa116" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_touch_effect_not_bool/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_touch_effect_not_bool/config.xml
new file mode 100644 (file)
index 0000000..74801fd
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa117.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="ab12">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="720" height="200"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa117.dbox1" package="aaaaaaa117" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_two/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_content_two/config.xml
new file mode 100644 (file)
index 0000000..713f59a
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa105.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="720" height="200"/>
+        </tizen:box-content>
+        <tizen:box-content src="box/index.html" mouse-event="false" touch-effect="true">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="true">2x2</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="730" height="300"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa105.dbox1" package="aaaaaaa105" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_icon_none/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_icon_none/config.xml
new file mode 100644 (file)
index 0000000..121e8cd
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa133.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="720" height="200"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa133.dbox1" package="aaaaaaa133" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_icon_src_none/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_icon_src_none/config.xml
new file mode 100644 (file)
index 0000000..d1ff0ba
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa120.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
+        <tizen:box-icon/>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="720" height="200"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa120.dbox1" package="aaaaaaa120" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_icon_two/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_icon_two/config.xml
new file mode 100644 (file)
index 0000000..b13a850
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa119.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="720" height="200"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa119.dbox1" package="aaaaaaa119" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_label_none/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_box_label_none/config.xml
new file mode 100644 (file)
index 0000000..d789524
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa121.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="720" height="200"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa121.dbox1" package="aaaaaaa121" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_id_invalid_1/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_id_invalid_1/config.xml
new file mode 100644 (file)
index 0000000..1118bc7
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget id="9999999123.dbox1.default" primary="true" update-period="2000.0" auto-launch="true">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="720" height="200"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa123.dbox1" package="aaaaaaa123" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_id_invalid_2/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_id_invalid_2/config.xml
new file mode 100644 (file)
index 0000000..edb9961
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa124.dbox1.the-default" primary="true" update-period="2000.0" auto-launch="true">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="720" height="200"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa124.dbox1" package="aaaaaaa124" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_id_none/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_id_none/config.xml
new file mode 100644 (file)
index 0000000..1475f83
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget primary="true" update-period="2000.0" auto-launch="true">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="720" height="200"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa125.dbox1" package="aaaaaaa125" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_primary_none/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_primary_none/config.xml
new file mode 100644 (file)
index 0000000..c4b8cac
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa128.dbox1.default" update-period="2000.0" auto-launch="true">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="720" height="200"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa128.dbox1" package="aaaaaaa128" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_primary_not_bool/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_primary_not_bool/config.xml
new file mode 100644 (file)
index 0000000..90df03d
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa129.dbox1.default" primary="ab12" update-period="2000.0" auto-launch="true">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="720" height="200"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa129.dbox1" package="aaaaaaa129" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_update_period_invalid/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_update_period_invalid/config.xml
new file mode 100644 (file)
index 0000000..b40e72e
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa130.dbox1.default" primary="true" update-period="ab12" auto-launch="true">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="720" height="200"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa130.dbox1" package="aaaaaaa130" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_update_period_ood/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox1_app_widget_update_period_ood/config.xml
new file mode 100644 (file)
index 0000000..4267dae
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox1" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa131.dbox1.default" primary="true" update-period="1000.0" auto-launch="true">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox1 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox1 en label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="720" height="200"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa131.dbox1" package="aaaaaaa131" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox1</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox2/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox2/config.xml
new file mode 100644 (file)
index 0000000..9c18e5d
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox2" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa200.dbox2.default" primary="true" update-period="2000.0" auto-launch="true">
+        <tizen:box-label>dbox2 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox2 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox2 en label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="720" height="200"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:app-widget id="aaaaaaa200.dbox2.second" primary="false" update-period="4000.0" auto-launch="false">
+        <tizen:box-label>dbox2 default label 2</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox2 pl label 2</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox2 en label 2</tizen:box-label>
+        <tizen:box-icon src="icon2.png"/>
+        <tizen:box-content src="box/index2.html" mouse-event="false" touch-effect="true">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon2.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="true">2x2</tizen:box-size>
+            <tizen:pd src="pd/index2.html" width="740" height="300"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa200.dbox2" package="aaaaaaa200" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox2</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox2_app_widget_primary_two_true/config.xml b/test/unit_tests/test_samples/xmls/AppWidgetHandlerTest.dbox2_app_widget_primary_two_true/config.xml
new file mode 100644 (file)
index 0000000..cce08fd
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets" id="http://yourdomain/dbox2" version="1.0.0">
+    <tizen:app-widget id="aaaaaaa201.dbox2.default" primary="true" update-period="2000.0" auto-launch="true">
+        <tizen:box-label>dbox2 default label</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox2 pl label</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox2 en label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="false">2x2</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="720" height="200"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:app-widget id="aaaaaaa201.dbox2.second" primary="true" update-period="4000.0" auto-launch="false">
+        <tizen:box-label>dbox2 default label 2</tizen:box-label>
+        <tizen:box-label xml:lang="pl">dbox2 pl label 2</tizen:box-label>
+        <tizen:box-label xml:lang="en">dbox2 en label 2</tizen:box-label>
+        <tizen:box-icon src="icon2.png"/>
+        <tizen:box-content src="box/index2.html" mouse-event="false" touch-effect="true">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:box-size preview="icon2.png">2x1</tizen:box-size>
+            <tizen:box-size use-decoration="true">2x2</tizen:box-size>
+            <tizen:pd src="pd/index2.html" width="740" height="300"/>
+        </tizen:box-content>
+    </tizen:app-widget>
+    <tizen:application id="aaaaaaa201.dbox2" package="aaaaaaa201" required_version="2.2"/>
+    <feature name="http://tizen.org/feature/screen.size.normal.720.1280"/>
+    <icon src="icon.png"/>
+    <name>dbox2</name>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/CSPHandlerTest.InvalidNamespace/config.xml b/test/unit_tests/test_samples/xmls/CSPHandlerTest.InvalidNamespace/config.xml
new file mode 100644 (file)
index 0000000..cc66b87
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <content-security-policy>script-src 'self'</content-security-policy>
+  <content-security-policy-report-only>script-src 'self'; report-uri="http://example.com/report.cgi"</content-security-policy-report-only>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/CSPHandlerTest.Valid/config.xml b/test/unit_tests/test_samples/xmls/CSPHandlerTest.Valid/config.xml
new file mode 100644 (file)
index 0000000..6e90b48
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <tizen:content-security-policy>script-src 'self'</tizen:content-security-policy>
+  <tizen:content-security-policy>ignore me</tizen:content-security-policy>
+  <tizen:content-security-policy-report-only>script-src 'self'; report-uri="http://example.com/report.cgi"</tizen:content-security-policy-report-only>
+  <tizen:content-security-policy-report-only>ignore me</tizen:content-security-policy-report-only>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.Empty/config.xml b/test/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.Empty/config.xml
new file mode 100644 (file)
index 0000000..5578f74
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <tizen:launch_screen>
+  </tizen:launch_screen>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.InvalidNamespace/config.xml b/test/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.InvalidNamespace/config.xml
new file mode 100644 (file)
index 0000000..5cb1d0f
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <launch_screen ready_when="first-paint">
+    <tizen:ls_default background_color="#ff0000"/>
+  </launch_screen>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.InvalidReadyWhen/config.xml b/test/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.InvalidReadyWhen/config.xml
new file mode 100644 (file)
index 0000000..fc18660
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <tizen:launch_screen ready_when="invalid-option">
+    <tizen:ls_default background_color="#ff0000"/>
+  </tizen:launch_screen>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.Valid/config.xml b/test/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.Valid/config.xml
new file mode 100644 (file)
index 0000000..52fe372
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <tizen:launch_screen ready_when="first-paint">
+    <tizen:ls_default background_color="#ff0000" background_image="bg_image.png"
+                        image="default_image.gif"
+                        image_border="30px 30px 20px 10px repeat round"/>
+  </tizen:launch_screen>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.ValidComplex/config.xml b/test/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.ValidComplex/config.xml
new file mode 100644 (file)
index 0000000..777d72b
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <tizen:launch_screen ready_when="first-paint">
+    <tizen:ls_default background_color="#ff0000" background_image="bg_image.png 1x, bg_image2x.bmp 2x"
+                        image="default_image.gif 1x, default_image2x.jpg 2x"
+                        image_border="30px 30px 20px 10px repeat round"/>
+    <tizen:ls_portrait background_color="#00ff00" background_image="bg_image.png"
+                        image="portrait_image.png" image_border="repeat"/>
+    <tizen:ls_landscape background_color="#0000ff" background_image="bg_image.png"
+                        image="landscape_image.gif" image_border="repeat"/>
+  </tizen:launch_screen>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.ValidMultiBackgroundImages/config.xml b/test/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.ValidMultiBackgroundImages/config.xml
new file mode 100644 (file)
index 0000000..c789d8b
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <tizen:launch_screen ready_when="first-paint">
+    <tizen:ls_default background_image="bg_image.png 1x, bg_image2x.bmp 2x"/>
+  </tizen:launch_screen>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.ValidMultiImages/config.xml b/test/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.ValidMultiImages/config.xml
new file mode 100644 (file)
index 0000000..8a34fba
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <tizen:launch_screen ready_when="first-paint">
+    <tizen:ls_default image="default_image.gif 1x, default_image2x.jpg 2x"/>
+  </tizen:launch_screen>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.ValidMultiScreenOrientation/config.xml b/test/unit_tests/test_samples/xmls/LaunchScreenHandlerTest.ValidMultiScreenOrientation/config.xml
new file mode 100644 (file)
index 0000000..d82042c
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <tizen:launch_screen ready_when="first-paint">
+    <tizen:ls_default background_color="#ff0000"/>
+    <tizen:ls_portrait background_color="#00ff00"/>
+    <tizen:ls_landscape background_color="#0000ff"/>
+  </tizen:launch_screen>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/SplashHandlerTest.InvalidNamespace/config.xml b/test/unit_tests/test_samples/xmls/SplashHandlerTest.InvalidNamespace/config.xml
new file mode 100644 (file)
index 0000000..2f3f515
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <splash src="splash.html" />
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/SplashHandlerTest.NoSrc/config.xml b/test/unit_tests/test_samples/xmls/SplashHandlerTest.NoSrc/config.xml
new file mode 100644 (file)
index 0000000..42c61ba
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <tizen:splash />
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/SplashHandlerTest.Valid/config.xml b/test/unit_tests/test_samples/xmls/SplashHandlerTest.Valid/config.xml
new file mode 100644 (file)
index 0000000..bbd2a26
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <tizen:splash src="splash.html"/>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/WarpHandlerTest.InvalidNamespace/config.xml b/test/unit_tests/test_samples/xmls/WarpHandlerTest.InvalidNamespace/config.xml
new file mode 100644 (file)
index 0000000..249d3e3
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <tizen:access origin="http://www.myhost.com" />
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/WarpHandlerTest.InvalidURL_AuthorizationPart/config.xml b/test/unit_tests/test_samples/xmls/WarpHandlerTest.InvalidURL_AuthorizationPart/config.xml
new file mode 100644 (file)
index 0000000..5535bc8
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <access origin="http://www.user@myhost.com" />
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/WarpHandlerTest.InvalidURL_NoHost/config.xml b/test/unit_tests/test_samples/xmls/WarpHandlerTest.InvalidURL_NoHost/config.xml
new file mode 100644 (file)
index 0000000..ac7616b
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <access origin="http://" />
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/WarpHandlerTest.InvalidURL_NotURL/config.xml b/test/unit_tests/test_samples/xmls/WarpHandlerTest.InvalidURL_NotURL/config.xml
new file mode 100644 (file)
index 0000000..89c821a
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <access origin="invalid" />
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/WarpHandlerTest.SubdomainFalse/config.xml b/test/unit_tests/test_samples/xmls/WarpHandlerTest.SubdomainFalse/config.xml
new file mode 100644 (file)
index 0000000..ba0959a
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <access origin="http://www.myhost.com" subdomains="false" />
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/WarpHandlerTest.SubdomainInvalid/config.xml b/test/unit_tests/test_samples/xmls/WarpHandlerTest.SubdomainInvalid/config.xml
new file mode 100644 (file)
index 0000000..06dc9c1
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <access origin="http://www.myhost.com" subdomains="invalid" />
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/WarpHandlerTest.SubdomainTrue/config.xml b/test/unit_tests/test_samples/xmls/WarpHandlerTest.SubdomainTrue/config.xml
new file mode 100644 (file)
index 0000000..516fd61
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <access origin="http://www.myhost.com" subdomains="true" />
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/WarpHandlerTest.ValidMultiple/config.xml b/test/unit_tests/test_samples/xmls/WarpHandlerTest.ValidMultiple/config.xml
new file mode 100644 (file)
index 0000000..d379e32
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <access origin="http://www.myhost.com" />
+  <access origin="http://www.mywebsite.com" subdomains="true"/>
+  <access origin="http://www.sub.mydomain.com"/>
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/WarpHandlerTest.ValidURL/config.xml b/test/unit_tests/test_samples/xmls/WarpHandlerTest.ValidURL/config.xml
new file mode 100644 (file)
index 0000000..12c3237
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <access origin="http://www.myhost.com" />
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/WarpHandlerTest.ValidWildcard/config.xml b/test/unit_tests/test_samples/xmls/WarpHandlerTest.ValidWildcard/config.xml
new file mode 100644 (file)
index 0000000..d8e8881
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<widget xmlns="http://www.w3.org/ns/widgets" xmlns:tizen="http://tizen.org/ns/widgets">
+  <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+  <access origin="*" />
+</widget>
diff --git a/test/unit_tests/test_samples/xmls/XmlNormalization/config.xml b/test/unit_tests/test_samples/xmls/XmlNormalization/config.xml
new file mode 100644 (file)
index 0000000..9cb60c4
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- all long values here are 10000+ characters long -->
+<widget xmlns:tizen="http://tizen.org/ns/widgets" xmlns="http://www.w3.org/ns/widgets">
+    <tizen:application id="package0id.appid" package="package0id" required_version="3.0"/>
+    <!-- value (of attribute): 8192 limit -->
+    <content src="1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.html"/>
+    <feature name="http://tizen.org/feature/screen.size.all"/>
+    <!-- value (of attribute): 8192 limit -->
+    <icon src="1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.png"/>
+    <!-- value (of key): 8192 limit -->
+    <name>1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890</name>
+    <tizen:profile name="mobile"/>
+    <!-- key: 80 limit -->
+    <_keyname10_abcdefg20_abcdefg30_abcdefg40_abcdefg50_abcdefg60_abcdefg70_abcdefg80_234567>value_a</_keyname10_abcdefg20_abcdefg30_abcdefg40_abcdefg50_abcdefg60_abcdefg70_abcdefg80_234567>
+    <!-- attribute: 2048 limit -->
+    <key_attribute attr1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890="value_b"/>
+    <!-- metadata: key2048 limit -->
+    <tizen:metadata key="_keyname10_abcdefg20_abcdefg30_abcdefg40_abcdefg50_abcdefg60_abcdefg70_abcdefg80_234567" value="attr1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"/>
+    <tizen:app-widget id="package0id.appid.default" primary="true" update-period="2000.0" auto-launch="true">
+        <tizen:box-label>dbox1 default label</tizen:box-label>
+        <tizen:box-icon src="icon.png"/>
+        <tizen:box-content src="box/index.html" mouse-event="true" touch-effect="false">
+            <tizen:box-size>1x1</tizen:box-size>
+            <tizen:pd src="pd/index.html" width="720" height="200"/>
+        </tizen:box-content>
+        <tizen:widget-metadata key="_keyname10_abcdefg20_abcdefg30_abcdefg40_abcdefg50_abcdefg60_abcdefg70_abcdefg80_234567" value="attr1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"/>
+    </tizen:app-widget>
+    <preference name="Akeyname10_abcdefg20_abcdefg30_abcdefg40_abcdefg50_abcdefg60_abcdefg70_abcdefg80_234567" value="Aattr1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"/>
+    <preference name="Bkeyname10_abcdefg20_abcdefg30_abcdefg40_abcdefg50_abcdefg60_abcdefg70_abcdefg80_234567" value="Battr1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"/>
+    <preference name="Ckeyname10_abcdefg20_abcdefg30_abcdefg40_abcdefg50_abcdefg60_abcdefg70_abcdefg80_234567" value="Cattr1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"/>
+</widget>
diff --git a/test/unit_tests/warp_handler_unittest.cc b/test/unit_tests/warp_handler_unittest.cc
new file mode 100644 (file)
index 0000000..8231263
--- /dev/null
@@ -0,0 +1,143 @@
+// Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+// Use of this source code is governed by an apache 2.0 license that can be
+// found in the LICENSE file.
+
+#include <boost/filesystem/path.hpp>
+
+#include <gtest/gtest.h>
+
+#include <manifest_parser/manifest.h>
+#include <manifest_parser/manifest_util.h>
+
+#include <memory>
+#include <vector>
+
+#include "unit_tests/base_test.h"
+#include "wgt_manifest_handlers/warp_handler.h"
+
+namespace bf = boost::filesystem;
+
+namespace {
+
+const bf::path kXmlDirectory("test_samples/xmls");
+
+struct RegistryPolicyForWarp {
+  static std::unique_ptr<parser::ManifestHandlerRegistry> GetRegistry() {
+    std::unique_ptr<parser::ManifestHandlerRegistry> registry;
+    registry.reset(new parser::ManifestHandlerRegistry());
+    registry->RegisterManifestHandler(new wgt::parse::WarpHandler());
+    return registry;
+  }
+};
+
+}  // namespace
+
+namespace parser {
+
+class WarpHandlerTest : public BaseTest<RegistryPolicyForWarp> {
+  void SetUp() override {
+    BaseTest<RegistryPolicyForWarp>::SetUp();
+    std::string error;
+    bf::path xml = kXmlDirectory / GetMyName() / "config.xml";
+    std::shared_ptr<Manifest> manifest(LoadManifest(xml.string(), &error));
+    ASSERT_FALSE(!manifest);
+    SetManifest(manifest);
+  }
+};
+
+#define WARP_IGNORE_TEST(TEST_NAME)                                            \
+    TEST_F(WarpHandlerTest, TEST_NAME) {                                       \
+      ASSERT_TRUE(ParseAppManifest());                                         \
+      ASSERT_TRUE(ValidateAppManifest());                                      \
+      std::shared_ptr<const wgt::parse::WarpInfo> data =                       \
+          std::static_pointer_cast<const wgt::parse::WarpInfo>(                \
+              GetManifestData(wgt::parse::WarpInfo::Key()));                   \
+      ASSERT_TRUE(!data);                                                      \
+    }                                                                          \
+
+WARP_IGNORE_TEST(InvalidNamespace)
+
+TEST_F(WarpHandlerTest, ValidURL) {
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::WarpInfo> data =
+      std::static_pointer_cast<const wgt::parse::WarpInfo>(
+          GetManifestData(wgt::parse::WarpInfo::Key()));
+  ASSERT_TRUE(!!data);
+  auto access_map = data->access_map();
+  ASSERT_EQ(access_map.size(), 1);
+  ASSERT_EQ(access_map[0].first, "http://www.myhost.com");
+  ASSERT_FALSE(access_map[0].second);
+}
+
+TEST_F(WarpHandlerTest, ValidWildcard) {
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::WarpInfo> data =
+      std::static_pointer_cast<const wgt::parse::WarpInfo>(
+          GetManifestData(wgt::parse::WarpInfo::Key()));
+  ASSERT_TRUE(!!data);
+  auto access_map = data->access_map();
+  ASSERT_EQ(access_map.size(), 1);
+  ASSERT_EQ(access_map[0].first, "*");
+  ASSERT_TRUE(access_map[0].second);
+}
+
+WARP_IGNORE_TEST(InvalidURL_NotURL)
+WARP_IGNORE_TEST(InvalidURL_AuthorizationPart)
+WARP_IGNORE_TEST(InvalidURL_NoHost)
+
+TEST_F(WarpHandlerTest, SubdomainTrue) {
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::WarpInfo> data =
+      std::static_pointer_cast<const wgt::parse::WarpInfo>(
+          GetManifestData(wgt::parse::WarpInfo::Key()));
+  ASSERT_TRUE(!!data);
+  auto access_map = data->access_map();
+  ASSERT_EQ(access_map.size(), 1);
+  ASSERT_TRUE(access_map[0].second);
+}
+
+TEST_F(WarpHandlerTest, SubdomainFalse) {
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::WarpInfo> data =
+      std::static_pointer_cast<const wgt::parse::WarpInfo>(
+          GetManifestData(wgt::parse::WarpInfo::Key()));
+  ASSERT_TRUE(!!data);
+  auto access_map = data->access_map();
+  ASSERT_EQ(access_map.size(), 1);
+  ASSERT_FALSE(access_map[0].second);
+}
+
+TEST_F(WarpHandlerTest, SubdomainInvalid) {
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::WarpInfo> data =
+      std::static_pointer_cast<const wgt::parse::WarpInfo>(
+          GetManifestData(wgt::parse::WarpInfo::Key()));
+  ASSERT_TRUE(!!data);
+  auto access_map = data->access_map();
+  ASSERT_EQ(access_map.size(), 1);
+  ASSERT_FALSE(access_map[0].second);
+}
+
+TEST_F(WarpHandlerTest, ValidMultiple) {
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::WarpInfo> data =
+      std::static_pointer_cast<const wgt::parse::WarpInfo>(
+          GetManifestData(wgt::parse::WarpInfo::Key()));
+  ASSERT_TRUE(!!data);
+  auto access_map = data->access_map();
+  ASSERT_EQ(access_map.size(), 3);
+  ASSERT_EQ(access_map[0].first, "http://www.myhost.com");
+  ASSERT_FALSE(access_map[0].second);
+  ASSERT_EQ(access_map[1].first, "http://www.mywebsite.com");
+  ASSERT_TRUE(access_map[1].second);
+  ASSERT_EQ(access_map[2].first, "http://www.sub.mydomain.com");
+  ASSERT_FALSE(access_map[2].second);
+}
+
+}  // namespace parser
diff --git a/test/unit_tests/xml_normalization_unittest.cc b/test/unit_tests/xml_normalization_unittest.cc
new file mode 100644 (file)
index 0000000..168c3d4
--- /dev/null
@@ -0,0 +1,126 @@
+// Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+// Use of this source code is governed by an apache 2.0 license that can be
+// found in the LICENSE file.
+
+#include <boost/filesystem/path.hpp>
+
+#include <gtest/gtest.h>
+
+#include <manifest_parser/manifest.h>
+#include <manifest_parser/manifest_util.h>
+
+#include <memory>
+
+#include "unit_tests/base_test.h"
+#include "wgt_manifest_handlers/application_icons_handler.h"
+#include "wgt_manifest_handlers/application_manifest_constants.h"
+#include "wgt_manifest_handlers/appwidget_handler.h"
+#include "wgt_manifest_handlers/content_handler.h"
+#include "wgt_manifest_handlers/metadata_handler.h"
+#include "wgt_manifest_handlers/tizen_application_handler.h"
+#include "wgt_manifest_handlers/widget_handler.h"
+
+namespace bf = boost::filesystem;
+
+namespace {
+
+const bf::path kXmlDirectory("test_samples/xmls");
+
+struct RegistryPolicyForNormalization {
+  static std::unique_ptr<parser::ManifestHandlerRegistry> GetRegistry() {
+    std::unique_ptr<parser::ManifestHandlerRegistry> registry;
+    registry.reset(new parser::ManifestHandlerRegistry());
+    registry->RegisterManifestHandler(new wgt::parse::WidgetHandler());
+    registry->RegisterManifestHandler(
+        new wgt::parse::TizenApplicationHandler());
+    registry->RegisterManifestHandler(new wgt::parse::MetaDataHandler());
+    registry->RegisterManifestHandler(new wgt::parse::ContentHandler());
+    registry->RegisterManifestHandler(new wgt::parse::AppWidgetHandler());
+    registry->RegisterManifestHandler(
+        new wgt::parse::ApplicationIconsHandler());
+    return registry;
+  }
+};
+
+}  // namespace
+
+namespace parser {
+
+class NormalizationHandlerTest :
+    public BaseTest<RegistryPolicyForNormalization> {
+  void SetUp() override {
+    BaseTest<RegistryPolicyForNormalization>::SetUp();
+
+    std::shared_ptr<ManifestConstraints> constraints(new ManifestConstraints());
+    constraints->set_max_attr_element_length(wgt::kMaxAttrElementLength);
+    constraints->set_element_exceptions(
+        wgt::GetElementsWithDifferentAttributeLength());
+    std::string error;
+    bf::path xml = kXmlDirectory / "XmlNormalization" / "config.xml";
+    std::shared_ptr<Manifest> manifest(
+        LoadManifest(xml.string(), &error, constraints));
+    ASSERT_FALSE(!manifest);
+    SetManifest(manifest);
+  }
+};
+
+TEST_F(NormalizationHandlerTest, NormalizeAttributeValue) {
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::ContentInfo> data =
+      std::static_pointer_cast<const wgt::parse::ContentInfo>(
+          GetManifestData(wgt::parse::ContentInfo::Key()));
+  ASSERT_TRUE(!!data);
+  ASSERT_EQ(data->src().size(), 2048);
+  std::shared_ptr<const wgt::parse::ApplicationIconsInfo> idata =
+      std::static_pointer_cast<const wgt::parse::ApplicationIconsInfo>(
+          GetManifestData(wgt::parse::ApplicationIconsInfo::Key()));
+  ASSERT_TRUE(!!idata);
+  ASSERT_EQ(idata->icons().size(), 1);
+  auto& icons = idata->icons();
+  ASSERT_EQ(icons.begin()->path().size(), 2048);
+}
+
+TEST_F(NormalizationHandlerTest, NormalizeMetadata) {
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::MetaDataInfo> data =
+      std::static_pointer_cast<const wgt::parse::MetaDataInfo>(
+          GetManifestData(wgt::parse::MetaDataInfo::Key()));
+  ASSERT_TRUE(!!data);
+  ASSERT_EQ(data->metadata().size(), 1);
+  auto& metadata = data->metadata();
+  ASSERT_EQ(metadata.begin()->first.size(), 80);
+  ASSERT_EQ(metadata.begin()->second.size(), 8192);
+}
+
+TEST_F(NormalizationHandlerTest, NormalizeWidgetMetadata) {
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::AppWidgetInfo> data =
+      std::static_pointer_cast<const wgt::parse::AppWidgetInfo>(
+          GetManifestData(wgt::parse::AppWidgetInfo::Key()));
+  ASSERT_TRUE(!!data);
+  ASSERT_EQ(data->app_widgets().size(), 1);
+  auto& app_widgets = data->app_widgets();
+  ASSERT_EQ(app_widgets.begin()->metadata.size(), 1);
+  auto& metadata = app_widgets.begin()->metadata;
+  ASSERT_EQ(metadata.begin()->first.size(), 80);
+  ASSERT_EQ(metadata.begin()->second.size(), 8192);
+}
+
+TEST_F(NormalizationHandlerTest, NormalizePreferences) {
+  ASSERT_TRUE(ParseAppManifest());
+  ASSERT_TRUE(ValidateAppManifest());
+  std::shared_ptr<const wgt::parse::WidgetInfo> data =
+      std::static_pointer_cast<const wgt::parse::WidgetInfo>(
+          GetManifestData(wgt::parse::WidgetInfo::Key()));
+  ASSERT_TRUE(!!data);
+  ASSERT_EQ(data->preferences().size(), 3);
+  for (auto& item : data->preferences()) {
+    ASSERT_EQ(item->Name().size(), 80);
+    ASSERT_EQ(item->Value().size(), 8192);
+  }
+}
+
+}  // namespace parser